Class: HumanDateRange::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/human_date_range/parser.rb

Constant Summary collapse

NORMALIZERS =

Порядок имеет значение

{
  russian: {
    /(января|январь|янв\.?|янвр\.?)/        => 'Jan',
    /(ферваль|февраля|фев\.?|февр\.?)/      => 'Feb',
    /(марта|март|мар\.?|март\.?)/           => 'Mar',
    /(апрель|апреля|апр\.?)/                => 'Apr',
    /(май|мая|май\.?)/                      => 'May',
    /(июнь|июня|июн\.?)/                    => 'Jun',
    /(июль|июля|июл\.?)/                    => 'Jul',
    /(августа|август|авг\.?)/               => 'Aug',
    /(сентябрь|сентября|сен\.?)/            => 'Sep',
    /(октябрь|октября|окт\.?)/              => 'Oct',
    /(ноябрь|ноября|ноя\.?)/                => 'Nov',
    /(декабрь|декабря|дек\.?)/              => 'Dec',
    /((в )?(\d\d\:\d\d))/                   => '',
    /\s(год|года)\s/                        => '',
    /\s(пнд|втр|срд|чтв|птц|сбт|вск)/       => '',
    /\s(пн|вт|ср|чт|пт|сб|вс)/              => '',
    /сегодня/                               => -> { Date.today.strftime("%d-%m-%Y") }.call ,
    /послезавтра/                           => -> { ( Date.today + 2 ).strftime("%d-%m-%Y") }.call ,
    /завтра/                                => -> { ( Date.today + 1 ).strftime("%d-%m-%Y") }.call ,
    /вчера/                                 => -> { ( Date.today - 1 ).strftime("%d-%m-%Y") }.call ,
    /с(?:о)?(.+)по(.+)/                     => '\1 - \2',
    /\s+/                                   => ' ',
    /[,|-]\s?+\z/                           => '',
    /(года|год|г)/                          => ''
  }
}
MONTHES_REGEXP =
%w[jan feb mar apr may jun jul aug sep oct nov dec].join('|')

Instance Method Summary collapse

Constructor Details

#initialize(string, language = :russian, output_format = "%d-%m-%Y") ⇒ Parser

Returns a new instance of Parser.

Raises:

  • (ArgumentError)


34
35
36
37
38
39
# File 'lib/human_date_range/parser.rb', line 34

def initialize(string, language=:russian, output_format="%d-%m-%Y")
  raise ArgumentError unless string.kind_of?(String)
  @string         = string
  @language       = language
  @output_format  = output_format
end

Instance Method Details

#parseObject



41
42
43
44
45
46
47
48
# File 'lib/human_date_range/parser.rb', line 41

def parse
  normalize!
  begin
    perform(@string)
  rescue ArgumentError
    nil
  end
end