dsl_companion 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: a771786f0b6091fa9cf21cc3c3f0c938c9749d33
4
- data.tar.gz: 9ece4271be1ef921319f8caaff12a441f2349695
3
+ metadata.gz: 86c270416e190f0d2abad7baf7edd7797b3c80dd
4
+ data.tar.gz: 240f9b639fd103970119f2a838d152041eb25bcb
5
5
  SHA512:
6
- metadata.gz: 47b386ac4117767be63f3c311acbb809161d1f17d6703ff9dcec086ca22deb8d91a20d92a54c8369e8808a31b5794fc5dd23938a9b3db15bf84e64fed9354741
7
- data.tar.gz: c407a5193ffa37f8979367ba99b26f91bb9ed7d3ecfbb421c6275c957ba3fafd0125d81e2f02517c8f0511d54f58ea881d74deac85b941cf225f756915a977cd
6
+ metadata.gz: f4fabd2022cd6018231feedfdaec4987752ec57f80df34d568d3fc323e9124781971a14af62cbec56446c601af1a45d0dc1626dde13dc98e1572808af1aadfff
7
+ data.tar.gz: f0bccac6aabdd6db860d798319824efa3e0c7083a7c81a19381fae4f23c741fb40050ce6177a21925679a17e74e92d3ef05d1a281459386178da460c202b175e
data/Rakefile CHANGED
@@ -1 +1 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
@@ -4,21 +4,21 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'dsl_companion/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "dsl_companion"
7
+ spec.name = 'dsl_companion'
8
8
  spec.version = DSLCompanion::VERSION
9
- spec.authors = ["Laurent B."]
10
- spec.email = ["lbnetid+gh@gmail.com"]
9
+ spec.authors = ['Laurent B.']
10
+ spec.email = ['lbnetid+gh@gmail.com']
11
11
  spec.summary = %q{Provides a customizable interpreter to run your own internal DSLs.}
12
12
  spec.description = %q{The goal of this gem is to provide a versatile DSL interpreter.}
13
- spec.homepage = ""
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/lbriais/dsl_companion'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake"
21
+ spec.add_development_dependency 'bundler', '~> 1.5'
22
+ spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec'
24
24
  end
@@ -3,14 +3,14 @@ module DSLCompanion
3
3
 
4
4
  module Basic
5
5
 
6
- include MetaHelper
6
+ include DSLCompanion::MetaHelper
7
7
 
8
8
  # If any method named define_<something>(*args) is in the DSL, then it provides an alternate
9
9
  # generic syntax of define(:something, *args)
10
10
  # @param [Object[]] args
11
11
  # @param [Proc] block
12
12
  # @return [Anything returned by the method]
13
- def define *args, &block
13
+ def define(*args, &block)
14
14
  extra = args.shift
15
15
  method_name = "define_#{extra}"
16
16
  if respond_to? method_name.to_sym
@@ -23,25 +23,25 @@ module DSLCompanion
23
23
  def execute_within_context(context=@context, &block)
24
24
  # Execute the block if any
25
25
  if block_given?
26
- last_saved_context = @context
27
- @context = context
26
+ last_saved_context = @current_context
27
+ @current_context = context
28
28
  begin
29
- logger "Switching to context: #{@context} (from #{last_saved_context})"
30
- @context.send :instance_variable_set, '@interpreter', @interpreter
31
- @context.instance_eval(&block)
29
+ logger "Switching to context: #{@current_context} (from #{last_saved_context})"
30
+ MetaHelper.inject_variable @current_context, :interpreter, @interpreter
31
+ @current_context.instance_eval(&block)
32
32
  ensure
33
- @context = last_saved_context
34
- logger "Back to context: #{@context}"
33
+ @current_context = last_saved_context
34
+ logger "Back to context: #{@current_context}"
35
35
  end
36
36
  end
37
37
  end
38
38
 
39
39
  def interpreter?
40
- self.is_a? DSLHelper::Interpreter
40
+ self.is_a? DSLCompanion::Interpreter
41
41
  end
42
42
 
43
43
  def interpreter
44
- self
44
+ self if interpreter?
45
45
  end
46
46
 
47
47
  def logger(msg, level=:info)
@@ -52,8 +52,6 @@ module DSLCompanion
52
52
  end
53
53
  end
54
54
 
55
-
56
-
57
55
  end
58
56
 
59
57
  end
@@ -5,17 +5,18 @@ module DSLCompanion
5
5
  include DSLCompanion::Features::Basic
6
6
 
7
7
  attr_writer :logger
8
+ attr_reader :current_context
8
9
 
9
10
  DEFAULT_EXEC_MODE=:lazy
10
11
 
11
12
  def initialize(exec_mode=DEFAULT_EXEC_MODE)
12
13
  @interpreter = self
13
14
  self.exec_mode = exec_mode
15
+ @current_context = self
14
16
  end
15
17
 
16
18
 
17
- def run file=nil, &block
18
- @context = self
19
+ def run(file=nil, &block)
19
20
  if file.nil?
20
21
  self.instance_eval &block
21
22
  else
@@ -28,7 +29,7 @@ module DSLCompanion
28
29
  @source_code_file = nil
29
30
  end
30
31
 
