class TwitterCldr::Transforms::Transforms::TransformRule
Base class for transforms
Attributes
backward_form[R]
forward_form[R]
Public Class Methods
accepts?(rule_text)
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 26 def accepts?(rule_text) rule_text = Rule.remove_comment(rule_text) rule_text = rule_text[2..-2].strip tokens = tokenizer.tokenize(rule_text) forward_form, backward_form = parser.parse(tokens) transforms.any? do |transform| transform.accepts?(forward_form, backward_form) end rescue => e if $debug puts e.message puts e.backtrace.join("\n") end false end
blank?()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 48 def blank? false end
new(forward_form, backward_form)
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 75 def initialize(forward_form, backward_form) @forward_form = forward_form @backward_form = backward_form after_initialize end
null?()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 44 def null? false end
parse(rule_text, symbol_table, index)
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 13 def parse(rule_text, symbol_table, index) rule_text = Rule.remove_comment(rule_text).strip rule_text = rule_text[2..-2].strip if rule_text.start_with?('::') tokens = tokenizer.tokenize(rule_text) forward_form, backward_form = parser.parse(tokens) transform_class = transforms.find do |transform| transform.accepts?(forward_form, backward_form) end transform_class.new(forward_form, backward_form) end
Private Class Methods
parser()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 54 def parser @parser ||= Parser.new end
tokenizer()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 58 def tokenizer @tokenizer ||= TwitterCldr::Tokenizers::UnicodeRegexTokenizer.new end
transforms()
click to toggle source
make this a method rather than a constant to avoid issues with Marshal.load
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 65 def transforms @transforms ||= [ NullTransform, NormalizationTransform, CasingTransform, NamedTransform, BreakInternalTransform ] end
Public Instance Methods
backward?()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 89 def backward? false end
forward?()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 85 def forward? !forward_form.null? end
invert()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 93 def invert self.class.new(backward_form, forward_form) end
is_transform_rule?()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 81 def is_transform_rule? true end
Private Instance Methods
after_initialize()
click to toggle source
# File lib/twitter_cldr/transforms/transforms/transform_rule.rb, line 99 def after_initialize end