sting 0.3.0 → 0.4.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
  SHA256:
3
- metadata.gz: 9da68de98fcd9fbce26a849c35a5b097a22450557cd24e527eab9092f3c599e8
4
- data.tar.gz: df652164022a1a6e0eec2dd72f0decd7abd67ecfca7b10e8c690244bf22d6a61
3
+ metadata.gz: 5b2589314624afd57349ddea39fb0c4fd46af5670eed2e3452e0eae9cfcbe0e4
4
+ data.tar.gz: 6b8c31692c719ecd1b9eb69e82492555253254bc4bde54acd3d4ef16dd4bd23f
5
5
  SHA512:
6
- metadata.gz: b737ad0f01853e105bc42dba547eb92a8e36d95ec339e6f51b476ebd1ca12bad519575dd8d90237c74fc5f9f965fe6d236812a180664dfac44a3f357153839bc
7
- data.tar.gz: 48545f0c95f2b7d91bea94220d4ab9dec740235438edb1856c4219f2539ec9975f1b22f19bebf9da30a0ff6b7d23f50d910a6f1cf5924b5e7179525320169434
6
+ metadata.gz: 8d50d35ab902ce86c71336e0d64c7c84730df18edd882160957b9731828a9eb4536af27b8f32e6b7402ea44ae2006dd01d4abbfee787e917f6c749ed8106a53c
7
+ data.tar.gz: d893bc658548ae2e88a023bb413703ded8fc3fa1bf733ac232d6baa9451456973270c2fe5b6e8151cbe904027ac4921686366fcf10b15d8c02f765efef84e17f
data/README.md CHANGED
@@ -19,23 +19,16 @@ $ gem install sting
19
19
  ```
20
20
 
21
21
 
22
- Why was this made?
23
- --------------------------------------------------
24
-
25
- Sting was made to replace the Rails Config gem, which has an unreasonable
26
- amount of dependencies (i.e. the dry-validation gem, its children and
27
- grandchildren...).
28
-
29
-
30
22
  Features
31
23
  --------------------------------------------------
32
24
 
33
- - [Aggressively minimalistic][1], no dependencies, no monkey-patching, no magic.
25
+ - [Aggressively minimalistic][1].
34
26
  - Settings are accessible through a globally available class.
35
27
  - Can be used either as a singleton class or as an instance.
36
28
  - Load and merge one or more YAML files or hashes.
37
29
  - Settings objects are standard ruby hashes, arrays and basic types.
38
30
  - Ability to update settings at runtime.
31
+ - [Ability to extend](#extending-yaml-files) (import) other YAML files.
39
32
  - ERB code in the YAML files will be evaluated.
40
33
 
41
34
 
@@ -121,6 +114,22 @@ config << 'local_settings'
121
114
  ```
122
115
 
123
116
 
117
+ ### Extending YAML files
118
+
119
+ Sting uses [ExtendedYAML], which means you can use the `extends` key to load
120
+ one ormore YAML files into your loaded configuration files:
121
+
122
+ ```yaml
123
+ # Extend a single file (extension is optional)
124
+ extends: some-other-file.yml
125
+
126
+ # Extend multiple files
127
+ extends:
128
+ - some-file
129
+ - another-file
130
+ ```
131
+
132
+
124
133
  Using with Rails
125
134
  --------------------------------------------------
126
135
 
@@ -151,3 +160,4 @@ Create four config files:
151
160
 
152
161
 
153
162
  [1]: https://github.com/DannyBen/sting/blob/master/lib/sting/sting_operations.rb
163
+ [2]: https://github.com/DannyBen/extended_yaml
@@ -1,5 +1,4 @@
1
- require 'yaml'
2
- require 'erb'
1
+ require 'extended_yaml'
3
2
 
4
3
  class Sting
5
4
  module StingOperations
@@ -12,15 +11,14 @@ class Sting
12
11
  content = source.collect{ |k,v| [k.to_s, v] }.to_h
13
12
  else
14
13
  source = "#{source}.yml" unless source =~ /\.ya?ml$/
15
- content = File.read source
16
- content = YAML.load(ERB.new(content).result)
14
+ content = ExtendedYAML.load source
17
15
  end
18
16
  settings.merge! content if content
19
17
  end
20
18
  alias_method :push, :<<
21
19
 
22
20
  def [](*keys)
23
- settings.dig *keys.map(&:to_s)
21
+ settings.dig(*keys.map(&:to_s))
24
22
  end
25
23
 
26
24
  def method_missing(name, *args, &blk)
@@ -29,7 +27,7 @@ class Sting
29
27
 
30
28
  suffix = nil
31
29
 
32
- if name.end_with? *['=', '!', '?']
30
+ if name.end_with?('=', '!', '?')
33
31
  suffix = name[-1]
34
32
  name = name[0..-2]
35
33
  end
@@ -58,6 +56,7 @@ class Sting
58
56
  def settings
59
57
  @settings ||= {}
60
58
  end
59
+ alias to_h settings
61
60
 
62
61
  def reset!
63
62
  @settings = nil
data/lib/sting/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Sting
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-11 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-01-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: extended_yaml
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.2'
13
27
  description: Minimal, lightweight, multi-YAML settings
14
28
  email: db@dannyben.com
15
29
  executables: []
@@ -39,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  requirements: []
42
- rubygems_version: 3.0.4
56
+ rubygems_version: 3.0.3
43
57
  signing_key:
44
58
  specification_version: 4
45
59
  summary: Minimal, lightweight, multi-YAML settings