sting 0.3.0 → 0.4.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
  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