alki-dsl 0.5.1 → 0.6.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
  SHA1:
3
- metadata.gz: 90429495e92b8775651aac719580cdac47e97e14
4
- data.tar.gz: 3084f05b8ca664ad0e4df95a85ba7623d39a2952
3
+ metadata.gz: e7b46619195a15b77b5c230989b6c6962962ecc8
4
+ data.tar.gz: 9c447613711f688a2edb558b05528d3ae9bb6fa8
5
5
  SHA512:
6
- metadata.gz: 64c345261de3bebc73b2f1bc76528794e634ed569736480477f8892d728e1c9ec14859d4af249efa72187d5f07b63fe3f981b32e35469093eedf1de087f229a6
7
- data.tar.gz: 8120abd9422fdc9bb658637dd0d0e9fa7d40a346562d6a4ad5bb3ebdb9388a13ce8cc4effad0b81c6be8ae900a30707fa987c51335e05528cf87b40b2bb11a59
6
+ metadata.gz: 3cd54ade2ff7c3dc76abced31938f4732eb963ddb5c1ea2a1f57dcd26e1a2853fc2746b9a5e7b960c378ea04b0010d5158237e1899d7840dbd16be840d558e3b
7
+ data.tar.gz: 599afb4c7e3854b83b5a0b2d78f877820328da9d019e0481c3dad31ae98d5721762ecb48590a2afdcd8ed622aeaf789abd489c57953bb0304ed78d0a52fc8977
data/.gitignore CHANGED
@@ -47,6 +47,7 @@ build-iPhoneSimulator/
47
47
  Gemfile.lock
48
48
  # .ruby-version
49
49
  # .ruby-gemset
50
+ /bin/
50
51
 
51
52
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
52
53
  .rvmrc
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.10
4
+ - 2.5.1
5
+ - jruby
@@ -1,5 +1,7 @@
1
1
  # Alki::Dsl
2
2
 
3
+ image:https://travis-ci.org/alki-project/alki-dsl.svg?branch=master["Build Status", link="https://travis-ci.org/alki-project/alki-dsl"]
4
+
3
5
  Alki::Dsl is a library for building DSLs. The resulting DSL buliders can be used standalone or as builders for
4
6
  https://github.com/alki-project/alki-loader[Alki::Loader].
5
7
 
@@ -8,8 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.email = ["matt.edlefsen@gmail.com"]
9
9
  spec.summary = %q{Alki dsl library}
10
10
  spec.description = %q{Library for defining and using DSLs}
11
- spec.homepage = "https://github.com/medlefsen/alki-dsl"
11
+ spec.homepage = "http://alki.io/projects/alki-dsl"
12
12
  spec.license = "MIT"
13
+ spec.required_ruby_version = '>= 2.1.0'
13
14
 
14
15
  spec.files = `git ls-files -z`.split("\x0")
15
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -17,6 +18,6 @@ Gem::Specification.new do |spec|
17
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
19
  spec.require_paths = ["lib"]
19
20
 
20
- spec.add_dependency 'alki-support', '~> 0.7'
21
- spec.add_dependency 'alki-loader', '~> 0.2', '>= 0.2.2'
21
+ spec.add_dependency 'alki-support', '~> 0.7', ">= 0.7.1"
22
+ spec.add_dependency 'alki-loader', '~> 0.2', '>= 0.2.4'
22
23
  end
@@ -36,11 +36,11 @@ module Alki
36
36
  end
37
37
 
38
38
  def context
39
- Thread.current[:__alki_dsl_context]
39
+ @context
40
40
  end
41
41
 
42
42
  def evaluate(&blk)
43
- Thread.current[:__alki_dsl_context] = @data[:context] || blk.binding.receiver
43
+ @context = @data[:context] || block_context(blk)
44
44
  @mod.class_exec &blk
45
45
  end
46
46
 
@@ -95,6 +95,15 @@ module Alki
95
95
  @mod.singleton_class.send :remove_method, m
96
96
  end
97
97
  end
98
+
99
+ def block_context(blk)
100
+ b = blk.binding
101
+ if b.respond_to? :receiver
102
+ b.receiver
103
+ else
104
+ b.eval('self')
105
+ end
106
+ end
98
107
  end
99
108
  end
100
109
  end
@@ -1,5 +1,5 @@
1
1
  module Alki
2
2
  module Dsl
3
- VERSION = '0.5.1'
3
+ VERSION = '0.6.0'
4
4
  end
5
5
  end
@@ -0,0 +1,19 @@
1
+ require 'alki/feature_test'
2
+
3
+ describe 'Build Context' do
4
+ def foo
5
+ :foo
6
+ end
7
+
8
+ before do
9
+ @dsl = Alki::Dsl.build('alki/dsls/dsl') do
10
+ dsl_method :result do |v|
11
+ ctx[:result] = v
12
+ end
13
+ end
14
+ end
15
+
16
+ it 'should be accessable when evaluating a dsl' do
17
+ @dsl.build { result foo }.must_equal :foo
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ require 'alki/feature_test'
2
+
3
+ describe 'Runtime requires' do
4
+ before do
5
+ foo_dsl = Alki::Dsl.build('alki/dsls/dsl') do
6
+ dsl_method :foo do
7
+ ctx[:result] = :foo
8
+ end
9
+ end
10
+
11
+ @dsl = Alki::Dsl.build('alki/dsls/dsl') do
12
+ dsl_method :load_foo do
13
+ require_dsl foo_dsl
14
+ end
15
+ end
16
+ end
17
+
18
+ it 'should add the dsl methods to the running dsl' do
19
+ @dsl.build do
20
+ load_foo
21
+ foo
22
+ end.must_equal :foo
23
+ end
24
+
25
+ it 'should not add the dsl methods before it is required' do
26
+ assert_raises NoMethodError do
27
+ @dsl.build { foo }
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alki-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Edlefsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-30 00:00:00.000000000 Z
11
+ date: 2018-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alki-support
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.7'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.7'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: alki-loader
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +39,7 @@ dependencies:
33
39
  version: '0.2'
