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

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           : (STMS)*
  STMT            : ELEMENT_NAME `:' ELEMENT_TYPE `{' ATTRS `}'
  ATTRS           : (ATTRIBUTE `=' VALUE)*
  ATTRIBUTE       : ruby_method_name
  VALUE           : METHODS `;'
                  | LITERAL `;'
  METHODS         : ruby_method_name(`.'ruby_method_name)*
  LITERAL         : `true'
                  | `false'
                  | DIGIT_SEQUENCE
                  | STRING
  DIGIT_SEQUENCE  : DIGIT+
  DIGIT           : `0' | `1' | `2' | `3' | `4' | `5' | `6' | `7' | `8' | `9'
  STRING          : `'' any_character* `''
                  | `"' any_character* `"'
  ELEMENT_NAME    : (LETTER | DIGIT | `_')+
  ELEMENT_TYPE    : ruby_class_name
  LETTER          : `A' | `B' | `C' | `D' | `E' | `F' | `G' | `H' | `I' | `J' | `K' | `L' | `M' | `N' | `O' | `P' | `Q' | `R' | `S' | `T' | `U' | `V' | `W' | `X' | `Y' | `Z' | `a' | `b' | `c' | `d' | `e' | `f' | `g' | `h' | `i' | `j' | `k' | `l' | `m' | `n' | `o' | `p' | `q' | `r' | `s' | `t' | `u' | `v' | `w' | `x' | `y' | `z'

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_ckd_file    parse_ckd_string   
Public Class methods
parse_ckd_file( file )
parse_ckd_string( string )