evt-settings 1.0.0.0 → 1.1.0.1

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
  SHA256:
3
- metadata.gz: 6b662f4360590c38fc8b3a371fc338116973a0b7165778d739c8a46c1a3ddd06
4
- data.tar.gz: 75aced59eb4a2452434a06463d2f55fbe83d33f25d13058ab2b2d999ca377778
3
+ metadata.gz: d0abfcafdd139db015431e84676760b936413ad7696992d6af088399ae8a5e2d
4
+ data.tar.gz: fe15fdf903dc1ccc275b56acc430397fb69fef737cc778ffd1cd41de2d15a743
5
5
  SHA512:
6
- metadata.gz: ef866a762a34fa31311135ad85835404789d3cc8d3c3dfed71b9616d4cb13ca977130ec48c558f63ad9c4b8ad1f4729ed248112eb0ffeaa6df215341125f24b7
7
- data.tar.gz: 1d169da8fbc126cdedcadc971d94b1179a6b93384bef0a4377149e3546de7b0ce03a4503e4769e28e1a2d216a76132300acd4e73254b7e92f797c1802c76e636
6
+ metadata.gz: 398a50b88b43b5994140d9cc71041c5dfd683ccf0108ea0b083131e91f16cba7870ca9fd9b31dcf222ff1ace5205e42de554b4b7d5d2586c406c1cff45131892
7
+ data.tar.gz: 36db77a43d48881b8d77c5d95122990c1c9894caf1b0f44bd5da42f419c93c2be7a3824601172a82d3945382dd8ab262e7594e17b7c6ec5a98a3ed355d7fb1c8
@@ -4,10 +4,9 @@ require 'json'
4
4
  require 'log'
5
5
  require 'casing'
6
6
  require 'attribute'
7
- require 'confstruct'
8
7
 
9
8
  require 'settings/log'
10
- require 'settings/data_source/data_source'
9
+ require 'settings/data_source'
11
10
  require 'settings/data_source/hash'
12
11
  require 'settings/data_source/file'
13
12
  require 'settings/data_source/build'
@@ -1,3 +1,4 @@
1
1
  require 'settings/controls/subject'
2
2
  require 'settings/controls/data_source'
3
+ require 'settings/controls/data'
3
4
  require 'settings/controls/settings'
@@ -0,0 +1,54 @@
1
+ class Settings
2
+ module Controls
3
+ module Data
4
+ module Flat
5
+ module Single
6
+ def self.example
7
+ {
8
+ 'some_setting' => 'some value'
9
+ }
10
+ end
11
+ end
12
+
13
+ module Multiple
14
+ def self.example
15
+ {
16
+ 'some_setting' => 'some value',
17
+ 'some_other_setting' => 'some other value',
18
+ }
19
+ end
20
+ end
21
+ end
22
+
23
+ module Hierarchical
24
+ def self.example
25
+ {
26
+ 'some_namespace' => {
27
+ 'some_setting' => 'some value'
28
+ }
29
+ }
30
+ end
31
+ end
32
+
33
+ module CamelCaseKeys
34
+ def self.example
35
+ {
36
+ 'someNamespace' => {
37
+ 'someSetting' => 'some value'
38
+ }
39
+ }
40
+ end
41
+ end
42
+
43
+ module SymbolKeys
44
+ def self.example
45
+ {
46
+ :some_namespace => {
47
+ :some_setting => 'some value'
48
+ }
49
+ }
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -7,9 +7,17 @@ class Settings
7
7
  end
8
8
 
9
9
  def self.data
10
- {
11
- some_setting: 'some value'
12
- }
10
+ Data::Flat::Single.example
11
+ end
12
+
13
+ module SymbolKeys
14
+ def self.example
15
+ ::Settings::DataSource::Hash.build(data)
16
+ end
17
+
18
+ def self.data
19
+ Data::SymbolKeys.example
20
+ end
13
21
  end
14
22
  end
15
23
 
@@ -3,84 +3,44 @@ class Settings
3
3
  module Settings
4
4
  module SettingAttribute
5
5
  def self.example
6
- ::Settings.new(data)
6
+ ::Settings.build(data)
7
7
  end
8
8
 
9
9
  def self.data
10
- {
11
- "some_setting" => "some value"
12
- }
10
+ Data::Flat::Single.example
13
11
  end
14
12
  end
15
13
 
16
- module SettingAttributes
14
+ module PartialMatch
17
15
  def self.example
18
- ::Settings.new(data)
16
+ ::Settings.build(data)
19
17
  end
20
18
 
21
19
  def self.data
22
- {
23
- "some_setting" => "some value",
24
- "some_other_setting" => "some other value",
25
- "yet_another_setting" => "yet another value"
26
- }
27
- end
28
-
29
- module Partial
30
- def self.example
31
- ::Settings.new(data)
32
- end
33
-
34
- def self.data
35
- {
36
- "some_setting" => "some value",
37
- "some_other_setting" => "some other value",
38
- }
39
- end
20
+ Data::Flat::Multiple.example
40
21
  end
41
22
  end
42
23
 
43
- module AccessorAttribute
24
+ module Namespace
44
25
  def self.example
45
- ::Settings.new(data)
26
+ ::Settings.build(data)
46
27
  end
47
28
 
48
29
  def self.data
49
- {
50
- "some_accessor_attribute" => "some accessor value"
51
- }
30
+ Data::Hierarchical.example
52
31
  end
53
32
  end
54
33
 
55
- module Namespace
34
+ module AccessorAttribute
56
35
  def self.example
57
- ::Settings.new(data)
36
+ ::Settings.build(data)
58
37
  end
59
38
 
60
39
  def self.data
61
40
  {
62
- "some_namespace" => {
63
- "some_setting" => "some value"
64
- }
41
+ 'some_accessor_attribute' => 'some accessor value'
65
42
  }
66
43
  end
67
-
68
- module Override
69
- def self.example
70
- s = ::Settings.build(Namespace.data)
71
- s.override(data)
72
- s
73
- end
74
-
75
- def self.data
76
- {
77
- "some_namespace" => {
78
- "some_setting" => "some overridden value",
79
- "some_other_setting" => "some other value"
80
- }
81
- }
82
- end
83
- end
84
44
  end
85
45
  end
86
46
  end
@@ -7,5 +7,11 @@ class Settings
7
7
  def initialize(source)
8
8
  @source = source
9
9
  end
10
+
11
+ def self.build(source=nil)
12
+ source = canonize(source) if respond_to? :canonize
13
+
14
+ new(source)
15
+ end
10
16
  end
11
17
  end
@@ -1,22 +1,18 @@
1
1
  class Settings
2
2
  class DataSource
3
3
  class File < DataSource
4
- def self.build(source=nil)
5
- canonical = canonical(source)
6
- validate(canonical)
4
+ def self.canonize(source)
5
+ logger.trace { "Canonizing the file source (Source: #{source})" }
7
6
 
8
- new(canonical)
9
- end
7
+ canonized_filepath = canonize_filepath(source)
8
+ validate(canonized_filepath)
10
9
 
11
- def self.canonical(source)
12
- logger.trace { "Canonizing the file source (#{source})" }
10
+ logger.debug { "Canonized the file source (Source: #{source}, Canonized: #{canonized_filepath})" }
13
11
 
14
- canonize(source).tap do |instance|
15
- logger.debug { "Canonized the file source (#{source})" }
16
- end
12
+ canonized_filepath
17
13
  end
18
14
 
19
- def self.canonize(source)
15
+ def self.canonize_filepath(source)
20
16
  return default_filepath if source.nil?
21
17
  return source if full_path?(source)
22
18
 
@@ -32,6 +28,8 @@ class Settings
32
28
  dirpath ||= Pathname.new(source)
33
29
  filepath ||= Pathname.new(source)
34
30
 
31
+ logger.debug { "Canonized the file source (#{source})" }
32
+
35
33
  pathname(filepath, dirpath)
36
34
  end
37
35
 
@@ -83,8 +81,6 @@ class Settings
83
81
  logger.debug { "Read file: #{source}" }
84
82
  end
85
83
 
