class TwitterCldr::Transforms::Conversions::ConversionRule
Attributes
direction[R]
index[R]
left[R]
original_rule_text[R]
right[R]
Public Class Methods
accepts?(rule_text)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 24 def accepts?(rule_text) !!(rule_text =~ /([^\\]|\A)[<>]{1,2}/) end
new(direction, left, right, original_rule_text, index)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 49 def initialize(direction, left, right, original_rule_text, index) @direction = direction @left = left @right = right @original_rule_text = original_rule_text @index = index end
parse(rule_text, symbol_table, index)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 14 def parse(rule_text, symbol_table, index) options = { original_rule_text: rule_text, index: index } tokens = tokenize(rule_text, symbol_table) parser.parse(tokens, options) end
Private Class Methods
parser()
click to toggle source
Warning: not thread-safe
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 37 def parser @parser ||= Parser.new end
tokenize(rule_text, symbol_table)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 30 def tokenize(rule_text, symbol_table) cleaned_rule_text = Rule.remove_comment(rule_text) tokens = tokenizer.tokenize(cleaned_rule_text) replace_symbols(tokens, symbol_table) end
tokenizer()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 41 def tokenizer @tokenizer ||= TwitterCldr::Transforms::Tokenizer.new end
Public Instance Methods
backward?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 61 def backward? direction == :backward end
bidirectional?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 65 def bidirectional? direction == :bidirectional end
can_invert?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 69 def can_invert? bidirectional? || backward? end
codepoints()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 90 def codepoints left.codepoints end
cursor_offset()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 124 def cursor_offset right.cursor_offset end
forward?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 57 def forward? direction == :bidirectional || direction == :forward end
has_codepoints?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 94 def has_codepoints? left.has_codepoints? end
invert()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 77 def invert case direction when :backward self.class.new( :forward, left, right, original_rule_text, index ) else self.class.new( direction, right, left, original_rule_text, index ) end end
is_conversion_rule?()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 73 def is_conversion_rule? true end
match(cursor)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 98 def match(cursor) left.match(cursor) end
original()
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 102 def original @original ||= begin key = left.key.inject('') do |ret, token| ret + (token.type == :capture ? '' : token.value) end left.before_context + key + left.after_context end end
replacement_for(side_match)
click to toggle source
# File lib/twitter_cldr/transforms/conversions/conversion_rule.rb, line 112 def replacement_for(side_match) right.key.inject('') do |ret, token| ret + case token.type when :capture idx = token.value[1..-1].to_i - 1 side_match.captures[idx] else token_value(token) end end end