dsl_companion 0.1.1 → 0.1.2

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: 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: {}