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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8dd78fb9e872004a952ffc0027998ef49a112139
4
- data.tar.gz: 33a4a563794faf8d728b826b130c815ed3c1c6d1
3
+ metadata.gz: c07c81383d04774ec904a433dbd14c9bf74f540e
4
+ data.tar.gz: 44874fd77754d0b6a190a342b57cf704596767b3
5
5
  SHA512:
6
- metadata.gz: f72c907e8f868bbccd5b57c93e09af38b7739746c976441518830ce186370743f5d2db6de116a439b55c939888cef53b1aa31f2ab798cf654948dfbd0bbffc39
7
- data.tar.gz: 9ba3ebf507b7baa20fb95daa580a294385b56ad6a72900a1a02674cd00f7cb32b36221eb297920fff32a26f4ed3bda474fc0fd089f7165f8c3b041ee674e82b8
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
- ### Changed
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,5 +1,5 @@
1
1
  class String
2
-
2
+
3
3
  Alpha26 = ("a".."z").to_a
4
4
 
5
5
  def to_i26
@@ -1,3 +1,3 @@
1
1
  module CreativeRailsUtilities
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  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.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.2.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