Flexible Natural Language Date/Time parsing for Ruby (1.9.x)
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benchmarks
examples
lib
spec
.gitignore
Gemfile
README.md
Rakefile
minute.gemspec

README.md

Minute

Flexible Natural Language Date/Time parsing library for Ruby (1.9.x)

Feature

  • Flexible Natural Language parsing
  • Source code is small, readable and maintainable
  • Can parse short or long sentence when date/time is included

Approach

Chronic has been an amazing gem, but I learned its limitation. It cannot parse long sentence or it will give you nil as a resultant value. Chronic's code design is difficult to maintain.

I was thinking what if I can create a simple Ruby library with the same approach, but more flexible and more features. Thus, Minute was created to address this problem.

Examples:

Chronic.parse("I have to meet my friend on December 13 in Dallas, TX")
#=> nil

Minute.parse("I have to meet my friend on December 13 in Dallas, TX")
#=> 2012-12-13 00:00:00 -0600

Installation

Gemfile

gem 'minute'

RubyGem

gem install minute

Usage

require 'minute'

Minute.parse("Hi! I am Ruby. I was born on Feb 24 1993. My father taught me to make programmers happy.")
#=> 1993-02-24 00:00:00 -0600

Minute.parse("Birthday party is tomorrow night!", now: Time.now)
#=> => 2012-05-01 11:20:48 -0500

Speed

Minute is using String#index? or Regular Expression to recognize the date or time. String#index? is using Rabin-Karp String Search algorithm, which it is making the search faster.

                           user     system      total        real
minute                12.750000   0.080000  12.830000 ( 12.833267)
chronic               97.860000   0.130000  97.990000 ( 97.983466)

TODO

Minute is still young. Some features are being added soon.

Planned to add the following:

  • This december
  • Last Janurary
  • between 8am and 5pm
  • between Jan and July
  • every weekend
  • this morning
  • tonight
  • and more..

Contribution

If you discover bugs or want to help or improve it, Pull Requests are welcome.

Ensure that your Pull request is using a topic branch for patching, improving, refactoring, etc.

License

Minute is licensed under the MIT License.