def render_after_separator_append

qasim-bend-kit@0.1.0.2 · proof/JSON_SourceProof.bend:681

import qasim-bend-kit@0.1.0.2/proof/JSON_SourceProof.bend as JSONSourceProof
import Base
import qasim-bend-kit@0.1.0.2/libs/JSON.bend as J
import qasim-bend-kit@0.1.0.2/proof/JSON_StringProof.bend as S

681def render_after_separator_append(+value: J.Value,
682                                  +prefix: String,
683                                  +suffix: String) -> {render_after_separator(value, prefix) ++ suffix == render_after_separator(value, prefix ++ suffix) : String}:
684    match value:
685        case J.Arr{Nil{}}: S.append_assoc("]", prefix, suffix)
686        case J.Arr{head <> tail}:
687            nested_render_append(head, J.Arr{tail}, True{}, prefix, suffix,
688                render_append(head, False{}, J.render(J.Arr{tail}, True{}, prefix), suffix),
689                render_append(J.Arr{tail}, True{}, prefix, suffix))
690        case J.Obj{Nil{}}: S.append_assoc("}", prefix, suffix)
691        case J.Obj{(key, field_value) <> tail}:
692            Equal.trans(String,
693                render_after_separator(J.Obj{(key, field_value) <> tail}, prefix) ++ suffix,
694                J.render_object_field(SNil{}, key,
695                    J.render(field_value, False{}, J.render(J.Obj{tail}, True{}, prefix)) ++ suffix),
696                render_after_separator(J.Obj{(key, field_value) <> tail}, prefix ++ suffix),
697                render_object_field_append(SNil{}, key,
698                    J.render(field_value, False{}, J.render(J.Obj{tail}, True{}, prefix)), suffix),
699                Equal.cong(String, String, text => J.render_object_field(SNil{}, key, text),
700                    J.render(field_value, False{}, J.render(J.Obj{tail}, True{}, prefix)) ++ suffix,
701                    J.render(field_value, False{}, J.render(J.Obj{tail}, True{}, prefix ++ suffix)),
702                    nested_render_append(field_value, J.Obj{tail}, True{}, prefix, suffix,
703                        render_append(field_value, False{}, J.render(J.Obj{tail}, True{}, prefix), suffix),
704                        render_append(J.Obj{tail}, True{}, prefix, suffix))))
705        case J.Null{}: render_append(J.Null{}, False{}, prefix, suffix)
706        case J.Bool{truth}:
707            match truth:
708                case True{}: render_append(J.Bool{True{}}, False{}, prefix, suffix)
709                case False{}: render_append(J.Bool{False{}}, False{}, prefix, suffix)
710        case J.Number{lexeme, certificate}:
711            render_append(J.Number{lexeme, certificate}, False{}, prefix, suffix)
712        case J.Str{text}: render_append(J.Str{text}, False{}, prefix, suffix)

Uses (15)

Used by (1)