creative_rails_utilities 0.1.1 → 0.1.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: 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