Dates keeps track of things you two have been meaning to do, and learns what's been fun and what hasn't along several different dimensions (i.e., adventure, romantic, intellectual, athletic; though, there aren't actually any assumptions about the dimensions you can use).

Usage

$ dates --help
dates 1.0.0-beta, max & daphne.
Usage: dates [command] [options] <ideas-file>

To see help for a specific command, use the --help switch on that command.

Commands:
  choose  Choose a good date idea for right now! [default command]
  list    Parse and list the contents of the date ideas file.

Global options:
  --version, -v:   Print version and exit
     --help, -h:   Show this message

To run it, the simplest way is just to provide it with an ideas file and nothing else:

$ dates ideas.rb
watch _serenity_: (intellectual: 5, athletic: 0, adventure: 2, romantic: 4)

Ideas

Dates need an ideas file to work. An ideas file looks like this:

DateIdeas.new do

  date "watch _movie title_" do
    kind :adventure => 2, :romantic => 4, :intellectual => 6, :athletic => 0
    requires :weather => 0, :hours => 2
    outcome 6
  end

  date "read a book" do
    kind :romantic => 3, :adventure => 6, :athletic => 3, :intellectual => 5
    requires :weather => 5, :hours => 2
  end

  date "go adventuring" do
    kind :adventure => 5, :romantic => 7, :intellectual => 5, :athletic => 1
    requires :weather => 8, :hours => 3
  end

end

Commands

The choose command picks a date, and it takes two options:

$ dates choose --help
dates 1.0.0-beta, max & daphne.
Options for `choose` command:
  --weather, -w <f>:   Current weather score [0-9] (default: 5.0)
     --time, -t <f>:   Time commitment score [0-9] (default: 5.0)

The list command prints out the contents of an ideas file:

$ dates list --help
dates 1.0.0-beta, max & daphne.
Options for `list` command:
  --incomplete, -i:   Only the incomplete dates
    --complete, -c:   Only the completed dates (with feedback)

Tests

Dates uses RSpec 2 (core and expectations) for tests. To run them, just call:

bundle exec rspec test/spec.rb -c -f d