quirk 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/README.md +1 -0
  2. data/quirk.rb +4 -2
  3. data/quirk_test.rb +25 -6
  4. metadata +2 -2
data/README.md CHANGED
@@ -13,6 +13,7 @@ Then configure your habits in a plaintext file:
13
13
  % quirk -e
14
14
  mile-run: monday, wednesday, thursday
15
15
  walk-dog: everyday
16
+ ; comments start with semi-colons
16
17
  ^quit-tv: friday
17
18
 
18
19
  If a habit is prefixed with `^`, it means you're trying to break that habit.
data/quirk.rb CHANGED
@@ -2,7 +2,7 @@ require 'date'
2
2
  require 'colorize'
3
3
 
4
4
  module Quirk
5
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
6
6
  QUIRKFILE = ENV['QUIRKFILE'] || "#{ENV['HOME']}/.quirk"
7
7
  EDITOR = ENV['EDITOR'] || 'vi'
8
8
 
@@ -59,6 +59,7 @@ module Quirk
59
59
 
60
60
  def initialize(id, days, quitting)
61
61
  @id, @days, @quitting, @marks = id, days, quitting, []
62
+ raise "No days found for #{id}" if @days.empty?
62
63
  end
63
64
 
64
65
  def quitting?
@@ -141,6 +142,7 @@ module Quirk
141
142
 
142
143
  class Calendar
143
144
  attr_writer :year
145
+ attr_reader :habits
144
146
 
145
147
  def initialize(habits)
146
148
  @habits = habits.reduce({}) {|hash,habit| hash[habit.id] = habit; hash}
@@ -227,7 +229,7 @@ module Quirk
227
229
  text.strip.each_line do |line|
228
230
  if line =~ /^\d\d\d\d\/\d\d?\/\d\d?\s+/
229
231
  marks << line
230
- elsif line !~ /^\s*$/
232
+ elsif line !~ /^\s*$/ && line !~ /^\s*;.*$/
231
233
  habits << Habit.parse(line)
232
234
  end
233
235
  end
@@ -33,9 +33,9 @@ class QuirkHabitTest < MiniTest::Unit::TestCase
33
33
  habit.mark!(Date.new(2012, 1, 2))
34
34
  habit.mark!(Date.new(2012, 1, 3))
35
35
  assert_equal(:white, habit.color_on(Date.new(2012, 1, 1)))
36
- assert_equal(:green, habit.color_on(Date.new(2012, 1, 2)))
36
+ assert_equal(:light_green, habit.color_on(Date.new(2012, 1, 2)))
37
37
  assert_equal(:white, habit.color_on(Date.new(2012, 1, 3)))
38
- assert_equal(:red, habit.color_on(Date.new(2012, 1, 4)))
38
+ assert_equal(:light_red, habit.color_on(Date.new(2012, 1, 4)))
39
39
  assert_equal(:white, habit.color_on(Date.new(2012, 1, 5)))
40
40
  end
41
41
 
@@ -43,13 +43,13 @@ class QuirkHabitTest < MiniTest::Unit::TestCase
43
43
  quit = Quirk::Habit.parse('^quit-tv: sunday, monday, wednesday, thursday')
44
44
  quit.mark!(Date.new(2012, 1, 2))
45
45
  assert_equal(:white, quit.color_on(Date.new(2012, 1, 1)))
46
- assert_equal(:red, quit.color_on(Date.new(2012, 1, 2)))
46
+ assert_equal(:light_red, quit.color_on(Date.new(2012, 1, 2)))
47
47
  assert_equal(:white, quit.color_on(Date.new(2012, 1, 3)))
48
- assert_equal(:green, quit.color_on(Date.new(2012, 1, 4)))
49
- assert_equal(:green, quit.color_on(Date.new(2012, 1, 5)))
48
+ assert_equal(:light_green, quit.color_on(Date.new(2012, 1, 4)))
49
+ assert_equal(:light_green, quit.color_on(Date.new(2012, 1, 5)))
50
50
 
51
51
  quit.mark_first!(Date.new(2012, 1, 1))
52
- assert_equal(:green, quit.color_on(Date.new(2012, 1, 1)))
52
+ assert_equal(:light_green, quit.color_on(Date.new(2012, 1, 1)))
53
53
  end
54
54
 
55
55
  def test_streak
@@ -94,6 +94,25 @@ class QuirkCalendarTest < MiniTest::Unit::TestCase
94
94
  @cal.mark!('2012/01/02 running, walk-dog')
95
95
  end
96
96
 
97
+ def test_parse
98
+ calendar = Quirk::Calendar.parse(
99
+ "; ignore comment line\n" +
100
+ "running: everyday\n" +
101
+ "^smoking: everyday\n\n" +
102
+ "; ignore comment line\n" +
103
+ "2012/01/01 ^smoking\n" +
104
+ "2012/01/01 running\n\n")
105
+
106
+ assert(calendar.has_habit?('running'))
107
+ assert(calendar.has_habit?('smoking'))
108
+ assert_equal(Date.new(2012, 1, 1), calendar.habits['running'].first_date)
109
+ assert_equal(Date.new(2012, 1, 1), calendar.habits['smoking'].first_date)
110
+ end
111
+
112
+ def test_parse_day_error
113
+ assert_raises(RuntimeError) { Quirk::Calendar.parse('running: invalid') }
114
+ end
115
+
97
116
  def test_mark
98
117
  assert_equal([Date.new(2012,1,1), Date.new(2012,1,2)], @running.marks)
99
118
  assert_equal([Date.new(2012,1,1), Date.new(2012,1,2)], @walking.marks)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quirk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: .
11
11
  cert_chain: []
12
- date: 2012-05-25 00:00:00.000000000 Z
12
+ date: 2012-05-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest