Class: Mail::Parsers::DateTimeParser
- Includes:
- Utilities
- Defined in:
- lib/mail/parsers/date_time_parser.rb
Constant Summary
Constants included from Mail::Patterns
Mail::Patterns::ATOM_UNSAFE, Mail::Patterns::CONTROL_CHAR, Mail::Patterns::CRLF, Mail::Patterns::FIELD_BODY, Mail::Patterns::FIELD_LINE, Mail::Patterns::FIELD_NAME, Mail::Patterns::FIELD_PREFIX, Mail::Patterns::FIELD_SPLIT, Mail::Patterns::FWS, Mail::Patterns::HEADER_LINE, Mail::Patterns::HEADER_SPLIT, Mail::Patterns::PHRASE_UNSAFE, Mail::Patterns::QP_SAFE, Mail::Patterns::QP_UNSAFE, Mail::Patterns::TEXT, Mail::Patterns::TOKEN_UNSAFE, Mail::Patterns::WSP
Instance Method Summary collapse
Methods included from Utilities
#atom_safe?, #bracket, #capitalize_field, #constantize, #dasherize, #dquote, #escape_paren, #map_lines, #map_with_index, #match_to_s, #paren, #quote_atom, #quote_phrase, #quote_token, #token_safe?, #unbracket, #underscoreize, #unparen, #unquote, #uri_escape, #uri_parser, #uri_unescape
Instance Method Details
#parse(s) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mail/parsers/date_time_parser.rb', line 5 def parse(s) date_time = DateTimeStruct.new([]) actions, error = Ragel.parse(:date_time, s) if error raise Mail::Field::ParseError.new(Mail::DateTimeElement, s, error) end date_s = time_s = nil actions.each_slice(2) do |action_id, p| action = Mail::Parsers::Ragel::ACTIONS[action_id] case action # Date when :date_s then date_s = p when :date_e date_time.date_string = s[date_s..(p-1)] # Time when :time_s then time_s = p when :time_e date_time.time_string = s[time_s..(p-1)] else raise Mail::Field::ParseError.new(Mail::DateTimeElement, s, "Failed to process unknown action: #{action}") end end date_time end |