bentrackergem 0.0.1 → 0.0.2

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.
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: