module Crntb::Outputer::Text

Attributes

fields[R]
result[R]

Public Class Methods

build(fields) click to toggle source
# File lib/crntb/outputer/text.rb, line 7
def build(fields)
  @result = ''
  @fields = fields
  day_week_month_result
  min_hour_result
  %Q{#{@result}\n  run command "#{fields.command}"}
end
build_day_of_month() click to toggle source
# File lib/crntb/outputer/text.rb, line 26
def build_day_of_month
  if fields.day_of_month == '*'
    @result += 'every day ' if fields.day_of_week == '*'
  else
    @result += 'the '
    days = fields.day_of_month.split(',')
    days.each do |day|
      case day.to_i
      when 1
        @result += "#{day}st,"
      when 2
        @result += "#{day}nd,"
      when 3
        @result += "#{day}rd,"
      else
        @result += "#{day}th,"
      end
    end
    @result.slice!(@result.size - 1, 1)
    @result += ' '
  end
end
build_day_of_week() click to toggle source
# File lib/crntb/outputer/text.rb, line 49
def build_day_of_week
  if fields.day_of_week != '*'
    @result += 'and on ' if fields.day_of_month != '*'
    @result += fields.day_of_week + ' '
  end
end
build_month() click to toggle source
# File lib/crntb/outputer/text.rb, line 21
def build_month
  @result += "in #{fields.month}, on " if fields.month != '*'
  @result += "every month on " if fields.month == '*' and fields.day_of_month != '*'
end
day_week_month_result() click to toggle source
# File lib/crntb/outputer/text.rb, line 15
def day_week_month_result
  build_month
  build_day_of_month
  build_day_of_week
end
min_hour_result() click to toggle source
# File lib/crntb/outputer/text.rb, line 56
def min_hour_result
  hour_collections = fields.hour.split(',')
  min_collections = fields.minute.split(',')
  if hour_collections.length > 1 or hour_collections[0].to_i.to_s == hour_collections[0]
    # input exp. ["1,2"]
    if min_collections.length > 1 or min_collections[0].to_i.to_s == min_collections[0]
      @result += 'at '
      hour_collections.each do |hour_collection|
        min_collections.each do |min_collection|
          @result += "%#02d" % hour_collection + ':' + "%#02d" % min_collections + ', '
        end
      end
      @result.slice!(@result.size - 2, 2)
    else
      @result += "on #{fields.minute} when hour is ("
      hour_collections.each do |hour_collection|
        @result += "%#02d" % hour_collection + ', '
      end
      @result.slice!(@result.size - 2, 2)
      @result += ')'
    end
  else
    # input exp. ["every hour"]
    if min_collections.length > 1
      @result += "on #{fields.hour} when minute equals one of ("
      min_collections.each do |min_collection|
        @result += "%#02d" % min_collection + ', '
      end
      @result.slice!(@result.size - 2, 2)
      @result += ')'
    else
      if fields.hour.to_i.to_s == fields.hour and fields.minute.to_i.to_s == fields.minute
        @result += "on #{fields.hour}:#{fields.minute}"
      elsif fields.minute.to_i.to_s == fields.minute
        @result += "on #{fields.hour} when minute equals " + "%#02d" % fields.minute
      else
        @result += "on #{fields.hour} on #{fields.minute}"
      end
    end
  end
end