Module: Wukong::FlatPack::Language

Defined in:
lib/wukong/model/flatpack_parser/lang.rb

Constant Summary collapse

SIMPLE_TYPES =

language definition

%w{i f s b _}
SIMPLE_TYPE_RE =
"[#{SIMPLE_TYPES.join}]"
MODIFIERS =
%w{+ *}
MODIFIER_RE =
"[#{MODIFIERS.join}]"
SIMPLE_TOKEN_RE =
"#{SIMPLE_TYPE_RE}(?:#{MODIFIER_RE}|[0-9]+)?"
DATE_TYPES =
%w{a A b B c d H I j m M p S U w W x X Y Z}
DATE_TYPES_RE =

the extra space is supposed to be there

"[#{DATE_TYPES.join} ]"
DATE_TOKEN_RE =
"%#{DATE_TYPES_RE}*%"
FIXED_POINT_TYPE =
'D'
FIXED_POINT_SEP =
'e'
FIXED_POINT_TOKEN_RE =
"#{FIXED_POINT_TYPE}\\d+(?:#{FIXED_POINT_SEP}\\d+)?"
TOKENS =
[SIMPLE_TOKEN_RE, DATE_TOKEN_RE, FIXED_POINT_TOKEN_RE]
TOKEN_RE =
"#{TOKENS.join('|')}"
CAPTURE_TOKEN_RE =
/(#{TOKENS.join('|')})/
LANGUAGE_RE =
/^(?:(#{TOKEN_RE}) *)+$/
TOTAL_SIMPLE_TYPE_RE =

total regexes, i.e. regexes that must match the whole string

/^#{SIMPLE_TOKEN_RE}$/
TOTAL_FIXED_POINT_RE =
/^#{FIXED_POINT_TOKEN_RE}$/
TOTAL_DATE_RE =
/^#{DATE_TOKEN_RE}$/
NAMED_SIMPLE_TYPE_RE =

named regexes used for parsing tokens

/(?<type>#{SIMPLE_TYPE_RE})(?:(?<length>[0-9]+)|(?<modifier>#{MODIFIER_RE}))?/
NAMED_FIXED_POINT_RE =
/#{FIXED_POINT_TYPE}(?<length>\d+)(?:#{FIXED_POINT_SEP}(?<power>\d+))?/
NAMED_DATE_RE =
/%(?<format>#{DATE_TYPES_RE})%/

Class Method Summary collapse

Class Method Details

.string_in_lang(str) ⇒ Object

Returns true if the supplied string is in Flat's formatting language, as determined by the LANGUAGE_RE regex.



41
42
43
# File 'lib/wukong/model/flatpack_parser/lang.rb', line 41

def self.string_in_lang(str)
  return (not (str =~ LANGUAGE_RE).nil?)
end