Ken Webb 2010-05-05T21:15:41Z
YAML Ain't Markup Language (YAML) is "a human friendly data serialization standard for all programming languages". According to the wikipedia page on YAML, "Although well-suited for hierarchical data representation, it also has a compact syntax for relational data".
Any Xholon application can write out a simple YAML (or XML) snapshot of itself at any time. This is possible because both Xholon and YAML focus on hierarchical structures. This snapshot is intended only as a human-readable tool for debugging and understanding a running Xholon application.
Most Xholon applications currently read their initial structure from a set of XML files. With the use of YAML parsers instead of XML parsers, the structure of Xholon applications could be specified using YAML, although this hasn't been done yet.
As a separate feature, any subtree in a Xholon application can write itself out in a basic YAML format. The resulting content can be validated by pasting it into the online InstantYAML tool. The following is an example of YAML content produced by a Xholon app at runtime:
--- JFrame: Title: Xholon meTTTa DefaultCloseOperation: 3 JPanel: PreferredSize: Dimension,454,310 Background: 0xeeeeee JPanel: PreferredSize: Dimension,300,300 Background: 0xf0f0f0 GridLayout: Rows: 3 Columns: 3 JButton: Text: ActionCommand: select0 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select1 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select2 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select3 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select4 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select5 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select6 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select7 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 JButton: Text: ActionCommand: select8 MinimumSize: Dimension,100,100 PreferredSize: Dimension,100,100 SetFont: Monospaced,0,60 Background: 0xffc80 VBox: JButton: Text: New Game ActionCommand: newgame MinimumSize: Dimension,109,25 PreferredSize: Dimension,109,25 SetFont: Dialog,1,12 Background: 0xeeeeee JButton: Text: ActionCommand: MinimumSize: Dimension,34,10 PreferredSize: Dimension,34,10 SetFont: Dialog,1,12 Background: 0xeeeeee JButton: Text: Computer First ActionCommand: computerfirst MinimumSize: Dimension,139,25 PreferredSize: Dimension,139,25 SetFont: Dialog,1,12 Background: 0xeeeeee ...
The following is an example of the YAML generated by a non-GUI Xholon app.
# Automatically generated by Xholon version 0.8.1 # using Xholon2Yaml.java and YamlStaxWriter. # Wed May 05 17:01:06 EDT 2010 1273093266217 # model: Cell - BioSystems paper # www.primordion.com/Xholon %YAML 1.1 --- ExtraCellularSpace: ExtraCellularSolution: Glucose: pheneVal: 100000.0 EukaryoticCell: CellMembrane: CellBilayer: Cytoplasm: Cytosol: Glucose: pheneVal: 51009.046417748184 Glucose_6_Phosphate: pheneVal: 144372.47394189303 Fructose_6_Phosphate: pheneVal: 86557.89410804509 Fructose_1x6_Biphosphate: pheneVal: 86454.9265126771 DihydroxyacetonePhosphate: pheneVal: 2046.7189671743902 Glyceraldehyde_3_Phosphate: pheneVal: 122313.54521161264 X1x3_BisphosphoGlycerate: pheneVal: 102333.91436162658 X3_PhosphoGlycerate: pheneVal: 26254.358373823332 X2_PhosphoGlycerate: pheneVal: 239562.20171948127 PhosphoEnolPyruvate: pheneVal: 89324.37425501985 Pyruvate: pheneVal: 181376.2051505348 Hexokinase: pheneVal: 1.0 PhosphoGlucoIsomerase: pheneVal: 1.0 PhosphoFructokinase: pheneVal: 1.0 Aldolase: pheneVal: 1.0 TriosePhosphateIsomerase: pheneVal: 1.0 Glyceraldehyde_3_phosphateDehydrogenase: pheneVal: 1.0 PhosphoGlycerokinase: pheneVal: 1.0 PhosphoGlyceromutase: pheneVal: 1.0 Enolase: pheneVal: 1.0 PyruvateKinase: pheneVal: 1.0 ...
This content can be copied and pasted into an online InstantYAML window, after logging in with to a Google account. InstantYAML offers various options to reformat the YAML content.