github.com/urso/go-structform@v0.0.2/visitors/expect_obj.go (about)

     1  package visitors
     2  
     3  import (
     4  	"errors"
     5  
     6  	structform "github.com/urso/go-structform"
     7  )
     8  
     9  type ExpectObjVisitor struct {
    10  	active structform.ExtVisitor
    11  	depth  int
    12  }
    13  
    14  func NewExpectObjVisitor(target structform.ExtVisitor) *ExpectObjVisitor {
    15  	return &ExpectObjVisitor{active: target}
    16  }
    17  
    18  func (e *ExpectObjVisitor) SetActive(a structform.ExtVisitor) {
    19  	e.active = a
    20  	e.depth = 0
    21  }
    22  
    23  func (e *ExpectObjVisitor) Done() bool {
    24  	return e.depth == 0
    25  }
    26  
    27  func (v *ExpectObjVisitor) OnObjectStart(len int, baseType structform.BaseType) error {
    28  	v.depth++
    29  	if v.depth == 1 {
    30  		return nil
    31  	}
    32  	return v.active.OnObjectStart(len, baseType)
    33  }
    34  
    35  func (v *ExpectObjVisitor) OnObjectFinished() error {
    36  	v.depth--
    37  	if v.depth == 0 {
    38  		return nil
    39  	}
    40  	return v.active.OnObjectFinished()
    41  }
    42  
    43  func (v *ExpectObjVisitor) OnKey(s string) error {
    44  	if err := v.check(); err != nil {
    45  		return err
    46  	}
    47  	return v.active.OnKey(s)
    48  }
    49  
    50  func (v *ExpectObjVisitor) OnArrayStart(len int, baseType structform.BaseType) error {
    51  	if err := v.check(); err != nil {
    52  		return err
    53  	}
    54  	return v.active.OnArrayStart(len, baseType)
    55  }
    56  
    57  func (v *ExpectObjVisitor) OnArrayFinished() error {
    58  	if err := v.check(); err != nil {
    59  		return err
    60  	}
    61  	return v.active.OnArrayFinished()
    62  }
    63  
    64  func (v *ExpectObjVisitor) OnNil() error {
    65  	if err := v.check(); err != nil {
    66  		return err
    67  	}
    68  	return v.active.OnNil()
    69  }
    70  
    71  func (v *ExpectObjVisitor) OnBool(b bool) error {
    72  	if err := v.check(); err != nil {
    73  		return err
    74  	}
    75  	return v.active.OnBool(b)
    76  }
    77  
    78  func (v *ExpectObjVisitor) OnString(s string) error {
    79  	if err := v.check(); err != nil {
    80  		return err
    81  	}
    82  	return v.active.OnString(s)
    83  }
    84  
    85  func (v *ExpectObjVisitor) OnInt8(i int8) error {
    86  	if err := v.check(); err != nil {
    87  		return err
    88  	}
    89  	return v.active.OnInt8(i)
    90  }
    91  
    92  func (v *ExpectObjVisitor) OnInt16(i int16) error {
    93  	if err := v.check(); err != nil {
    94  		return err
    95  	}
    96  	return v.active.OnInt16(i)
    97  }
    98  
    99  func (v *ExpectObjVisitor) OnInt32(i int32) error {
   100  	if err := v.check(); err != nil {
   101  		return err
   102  	}
   103  	return v.active.OnInt32(i)
   104  }
   105  
   106  func (v *ExpectObjVisitor) OnInt64(i int64) error {
   107  	if err := v.check(); err != nil {
   108  		return err
   109  	}
   110  	return v.active.OnInt64(i)
   111  }
   112  
   113  func (v *ExpectObjVisitor) OnInt(i int) error {
   114  	if err := v.check(); err != nil {
   115  		return err
   116  	}
   117  	return v.active.OnInt(i)
   118  }
   119  
   120  func (v *ExpectObjVisitor) OnByte(b byte) error {
   121  	if err := v.check(); err != nil {
   122  		return err
   123  	}
   124  	return v.active.OnByte(b)
   125  }
   126  
   127  func (v *ExpectObjVisitor) OnUint8(u uint8) error {
   128  	if err := v.check(); err != nil {
   129  		return err
   130  	}
   131  	return v.active.OnUint8(u)
   132  }
   133  
   134  func (v *ExpectObjVisitor) OnUint16(u uint16) error {
   135  	if err := v.check(); err != nil {
   136  		return err
   137  	}
   138  	return v.active.OnUint16(u)
   139  }
   140  
   141  func (v *ExpectObjVisitor) OnUint32(u uint32) error {
   142  	if err := v.check(); err != nil {
   143  		return err
   144  	}
   145  	return v.active.OnUint32(u)
   146  }
   147  
   148  func (v *ExpectObjVisitor) OnUint64(u uint64) error {
   149  	if err := v.check(); err != nil {
   150  		return err
   151  	}
   152  	return v.active.OnUint64(u)
   153  }
   154  
   155  func (v *ExpectObjVisitor) OnUint(u uint) error {
   156  	if err := v.check(); err != nil {
   157  		return err
   158  	}
   159  	return v.active.OnUint(u)
   160  }
   161  
   162  func (v *ExpectObjVisitor) OnFloat32(f float32) error {
   163  	if err := v.check(); err != nil {
   164  		return err
   165  	}
   166  	return v.active.OnFloat32(f)
   167  }
   168  
   169  func (v *ExpectObjVisitor) OnFloat64(f float64) error {
   170  	if err := v.check(); err != nil {
   171  		return err
   172  	}
   173  	return v.active.OnFloat64(f)
   174  }
   175  
   176  func (v *ExpectObjVisitor) OnStringRef(s []byte) error {
   177  	if err := v.check(); err != nil {
   178  		return err
   179  	}
   180  	return v.active.OnStringRef(s)
   181  }
   182  
   183  func (v *ExpectObjVisitor) OnKeyRef(s []byte) error {
   184  	if err := v.check(); err != nil {
   185  		return err
   186  	}
   187  	return v.active.OnKeyRef(s)
   188  }
   189  
   190  func (v *ExpectObjVisitor) check() error {
   191  	if v.depth == 0 {
   192  		return errors.New("inline object is no object")
   193  	}
   194  	return nil
   195  }