skn_utils 3.1.4 → 3.2.0

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: 19745a2e2656ae6e549c7d9cfda1539fc06e011a
4
- data.tar.gz: 27b7e896212e6d336c2ede19cd1f1d857476f282
3
+ metadata.gz: ecb548ae02a698328f3c04c7b9e7dbfd115804cb
4
+ data.tar.gz: eec07b8981a3778c0146e529cf635a402b7ca3d6
5
5
  SHA512:
6
- metadata.gz: 99583604dd3ae0bbb11d0babd711e5ba7f1878c2bdf114da8f52deb6821ff459389c47ed490132eb448cb83ef7f12126bb6705f95126c4f647e59f57566e0d06
7
- data.tar.gz: 5b7117ec60265bc0f2de853e2cf2a6b49ec41498e5247ea31e7ed5f935e078176be750f622fc41252a41e8d65c799c784dda272cc1f519ff4d1476f1f37da291
6
+ metadata.gz: b2297dc9806e0155a8cdf6e89051c699b4f41c871f89cb69cc6f07faf0159b230edfebfff452cb58684909e57e6fc6eb5cff9330b8a844a66a2548ccbd1f1e76
7
+ data.tar.gz: a8c18cc46ac4f2b6c770d2aad74c0505612aff180d37a235641a8587345a1ee3882411ba51dee464221c035954a13ec02156358b4ca9f901f6bb1cbfdb0b296d
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "deep_merge", '~> 1.1', :require => 'deep_merge/rails_compat'
4
-
5
3
  # Specify your gem's dependencies in skn_utils.gemspec
6
4
  gemspec
data/README.md CHANGED
@@ -16,16 +16,14 @@ Ruby Gem containing a Ruby PORO (Plain Old Ruby Object) that can be instantiated
16
16
 
17
17
 
18
18
  ## New Features
19
- 07/2017 V3.1.4
19
+ 07/2017 V3.1.5
20
20
  Added SknSettings class for use as a replacement to the popular, but obsolete, Config.gem
21
21
  SknSettings.load_configuration_basename!(config_file_name-only) or 'Rails.env.to_s' value, will load all the yml files in this order:
22
22
  ./config/settings.yml
23
- ./config/settings/<name>.yml
24
- ./config/settings/<name>.local.yml
25
- and deep_merge the results. Ya might have to add this gem statement to your Rails Application GemFile.
26
- gem 'deep_merge', '~> 1.1', :require => 'deep_merge/rails_compat'
23
+ ./config/settings/<config_name>.yml
24
+ ./config/settings/<config_name>.local.yml
27
25
  I also restored SknUtils:ResultBean and SknUtils::PageControls to the classes contained in this gem. They are simple wrappers
28
- inheriting the NestedResult class.
26
+ inheriting the NestedResult class. Also added SknHash class as a wrapper without the SknUtils namespace required or exposed
29
27
 
30
28
  03/2017 V3.0.0
31
29
  Added SknUtils::NestedResult to replace, or be an alternate, to ResultBean, GenericBean, PageControls, ValueBean, and AttributeHelper.
@@ -54,33 +52,47 @@ Ruby Gem containing a Ruby PORO (Plain Old Ruby Object) that can be instantiated
54
52
  None required other than initialization hash
55
53
 
56
54
 
57
- ## Public Methods
55
+ ## Public Methods: SknSettings ONLY
56
+ SknSettings is global constant containing an initialized Object of SknUtils::SknConfiguration using defaults
57
+ To change the 'development'.yml default please use the following method early or in the case of Rails in 'application.rb
58
+ #load_config_basename!(config_name) -- Where config_name is the name of yml files stored in the `./config/settings` directory
59
+ #config_path!(path) -- Where path format is './<dirs>/', default is: './config/'
60
+ and contains a settings.yml file and a 'path/settings/' directory
61
+
62
+ Paths ./config and ./config/settings must exist.
63
+ File ./config/settings.yml must exist and contain a valid YAML file structure.
64
+ ./config/settings.yml -- Required base
65
+ ./config/settings/<config_name>.yml -- Optional base.deep_merge!()
66
+ ./config/settings/<config_name>.local.yml -- Optional base.deep_merge!()
67
+
68
+
69
+ ## Public Methods: SknUtils::NestedResult, SknHash & SknSettings
58
70
  Each concrete Class supports the following utility methods:
59
71
  #to_hash -- returns a hash of current key/value pairs, including nested
60
72
  #to_json -- returns a json string of current key/value pairs, including nested
