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