creative_rails_utilities 0.1.2 → 0.2.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 +20 -1
- data/README.md +31 -2
- data/creative_rails_utilities.gemspec +3 -0
- data/lib/creative_rails_utilities/date.rb +7 -0
- data/lib/creative_rails_utilities/numeric.rb +16 -2
- data/lib/creative_rails_utilities/string.rb +4 -0
- data/lib/creative_rails_utilities/version.rb +1 -1
- data/lib/creative_rails_utilities.rb +2 -0
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16788059b4280282619b0f310bb6da722d07f820
|
4
|
+
data.tar.gz: 6e22528cd792c29dd49f5999e4ea2cc20af0b3eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38370d59cbabb4955f92864fb297097ac8648a0668b929a59f48dd0886b5c9b13b5fed9a7fbd5a57be784701f29ae63df82811c87476bc0a54ccea4b8c9b6c9c
|
7
|
+
data.tar.gz: e4a5e8ef2d4f928f8679c277b9390744c0b8325b2542f2309e411b0afb298cd3745f3c1855a8cfd06993ce2cf9e7660378de7de1faf173ac59b94ddb5074b901
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,26 @@
|
|
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][
|
5
|
+
## [Release candidate][0.2.3-alpha.1]
|
6
|
+
### Added
|
7
|
+
-
|
8
|
+
|
9
|
+
## [Release candidate][0.2.2]
|
10
|
+
### Added
|
11
|
+
- Added Integer#safe_part
|
12
|
+
- Documented Date#array_with_pre_churn_limit(limit_day_count)
|
13
|
+
- Documented String#clean_whitespace
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
- Integer#safe_percent to use #safe_part, no change in public API
|
17
|
+
|
18
|
+
## [0.2.2] - 2015-11-20
|
19
|
+
### Added
|
20
|
+
- Hashrush dependency and inherited `Hash.rush`
|
21
|
+
|
22
|
+
## [0.2.0] - 2015-11-10
|
23
|
+
### Added
|
24
|
+
- Ruby version >2.1 requirement in gemspec
|
6
25
|
|
7
26
|
## [0.1.2] - 2015-11-10
|
8
27
|
### Added
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# CreativeRailsUtilities
|
2
2
|
|
3
3
|
Defines extensions, useful and convenient methods on Ruby and Rails base classes.
|
4
|
+
Requires `Ruby 2.1` for keyword arguments.
|
5
|
+
Intended for Rails > 4.0.0, but will probably also work for older projects with robust Activesupport inclusion.
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -22,8 +24,28 @@ Date.build_date_array("2015-10-11", "2015-10-13") #=> ["2015-10-11".to_date, "20
|
|
22
24
|
"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
25
|
```
|
24
26
|
|
27
|
+
```ruby
|
28
|
+
# build a range of dates that will never go beyond a limit and/or yesterday
|
29
|
+
# used for accessing pre-churned data for strictly past days
|
30
|
+
|
31
|
+
# Called on "2015-10-13"
|
32
|
+
"2015-10-11".to_date.array_with_pre_churn_limit(30) #=> ["2015-10-11".to_date, "2015-10-12".to_date]
|
33
|
+
|
34
|
+
# Called on "2015-12-25"
|
35
|
+
"2015-10-11".to_date.array_with_pre_churn_limit(30) #=> ["2015-10-11".to_date, .. 28 .. , "2015-11-10".to_date ]
|
36
|
+
```
|
37
|
+
|
25
38
|
##### Hash
|
26
39
|
|
40
|
+
```ruby
|
41
|
+
# build a hash from variables and methods, more at https://github.com/Epigene/hashrush
|
42
|
+
key1 = "a"
|
43
|
+
def key2; return "b"; end
|
44
|
+
|
45
|
+
Hash.rush(binding, :key1, :key2)
|
46
|
+
#=> {key1: "a", key2: "b"}
|
47
|
+
```
|
48
|
+
|
27
49
|
```ruby
|
28
50
|
# fast sort by key
|
29
51
|
some_hash.fast_sort_keys #=> some_sorted_hash
|
@@ -43,7 +65,9 @@ some_hash.fast_sort_keys #=> some_sorted_hash
|
|
43
65
|
```
|
44
66
|
|
45
67
|
```ruby
|
46
|
-
#
|
68
|
+
# get a percent even when deleting with zero
|
69
|
+
# whole.safe_percent(part)
|
70
|
+
100.safe_percent(50) #=> 50
|
47
71
|
1.safe_percent(2) #=> 200
|
48
72
|
0.safe_percent(0) #=> 0
|
49
73
|
```
|
@@ -56,8 +80,13 @@ some_hash.fast_sort_keys #=> some_sorted_hash
|
|
56
80
|
"apple".to_i26 #=> 749325
|
57
81
|
```
|
58
82
|
|
83
|
+
```ruby
|
84
|
+
# removes leading, trailing and repeated middle whitespace
|
85
|
+
" z z ".clean_whitespace #=> "z z"
|
86
|
+
```
|
87
|
+
|
59
88
|
## Development
|
60
|
-
Use ruby >=2.
|
89
|
+
Use ruby >=2.1
|
61
90
|
|
62
91
|
1. Write specs
|
63
92
|
2. Make specs fail
|
@@ -4,6 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'creative_rails_utilities/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
+
spec.required_ruby_version = '>= 2.1'
|
7
8
|
spec.name = "creative_rails_utilities"
|
8
9
|
spec.version = CreativeRailsUtilities::VERSION
|
9
10
|
spec.authors = ["Creative"]
|
@@ -22,8 +23,10 @@ Gem::Specification.new do |spec|
|
|
22
23
|
|
23
24
|
spec.add_dependency "activesupport", ">= 3"
|
24
25
|
spec.add_dependency "ranger"
|
26
|
+
spec.add_dependency "hashrush"
|
25
27
|
|
26
28
|
spec.add_development_dependency "bundler", "~> 1.10"
|
29
|
+
spec.add_development_dependency 'simplecov'
|
27
30
|
spec.add_development_dependency "rake", "~> 10.0"
|
28
31
|
spec.add_development_dependency "rspec", "~> 3.3.0"
|
29
32
|
spec.add_development_dependency "timecop"
|
@@ -31,4 +31,11 @@ class Date
|
|
31
31
|
return Date.build_date_array(start_date, end_date)
|
32
32
|
end
|
33
33
|
|
34
|
+
def array_with_pre_churn_limit(count_of_additional_days)
|
35
|
+
explicit_limit_date = (self + count_of_additional_days.days)
|
36
|
+
now = Time.zone.now.to_date
|
37
|
+
cutoff_date = (explicit_limit_date > now ? now.yesterday : explicit_limit_date)
|
38
|
+
return Date.build_date_array(self, cutoff_date)
|
39
|
+
end
|
40
|
+
|
34
41
|
end
|
@@ -15,15 +15,29 @@ class Numeric
|
|
15
15
|
s
|
16
16
|
end
|
17
17
|
|
18
|
+
def safe_part(part)
|
19
|
+
if self > 0
|
20
|
+
if part >= 0
|
21
|
+
return part.to_f/self.to_f
|
22
|
+
else
|
23
|
+
raise_positive_number_only
|
24
|
+
end
|
25
|
+
elsif self == 0
|
26
|
+
return 0
|
27
|
+
else
|
28
|
+
raise_positive_number_only
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
18
32
|
def safe_percent(part)
|
19
33
|
if self > 0
|
20
34
|
if part >= 0
|
21
|
-
return 100
|
35
|
+
return safe_part(part)*100
|
22
36
|
else
|
23
37
|
raise_positive_number_only
|
24
38
|
end
|
25
39
|
elsif self == 0
|
26
|
-
return 0
|
40
|
+
return 0
|
27
41
|
else
|
28
42
|
raise_positive_number_only
|
29
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: creative_rails_utilities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Creative
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hashrush
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '1.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: rake
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
174
|
requirements:
|
147
175
|
- - ">="
|
148
176
|
- !ruby/object:Gem::Version
|
149
|
-
version: '
|
177
|
+
version: '2.1'
|
150
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
179
|
requirements:
|
152
180
|
- - ">="
|