Sha256: 21f1544f7f5c8efe58463a4657069778bccd02d782aac3ba16de028ce27870fd

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

require 'chronic'

module TimeScopes
  class << self
    def minutely(start=nil)
      start ||= Time.now
      [ Chronic.parse(start_of_minute(start.utc)),
        Chronic.parse(start_of_minute(1.minute.since(start.utc))) ]
    end

    def hourly(start=nil)
      start ||= Time.now
      [ Chronic.parse(start_of_hour(start.utc)),
        Chronic.parse(start_of_hour(1.hour.since(start.utc))) ]
    end

    def daily(start=nil)
      start ||= Time.now
      [ Chronic.parse(start_of_day(start.utc)),
        Chronic.parse(start_of_day(1.day.since(start.utc))) ]
    end

    def weekly(start=nil)
      start ||= Time.now
      start = start.utc
      start = start - 1.day while !start.monday?
      [ Chronic.parse(start_of_day(start.utc)),
        Chronic.parse(start_of_day(1.week.since(start.utc))) ]
    end

    def monthly(start=nil)
      start ||= Time.now
      [ Chronic.parse(start_of_month(start.utc)),
        Chronic.parse(start_of_month(1.month.since(start.utc))) ]
    end

    def overall(start=nil)
      [ Chronic.parse('2000-01-01 00:00:00'),
        Chronic.parse(start_of_day(1.day.from_now.utc)) ]
    end

    def start_of_minute(time)
      time.strftime("%Y-%m-%d %H:%M:00Z")
    end

    def start_of_hour(time)
      time.strftime("%Y-%m-%d %H:00:00Z")
    end

    def start_of_day(time)
      time.strftime("%Y-%m-%d 00:00:00Z")
    end

    def start_of_month(time)
      time.strftime("%Y-%m-01 00:00:00Z")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
timescopes-0.1.5 lib/timescopes/scopes.rb
timescopes-0.1.4 lib/timescopes/scopes.rb