skn_utils 3.4.2 → 3.5.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: 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