YAML Libraries
Trevor DeVore
lists at mangomultimedia.com
Sun Jan 19 09:45:33 EST 2020
On Fri, Jan 17, 2020 at 2:19 PM Sannyasin Brahmanathaswami via use-livecode
<use-livecode at lists.runrev.com> wrote:
> I found the handler
>
> ## Monte's YAMLToArray command
> constant kMultiLineModeNone = 0
> constant kMultiLineModeLiteral = 1
> constant kMultiLineModeFolded = 2
>
> command YAMLToArray pYaml
>
> [snip] in the levure initialization behavior.
>
> I think that's it. There is no "ArrayToYaml" but that is not needed.
>
BR - I'm glad you were able to locate the handler you need in the source
code. Here is a handler I use for printing out arrays as YAML when I'm
debugging or logging. It most likely could use some improvements but works
well for what I do with it.
--
Trevor DeVore
ScreenSteps
www.screensteps.com
/**
Summary: Prints an array using YAML.
Returns: YAML string
*/
function printArray pArray
local tKeys, tKey, tYAML
put the keys of pArray into tKeys
sort tKeys numeric
repeat for each line tKey in tKeys
put _outputKeyAsYAML(pArray, tKey, 1) & cr after tYAML
end repeat
delete the last char of tYAML
return tYAML
end printArray
private function _outputKeyAsYAML pArrayA, pKey, pLevel
local tIndent, tKey, tStr, i
repeat with i = 1 to pLevel-1
put space & space after tIndent
end repeat
put tIndent after tStr
put pKey & ": " after tStr
if pArrayA[pKey] is an array then
put cr after tStr
repeat for each key tKey in pArrayA[pKey]
put _outputKeyAsYAML(pArrayA[pKey], tKey, pLevel+1) & cr after tStr
end repeat
else
if pArrayA[pKey] contains CR then
put space & space after tIndent
put "|+" & cr & tIndent after tStr
replace CR with CR & tIndent in pArrayA[pKey]
end if
if pArrayA[pKey] contains "'" then
replace "'" with "''" in pArrayA[pKey]
put "'" & pArrayA[pKey] & "'" & cr after tStr
else
put pArrayA[pKey] & cr after tStr
end if
end if
delete the last char of tStr
return tStr
end _outputKeyAsYAML
More information about the use-livecode
mailing list