Class: TwitterCldr::Transforms::Transforms::TransformRule

Inherits:
Rule
  • Object
show all
Defined in:
lib/twitter_cldr/transforms/transforms/transform_rule.rb

Overview

Base class for transforms

Constant Summary

Constants inherited from Rule

Rule::STRING_TYPES

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Rule

#is_comment?, #is_conversion_rule?, #is_conversion_rule_set?, #is_filter_rule?, #is_variable?, regexp_token_string, remove_comment, replace_symbols, #token_string, token_string, #token_value, token_value

Constructor Details

#initialize(forward_form, backward_form) ⇒ TransformRule

Returns a new instance of TransformRule.



70
71
72
73
74
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 70

def initialize(forward_form, backward_form)
  @forward_form = forward_form
  @backward_form = backward_form
  after_initialize
end

Instance Attribute Details

#backward_formObject (readonly)

Returns the value of attribute backward_form.



68
69
70
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 68

def backward_form
  @backward_form
end

#forward_formObject (readonly)

Returns the value of attribute forward_form.



68
69
70
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 68

def forward_form
  @forward_form
end

Class Method Details

.accepts?(rule_text) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
34
35
36
37
# 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 Exception
  false
end

.blank?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 43

def blank?
  false
end

.null?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 39

def null?
  false
end

.parse(rule_text, symbol_table, index) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# 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

Instance Method Details

#backward?Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 84

def backward?
  false
end

#forward?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 80

def forward?
  !forward_form.null?
end

#invertObject



88
89
90
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 88

def invert
  self.class.new(backward_form, forward_form)
end

#is_transform_rule?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/twitter_cldr/transforms/transforms/transform_rule.rb', line 76

def is_transform_rule?
  true
end