class AwesomeXML::Duration::ChunkParser

Attributes

duration[R]
duration_string_chunk[R]
format_chunk[R]

Public Class Methods

new(duration_string_chunk, format_chunk) click to toggle source

Parses a string given as ‘duration_string_chunk` according to the rules of the passed in `format_chunk`. The latter being either a `AwesomeXML::Duration::Format::StaticChunk` or a `AwesomeXML::Duration::Format::DynamicChunk`. Saves the resulting duration in the attribute `duration`.

# File lib/awesome_xml/duration/chunk_parser.rb, line 15
def initialize(duration_string_chunk, format_chunk)
  @duration_string_chunk = duration_string_chunk
  @format_chunk = format_chunk
  parse
end

Private Instance Methods

format_mismatch() click to toggle source
# File lib/awesome_xml/duration/chunk_parser.rb, line 41
def format_mismatch
  FormatMismatch.new(duration_string_chunk, format_chunk.to_s)
end
number() click to toggle source
# File lib/awesome_xml/duration/chunk_parser.rb, line 32
def number
  fail format_mismatch unless valid_number?
  duration_string_chunk.to_i
end
parse() click to toggle source
# File lib/awesome_xml/duration/chunk_parser.rb, line 23
def parse
  if format_chunk.dynamic?
    @duration = number.public_send(format_chunk.unit)
  else
    fail format_mismatch unless duration_string_chunk == format_chunk.to_s
    @duration = 0.seconds
  end
end
valid_number?() click to toggle source
# File lib/awesome_xml/duration/chunk_parser.rb, line 37
def valid_number?
  duration_string_chunk =~ /^[0-9]*$/
end