You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
696 B
35 lines
696 B
3 years ago
|
package jx
|
||
|
|
||
|
// begin should be called before new Array or Object.
|
||
|
func (e *Encoder) begin() {
|
||
|
e.first = append(e.first, true)
|
||
|
}
|
||
|
|
||
|
// end should be called after Array or Object.
|
||
|
func (e *Encoder) end() {
|
||
|
if len(e.first) == 0 {
|
||
|
return
|
||
|
}
|
||
|
e.first = e.first[:e.current()]
|
||
|
}
|
||
|
|
||
|
func (e *Encoder) current() int { return len(e.first) - 1 }
|
||
|
|
||
|
// comma should be called before any new value.
|
||
|
func (e *Encoder) comma() {
|
||
|
// Writing commas.
|
||
|
// 1. Before every field expect first.
|
||
|
// 2. Before every array element except first.
|
||
|
if len(e.first) == 0 {
|
||
|
return
|
||
|
}
|
||
|
current := e.current()
|
||
|
_ = e.first[current]
|
||
|
if e.first[current] {
|
||
|
e.first[current] = false
|
||
|
return
|
||
|
}
|
||
|
e.byte(',')
|
||
|
e.writeIndent()
|
||
|
}
|