Module: Stamp

Defined in:
lib/stamp/core.rb,
lib/stamp/version.rb,
lib/stamp/refinement.rb,
lib/stamp/translator.rb,
lib/stamp/disambiguator.rb,
lib/stamp/emitters/am_pm.rb,
lib/stamp/emitters/lookup.rb,
lib/stamp/emitters/string.rb,
lib/stamp/emitters/ordinal.rb,
lib/stamp/emitters/delegate.rb,
lib/stamp/emitters/ambiguous.rb,
lib/stamp/emitters/composite.rb,
lib/stamp/emitters/two_digit.rb,
lib/stamp/emitters/utc_offset.rb,
lib/stamp/emitters/twelve_hour.rb

Defined Under Namespace

Modules: Emitters, Refinement Classes: Disambiguator, Translator

Constant Summary collapse

VERSION =
"0.7.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.format(target, example) ⇒ String

Formats a date/time using a human-friendly example as a template, without monkey patching Date or Time.

Examples:

Stamp.format(Date.new(2012, 12, 21), "Jan 1, 1999") #=> "Dec 21, 2012"

Parameters:

  • target (Date|Time|DateTime)

    the date/time to format

  • example (String)

    a human-friendly date/time example

Returns:

  • (String)

    the formatted date or time



29
30
31
32
33
34
35
# File 'lib/stamp/core.rb', line 29

def self.format(target, example)
  emitters(example).format(target)
rescue NoMethodError => e
  raise e if target.respond_to?(e.name)
  raise ArgumentError,
    "#{example.inspect} requires ##{e.name}, which #{target.class} doesn't implement (e.g. a Date can't format time-of-day examples)"
end

.strftime_format(example) ⇒ String

Translates a human-friendly example into a strftime format string.

Examples:

Stamp.strftime_format("Jan 1, 1999") #=> "%b %-d, %Y"

Parameters:

  • example (String)

    a human-friendly date/time example

Returns:

  • (String)

    the equivalent strftime format

Raises:

  • (ArgumentError)

    if the example uses a feature strftime can't express (e.g. ordinal days like "1st")



48
49
50
# File 'lib/stamp/core.rb', line 48

def self.strftime_format(example)
  emitters(example).strftime_format
end

Instance Method Details

#stamp(example) ⇒ String Also known as: stamp_like, format_like

Formats a date/time using a human-friendly example as a template.

Examples:

Date.new(2012, 12, 21).stamp("Jan 1, 1999") #=> "Dec 21, 2012"

Parameters:

  • example (String)

    a human-friendly date/time example

Returns:

  • (String)

    the formatted date or time



68
69
70
# File 'lib/stamp/core.rb', line 68

def stamp(example)
  Stamp.format(self, example)
end