CKDefinition

Class/Module:
Class
In:
lib/cgikit.rb
Parent:
Object

Description

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";
  }

Methods

parse
parse_ckd_file
pretty_print

Classes and Modules

Class CKDefinition::CKDParseError

Public Class Methods

parse(string, filename = '')
parse_ckd_file(filename)
pretty_print(defs)