Sha256: c627929ea47d701c87cc5100e647d2a16318a2ac21f832a2eda86de4a7205688

Contents?: true

Size: 699 Bytes

Versions: 2

Compression:

Stored size: 699 Bytes

Contents

module Crawler
  class Cinema
    module Duration
      SECONDS_PER_HOUR = 3600
      SECONDS_PER_MINUTE = 60

      module_function

      def parse(str)
        duration = 0
        duration_matches = str.match(/^((?<hours>\d+)(h|hours?))?\s*((?<minutes>\d+)(m|minutes?|mins?))?\s*((?<seconds>\d+)(s|seconds?|secs?))?$/i)

        if duration_matches
          duration += duration_matches[:hours].to_i * SECONDS_PER_HOUR if duration_matches[:hours]
          duration += duration_matches[:minutes].to_i * SECONDS_PER_MINUTE if duration_matches[:minutes]
          duration += duration_matches[:seconds].to_i if duration_matches[:seconds]
        end

        duration
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
crawler-cinema-core-0.1.1 lib/crawler/cinema/duration.rb
crawler-cinema-core-0.1.0 lib/crawler/cinema/duration.rb