================================================================================
api/jsonRenderer6.json
================================================================================

name = "pigeon"
age = 42
friends = new Listing {
  "barn owl"
  "parrot"
}
hobbies {
  ["surfing"] {
    skill = "low"
  }
  ["firemaking"] {
    skill = "high"
  }
}
address {
  street = "Norton St."
  zip = 12345
}

output {
  renderer = new JsonRenderer {
    converters {
      ["name"] = (it) -> it.reverse()
      ["friends[*]"] = (it) -> it + "x"
      ["hobbies[*]"] = (it) -> it.skill
      ["address.street"] = (it) -> "Other St."
      ["address.*"] = (it) -> "changed"
      ["unmatched"] = (it) -> "unmatched"
    }
  }
}

--------------------------------------------------------------------------------

(module
  (classProperty
    (identifier)
    (slStringLiteral))
  (classProperty
    (identifier)
    (intLiteral))
  (classProperty
    (identifier)
    (newExpr
      (type
        (qualifiedIdentifier
          (identifier)))
      (objectBody
        (objectElement
          (slStringLiteral))
        (objectElement
          (slStringLiteral)))))
  (classProperty
    (identifier)
    (objectBody
      (objectEntry
        (slStringLiteral)
        (objectBody
          (objectProperty
            (identifier)
            (slStringLiteral))))
      (objectEntry
        (slStringLiteral)
        (objectBody
          (objectProperty
            (identifier)
            (slStringLiteral))))))
  (classProperty
    (identifier)
    (objectBody
      (objectProperty
        (identifier)
        (slStringLiteral))
      (objectProperty
        (identifier)
        (intLiteral))))
  (classProperty
    (identifier)
    (objectBody
      (objectProperty
        (identifier)
        (newExpr
          (type
            (qualifiedIdentifier
              (identifier)))
          (objectBody
            (objectProperty
              (identifier)
              (objectBody
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (methodCallExpr
                      (variableExpr
                        (identifier))
                      (identifier)
                      (argumentList))))
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (binaryExpr
                      (variableExpr
                        (identifier))
                      (slStringLiteral))))
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (propertyCallExpr
                      (variableExpr
                        (identifier))
                      (identifier))))
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (slStringLiteral)))
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (slStringLiteral)))
                (objectEntry
                  (slStringLiteral)
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (slStringLiteral)))))))))))
