creative_rails_utilities 0.1.2 → 0.2.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: 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
  - - ">="