class FormatEngine::FormatSpec
The format string parser.
The format string parser.
Constants
- PARSE_REGEX
The regular expression used to parse variable specifications.
Attributes
specs[R]
The array of specifications that were extracted.
Public Class Methods
new(fmt_string)
click to toggle source
Set up an instance of a format specification.
# File lib/format_engine/format_spec.rb, line 18 def initialize(fmt_string) @specs = [] scan_spec(fmt_string) end
Public Instance Methods
scan_spec(fmt_string)
click to toggle source
Scan the format string extracting literals and variables.
# File lib/format_engine/format_spec.rb, line 30 def scan_spec(fmt_string) until fmt_string.empty? if (match_data = PARSE_REGEX.match(fmt_string)) mid = match_data.to_s pre = match_data.pre_match @specs << FormatLiteral.new(pre) unless pre.empty? @specs << case when match_data[:var] then FormatVariable.new(mid) when match_data[:set] then FormatSet.new(mid) when match_data[:rgx] then FormatRgx.new(mid) when match_data[:per] then FormatLiteral.new("\%") else fail "Impossible case in scan_spec." end fmt_string = match_data.post_match else @specs << FormatLiteral.new(fmt_string) fmt_string = "" end end end
validate(engine)
click to toggle source
Validate the specs of this format against the engine.
# File lib/format_engine/format_spec.rb, line 24 def validate(engine) specs.each {|item| item.validate(engine)} self end