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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c07c81383d04774ec904a433dbd14c9bf74f540e
4
- data.tar.gz: 44874fd77754d0b6a190a342b57cf704596767b3
3
+ metadata.gz: 16788059b4280282619b0f310bb6da722d07f820
4
+ data.tar.gz: 6e22528cd792c29dd49f5999e4ea2cc20af0b3eb
5
5
  SHA512:
6
- metadata.gz: 258af06811114ac081a727ac509bd5b0845942782e67507ba92e393399bf3b9f1b73bc5a0e3ebdf92bff53239987126b774d780aff7b5e086889343d81a011d6
7
- data.tar.gz: 442578eab218541ff6f240d552bc9f8414ac388c27feddbdb7a798693fcbbd3b9cf799443c84d21155f791a7f72c32a9172f7b93ca5499b51ed54a0197e76152
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][ 2015-11-11 ]
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
- # delete with zero
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.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*part.to_f/self.to_f
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
@@ -12,4 +12,8 @@ class String
12
12
  result
13
13
  end
14
14
 
15
+ def clean_whitespace
16
+ return strip.gsub(/\s{2,}/, ' ')
17
+ end
18
+
15
19
  end
@@ -1,3 +1,3 @@
1
1
  module CreativeRailsUtilities
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require 'active_support'
2
2
  require 'active_support/core_ext'
3
3
 
4
+ require 'hashrush'
5
+
4
6
  require "creative_rails_utilities/error_helper"
5
7
  require "creative_rails_utilities/hash"
6
8
  require "creative_rails_utilities/date"
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.1.2
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-10 00:00:00.000000000 Z
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: '0'
177
+ version: '2.1'
150
178
  required_rubygems_version: !ruby/object:Gem::Requirement
151
179
  requirements:
152
180
  - - ">="