evt-settings 1.0.0.0 → 1.1.0.1

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
  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