@@ 132,36 132,6 @@ func (e *Encoder) writeStruct(v reflect.
return nil
}
-const nanoSecondsInSecond = time.Second / time.Nanosecond
-
-func (e *Encoder) writeTime(v reflect.Value) error {
- var t = v.Interface().(time.Time)
- if t.Location() != time.UTC && t.Location() != nil {
- if err := e.writeHeader(majorTag, minorTimeString); err != nil {
- return err
- }
- return e.writeUnicodeString(t.Format(time.RFC3339))
- }
-
- // write an epoch timestamp to preserve space
- if err := e.writeHeader(majorTag, minorTimeEpoch); err != nil {
- return err
- }
- var unixTimeNano = t.UnixNano()
- if unixTimeNano%int64(nanoSecondsInSecond) == 0 {
- var unixTime = unixTimeNano / int64(nanoSecondsInSecond)
- var sign byte = majorPositiveInteger
- if unixTime < 0 {
- sign = majorNegativeInteger
- unixTime = -unixTime
- }
- return e.writeInteger(sign, uint64(unixTime))
- } else {
- var unixTime = float64(unixTimeNano) / float64(nanoSecondsInSecond)
- return e.writeFloat(unixTime)
- }
-}
-
const (
float16ExpBits = 5
float16FracBits = 10
@@ 246,6 216,36 @@ func (e *Encoder) writeFloat(input float
}
}
+const nanoSecondsInSecond = time.Second / time.Nanosecond
+
+func (e *Encoder) writeTime(v reflect.Value) error {
+ var t = v.Interface().(time.Time)
+ if t.Location() != time.UTC && t.Location() != nil {
+ if err := e.writeHeader(majorTag, minorTimeString); err != nil {
+ return err
+ }
+ return e.writeUnicodeString(t.Format(time.RFC3339))
+ }
+
+ // write an epoch timestamp to preserve space
+ if err := e.writeHeader(majorTag, minorTimeEpoch); err != nil {
+ return err
+ }
+ var unixTimeNano = t.UnixNano()
+ if unixTimeNano%int64(nanoSecondsInSecond) == 0 {
+ var unixTime = unixTimeNano / int64(nanoSecondsInSecond)
+ var sign byte = majorPositiveInteger
+ if unixTime < 0 {
+ sign = majorNegativeInteger
+ unixTime = -unixTime
+ }
+ return e.writeInteger(sign, uint64(unixTime))
+ } else {
+ var unixTime = float64(unixTimeNano) / float64(nanoSecondsInSecond)
+ return e.writeFloat(unixTime)
+ }
+}
+
func (e *Encoder) Encode(v interface{}) error {
return e.encode(reflect.ValueOf(v))
}