angie 0.1.0 → 0.2.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: 04d02314fd63907858ccdde72e07c1c5bec01a4b71565528074d9a94677c71e0
4
- data.tar.gz: 7a0c6bd546a6172efc2fbeda9ae4f4bdac8cb32541215ce8f81b2409a5408acb
3
+ metadata.gz: 0d76659dc72550a2ce28860963da3e1cd9b9132f189a9a51e729e1886d247ed3
4
+ data.tar.gz: 614dbc37145fa694aacedd42dc060951e3679f9f96aae51840e5fbf0697e4d8f
5
5
  SHA512:
6
- metadata.gz: b7bec2567713bbf967f64726390004f12c130be5f68601db4eafc869e27d11cc2ff53cb3f783b75dfadb181572d1b8cd74639bcd5b227819c0ce1f7dc952db3c
7
- data.tar.gz: 9c6ac74b183da8fc84c819fd18e9223b4e0215f25899feca0351f5e9151c8a8b23b4a81844c2cff78583ab2e993ab2c752091d0957edb63548480e453b0168f2
6
+ metadata.gz: bb10d6d1050950bf5e0460132b9f0bb9ca9393cce562d8c0202393f49ccc930ec6a6997628b3601f37fafccd0eb048993b27fda91c2ea316fbb498b17d9e1045
7
+ data.tar.gz: b06dd8b57a9d4f30fb3c36369767698841782a9eb1a1216ccc555213708de0974547437672cddb18a42edd098d7c91348a845807a1af18afda1bf43fdf3f812f
data/lib/angie/dsl.rb ADDED
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Angie
4
+ class DSL
5
+ def initialize(parent = nil, &block)
6
+ @config = []
7
+ @parent = parent
8
+ @indentation = parent ? parent.indentation + 1 : 0
9
+ instance_exec(&block) if block_given?
10
+ end
11
+
12
+ def directive(name, *args)
13
+ @config << "#{indent}#{name} #{args.join(' ')};"
14
+ end
15
+
16
+ def block(name, &block)
17
+ @config << "#{indent}#{name} {"
18
+ if block_given?
19
+ child = Angie::DSL.new(self, &block)
20
+ @config.concat(child.config)
21
+ end
22
+ @config << "#{indent}}"
23
+ end
24
+
25
+ def method_missing(name, *args, &block)
26
+ if block_given?
27
+ block(name.to_s, &block)
28
+ else
29
+ directive(name.to_s, *args)
30
+ end
31
+ end
32
+
33
+ def respond_to_missing?(method_name, include_private = false)
34
+ true
35
+ end
36
+
37
+ def config
38
+ @config
39
+ end
40
+
41
+ def to_s
42
+ @config.join("\n") unless @parent
43
+ end
44
+
45
+ protected
46
+ attr_reader :indentation
47
+
48
+ private
49
+ def indent
50
+ ' ' * @indentation
51
+ end
52
+ end
53
+ end
data/lib/angie/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Angie
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - creadone
@@ -25,6 +25,7 @@ files:
25
25
  - Rakefile
26
26
  - angie.gemspec
27
27
  - lib/angie.rb
28
+ - lib/angie/dsl.rb
28
29
  - lib/angie/version.rb
29
30
  - sig/angie.rbs
30
31
  homepage: https://github.com/creadone/angie