Skip to content

Instantly share code, notes, and snippets.

@Ke-
Created April 5, 2019 23:01
Show Gist options
  • Save Ke-/865d8d01ee0c9aa3089b5b96cf8a1faa to your computer and use it in GitHub Desktop.
Save Ke-/865d8d01ee0c9aa3089b5b96cf8a1faa to your computer and use it in GitHub Desktop.
Encode YAML for Lasso 9
define encode_yaml => type {
data public d = 0
public oncreate(p::pair, ...) => (with p in params sum .encode(#p) + '\n')
public oncreate(p::any) => .encode(#p)
public encode(p::map) => {
local(out) = array
.d++
#out->insert('')
#p->foreachpair => {
#out->insert(
.encode(#1)
)
}
.d--
return #out->join('\n')
}
public encode(p::pair) => {
return (' ' * .d) + #p->name + ': ' + .encode(#p->value)
}
public encode(p::array) => {
local(out) = array
#p->foreach => {
#out->insert(
'\n' + (' ' * .d) + '- ' + .encode(#1)->removeleading('\n') & removeleading(' ') & asstring
)
}
return #out->join('')
}
public encode(p::string) => {
return '"' + (#p->ascopy->replace('"','') & asstring) + '"'
}
public encode(p::integer) => {
return #p
}
public encode(p::decimal) => {
return #p
}
public encode(p::boolean) => {
return #p
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment