class Tml::LanguageCaseRule

Public Instance Methods

apply(value) click to toggle source
# File lib/tml/language_case_rule.rb, line 66
def apply(value)
  value = value.to_s
  return value if operations.nil?

  re = Tml::RulesEngine::Evaluator.new
  re.evaluate(['let', '@value', value])

  re.evaluate(operations_expression)
end
conditions_expression() click to toggle source
# File lib/tml/language_case_rule.rb, line 37
def conditions_expression
  self.attributes[:conditions_expression] ||= Tml::RulesEngine::Parser.new(self.conditions).parse
end
evaluate(value, object = nil) click to toggle source
# File lib/tml/language_case_rule.rb, line 53
def evaluate(value, object = nil)
  return false if conditions.nil?

  re = Tml::RulesEngine::Evaluator.new
  re.evaluate(['let', '@value', value])

  gender_variables(object).each do |key, value|
    re.evaluate(['let', key, value])
  end

  re.evaluate(conditions_expression)
end
gender_variables(object) click to toggle source
# File lib/tml/language_case_rule.rb, line 45
def gender_variables(object)
  return {} unless self.conditions.index('@gender')
  return {'@gender' => 'unknown'} unless object
  context = language_case.language.context_by_keyword(:gender)
  return {'@gender' => 'unknown'} unless context
  context.vars(object)
end
operations_expression() click to toggle source
# File lib/tml/language_case_rule.rb, line 41
def operations_expression
  self.attributes[:operations_expression] ||= Tml::RulesEngine::Parser.new(self.operations).parse
end