34
40
  - - ">="
35
41
  - !ruby/object:Gem::Version
36
- version: 0.2.2
42
+ version: 0.2.4
37
43
  type: :runtime
38
44
  prerelease: false
39
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +49,7 @@ dependencies:
43
49
  version: '0.2'
44
50
  - - ">="
45
51
  - !ruby/object:Gem::Version
46
- version: 0.2.2
52
+ version: 0.2.4
47
53
  description: Library for defining and using DSLs
48
54
  email:
49
55
  - matt.edlefsen@gmail.com
@@ -52,12 +58,11 @@ extensions: []
52
58
  extra_rdoc_files: []
53
59
  files:
54
60
  - ".gitignore"
61
+ - ".travis.yml"
55
62
  - Gemfile
56
63
  - README.adoc
57
64
  - Rakefile
58
65
  - alki-dsl.gemspec
59
- - bin/bundler
60
- - bin/rake
61
66
  - lib/alki/class_builder.rb
62
67
  - lib/alki/dsl.rb
63
68
  - lib/alki/dsl/base.rb
@@ -69,9 +74,10 @@ files:
69
74
  - lib/alki/dsl/version.rb
70
75
  - lib/alki/dsls/class.rb
71
76
  - lib/alki/dsls/dsl.rb
77
+ - test/feature/build_context_test.rb
72
78
  - test/feature/config_test.rb
73
79
  - test/feature/merge_test.rb
74
- - test/feature/runtime_requires.rb
80
+ - test/feature/runtime_requires_test.rb
75
81
  - test/feature_test_helper.rb
76
82
  - test/fixtures/example/lib/alki_loader.rb
77
83
  - test/fixtures/example/lib/alki_test/dsls/number.rb
@@ -81,8 +87,7 @@ files:
81
87
  - test/fixtures/example/numbers/three.rb
82
88
  - test/integration/class_builder_test.rb
83
89
  - test/test_helper.rb
84
- - test/unit/evaluator_test.rb
85
- homepage: https://github.com/medlefsen/alki-dsl
90
+ homepage: http://alki.io/projects/alki-dsl
86
91
  licenses:
87
92
  - MIT
88
93
  metadata: {}
@@ -94,7 +99,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
99
  requirements:
95
100
  - - ">="
96
101
  - !ruby/object:Gem::Version
97
- version: '0'
102
+ version: 2.1.0
98
103
  required_rubygems_version: !ruby/object:Gem::Requirement
99
104
  requirements:
100
105
  - - ">="
@@ -102,14 +107,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
107
  version: '0'
103
108
  requirements: []
104
109
  rubyforge_project:
105
- rubygems_version: 2.5.2
110
+ rubygems_version: 2.6.12
106
111
  signing_key:
107
112
  specification_version: 4
108
113
  summary: Alki dsl library
109
114
  test_files:
115
+ - test/feature/build_context_test.rb
110
116
  - test/feature/config_test.rb
111
117
  - test/feature/merge_test.rb
112
- - test/feature/runtime_requires.rb
118
+ - test/feature/runtime_requires_test.rb
113
119
  - test/feature_test_helper.rb
114
120
  - test/fixtures/example/lib/alki_loader.rb
115
121
  - test/fixtures/example/lib/alki_test/dsls/number.rb
@@ -119,4 +125,3 @@ test_files:
119
125
  - test/fixtures/example/numbers/three.rb
120
126
  - test/integration/class_builder_test.rb
121
127
  - test/test_helper.rb
122
- - test/unit/evaluator_test.rb
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
- #
4
- # This file was generated by Bundler.
5
- #
6
- # The application 'bundler' is installed as part of a gem, and
7
- # this file is here to facilitate running it.
8
- #
9
-
10
- require "pathname"
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
- Pathname.new(__FILE__).realpath)
13
-
14
- require "rubygems"
15
- require "bundler/setup"
16
-
17
- load Gem.bin_path("bundler", "bundler")
data/bin/rake DELETED
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
- #
4
- # This file was generated by Bundler.
5
- #
6
- # The application 'rake' is installed as part of a gem, and
7
- # this file is here to facilitate running it.
8
- #
9
-
10
- require "pathname"
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
- Pathname.new(__FILE__).realpath)
13
-
14
- require "rubygems"
15
- require "bundler/setup"
16
-
17
- load Gem.bin_path("rake", "rake")
@@ -1,5 +0,0 @@
1
- require 'alki/feature_test'
2
-
3
- describe 'Runtime requires' do
4
- it 'should be allowed at '
5
- end
@@ -1,6 +0,0 @@
1
- require 'alki/test'
2
- require 'alki/dsl/evaluator'
3
-
4
- describe Alki::Dsl::Evaluator do
5
-
6
- end