@@ -63,15 +63,23 @@ func (f *ASCIIFormatter) Format(diff Diff) (result string, err error) {
6363func (f * ASCIIFormatter ) formatObject (left map [string ]interface {}, df Diff ) {
6464 f .addLineWith ("{" )
6565 f .push ("ROOT" , len (left ), false )
66- f .processObject (left , df .Deltas ())
66+
67+ if err := f .processObject (left , df .Deltas ()); err != nil {
68+ panic (err )
69+ }
70+
6771 f .pop ()
6872 f .addLineWith ("}" )
6973}
7074
7175func (f * ASCIIFormatter ) formatArray (left []interface {}, df Diff ) {
7276 f .addLineWith ("[" )
7377 f .push ("ROOT" , len (left ), true )
74- f .processArray (left , df .Deltas ())
78+
79+ if err := f .processArray (left , df .Deltas ()); err != nil {
80+ panic (err )
81+ }
82+
7583 f .pop ()
7684 f .addLineWith ("]" )
7785}
@@ -89,9 +97,7 @@ func (f *ASCIIFormatter) processArray(array []interface{}, deltas []Delta) error
8997
9098 // additional Added
9199 for _ , delta := range deltas {
92- switch delta .(type ) {
93- case * Added :
94- d := delta .(* Added )
100+ if d , ok := delta .(* Added ); ok {
95101 // skip items already processed
96102 if int (d .Position .(Index )) < len (array ) {
97103 continue
@@ -136,7 +142,7 @@ func (f *ASCIIFormatter) processItem(value interface{}, deltas []Delta, position
136142 case map [string ]interface {}:
137143 // ok
138144 default :
139- return errors .New ("Type mismatch" )
145+ return errors .New ("type mismatch" )
140146 }
141147
142148 o := value .(map [string ]interface {})
@@ -146,7 +152,11 @@ func (f *ASCIIFormatter) processItem(value interface{}, deltas []Delta, position
146152 f .print ("{" )
147153 f .closeLine ()
148154 f .push (positionStr , len (o ), false )
149- f .processObject (o , d .Deltas )
155+
156+ if err := f .processObject (o , d .Deltas ); err != nil {
157+ return err
158+ }
159+
150160 f .pop ()
151161 f .newLine (ASCIISame )
152162 f .print ("}" )
@@ -158,7 +168,7 @@ func (f *ASCIIFormatter) processItem(value interface{}, deltas []Delta, position
158168 case []interface {}:
159169 // ok
160170 default :
161- return errors .New ("Type mismatch" )
171+ return errors .New ("type mismatch" )
162172 }
163173
164174 a := value .([]interface {})
@@ -168,7 +178,11 @@ func (f *ASCIIFormatter) processItem(value interface{}, deltas []Delta, position
168178 f .print ("[" )
169179 f .closeLine ()
170180 f .push (positionStr , len (a ), true )
171- f .processArray (a , d .Deltas )
181+
182+ if err := f .processArray (a , d .Deltas ); err != nil {
183+ return err
184+ }
185+
172186 f .pop ()
173187 f .newLine (ASCIISame )
174188 f .print ("]" )
0 commit comments