skn_utils 3.4.2 → 3.5.0

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: f0e542a0e6d9e14df6a8ae9a90bcec9b1988832b
4
- data.tar.gz: fa115421a89a9132b75242c46c97a500b31b0859
3
+ metadata.gz: 96a858a96b9d0fc401c3327a4f39bfd6dbb97987
4
+ data.tar.gz: d01e8609e8eb4c4ff819e6d43e40344f95dee7fc
5
5
  SHA512:
6
- metadata.gz: 297daf9c6f34a1f51bd61967daa24fa66a94fc95c7794ca4da54ed5ff76c7ca595aac1bcf6856082ac1567f5ffc9739b8cd1e8dc7a5668cc498920efd1a02dcd
7
- data.tar.gz: 69dafdb1ed11c45309473dd37cf710dbb451baba01adc7d1d6a74fe41c96618705e167d744a20447a7341cacf531c8e317e1c03181617c0cad398846e04750f8
6
+ metadata.gz: 662df1032aec861e9d77c377ebe1fa2cd2c9d05b76959a36df5e372b093a001ca663012002c8e3e52728d1fe6e0cf5b391c55f1652a008f64fdcb8818ffb4812
7
+ data.tar.gz: f8b96695dea0cc313ea20ee91f20900f8890f4d6890c66be3287aeb2109e924909c6dc0a212afc89cc914cacc45c01770119bfe47cee847ddbe23d1501bef954
data/README.md CHANGED
@@ -16,6 +16,12 @@ Ruby Gem containing a Ruby PORO (Plain Old Ruby Object) that can be instantiated
16
16
 
17
17
 
18
18
  ## New Features
19
+ 12/2017 V3.5.0
20
+ Made Nokogiri's gem install/load Optional for HashToXml class
21
+ Added SknContainer as a globally namespaced sub-class of NestedResult. SknContainer is a NestedResult which is functional wrapper over a Concurrent::Hash. Hashes can use anyObject or anyValue as their key:value pairs. This makes them perfect for use as a DI Container.
22
+ Added EnvStringHandler class to augment YAML values in an application settings.yml file. Rails.env.development? becomes SknSettings.env.development? if the following is added to the settings file.
23
+ ./config/settings.yml: `env: !ruby/string:EnvStringHandler <%= ENV['RACK_ENV'] %>`
24
+
19
25
  09/2017 V3.4.0
20
26
  Added HashToXml class which converts complex/simple hashes into XML. pre-req's Nokogiri 1.8.0 or higher, unless Rails present, then uses version included with rails.
21
27
 
@@ -0,0 +1,12 @@
1
+ ##
2
+ # Register:
3
+ # SknContainer.<new.key> = AnyObject
4
+ #
5
+ # Resolve:
6
+ # SknContainer.<new.key> # => AnyObject
7
+ # SknContainer.<new.key>? # => True | False based on existance #
8
+ ##
9
+
10
+ # This creates a global constant (and singleton) wrapping a Hash
11
+ class << (SknContainer = SknUtils::NestedResult.new())
12
+ end
@@ -0,0 +1,36 @@
1
+ # File: ./lib/skn_utils/env_string_handler.rb
2
+ #
3
+ # Wrapping a string in this class gives you a prettier way to test
4
+ # for equality. The value returned by <tt>Rails.env</tt> is wrapped
5
+ # in a StringInquirer object so instead of calling this:
6
+ #
7
+ # Rails.env == 'production'
8
+ # SknSettings.env == 'production'
9
+ #
10
+ # you can call this:
11
+ #
12
+ # Rails.env.production?
13
+ # SknSettings.env.productcion?
14
+ #
15
+ # Create a EnvStringHandler to support: SknSettings.env.development?
16
+ # Yes, its YAML trick
17
+ # in config/settings.yml
18
+ # ...
19
+ # env: !ruby/string:EnvStringHandler <%= ENV['RACK_ENV'] %>
20
+ # ...
21
+ # #
22
+ class EnvStringHandler < String
23
+ private
24
+
25
+ def respond_to_missing?(method_name, _include_private = false)
26
+ method_name[-1] == '?'
27
+ end
28
+
29
+ def method_missing(method_name, *arguments)
30
+ if method_name[-1] == '?'
31
+ self == method_name[0..-2]
32
+ else
33
+ super
34
+ end
35
+ end
36
+ end
@@ -193,7 +193,7 @@ module SknUtils
193
193
  protected
194
194
 
195
195
  def reset_from_empty!(params={}, speed=true)
196
- @container = {}
196
+ @container = Concurrent::Hash.new()
197
197
  speed ? initialize_for_speed(params) :
198
198
  initialize_from_hash(params)
199
199
  end
@@ -229,7 +229,7 @@ module SknUtils
229
229
  end
230
230
 
231
231
  def container
232
- @container ||= {}
232
+ @container ||= Concurrent::Hash.new()
233
233
  end
234
234
 
235
235
  # Feature: enables dot.notation and creates matching getter/setters
@@ -2,4 +2,4 @@
2
2
  module SknUtils
3
3
  class ResultBean < NestedResult
4
4
  end
5
- end
5
+ end
@@ -2,8 +2,8 @@
2
2
  module SknUtils
3
3
  class Version
4
4
  MAJOR = 3
5
- MINOR = 4
6
- PATCH = 2
5
+ MINOR = 5
6
+ PATCH = 0
7
7
 
8
8
  def self.to_s
9
9
  [MAJOR, MINOR, PATCH].join('.')
@@ -12,4 +12,4 @@ module SknUtils
12
12
 
13
13
 
14
14
  VERSION = Version.to_s
15
- end
15
+ end
data/lib/skn_utils.rb CHANGED
@@ -4,6 +4,7 @@ require 'json'
4
4
  require 'erb'
5
5
  require 'date'
6
6
  require 'time'
7
+ require 'concurrent'
7
8
  unless defined?(Rails)
8
9
  begin
9
10
  require 'deep_merge'
@@ -12,6 +13,7 @@ unless defined?(Rails)
12
13
  puts e.message
13
14
  end
14
15
  end
16
+ require 'skn_utils/env_string_handler'
15
17
  require 'skn_utils/nested_result'
16
18
  require 'skn_utils/result_bean'
17
19
  require 'skn_utils/page_controls'
data/skn_utils.gemspec CHANGED
@@ -36,6 +36,7 @@ EOF
36
36
  spec.require_paths = ['lib']
37
37
 
38
38
  spec.add_runtime_dependency 'deep_merge', '~> 1'
39
+ spec.add_runtime_dependency 'concurrent-ruby', '~> 1'
39
40
 
40
41
  spec.add_development_dependency "bundler", "~> 1"
41
42
  spec.add_development_dependency "rake", "~> 10"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skn_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.5.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-12-21 00:00:00.000000000 Z
11
+ date: 2017-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: concurrent-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -145,12 +159,14 @@ files:
145
159
  - bin/bench_linklists.rb
146
160
  - bin/bench_nested_result.rb
147
161
  - bin/console
162
+ - lib/skn_container.rb
148
163
  - lib/skn_hash.rb
149
164
  - lib/skn_settings.rb
150
165
  - lib/skn_utils.rb
151
166
  - lib/skn_utils/business_services/year_month.rb
152
167
  - lib/skn_utils/configurable.rb
153
168
  - lib/skn_utils/converters/hash_to_xml.rb
169
+ - lib/skn_utils/env_string_handler.rb
154
170
  - lib/skn_utils/exploring/action_service.rb
155
171
  - lib/skn_utils/exploring/commander.rb
156
172
  - lib/skn_utils/exploring/configuration.rb