86
- data = Casing::Underscore.(data)
87
-
88
84
  hash_data_source = Hash.build data
89
85
  hash_data_source.get_data
90
86
  end
@@ -5,14 +5,27 @@ class Settings
5
5
  @logger ||= Log.get(self)
6
6
  end
7
7
 
8
- def self.build(source)
9
- new(source)
8
+ def get_data
9
+ AssureStringKeys.(source)
10
10
  end
11
11
 
12
- def get_data
13
- logger.trace { "Converting the raw source data to Confstruct" }
14
- Confstruct::Configuration.new(source).tap do |instance|
15
- logger.debug { "Converted the raw source data to Confstruct" }
12
+ module AssureStringKeys
13
+ def self.call(data)
14
+ new_data = {}
15
+
16
+ data.each do |key, value|
17
+ new_key = key.to_s
18
+
19
+ if value.is_a?(::Hash)
20
+ new_value = self.(value)
21
+ else
22
+ new_value = value
23
+ end
24
+
25
+ new_data[new_key] = new_value
26
+ end
27
+
28
+ new_data
16
29
  end
17
30
  end
18
31
  end
@@ -20,6 +20,8 @@ class Settings
20
20
 
21
21
  data = data_source.get_data
22
22
 
23
+ data = Casing::Underscore.(data)
24
+
23
25
  instance = new(data)
24
26
 
25
27
  instance
@@ -38,21 +40,6 @@ class Settings
38
40
  end
39
41
  end
40
42
 
41
- def override(override_data)
42
- logger.trace { "Overriding settings data" }
43
- res = data.push!(override_data)
44
- logger.debug { "Overrode settings data" }
45
- logger.debug(tag: :data) { "Override data #{override_data}" }
46
- res
47
- end
48
-
49
- def reset
50
- logger.trace { "Resetting overridden settings data" }
51
- res = data.pop!
52
- logger.debug { "Reset overridden settings data" }
53
- res
54
- end
55
-
56
43
  def set(receiver, *namespace, attribute: nil, strict: true)
57
44
  logger.trace { "Setting #{receiver.class.name} (#{digest(namespace, attribute, strict)})" }
58
45
  unless attribute.nil?
@@ -114,9 +101,14 @@ class Settings
114
101
  namespace.flatten!
115
102
  logger.trace { "Getting #{namespace}" }
116
103
 
117
- string_keys = namespace.map { |n| n.is_a?(String) ? n : n.to_s }
104
+ keys = namespace.map { |n| n.is_a?(Symbol) ? n.to_s : n }
118
105
 
119
- value = string_keys.inject(data) {|memo, k| memo ? memo[k] : nil }
106
+ value = nil
107
+ if keys.empty?
108
+ value = data
109
+ else
110
+ value = data.dig(*keys)
111
+ end
120
112
 
121
113
  logger.debug { "Got #{namespace}" }
122
114
  logger.debug(tag: :data) { "#{namespace}: #{value.inspect}" }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.0
4
+ version: 1.1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-04 00:00:00.000000000 Z
11
+ date: 2019-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-log
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: confstruct
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: test_bench
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -74,11 +60,12 @@ extra_rdoc_files: []
74
60
  files:
75
61
  - lib/settings.rb
76
62
  - lib/settings/controls.rb
63
+ - lib/settings/controls/data.rb
77
64
  - lib/settings/controls/data_source.rb
78
65
  - lib/settings/controls/settings.rb
79
66
  - lib/settings/controls/subject.rb
67
+ - lib/settings/data_source.rb
80
68
  - lib/settings/data_source/build.rb
81
- - lib/settings/data_source/data_source.rb
82
69
  - lib/settings/data_source/file.rb
83
70
  - lib/settings/data_source/hash.rb
84
71
  - lib/settings/log.rb
@@ -106,8 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
93
  - !ruby/object:Gem::Version
107
94
  version: '0'
108
95
  requirements: []
109
- rubyforge_project:
110
- rubygems_version: 2.7.6
96
+ rubygems_version: 3.0.1
111
97
  signing_key:
112
98
  specification_version: 4
113
99
  summary: Settings data access and assignment