1 files changed,
15 insertions(+),
8 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-07-12 13:02:52 +0300
Authored at:
2026-07-12 12:59:32 +0300
Change ID:
kwzrlpztsopowtwtlnlzqlnptkzlkxzr
Parent:
07ff9b9
M
transpiler.go
··· 23 23 buf.WriteString("]any") 24 24 } else { 25 25 buf.WriteByte(']') 26 - t.writeInlineType(&buf, structName+"Item", v.Array[0], includeTags) 26 + t.writeInlineType(&buf, structName+"Item", v.Array[0], includeTags, 0) 27 27 } 28 28 29 29 case ObjectValue: 30 30 buf.WriteByte(' ') 31 - t.writeInlineStruct(&buf, structName, v.Object, includeTags) 31 + t.writeInlineStruct(&buf, structName, v.Object, includeTags, 0) 32 32 33 33 default: 34 34 buf.WriteByte(' ') ··· 38 38 return buf.String(), nil 39 39 } 40 40 41 -func (t *Transpiler) writeInlineType(buf *strings.Builder, name string, v Value, includeTags bool) { 41 +func (t *Transpiler) writeInlineType(buf *strings.Builder, name string, v Value, includeTags bool, depth int) { 42 42 switch v.Kind { 43 43 case ObjectValue: 44 - t.writeInlineStruct(buf, name, v.Object, includeTags) 44 + t.writeInlineStruct(buf, name, v.Object, includeTags, depth) 45 45 46 46 case ArrayValue: 47 47 buf.WriteByte('[') ··· 49 49 buf.WriteString("]any") 50 50 } else { 51 51 buf.WriteByte(']') 52 - t.writeInlineType(buf, name+"Item", v.Array[0], includeTags) 52 + t.writeInlineType(buf, name+"Item", v.Array[0], includeTags, depth) 53 53 } 54 54 55 55 default: ··· 57 57 } 58 58 } 59 59 60 -func (t *Transpiler) writeInlineStruct(buf *strings.Builder, name string, fields []Field, includeTags bool) { 60 +func (t *Transpiler) writeIndent(buf *strings.Builder, depth int) { 61 + for i := 0; i < depth; i++ { 62 + buf.WriteByte('\t') 63 + } 64 +} 65 + 66 +func (t *Transpiler) writeInlineStruct(buf *strings.Builder, name string, fields []Field, includeTags bool, depth int) { 61 67 buf.WriteString("struct {\n") 62 68 for _, f := range fields { 63 69 fieldName := t.sanitizeFieldName(f.K) 64 - buf.WriteByte('\t') 70 + t.writeIndent(buf, depth+1) 65 71 buf.WriteString(fieldName) 66 72 buf.WriteByte(' ') 67 - t.writeInlineType(buf, name+fieldName, f.V, includeTags) 73 + t.writeInlineType(buf, name+fieldName, f.V, includeTags, depth+1) 68 74 if includeTags { 69 75 buf.WriteString(" `json:\"") 70 76 buf.WriteString(f.K) ··· 72 78 } 73 79 buf.WriteByte('\n') 74 80 } 81 + t.writeIndent(buf, depth) 75 82 buf.WriteByte('}') 76 83 } 77 84