31
- def self.run file=nil, exec_mode=DEFAULT_EXEC_MODE, &block
32
+ def self.run(file=nil, exec_mode=DEFAULT_EXEC_MODE, &block)
32
33
  new(exec_mode).run file, &block
33
34
  end
34
35
 
@@ -42,7 +43,7 @@ module DSLCompanion
42
43
  @exec_mode = :lazy
43
44
  return @exec_mode
44
45
  end
45
- raise "DSL Interpreter: Invalid execution mode !"
46
+ raise 'DSL Interpreter: Invalid execution mode !'
46
47
  end
47
48
  attr_reader :exec_mode
48
49
 
@@ -1,38 +1,44 @@
1
- module MetaHelper
1
+ module DSLCompanion
2
+ module MetaHelper
2
3
 
3
- def metaclass
4
- class << self
5
- self
4
+ def metaclass
5
+ class << self
6
+ self
7
+ end
6
8
  end
7
- end
8
9
 
9
- def meta_eval &block
10
- metaclass.instance_eval &block
11
- end
10
+ def meta_eval(&block)
11
+ metaclass.instance_eval &block
12
+ end
12
13
 
13
- # Adds method to metaclass
14
- def meta_def( name, &block )
15
- meta_eval { define_method name, &block }
16
- end
14
+ # Adds method to metaclass
15
+ def meta_def( name, &block )
16
+ meta_eval { define_method name, &block }
17
+ end
17
18
 
18
- # Defines an instance method within a class
19
- def class_def( name, &block )
20
- class_eval { define_method name, &block }
21
- end
19
+ # Defines an instance method within a class
20
+ def class_def( name, &block )
21
+ class_eval { define_method name, &block }
22
+ end
22
23
 
23
- def inject_variable(name, value)
24
- # Inject instance variable in the current context
25
- injected_accessor = name.to_s.to_sym
26
- injected_instance_variable = "@#{injected_accessor}"
27
- already_defined = self.instance_variable_defined? injected_instance_variable
28
- logger("DSL Interpreter overriding existing variable '#{injected_instance_variable}'", :warn) if already_defined
29
- self.instance_variable_set injected_instance_variable, value
30
-
31
- # Defines the method that returns the instance variable and inject into the interpreter's context
32
- meta_def "#{injected_accessor}" do
33
- self.instance_variable_get injected_instance_variable
24
+ def inject_variable(name, value)
25
+ MetaHelper.inject_variable self, name, value
34
26
  end
35
27
 
36
- end
28
+ def self.inject_variable(target, name, value)
29
+ # Inject instance variable in the target context
30
+ injected_accessor = name.to_s.to_sym
31
+ injected_instance_variable = "@#{injected_accessor}"
32
+ already_defined = target.instance_variable_defined? injected_instance_variable
33
+ logger("DSL Interpreter overriding existing variable '#{injected_instance_variable}'", :warn) if already_defined
34
+ target.extend MetaHelper
35
+ target.instance_variable_set injected_instance_variable, value
36
+
37
+ # Defines the method that returns the instance variable and inject into the interpreter's context
38
+ target.meta_def "#{injected_accessor}" do
39
+ target.instance_variable_get injected_instance_variable
40
+ end
41
+ end
37
42
 
38
- end
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module DSLCompanion
2
- VERSION = "0.1.1"
2
+ VERSION = '0.1.2'
3
3
  end
@@ -37,7 +37,7 @@ describe DSLCompanion::Interpreter do
37
37
  it 'should give the same result for define_<something>(*args) and define(:something, *args)' do
38
38
 
39
39
  module ExtraFeatureModule
40
- def define_stuff stuff_name, value
40
+ def define_stuff(stuff_name, value)
41
41
  interpreter.inject_variable stuff_name, value
42
42
  end
43
43
  end
@@ -62,7 +62,7 @@ describe DSLCompanion::Interpreter do
62
62
  it 'should be able to inject new variables in interpreter' do
63
63
 
64
64
  module ExtraFeatureModule
65
- def define_stuff stuff_name, value
65
+ def define_stuff(stuff_name, value)
66
66
  interpreter.inject_variable stuff_name, value
67
67
  end
68
68
  end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ require 'dsl_companion'
9
9
 
10
10
  # Requires supporting ruby files with custom matchers and macros, etc,
11
11
  # in spec/support/ and its subdirectories.
12
- Dir[File.expand_path("../../spec/support/**/*.rb", __FILE__)].each { |f| require f }
12
+ Dir[File.expand_path('../../spec/support/**/*.rb', __FILE__)].each { |f| require f }
13
13
 
14
14
  RSpec.configure do |config|
15
15
  # ## Mock Framework
@@ -25,7 +25,7 @@ RSpec.configure do |config|
25
25
  # order dependency and want to debug it, you can fix the order by providing
26
26
  # the seed, which is printed after each run.
27
27
  # --seed 1234
28
- config.order = "random"
28
+ config.order = 'random'
29
29
 
30
30
  config.color = true
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dsl_companion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent B.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-05 00:00:00.000000000 Z
11
+ date: 2015-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,7 +74,7 @@ files:
74
74
  - lib/dsl_companion/version.rb
75
75
  - spec/interpreter_spec.rb
76
76
  - spec/spec_helper.rb
77
- homepage: ''
77
+ homepage: https://github.com/lbriais/dsl_companion
78
78
  licenses:
79
79
  - MIT
80
80
  metadata: {}