class Cronex::Description

Attributes

options[RW]
resources[RW]

Public Class Methods

new(resources, options = {}) click to toggle source
# File lib/cronex/description/base.rb, line 6
def initialize(resources, options = {})
  @resources = resources
  @options = options || {}
end

Public Instance Methods

plural(expression, singular, plural) click to toggle source
# File lib/cronex/description/base.rb, line 54
def plural(expression, singular, plural)
  number = Cronex::Utils.number?(expression)
  return plural if number && number > 1
  return plural if expression.include?(',')
  singular
end
segment_description(expression, all_values_description) click to toggle source
# File lib/cronex/description/base.rb, line 15
def segment_description(expression, all_values_description)
  if expression.empty? || (expression == '0' && self.class != Cronex::HoursDescription)
    desc = ''
  elsif expression == '*'
    desc = all_values_description
  elsif !Cronex::Utils.include_any?(expression, special_chars)
    desc = format(description_format(expression), single_item_description(expression))
  elsif expression.include?('/')
    segments = expression.split('/')
    desc = format(interval_description_format(segments[1]), single_item_description(segments[1]))
    # interval contains 'between' piece (e.g. 2-59/3)
    if segments[0].include?('-')
      between_segment_of_interval = segments[0]
      between_segments = between_segment_of_interval.split('-')
      between = format(
        between_description_format(between_segment_of_interval),
        single_item_description(between_segments[0]),
        single_item_description(between_segments[1]).gsub(':00', ':59'))
      desc += ', ' if !between.start_with?(', ')
      desc += between
    elsif !Cronex::Utils.include_any?(segments[0], special_chars + ['*'])
      desc += ', ' + format(starting_description_format(segments[0]), single_item_description(segments[0]))
    end
  elsif expression.include?('-')
    segments = expression.split('-')
    desc = format(
      between_description_format(expression),
      single_item_description(segments[0]),
      single_item_description(segments[1]).gsub(':00', ':59'))
  elsif expression.include?(',')
    segments = expression.split(',')
    segments = segments.map { |s| single_item_description(s) }
    desc_content = segments[0...-1].join(', ') + ' ' + resources.get('and') + ' ' + segments.last
    desc = format(description_format(expression), desc_content)
  end

  desc
end
special_chars() click to toggle source
# File lib/cronex/description/base.rb, line 11
def special_chars
  ['/', '-', ',']
end