61
73
  #hash_from(:base_key) -- exports the internal hash starting with this base level key
62
74
  #obj.obj2.hash_from(:base) -- exports the internal hash starting from this nested base level key
75
+
63
76
  #[] -- returns value of attr, when #[<attr_name_symbol>]
64
77
  #[]=(attr, value) -- assigns value to existing attr, or creates a new key/value pair
65
- #<attr>? -- detects true/false presence? of attr, and non-blank existance of attr's value; when #address?
66
78
  #<attr> -- returns value of named attribute
67
79
  #<attr> = (value) -- assigns value to existing attr, or creates a new key/value pair
68
- -- Where <attr> is a key value from the initial hash, or a key that was/will be dynamically added
80
+ -- Where <attr> is a key value from the initial hash, or a key that was/will be dynamically added
69
81
 
82
+ #keys -- returns array of symbol #keys from current nested level
83
+ #== -- alias to #===
84
+ #=== -- returns true/false from camparison of the two objects
85
+ #eql? -- returns true/false from camparison of the two objects
86
+ #<attr>? -- detects true/false presence? of attr, and non-blank existance of attr's value; when #address?
70
87
 
71
88
 
72
89
  ## Public Components
73
- SknUtils::NestedResult # >= V 3.0.0 Primary Key/Value Container with Dot/Hash notiation support.
74
-
75
-
76
- *** <= V 2.0.6 Depreciated, HAS been removed ***
90
+ SknUtils::NestedResult # >= V 3.0.0 Primary Key/Value Container with Dot/Hash notiation support.
91
+ SknSettings # Application Configuration class, Key/Value Container with Dot/Hash notiation support.
77
92
 
78
- Inherit from NestedResultBase or instantiate an pre-built Class:
79
- SknUtils::ResultBean # => Not Serializable and follows hash values only.
80
- SknUtils::PageControls # => Serializable and follows hash values and arrays of hashes.
81
- SknUtils::GenericBean # => Serializable and follows hash values only.
82
- SknUtils::ValueBean # => Serializable and DOES NOT follows hash values.
83
- or Include SknUtils::AttributeHelpers # => Adds getter/setters, and hash notation access to instance vars of any object.
93
+ SknHash # Wrapper for name only, WITHOUT SknUtils namespace, inherits from SknUtils::NestedResult
94
+ SknUtils::ResultBean # Wrapper for name only, inherits from SknUtils::NestedResult
95
+ SknUtils::PageControls # Wrapper for name only, inherits from SknUtils::NestedResult
84
96
 
85
97
 
86
98
  ## Basic features include:
@@ -192,7 +204,7 @@ gem 'skn_utils'
192
204
 
193
205
 
194
206
  And then execute:
195
- $ bundle
207
+ $ bundle install
196
208
 
197
209
 
198
210
  Or install it yourself as:
@@ -219,14 +231,20 @@ $ cd skn_utils
219
231
  $ bin/console
220
232
 
221
233
  [1] pry(main)> rb = SknUtils::NestedResult.new({sample: [{one: "one", two: "two"},{one: 1, two: 2}] })
222
- [2] pry(main)> pg = SknUtils::NestedResult.new({sample: [{three: 3, four: 4},{five: 'five', two: 'two'}] })
234
+ [2] pry(main)> pg = SknHash.new({sample: [{three: 3, four: 4},{five: 'five', two: 'two'}] })
223
235
  [3] pry(main)> pg.sample.first.three
224
236
  [4] pry(main)> rb.sample.first.one
225
237
  [5] pry(main)> rb.sample.first[:one]
226
238
  [6] pry(main)> rb.hash_from(:sample)
227
239
  [7] pry(main)> rb.sample?
228
240
  [8] pry(main)> rb.sample[0].one?
229
-
241
+ ...
242
+ [10] pry(main)> cfg = SknSettings
243
+ [11] pry(main)> cfg.config_path!('./spec/factories/')
244
+ [12] pry(main)> cfg.load_config_basename!('test')
245
+ [13] pry(main)> cfg.keys
246
+ [14] pry(main)> cfg.Packaging.keys
247
+
230
248
  [n] pry(main)> exit
231
249
  * Done
