Sha256: 60afa89a9028994c70054058372c0868bf6eb4e0cd474038d7e504f0c8b71002

Contents?: true

Size: 907 Bytes

Versions: 3

Compression:

Stored size: 907 Bytes

Contents

require 'chronic'


module OptimistXL

# Option for dates using Chronic gem.
# Mainly for compatibility with Optimist.
# Use of Chronic switches to United States formatted
# dates (MM/DD/YYYY) as opposed to DD/MM/YYYY

class ChronicDateOption < Option
  register_alias :chronic_date
  register_alias :'chronic::date'
  def type_format ; "=<date>" ; end
  def parse(paramlist, _neg_given)
    paramlist.map do |pg|
      pg.map do |param|
        parse_date_param(param)
      end
    end
  end

  private
  def parse_date_param(param)
    if param.respond_to?(:year) and param.respond_to?(:month) and param.respond_to(:day)
      return Date.new(param.year, param.month, param.day)
    end
    time = Chronic.parse(param)
    time ? Date.new(time.year, time.month, time.day) : Date.parse(param)
  rescue ArgumentError
    raise CommandlineError, "option '#{self.name}' needs a valid date"
  end
  
end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
optimist_xl-3.3.0 lib/optimist_xl/chronic.rb
optimist_xl-3.2.0 lib/optimist_xl/chronic.rb
optimist_xl-3.1.1 lib/optimist_xl/chronic.rb