bentrackergem 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e056a6aa55e53e07f175a6858ff36b26214f9269
4
- data.tar.gz: 4c521e854e92947a62c2787f70788422396d59df
3
+ metadata.gz: f74e9d9fa978f6ac460b7660b414ef0b770f5099
4
+ data.tar.gz: 7438ac0d05316e42098eddfc4255999d9cb4797d
5
5
  SHA512:
6
- metadata.gz: 81ba5313fd3f70cb8e61d73a0c3fbb5a125ef6b665bfd2da2c803b2afcea769669ea3f181a2b6f0ecf07a85ea6d9ec4b2795787f35071044a12408979ccc775a
7
- data.tar.gz: b62eb3419366d342d434f7e8300f5f839d632f05436ab6a72a0cc143847be9dac5e151fdd5e61c7697705af79dc566ee8e4c8a4af7a02b7e8c5bb17a443b1c9c
6
+ metadata.gz: 9ed3d9bb3f27df18459162aaafc8b3a43a5d408824cf3a93b937e64f819c37ee0ef23962ac84941ab002c9380a1c9fde641aae429d37038a485d43c5a146fc85
7
+ data.tar.gz: 8662a87258dee5c1e1a20e587240fe1c87d85fbd3346e7a6e204e5ec83963a2fa77b3a79cf1946d1f05f635717f5b4a93323e1a8a6691b1e6797574669209f9e
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .gem
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
@@ -20,3 +21,4 @@ tmp
20
21
  *.o
21
22
  *.a
22
23
  mkmf.log
24
+
data/README.md CHANGED
@@ -18,11 +18,25 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Post today's summary:
22
+
23
+ `BenTrackerGem.post_message("What a great day!")`
24
+
25
+ Get today's stats:
26
+
27
+ `BenTrackerGem.day_stats("2014-10-06")`
28
+
29
+ Get multiple days of stats:
30
+
31
+ `BenTrackerGem.date_range("2014-09-30", "2014-10-05")`
32
+
33
+ Get visual output of specific category:
34
+
35
+ `BenTrackerGem.date_range_visual("code", "2014-10-03", "2014-10-06")`
22
36
 
23
37
  ## Contributing
24
38
 
