fat_core 0.4.2 → 0.5.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: 630a614947e9f825853b5464c9b0de9be774fa46
4
- data.tar.gz: d40314ec496e4b715823fdfd273d90da9806f97a
3
+ metadata.gz: cdaf3715eeb1419b1926b013d783c344de551510
4
+ data.tar.gz: 7f356adfefc210d1f5455b1ab9dac4e190f9697f
5
5
  SHA512:
6
- metadata.gz: 30861065424bb5d2f8c0b3425950828369dbc1dd345ec73697264925ae6478567652bd3446ad6a8fc68eaa5300c1fd221d9c98c43e68446ac023f2efe130202f
7
- data.tar.gz: e131af061368445210012157369ffe93cecdfa581a991c4f2963b8f7d71b8126e7917cb8cd7e05956e8aabb594b6d6581102fc0df85182af8761944047112667
6
+ metadata.gz: 02669fb5def651019c5673ae5ca6d532193db6e03054b94055dc324181a7e0d9f8ce2669c485d1f692667406c83908f9ba95764637806bff6bb1adbcb94d2a72
7
+ data.tar.gz: 64b998e157700080144adc6b882c3cea0acd5949fa38dda836dd9158eddc7da8077b9df3d77f111e59a3c54cec67151fa097b4a182f26e95bb7fca33c879d2ff
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
1
  --color
2
- --format progress
2
+ --format documentation
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.2
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ bundler_args: --without debug
3
+ rvm:
4
+ - 2.2.0
5
+ - 2.1.0
6
+ - 2.0.0
7
+ - 1.9.3
8
+ - rbx-2
9
+ - ruby-head
data/Gemfile CHANGED
@@ -2,3 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in fat_core.gemspec
4
4
  gemspec
5
+
6
+ group :debug do
7
+ gem "byebug"
8
+ gem "pry"
9
+ gem "pry-doc"
10
+ end
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec, :tag) do |t|
6
+ t.rspec_opts = "--tag ~online -f p"
7
+ end
8
+
9
+ task :default => :spec
data/fat_core.gemspec CHANGED
@@ -23,10 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.5"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "rcodetools"
27
26
  spec.add_development_dependency "byebug"
28
27
  spec.add_development_dependency "pry"
29
- spec.add_development_dependency "pry-doc"
28
+ spec.add_development_dependency "pry-byebug"
29
+ spec.add_development_dependency "rcodetools"
30
30
 
31
31
  spec.add_runtime_dependency "activesupport"
32
32
  spec.add_runtime_dependency "erubis"
data/lib/fat_core/date.rb CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  class Date
3
2
  # Constants for Begining of Time (BOT) and End of Time (EOT)
4
3
  # Both outside the range of what we would find in an accounting app.
@@ -2,6 +2,6 @@ module Enumerable
2
2
  # Emit item in groups of n
3
3
  def groups_of(n)
4
4
  k = -1
5
- group_by {|item| k += 1; k.div(n)}
5
+ group_by { |item| k += 1; k.div(n) }
6
6
  end
7
7
  end
@@ -133,6 +133,36 @@ class Period
133
133
  Period.new(Date.parse_spec(from, :from), Date.parse_spec(to, :to))
134
134
  end
135
135
 
136
+ def self.parse(spec = nil, default_spec: 'this_year', truncate: false)
137
+ spec = default_spec if spec.blank?
138
+ from, to = parse_from_to_spec(spec)
139
+ to ||= from
140
+ from ||= to
141
+ d1 = Date.parse_spec(from, :from) if from
142
+ d2 = Date.parse_spec(to, :to) if to
143
+ d1 ||= Date::BOT
144
+ d2 ||= Date::EOT
145
+ d2 = Date.current if truncate
146
+ Period.new(d1, d2)
147
+ end
148
+
149
+ # Extract start and end dates
150
+ def self.parse_from_to_spec(spec)
151
+ spec = spec.clean
152
+ if spec =~ /\Afrom (.*) to (.*)\z/
153
+ from_spec = $~[1]
154
+ to_spec = $~[2]
155
+ elsif spec =~ /\Afrom (.*)\z/
156
+ from_spec = $~[1]
157
+ to_spec = nil
158
+ elsif spec =~ /\Ato (.*)\z/
159
+ to_spec = $~[1]
160
+ else
161
+ to_spec = spec
162
+ end
163
+ [from_spec, to_spec]
164
+ end
165
+
136
166
  # Possibly useful class method to take an array of periods and join all the
137
167
  # contiguous ones, then return an array of the disjoint periods not
138
168
  # contiguous to one another. An array of periods with no gaps should return
@@ -1,6 +1,6 @@
1
1
  module FatCore
2
2
  MAJOR = 0
3
- MINOR = 4
3
+ MINOR = 5
4
4
  PATCH = 2
5
5
 
6
6
  VERSION = [MAJOR, MINOR, PATCH].compact.join('.')
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Kernel do
4
4
  it "should know how to time a block of code" do
5
+ $stdout = StringIO.new
5
6
  result = time_it "do something" do
6
7
  (1..10_000_000).each { |k| k * k }
7
8
  "hello"
@@ -42,15 +42,48 @@ describe Period do
42
42
  end
43
43
 
44
44
  describe "class methods" do
45
+ it 'should be able to parse a period spec' do
46
+ pd = Period.parse
47
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
48
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
45
49
 
46
- it "should know how to parse a pair of date specs" do
50
+ pd = Period.parse('from 2012-07 to 2012')
51
+ expect(pd.first).to eq(Date.parse('2012-07-01'))
52
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
53
+
54
+ pd = Period.parse('to 2012')
55
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
56
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
57
+
58
+ pd = Period.parse('from 2012')
59
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
60
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
61
+
62
+ pd = Period.parse('2012')
63
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
64
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
65
+
66
+ pd = Period.parse('this_year')
67
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
68
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
69
+
70
+ pd = Period.parse('from last_year to this_year')
71
+ expect(pd.first).to eq(Date.parse('2011-01-01'))
72
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
73
+
74
+ pd = Period.parse('from last_year to this_year', truncate: true)
75
+ expect(pd.first).to eq(Date.parse('2011-01-01'))
76
+ expect(pd.last).to eq(Date.parse('2012-07-18'))
77
+ end
78
+
79
+ it 'should know how to parse a pair of date specs' do
47
80
  expect(Period.parse_spec.first).to eq Date.current
48
81
  expect(Period.parse_spec('2014-3Q').first).to eq Date.parse('2014-07-01')
49
82
  expect(Period.parse_spec('2014-3Q').last).to eq Date.parse('2014-09-30')
50
83
  expect(Period.parse_spec(nil, '2014-3Q').last).to eq Date.parse('2014-09-30')
51
84
  end
52
85
 
53
- it "should know what the valid chunk syms are" do
86
+ it 'should know what the valid chunk syms are' do
54
87
  expect(Period.chunk_syms.size).to eq 9
55
88
  end
56
89
 
@@ -124,6 +157,12 @@ describe Period do
124
157
  expect(periods[1].last).to eq(Date.parse('2012-07-31'))
125
158
  expect(periods[2].last).to eq(Date.parse('2012-08-31'))
126
159
  end
160
+
161
+ it "should return nil if comparing incomparables" do
162
+ pd = Period.new('2012-08-01', '2012-08-31')
163
+ rg = (Date.parse('2012-08-01')..Date.parse('2012-08-31'))
164
+ expect(pd <=> rg).to be_nil
165
+ end
127
166
  end
128
167
 
129
168
  describe "instance methods" do
data/spec/spec_helper.rb CHANGED
@@ -6,6 +6,8 @@ require 'bundler/setup'
6
6
  Bundler.setup
7
7
 
8
8
  require 'fat_core'
9
+
10
+ require 'pry'
9
11
  require 'byebug'
10
12
 
11
13
  # This file was generated by the `rspec --init` command. Conventionally, all
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel E. Doherty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-02 00:00:00.000000000 Z
11
+ date: 2015-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rcodetools
70
+ name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: byebug
84
+ name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry
98
+ name: pry-byebug
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: pry-doc
112
+ name: rcodetools
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -173,6 +173,8 @@ extra_rdoc_files: []
173
173
  files:
174
174
  - ".gitignore"
175
175
  - ".rspec"
176
+ - ".ruby-version"
177
+ - ".travis.yml"
176
178
  - ".yardopts"
177
179
  - Gemfile
178
180
  - LICENSE.txt
@@ -227,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
229
  version: '0'
228
230
  requirements: []
229
231
  rubyforge_project:
230
- rubygems_version: 2.2.2
232
+ rubygems_version: 2.4.5
231
233
  signing_key:
232
234
  specification_version: 4
233
235
  summary: fat_core provides some useful core extensions
@@ -244,4 +246,3 @@ test_files:
244
246
  - spec/lib/string_spec.rb
245
247
  - spec/lib/symbol_spec.rb
246
248
  - spec/spec_helper.rb
247
- has_rdoc: