CKDefinition parses .ckd ( CGIKit Definition ) file. CKComponent stores the result of parse and uses it for binding.
The format of CKD file is very different from Ruby or HTML Here, the format of CKD file is described as pseudo-BNF like Ruby’s document.
STMTS : (STMT)* STMT : ELEMENT_NAME ':' ELEMENT_TYPE '{' ATTRS '}' ATTRS : (ATTRIBUTE '=' VALUE TERM)* ATTRIBUTE : ruby_method_name VALUE : METHODS | LITERAL METHODS : ruby_method_name('.'ruby_method_name)* | METHODS BLITERAL LITERAL : 'true' | 'false' | DIGIT_SEQUENCE | STRING BLITERAL : ARRAY : HASH ARRAY : '[' DIGIT_SEQUENCE ']' HASH : '[' LITERAL ']' DIGIT_SEQUENCE : DIGIT+ DIGIT : [0-9] STRING : ''' any_character* ''' | '"' any_character* '"' ELEMENT_NAME : (LETTER | DIGIT | '_')+ ELEMENT_TYPE : ruby_class_name LETTER : [A-Za-z] TERM : ';' | '\n'
ruby_method_name means Ruby’s Method Name: For example, ‘foo’, ‘to_s’ and ‘is_a?’. Also, ruby_class means Ruby’s Class Name: For instance, ‘CKString’ and ‘CKComponent’.
CKDefinition regards a part which begins from ’#’ to the end of the line as comment. In the next case, ’# foo bar comment’ is not interpreted by CKDefinition.
foo : CKString { # foo bar comment value = "foo"; }
parse
parse_ckd_file
pretty_print
Class CKDefinition::CKDParseError