class NaturalDateExpressionFactory
Constants
- EXPRESSION_SPLITTER_STEP
- STEPS
Public Class Methods
new(lang)
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 2 def initialize lang @lang = lang end
Public Instance Methods
create(expression_string, reference_date = Date.today)
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 6 def create expression_string, reference_date = Date.today NaturalDateExpression.new(create_data_expression(expression_string, reference_date), reference_date, expression_string) end
Private Instance Methods
create_data_expression(expression_string, reference_date)
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 15 def create_data_expression expression_string, reference_date expression_splitter.map(expression_string.to_s).map do |expression| steps.reduce(expression) do |tokens, step| step.map(tokens, reference_date) end end end
expression_splitter()
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 23 def expression_splitter EXPRESSION_SPLITTER_STEP[@lang] ||= begin Translator::ExpressionSplitter.new.tap do |step| step.language_bundle = Translator::LanguageBundle.fetch(@lang) end end end
step_classes()
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 39 def step_classes [ Translator::Cleaner, Translator::SplitterLiteralDate, Translator::Mounter, Translator::Normalizer, Translator::Expander, Translator::ModApplier, Translator::Minifier, Translator::YearFinder, Translator::UnknownCleaner ].freeze end
steps()
click to toggle source
# File lib/natural-date/natural_date_expression_factory.rb, line 31 def steps STEPS[@lang] ||= step_classes.map do |step_class| step_class.new.tap do |step| step.language_bundle = Translator::LanguageBundle.fetch(@lang) end end end