Module: Medjool

Defined in:
lib/medjool.rb,
lib/medjool/regexs.rb

Defined Under Namespace

Classes: DateRange, Parser

Constant Summary collapse

VERSION =
'0.7.0'
DAYNAME_MATCHER =
/(\s*Mon(day)?,?\s*|\s*Tue(s(day)?)?,?\s*|\s*Wed(nesday)?,?\s*|\s*Thu(r(s(day)?)?)?,?\s*|\s*Fri(day)?,?\s*|\s*Sat(urday)?,?\s*|\s*Sun(day)?,?\s*)([^a-zA-Z]|$)/i
MONTH_NAME_MATCHER =
/(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sept(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)/i
MONTH_MATCHER =
/\s*#{MONTH_NAME_MATCHER},?\s*/
YYYY_MM_DD_MATCHER =
/(\s*[0-9]{4}-[0-9]{2}-[0-9]{2}\s*)/
DM_DM_YYYY_MATCHER =
/(\s*[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{2,4}\s*)/
ORDINAL_POSTFIX =
/(st|rd|nd|th)/i
ORDINAL_MATCHER =
/(\s*([0-9]{1,2}#{ORDINAL_POSTFIX}?),?\s*)/
END_OF_MONTH_MATCHER =
/^\s*(29|30|31)#{ORDINAL_POSTFIX}?\s*$/
YEAR_MATCHER =
/(\s*([0-9]{4}\s*|\s*'?[0-9]{2}),?\s*)/
TEXT_DATE_MATCHER =
/(#{DAYNAME_MATCHER}|#{ORDINAL_MATCHER}|#{YEAR_MATCHER}|#{MONTH_MATCHER}([^a-zA-Z]|$))/
DATE_MATCHER =
/^[^a-zA-Z0-9]*(#{TEXT_DATE_MATCHER}+|#{DM_DM_YYYY_MATCHER}|#{YYYY_MM_DD_MATCHER})/
DATE_RANGE_MATCHER =
/^([^:]+: )?((([0-9]+)( #{MONTH_NAME_MATCHER})? ?[-–] ?([0-9]+) #{MONTH_NAME_MATCHER}([^a-zA-Z]|$))|(#{MONTH_NAME_MATCHER} ([0-9]+) ?[-–] ?(#{MONTH_NAME_MATCHER} )?([0-9]+))|#{MONTH_NAME_MATCHER}([^a-zA-Z]|$))$/

Class Method Summary collapse

Class Method Details

.parse(t, context = {}) ⇒ Object



12
13
14
# File 'lib/medjool.rb', line 12

def self.parse(t, context = {})
  Medjool::Parser.new(context).parse(t)
end