creative_rails_utilities 0.1.1 → 0.1.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 +4 -4
- data/CHANGELOG.md +9 -4
- data/README.md +24 -0
- data/creative_rails_utilities.gemspec +6 -1
- data/lib/creative_rails_utilities/date.rb +34 -0
- data/lib/creative_rails_utilities/error_helper.rb +8 -0
- data/lib/creative_rails_utilities/hash.rb +39 -0
- data/lib/creative_rails_utilities/string.rb +1 -1
- data/lib/creative_rails_utilities/version.rb +1 -1
- data/lib/creative_rails_utilities.rb +5 -0
- metadata +60 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c07c81383d04774ec904a433dbd14c9bf74f540e
|
4
|
+
data.tar.gz: 44874fd77754d0b6a190a342b57cf704596767b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 258af06811114ac081a727ac509bd5b0845942782e67507ba92e393399bf3b9f1b73bc5a0e3ebdf92bff53239987126b774d780aff7b5e086889343d81a011d6
|
7
|
+
data.tar.gz: 442578eab218541ff6f240d552bc9f8414ac388c27feddbdb7a798693fcbbd3b9cf799443c84d21155f791a7f72c32a9172f7b93ca5499b51ed54a0197e76152
|
data/CHANGELOG.md
CHANGED
@@ -2,9 +2,15 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
-
## [Release candidate][ -
|
6
|
-
|
7
|
-
-
|
5
|
+
## [Release candidate][ 2015-11-11 ]
|
6
|
+
|
7
|
+
## [0.1.2] - 2015-11-10
|
8
|
+
### Added
|
9
|
+
- Hash#fast_sort_keys
|
10
|
+
- Hash#populate_with_keys
|
11
|
+
- Hash#collapse_values_on_modulo
|
12
|
+
- Date.build_date_array(start_date, end_date)
|
13
|
+
- Date#build_date_array(date)
|
8
14
|
|
9
15
|
## [0.1.1] - 2015-11-10
|
10
16
|
### Added
|
@@ -14,7 +20,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
14
20
|
### Fixed
|
15
21
|
- That one unfinished spec
|
16
22
|
|
17
|
-
|
18
23
|
## [0.1.0] - 2015-10-16
|
19
24
|
### Added
|
20
25
|
- Initial release with basic functionality described in README
|
data/README.md
CHANGED
@@ -10,6 +10,30 @@ Defines extensions, useful and convenient methods on Ruby and Rails base classes
|
|
10
10
|
|
11
11
|
Feel free to read the source under `/lib/creative_rails_utilities/`
|
12
12
|
|
13
|
+
##### Date
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
# get an array of date objects
|
17
|
+
Date.build_date_array("2015-10-11", "2015-10-13") #=> ["2015-10-11".to_date, "2015-10-12".to_date "2015-10-13".to_date]
|
18
|
+
```
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
# get an array of dates between one date object and another
|
22
|
+
"2015-10-11".to_date.build_date_array("2015-10-09") #=> ["2015-10-09".to_date, "2015-10-10".to_date, "2015-10-11".to_date]
|
23
|
+
```
|
24
|
+
|
25
|
+
##### Hash
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
# fast sort by key
|
29
|
+
some_hash.fast_sort_keys #=> some_sorted_hash
|
30
|
+
```
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
# ensure a hash has a range of integer keys (useful for graphs)
|
34
|
+
{}.populate_with_keys(min: 1, max: 3) #=> {1 => 0, 2 => 0, 3 => 0}
|
35
|
+
```
|
36
|
+
|
13
37
|
##### Numeric
|
14
38
|
|
15
39
|
```ruby
|
@@ -20,7 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
+
spec.add_dependency "activesupport", ">= 3"
|
24
|
+
spec.add_dependency "ranger"
|
25
|
+
|
23
26
|
spec.add_development_dependency "bundler", "~> 1.10"
|
24
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
-
spec.add_development_dependency "rspec"
|
28
|
+
spec.add_development_dependency "rspec", "~> 3.3.0"
|
29
|
+
spec.add_development_dependency "timecop"
|
30
|
+
spec.add_development_dependency "pry"
|
26
31
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Date
|
2
|
+
include ErrorHelper
|
3
|
+
|
4
|
+
def self.build_date_array(start_date, end_date)
|
5
|
+
start_date = start_date.to_date
|
6
|
+
end_date = end_date.to_date
|
7
|
+
|
8
|
+
raise_start_date_before_end_date if (start_date > end_date)
|
9
|
+
|
10
|
+
date_array = []
|
11
|
+
processable_date = start_date.dup
|
12
|
+
while processable_date <= end_date
|
13
|
+
date_array << processable_date
|
14
|
+
processable_date = processable_date.tomorrow
|
15
|
+
end
|
16
|
+
|
17
|
+
return date_array
|
18
|
+
end
|
19
|
+
|
20
|
+
def build_date_array(date)
|
21
|
+
date = date.to_date
|
22
|
+
|
23
|
+
if self < date
|
24
|
+
start_date = self
|
25
|
+
end_date = date
|
26
|
+
else
|
27
|
+
start_date = date
|
28
|
+
end_date = self
|
29
|
+
end
|
30
|
+
|
31
|
+
return Date.build_date_array(start_date, end_date)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -1,6 +1,14 @@
|
|
1
1
|
module ErrorHelper
|
2
|
+
def self.included(klass)
|
3
|
+
klass.extend self
|
4
|
+
end
|
5
|
+
|
2
6
|
def raise_positive_number_only
|
3
7
|
raise ArgumentError.new("Please use positive numbers only.")
|
4
8
|
end
|
5
9
|
|
10
|
+
def raise_start_date_before_end_date
|
11
|
+
raise ArgumentError.new("Please make sure the start date is before or equal to the end date!")
|
12
|
+
end
|
13
|
+
|
6
14
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class Hash
|
2
|
+
|
3
|
+
def fast_sort_keys
|
4
|
+
keys = self.keys.sort
|
5
|
+
Hash[keys.zip(self.values_at(*keys))]
|
6
|
+
end
|
7
|
+
|
8
|
+
# TODO write fast sort values
|
9
|
+
|
10
|
+
def populate_with_keys(min: nil, max: nil, explicit_default_value: 0)
|
11
|
+
start_key = min || self.keys.min
|
12
|
+
end_key = max || self.keys.max
|
13
|
+
|
14
|
+
result = self.dup
|
15
|
+
(start_key..end_key).each do |k|
|
16
|
+
result[k] = self[k] || explicit_default_value
|
17
|
+
end
|
18
|
+
|
19
|
+
return result
|
20
|
+
end
|
21
|
+
|
22
|
+
# def collapse_values_on_modulo(integer, min: nil, max: nil, shift: nil)
|
23
|
+
# raise ArgumentError.new("Modulo integer had better be larger than shift") if integer <= shift.to_i
|
24
|
+
#
|
25
|
+
# result = Hash.new(0)
|
26
|
+
# hash = self.dup.populate_with_keys(min: min, max: max)
|
27
|
+
# hash = hash.reject{|k, v| k < min.to_i}
|
28
|
+
# hash = hash.reject{|k, v| k > max if max.present?}
|
29
|
+
#
|
30
|
+
# hash.each do |k, v|
|
31
|
+
# if k%integer == shift.to_i
|
32
|
+
# result[k] = (k..(k + integer - 1)).map{|i| hash[i].to_i }.sum
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# return result.fast_sort_keys
|
37
|
+
# end
|
38
|
+
|
39
|
+
end
|
@@ -1,4 +1,9 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
|
1
4
|
require "creative_rails_utilities/error_helper"
|
5
|
+
require "creative_rails_utilities/hash"
|
6
|
+
require "creative_rails_utilities/date"
|
2
7
|
require "creative_rails_utilities/numeric"
|
3
8
|
require "creative_rails_utilities/string"
|
4
9
|
require "creative_rails_utilities/version"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: creative_rails_utilities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Creative
|
@@ -10,6 +10,34 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ranger
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: bundler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,6 +68,34 @@ dependencies:
|
|
40
68
|
version: '10.0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.3.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.3.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: timecop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
43
99
|
requirement: !ruby/object:Gem::Requirement
|
44
100
|
requirements:
|
45
101
|
- - ">="
|
@@ -72,7 +128,9 @@ files:
|
|
72
128
|
- bin/setup
|
73
129
|
- creative_rails_utilities.gemspec
|
74
130
|
- lib/creative_rails_utilities.rb
|
131
|
+
- lib/creative_rails_utilities/date.rb
|
75
132
|
- lib/creative_rails_utilities/error_helper.rb
|
133
|
+
- lib/creative_rails_utilities/hash.rb
|
76
134
|
- lib/creative_rails_utilities/numeric.rb
|
77
135
|
- lib/creative_rails_utilities/string.rb
|
78
136
|
- lib/creative_rails_utilities/version.rb
|
@@ -96,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
154
|
version: '0'
|
97
155
|
requirements: []
|
98
156
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
157
|
+
rubygems_version: 2.4.6
|
100
158
|
signing_key:
|
101
159
|
specification_version: 4
|
102
160
|
summary: Creative's assorted hacks, fixes and monkeypatches to Ruby and Rails base
|