232
250
  ```
data/bin/benchmark.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  require 'bundler/setup'
4
4
  require 'skn_utils'
5
5
  require 'ostruct'
6
- require 'psych'
7
6
  require 'benchmark/ips'
8
7
 
9
8
  Benchmark.ips do |x|
data/bin/console CHANGED
@@ -1,9 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'bundler/setup'
4
- require 'psych'
5
- require 'erb'
6
- require 'deep_merge/rails_compat'
7
4
  require 'skn_utils'
8
5
 
9
6
  require 'pry'
data/lib/skn_hash.rb ADDED
@@ -0,0 +1,6 @@
1
+ ##
2
+ #
3
+
4
+ class SknHash < SknUtils::NestedResult
5
+
6
+ end
@@ -173,6 +173,23 @@ module SknUtils
173
173
  end
174
174
  end
175
175
 
176
+ # returns hash from any root key starting point: object.root_key
177
+ # - protected to reasonably ensure key is a symbol
178
+ def hash_from(sym)
179
+ starting_sym = key_as_sym(sym)
180
+ bundle = ((starting_sym == container) ? container : { starting_sym => container[starting_sym] })
181
+ bundle.keys.each_with_object({}) do |attr,collector|
182
+ value = bundle[attr]
183
+ case value
184
+ when NestedResult
185
+ value = value.to_hash
186
+ when Array
187
+ value = value.map {|ele| array_to_hash(ele) }
188
+ end
189
+ collector[attr] = value # new copy
190
+ end
191
+ end
192
+
176
193
  protected
177
194
 
178
195
  def reset_from_empty!(params={})
@@ -214,23 +231,6 @@ module SknUtils
214
231
  @container ||= {}
215
232
  end
216
233
 
217
- # returns hash from any root key starting point: object.root_key
218
- # - protected to reasonably ensure key is a symbol
219
- def hash_from(sym)
220
- starting_sym = key_as_sym(sym)
221
- bundle = ((starting_sym == container) ? container : { starting_sym => container[starting_sym] })
222
- bundle.keys.each_with_object({}) do |attr,collector|
223
- value = bundle[attr]
224
- case value
225
- when NestedResult
226
- value = value.to_hash
227
- when Array
228
- value = value.map {|ele| array_to_hash(ele) }
229
- end
230
- collector[attr] = value # new copy
231
- end
232
- end
233
-
234
234
  # Feature: enables dot.notation and creates matching getter/setters
235
235
  def enable_dot_notation(sym)
236
236
  name = key_as_sym(sym)
@@ -17,6 +17,10 @@ module SknUtils
17
17
  self
18
18
  end
19
19
 
20
+ def config_path!(fpath)
21
+ @base_path = fpath if File.exist?("#{fpath}settings.yml")
22
+ end
23
+
20
24
  private
21
25
 
22
26
  def load_config(conf)
@@ -26,11 +30,11 @@ module SknUtils
26
30
 
27
31
  yname = "#{@base_path}settings/#{conf}.yml"
28
32
  f_env = load_yml_with_erb(yname) if File.exist?(yname)
29
- f_base = f_base.deeper_merge!(f_env) unless (f_env.nil? || f_env.empty?)
33
+ f_base = f_base.deep_merge!(f_env) unless (f_env.nil? || f_env.empty?)
30
34
 
31
35
  yname = "#{@base_path}settings/#{conf}.local.yml"
32
36
  f_local = load_yml_with_erb(yname) if File.exist?(yname)
33
- f_base = f_base.deeper_merge!(f_local) unless (f_local.nil? || f_local.empty?)
37
+ f_base = f_base.deep_merge!(f_local) unless (f_local.nil? || f_local.empty?)
34
38
 
35
39
  f_base
36
40
  end
@@ -2,13 +2,14 @@
2
2
  module SknUtils
3
3
  class Version
4
4
  MAJOR = 3
5
- MINOR = 1
6
- PATCH = 4
5
+ MINOR = 2
6
+ PATCH = 0
7
7
 
8
8
  def self.to_s
9
9
  [MAJOR, MINOR, PATCH].join('.')
10
10
  end
11
11
  end
12
12
 
13
+
13
14
  VERSION = Version.to_s
14
15
  end
data/lib/skn_utils.rb CHANGED
@@ -7,7 +7,13 @@ require 'skn_utils/notifier_base'
7
7
  require 'skn_utils/skn_configuration'
8
8
  require 'skn_utils/exploring/commander'
9
9
  require 'skn_utils/exploring/action_service'
10
- require 'deep_merge/rails_compat'
10
+ require 'psych'
11
+ require 'json'
12
+ require 'erb'
13
+ unless defined?(Rails)
14
+ require 'deep_merge'
15
+ end
16
+ require 'skn_hash'
11
17
  require 'skn_settings'
12
18
 
13
19
  module SknUtils
data/skn_utils.gemspec CHANGED
@@ -19,16 +19,16 @@ with easy access to its contents, and on-demand transformation back to the hash
19
19
  Review the RSpec tests, and or review the README for more details.
20
20
  EOF
21
21
  spec.post_install_message = <<-EOF
22
- This version does not include ResultBean, PageControls, or ValueBean classes.
23
- SknUtils::NestedResult class replaces those original classes and their function.
22
+ This version includes modified versions of SknUtils::ResultBean, SknUtils::PageControls classes, which inherit from
23
+ SknUtils::NestedResult class. SknUtils::NestedResult replaces those original classes and consolidates their function.
24
24
 
25
- Please update your existing code to make the above change or use the prior version 2.0.6
25
+ Please update your existing code in consideration of the above change, or use the prior version 2.0.6.
26
26
 
27
27
  ATTENTION: ****************************************************************
28
- This version requires the following be added to your Rails Application 'Gemfile'
28
+ This version may require the following be added to your Rails Application 'Gemfile',
29
29
  if you are using the SknSettings configuration class.
30
30
 
31
- gem 'deep_merge', '~> 1.1', :require => 'deep_merge/rails_compat'
31
+ gem 'deep_merge', '~> 1.1'
32
32
 
33
33
  ************************************************************************
34
34
  EOF
@@ -40,7 +40,7 @@ EOF
40
40
  spec.test_files = spec.files.grep(%r{^(spec)/})
41
41
  spec.require_paths = ['lib']
42
42
 
43
- # spec.add_runtime_dependency 'deep_merge', '~> 1.1'
43
+ spec.add_runtime_dependency 'deep_merge', '~> 1.1'
44
44
 
45
45
  spec.add_development_dependency "bundler", ">= 0"
46
46
  spec.add_development_dependency "rake", ">= 0"
data/spec/spec_helper.rb CHANGED
@@ -11,11 +11,6 @@ SimpleCov.start do
11
11
  add_filter '/spec/'
12
12
  end
13
13
 
14
- require 'psych'
15
- require 'json'
16
- require 'erb'
17
- require 'deep_merge/rails_compat'
18
-
19
14
  require 'skn_utils'
20
15
  require 'skn_utils/exploring/commander'
21
16
  require 'skn_utils/exploring/action_service'
@@ -23,9 +18,6 @@ require 'skn_utils/exploring/configuration'
23
18
 
24
19
  require 'rspec'
25
20
 
26
- # Shared Examples and Support Routines
27
- Dir["./spec/support/**/*.rb"].sort.each { |f| require f}
28
-
29
21
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
30
22
  RSpec.configure do |config|
31
23
  Kernel.srand config.seed
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skn_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.4
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Scott Jr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-13 00:00:00.000000000 Z
11
+ date: 2017-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deep_merge
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +128,7 @@ files:
114
128
  - Rakefile
115
129
  - bin/benchmark.rb
116
130
  - bin/console
131
+ - lib/skn_hash.rb
117
132
  - lib/skn_settings.rb
118
133
  - lib/skn_utils.rb
119
134
  - lib/skn_utils/exploring/action_service.rb
@@ -142,13 +157,14 @@ homepage: https://github.com/skoona/skn_utils
142
157
  licenses:
143
158
  - MIT
144
159
  metadata: {}
145
- post_install_message: "This version does not include ResultBean, PageControls, or
146
- ValueBean classes. \nSknUtils::NestedResult class replaces those original classes
147
- and their function. \n\nPlease update your existing code to make the above change
148
- or use the prior version 2.0.6\n\nATTENTION: ****************************************************************
149
- \n This version requires the following be added to your Rails Application 'Gemfile'\n
150
- \ if you are using the SknSettings configuration class.\n\n gem 'deep_merge',
151
- '~> 1.1', :require => 'deep_merge/rails_compat'\n\n ************************************************************************\n"
160
+ post_install_message: "This version includes modified versions of SknUtils::ResultBean,
161
+ SknUtils::PageControls classes, which inherit from \nSknUtils::NestedResult class.
162
+ \ SknUtils::NestedResult replaces those original classes and consolidates their
163
+ function. \n\nPlease update your existing code in consideration of the above change,
164
+ or use the prior version 2.0.6.\n\nATTENTION: ****************************************************************
165
+ \n This version may require the following be added to your Rails Application
166
+ 'Gemfile',\n if you are using the SknSettings configuration class.\n\n gem
167
+ 'deep_merge', '~> 1.1'\n\n ************************************************************************\n"
152
168
  rdoc_options: []
153
169
  require_paths:
154
170
  - lib