25
- 1. Fork it ( https://github.com/[my-github-username]/bentrackergem/fork )
39
+ 1. Fork it ( https://github.com/benbrostoff/bentrackergem/fork )
26
40
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
41
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
42
  4. Push to the branch (`git push origin my-new-feature`)
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "json"
25
25
  spec.add_development_dependency "rest_client"
26
26
  spec.add_development_dependency "date"
27
+ spec.add_development_dependency "chronic"
27
28
  end
data/lib/bentrackergem.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "bentrackergem/version"
2
+ require "chronic"
2
3
  require "rest_client"
3
4
  require "json"
4
5
  require "date"
@@ -7,9 +8,12 @@ module BenTrackerGem
7
8
 
8
9
  URL_GET = 'http://brostofftrack.herokuapp.com/history.json'
9
10
  URL_POST = 'http://brostofftrack.herokuapp.com/email'
10
- HISTORY = JSON.parse(RestClient.get URL_GET).to_h["days"]
11
11
 
12
12
  VALID_CATS = ["message", "code", "fitness"]
13
+
14
+ def self.get_history
15
+ JSON.parse(RestClient.get URL_GET).to_h["days"]
16
+ end
13
17
 
14
18
  def self.valid_format(date)
15
19
  date = DateTime.parse(date, "%Y-%m-%d").to_s[0..9]
@@ -29,7 +33,7 @@ module BenTrackerGem
29
33
 
30
34
  def self.day_stats(date)
31
35
  date = valid_format(date)
32
- HISTORY.each do |summary|
36
+ get_history.each do |summary|
33
37
  if summary["day_of"] == date
34
38
  return filter_hash(summary)
35
39
  end
@@ -38,9 +42,10 @@ module BenTrackerGem
38
42
 
39
43
  def self.date_range(begin_date, end_date)
40
44
  begin_date, end_date, hold = valid_format(begin_date), valid_format(end_date), []
41
- filter = HISTORY.select { |summary| summary["day_of"] >= begin_date &&
45
+ filter = get_history.select { |summary| summary["day_of"] >= begin_date &&
42
46
  summary["day_of"] <= end_date }.
43
- map { |summary| day_stats(summary["day_of"]) }
47
+ map { |summary| day_stats(summary["day_of"]) }.
48
+ sort_by { |summary| summary[:day_of] }
44
49
  end
45
50
 
46
51
  def self.date_range_visual(req, begin_date, end_date, sort = 0)
@@ -54,6 +59,12 @@ module BenTrackerGem
54
59
  "COMPLETE"
55
60
  end
56
61
 
62
+ def self.diary(begin_date = "last week", end_date = "today")
63
+ date_range_visual("message",
64
+ Chronic.parse(begin_date).to_s[0..9],
65
+ Chronic.parse(end_date).to_s[0..9])
66
+ end
67
+
57
68
  def self.post_message(message)
58
69
  raise ArgumentError, "must enter message as String" if !message.is_a? String
59
70
 
@@ -1,3 +1,3 @@
1
1
  module BenTrackerGem
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -59,11 +59,12 @@ describe 'BenTrackerGem' do
59
59
 
60
60
  context "#date_range" do
61
61
 
62
- it "should return an array of day summaries given valid begin and end dates" do
63
- expect(BenTrackerGem.date_range("2014-10-03", "2014-10-05")).to eq(
64
- [BenTrackerGem.day_stats("2014-10-03"),
65
- BenTrackerGem.day_stats("2014-10-04"),
66
- BenTrackerGem.day_stats("2014-10-05")]
62
+ it "should return an array of day summaries given valid begin and end dates in chronological order" do
63
+ expect(BenTrackerGem.date_range("2014-10-08", "2014-10-11")).to eq(
64
+ [BenTrackerGem.day_stats("2014-10-08"),
65
+ BenTrackerGem.day_stats("2014-10-09"),
66
+ BenTrackerGem.day_stats("2014-10-10"),
67
+ BenTrackerGem.day_stats("2014-10-11")]
67
68
  )
68
69
  end
69
70
 
@@ -73,13 +74,29 @@ describe 'BenTrackerGem' do
73
74
 
74
75
  it "should raise an error if user requests invalid category" do
75
76
  expect{
76
- BenTrackerGem.date_range_visual("COO", "2014-10-03", "2014-10-05")
77
+ BenTrackerGem.date_range_visual("COO", "2014-10-03", "2014-10-05")
77
78
  }.to raise_error(ArgumentError, "must select valid category")
78
79
  end
79
80
 
80
81
  it "should execute without error when valid category and dates are input" do
81
82
  expect(
82
- BenTrackerGem.date_range_visual("message", "2014-10-03", "2014-10-06")
83
+ BenTrackerGem.date_range_visual("message", "2014-10-08", "2014-10-15")
84
+ ).to eq("COMPLETE")
85
+ end
86
+
87
+ end
88
+
89
+ context "#diary" do
90
+
91
+ it "should replicate #date_range_visual with last week's info by default" do
92
+ expect(
93
+ BenTrackerGem.diary
94
+ ).to eq("COMPLETE")
95
+ end
96
+
97
+ it "should allow for optional arguments" do
98
+ expect(
99
+ BenTrackerGem.diary("three days ago", "today")
83
100
  ).to eq("COMPLETE")
84
101
  end
85
102
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bentrackergem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Brostoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-07 00:00:00.000000000 Z
11
+ date: 2014-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: chronic
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Leverages FitBit and GitHub to track fitness and code; messages can be
98
112
  input via the command line and are emailed to me via the Mandrill API.
99
113
  email: