Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/sshaw/yymmdd

Tiny DSL for idiomatic date parsing and formatting in Ruby
https://github.com/sshaw/yymmdd

date dsl metaprogramming ruby syntax-sugar

Last synced: about 2 months ago
JSON representation

Tiny DSL for idiomatic date parsing and formatting in Ruby

Lists

README

        

# YYMMDD

[![Build Status](https://travis-ci.org/sshaw/yymmdd.png?branch=master)](https://travis-ci.org/sshaw/yymmdd)

Tiny DSL for idiomatic date parsing and formatting.

## Overview

require "yymmdd"

include YYMMDD

puts yy/mm # 14/08 (i.e., today's date)
puts yyyy/mm # 2014/08
date = ymd(411207) # Date.new(1941, 12, 7)

date = Date.today
puts yyyy.mm.dd(date) # 2014.08.09
puts dd/mm/yy(date) # 08/09/14
puts ymd(date) # 1489
puts yymmdd(date) # 140809

date = yyyy.mm.dd("1941.12.07") # Date.new(1941, 12, 7)
date = mm.dd.yy("11.22.63") # Date.new(1963, 11, 22)
date = mm/dd/yy("11/21/99") # ...
date = mm/dd/yyyy("11/21/1999")
date = mm-dd-yyyy("11-21-1999")
date = m-d-y("11-21-99")

## Installation

### Rubygems:

gem install yymmdd

### Bundler:

gem "yymmdd"

## Usage

All functions are [`module_function`s](http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-module_function)
so you must `include YYMMDD` to use them.

When given a `String` it will attempt to parse it as the specified format and return a `Date`.

When given a `Date` it will return a `String` in the specified format.

An `ArgumentError` is raised if the date can't be parsed or formatted.

With no arguments it will return an instance of a `String`-like object (it overrides `to_s` and `to_str`) representing
today's date in the specified format. In the most common cases you can treat it like a `String`:

date = yyyy/mm/dd
puts "Today's date: #{date}"
text = ["Dates: ", yy/mm, yyyy/mm].join(", ")
text = "A great date: " << date

But in some instances you'll have to expilictly call `to_s`:

printf "Today's date: %s\n", date.to_s

All the heavy lifting is done by `Date#strftime` and `Date.strptime`.

### Format Specifiers

The table below lists the available format specifiers. All of these can be separated by one of the supported
delimiters: `"/"`, `"."`, or `"-"`.


NameFormat



dday of the year, no 0 padding


ddday of the year


mday of the month, no 0 padding


mmday of the month


y2 digit year


yy2 digit year


yyyy4 digit year

There are also combined, delimiterless functions for all combinations of the above, e.g., `ymd`, `mdy`, `yymmdd`, etc...

## Caveats

Due to operator precedence you can't mix delimiters.

## Author

Skye Shaw [sshaw AT gmail.com]

## License

Released under the MIT License: www.opensource.org/licenses/MIT