class Nin::Parser

Public Class Methods

new(desc) click to toggle source
# File lib/nin/parser.rb, line 3
def initialize(desc)
  @desc = desc
end

Public Instance Methods

call() click to toggle source
# File lib/nin/parser.rb, line 7
def call
  [@desc, extract_date, extract_tags]
end

Private Instance Methods

extract_date() click to toggle source
# File lib/nin/parser.rb, line 13
def extract_date
  date_pattern = /@[A-Z0-9,-\/]+/i
  date         = @desc.scan(date_pattern).last

  return nil if date.nil?

  date.gsub!('@', '')
  strip_tags(date_pattern)

  begin
    Chronic.parse(date).to_date
  rescue NoMethodError
    raise InvalidDateFormatError
  end
end
extract_tags() click to toggle source
# File lib/nin/parser.rb, line 29
def extract_tags
  tag_pattern = /#[A-Z0-9_]+/i
  tags        = @desc.scan(tag_pattern).map { |tag| tag.gsub!('#', '') }

  strip_tags(tag_pattern)

  tags
end
strip_tags(pattern) click to toggle source
# File lib/nin/parser.rb, line 38
def strip_tags(pattern)
  @desc.gsub!(pattern, '')
  @desc.strip!
end