musterb 0.1.0 → 0.1.1
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.
data/lib/musterb.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
require "erubis"
|
2
2
|
|
3
3
|
module Musterb
|
4
|
-
autoload :VERSION,
|
4
|
+
autoload :VERSION, "musterb/version"
|
5
5
|
|
6
|
-
autoload :ExtractValues,
|
7
|
-
autoload :Musterbifier,
|
8
|
-
autoload :BindingExtractor,
|
9
|
-
autoload :HashExtractor,
|
10
|
-
autoload :ObjectExtractor,
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
6
|
+
autoload :ExtractValues, "musterb/extract_values"
|
7
|
+
autoload :Musterbifier, "musterb/musterbifier"
|
8
|
+
autoload :BindingExtractor, "musterb/binding_extractor"
|
9
|
+
autoload :HashExtractor, "musterb/hash_extractor"
|
10
|
+
autoload :ObjectExtractor, "musterb/object_extractor"
|
11
|
+
autoload :InstanceVariableExtractor, "musterb/instance_variable_extractor"
|
12
|
+
autoload :NullExtractor, "musterb/null_extractor"
|
13
|
+
autoload :Evaluator, "musterb/evaluator"
|
14
|
+
autoload :Chain, "musterb/chain"
|
14
15
|
|
15
|
-
autoload :TemplateHandler,
|
16
|
+
autoload :TemplateHandler, "musterb/template_handler"
|
16
17
|
|
17
18
|
def self.to_erb(template, options = {})
|
18
19
|
klass = options[:musterbifier_klass] || Musterbifier
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Musterb::InstanceVariableExtractor
|
2
|
+
attr_reader :parent, :value
|
3
|
+
|
4
|
+
def initialize(value, parent)
|
5
|
+
@value = value
|
6
|
+
@parent = parent
|
7
|
+
end
|
8
|
+
|
9
|
+
def [](symbol)
|
10
|
+
puts "looking for #{symbol}"
|
11
|
+
if value.instance_variable_defined?("@#{symbol}")
|
12
|
+
value.instance_variable_get("@#{symbol}")
|
13
|
+
else
|
14
|
+
@parent[symbol]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -15,14 +15,13 @@ class Musterb::TemplateHandler < Musterb::Musterbifier
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.compile_mustache(source, options = {})
|
18
|
-
|
18
|
+
initial_context = options[:start_with_existing_context] ? "initial_context" : 'Musterb::InstanceVariableExtractor.new(self, Musterb::BindingExtractor.new(binding))'
|
19
|
+
erb = Musterb.to_erb(source, options.merge(:musterbifier_klass => self, :initial_context => initial_context))
|
19
20
|
klass = ActionView::Template::Handlers::ERB
|
20
21
|
klass.erb_implementation.new(erb, :trim => (klass.erb_trim_mode == "-")).src
|
21
22
|
end
|
22
23
|
|
23
24
|
def self.call(template)
|
24
|
-
|
25
|
-
options[:initial_context] = "initial_context" if template.locals.include? "initial_context"
|
26
|
-
compile_mustache(template.source, options)
|
25
|
+
compile_mustache(template.source, :start_with_existing_context => template.locals.include?("initial_context"))
|
27
26
|
end
|
28
27
|
end
|
data/lib/musterb/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
describe Musterb::InstanceVariableExtractor do
|
2
|
+
class TestClass
|
3
|
+
def initialize
|
4
|
+
@foo = "bar"
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
it "reads instance variables" do
|
9
|
+
Musterb::InstanceVariableExtractor.new(TestClass.new, nil)["foo"].should eq "bar"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "delegates to the parent if it's not found" do
|
13
|
+
Musterb::InstanceVariableExtractor.new(TestClass.new, Musterb::ObjectExtractor.new(2, nil))["to_s"].should eq "2"
|
14
|
+
end
|
15
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'musterb/template_handler'
|
2
2
|
|
3
3
|
describe Musterb::TemplateHandler do
|
4
|
-
def evaluate(template, binding)
|
5
|
-
compiled = "output_buffer = nil; " + Musterb::TemplateHandler::compile_mustache(template)
|
4
|
+
def evaluate(template, binding, options = {})
|
5
|
+
compiled = "output_buffer = nil; " + Musterb::TemplateHandler::compile_mustache(template, options)
|
6
6
|
binding.eval compiled
|
7
7
|
end
|
8
8
|
|
@@ -24,4 +24,14 @@ describe Musterb::TemplateHandler do
|
|
24
24
|
foo = "<br>"
|
25
25
|
evaluate("{{{foo}}}", binding).should eq "<br>"
|
26
26
|
end
|
27
|
+
|
28
|
+
it "can read from instance variables (likely on the controller)" do
|
29
|
+
@foo = "hello"
|
30
|
+
evaluate("{{foo}}", binding).should eq "hello"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can be bootstrapped from an initial_context" do
|
34
|
+
initial_context = Musterb::ObjectExtractor.new(2, nil)
|
35
|
+
evaluate("{{to_s}}", binding, :start_with_existing_context => true).should eq "2"
|
36
|
+
end
|
27
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: musterb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: erubis
|
@@ -123,6 +123,8 @@ files:
|
|
123
123
|
bGliL211c3RlcmIvZXh0cmFjdF92YWx1ZXMucmI=
|
124
124
|
- !binary |-
|
125
125
|
bGliL211c3RlcmIvaGFzaF9leHRyYWN0b3IucmI=
|
126
|
+
- !binary |-
|
127
|
+
bGliL211c3RlcmIvaW5zdGFuY2VfdmFyaWFibGVfZXh0cmFjdG9yLnJi
|
126
128
|
- !binary |-
|
127
129
|
bGliL211c3RlcmIvbXVzdGVyYmlmaWVyLnJi
|
128
130
|
- !binary |-
|
@@ -141,6 +143,9 @@ files:
|
|
141
143
|
c3BlYy9tdXN0ZXJiL2V2YWx1YXRvcl9zcGVjLnJi
|
142
144
|
- !binary |-
|
143
145
|
c3BlYy9tdXN0ZXJiL2hhc2hfZXh0cmFjdG9yX3NwZWMucmI=
|
146
|
+
- !binary |-
|
147
|
+
c3BlYy9tdXN0ZXJiL2luc3RhbmNlX3ZhcmlhYmxlX2V4dHJhY3Rvcl9zcGVj
|
148
|
+
LnJi
|
144
149
|
- !binary |-
|
145
150
|
c3BlYy9tdXN0ZXJiL211c3RlcmJpZmllcl9zcGVjLnJi
|
146
151
|
- !binary |-
|
@@ -184,6 +189,9 @@ test_files:
|
|
184
189
|
c3BlYy9tdXN0ZXJiL2V2YWx1YXRvcl9zcGVjLnJi
|
185
190
|
- !binary |-
|
186
191
|
c3BlYy9tdXN0ZXJiL2hhc2hfZXh0cmFjdG9yX3NwZWMucmI=
|
192
|
+
- !binary |-
|
193
|
+
c3BlYy9tdXN0ZXJiL2luc3RhbmNlX3ZhcmlhYmxlX2V4dHJhY3Rvcl9zcGVj
|
194
|
+
LnJi
|
187
195
|
- !binary |-
|
188
196
|
c3BlYy9tdXN0ZXJiL211c3RlcmJpZmllcl9zcGVjLnJi
|
189
197
|
- !binary |-
|