malt 0.3.0 → 0.4.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.
- data/.ruby +156 -0
- data/Assembly +28 -0
- data/COPYING.rdoc +33 -0
- data/Gemfile +10 -0
- data/HISTORY.rdoc +102 -0
- data/README.rdoc +16 -10
- data/Reapfile +4 -0
- data/lib/malt.rb +36 -8
- data/lib/malt.yml +156 -0
- data/lib/malt/conversions.rb +42 -0
- data/lib/malt/core_ext.rb +81 -3
- data/lib/malt/engines/abstract.rb +259 -50
- data/lib/malt/engines/bluecloth.rb +19 -9
- data/lib/malt/engines/builder.rb +93 -32
- data/lib/malt/engines/coffee.rb +46 -0
- data/lib/malt/engines/creole.rb +60 -0
- data/lib/malt/engines/erb.rb +69 -44
- data/lib/malt/engines/erector.rb +61 -30
- data/lib/malt/engines/erubis.rb +41 -31
- data/lib/malt/engines/haml.rb +13 -37
- data/lib/malt/engines/kramdown.rb +40 -15
- data/lib/malt/engines/less.rb +15 -14
- data/lib/malt/engines/liquid.rb +24 -14
- data/lib/malt/engines/markaby.rb +44 -22
- data/lib/malt/engines/maruku.rb +89 -0
- data/lib/malt/engines/mustache.rb +20 -14
- data/lib/malt/engines/nokogiri.rb +89 -0
- data/lib/malt/engines/radius.rb +72 -34
- data/lib/malt/engines/ragtag.rb +26 -18
- data/lib/malt/engines/rdiscount.rb +18 -11
- data/lib/malt/engines/rdoc.rb +21 -15
- data/lib/malt/engines/redcarpet.rb +137 -0
- data/lib/malt/engines/redcloth.rb +15 -7
- data/lib/malt/engines/ruby.rb +13 -12
- data/lib/malt/engines/sass.rb +30 -17
- data/lib/malt/engines/string.rb +36 -0
- data/lib/malt/engines/tenjin.rb +70 -27
- data/lib/malt/engines/wikicloth.rb +48 -0
- data/lib/malt/formats/abstract.rb +90 -29
- data/lib/malt/formats/abstract_template.rb +10 -8
- data/lib/malt/formats/builder.rb +39 -13
- data/lib/malt/formats/coffee.rb +54 -0
- data/lib/malt/formats/css.rb +3 -3
- data/lib/malt/formats/erb.rb +31 -66
- data/lib/malt/formats/haml.rb +8 -8
- data/lib/malt/formats/html.rb +1 -7
- data/lib/malt/formats/javascript.rb +27 -0
- data/lib/malt/formats/latex.rb +1 -1
- data/lib/malt/formats/less.rb +13 -11
- data/lib/malt/formats/liquid.rb +7 -7
- data/lib/malt/formats/markdown.rb +43 -44
- data/lib/malt/formats/mediawiki.rb +70 -0
- data/lib/malt/formats/mustache.rb +5 -5
- data/lib/malt/formats/pdf.rb +1 -7
- data/lib/malt/formats/radius.rb +5 -4
- data/lib/malt/formats/ragtag.rb +14 -13
- data/lib/malt/formats/rbhtml.rb +28 -20
- data/lib/malt/formats/rdoc.rb +5 -4
- data/lib/malt/formats/rhtml.rb +19 -43
- data/lib/malt/formats/ruby.rb +11 -45
- data/lib/malt/formats/sass.rb +16 -24
- data/lib/malt/formats/scss.rb +13 -30
- data/lib/malt/formats/string.rb +61 -0
- data/lib/malt/formats/tenjin.rb +4 -4
- data/lib/malt/formats/text.rb +1 -1
- data/lib/malt/formats/textile.rb +7 -19
- data/lib/malt/kernel.rb +1 -2
- data/lib/malt/machine.rb +83 -13
- data/lib/malt/tilted.rb +216 -0
- data/lib/malt/version.rb +21 -0
- data/test/helper.rb +15 -0
- data/test/unit/engines/case_engine_bluecloth.rb +40 -0
- data/test/unit/engines/case_engine_builder.rb +30 -0
- data/test/unit/engines/case_engine_coffee.rb +30 -0
- data/test/unit/engines/case_engine_creole.rb +35 -0
- data/test/unit/engines/case_engine_erb.rb +28 -0
- data/test/unit/engines/case_engine_erector.rb +36 -0
- data/test/unit/engines/case_engine_erubis.rb +28 -0
- data/test/unit/engines/case_engine_haml.rb +30 -0
- data/test/unit/engines/case_engine_kramdown.rb +30 -0
- data/test/unit/engines/case_engine_less.rb +40 -0
- data/test/unit/engines/case_engine_liquid.rb +28 -0
- data/test/unit/engines/case_engine_markaby.rb +20 -0
- data/test/unit/engines/case_engine_maruku.rb +30 -0
- data/test/unit/engines/case_engine_mustache.rb +28 -0
- data/test/unit/engines/case_engine_nokogiri.rb +30 -0
- data/test/unit/engines/case_engine_radius.rb +30 -0
- data/test/unit/engines/case_engine_ragtag.rb +40 -0
- data/test/unit/engines/case_engine_rdiscount.rb +30 -0
- data/test/unit/engines/case_engine_rdoc.rb +31 -0
- data/test/unit/engines/case_engine_redcarpet.rb +30 -0
- data/test/unit/engines/case_engine_redcloth.rb +31 -0
- data/test/unit/engines/case_engine_ruby.rb +28 -0
- data/test/unit/engines/case_engine_sass.rb +36 -0
- data/test/unit/engines/case_engine_string.rb +28 -0
- data/test/unit/engines/case_engine_tenjin.rb +28 -0
- data/test/unit/engines/case_engine_wikicloth.rb +25 -0
- data/test/unit/machine.rb +27 -0
- data/test/unit/malt.rb +12 -0
- metadata +364 -266
- data/History.rdoc +0 -64
- data/License.txt +0 -205
- data/Syckfile +0 -80
- data/features/consistent_rendering.feature +0 -36
- data/features/samples/sample.erb +0 -1
- data/features/samples/sample.erubis +0 -1
- data/features/samples/sample.liquid +0 -1
- data/features/samples/sample.mustache +0 -1
- data/features/samples/sample.radius +0 -1
- data/features/step_definitions/engine_steps.rb +0 -49
- data/features/support/loadpath.rb +0 -1
- data/features/support/sample_class.rb +0 -8
- data/lib/malt/formats/erector.rb +0 -53
- data/lib/malt/formats/markaby.rb +0 -53
- data/lib/malt/meta/data.rb +0 -26
- data/lib/malt/meta/package +0 -21
- data/lib/malt/meta/profile +0 -21
- data/meta/data.rb +0 -26
- data/meta/package +0 -21
- data/meta/profile +0 -21
- data/qed/01_overview.rdoc +0 -8
- data/qed/02_formats.rdoc +0 -39
- data/qed/03_formats/01_overview.rdoc +0 -7
- data/qed/03_formats/02_rdoc.rdoc +0 -83
- data/qed/03_formats/03_textile.rdoc +0 -48
- data/qed/03_formats/04_markdown.rdoc +0 -66
- data/qed/03_formats/05_erb.rdoc +0 -65
- data/qed/03_formats/06_liquid.rdoc +0 -54
- data/qed/03_formats/07_haml.rdoc +0 -44
- data/qed/03_formats/08_ragtag.rdoc +0 -19
- data/qed/03_formats/09_radius.rdoc +0 -43
- data/qed/03_formats/11_tenjin.rdoc +0 -47
- data/qed/03_formats/12_rbhtml.rdoc +0 -55
- data/qed/03_formats/13_sass.rdoc +0 -55
- data/qed/03_formats/14_scss.rdoc +0 -58
- data/qed/03_formats/15_less.rdoc +0 -46
- data/qed/03_formats/16_ruby.rdoc +0 -48
- data/qed/03_formats/17_markaby.rdoc +0 -50
- data/qed/03_formats/18_builder.rb +0 -50
- data/qed/03_formats/19_erector.rb +0 -50
- data/qed/03_formats/20_mustache.rdoc +0 -54
- data/qed/05_machine/01_limited_formats.rdoc +0 -29
- data/qed/05_machine/02_prioritized_engines.rdoc +0 -34
- data/qed/applique/malt.rb +0 -13
- data/qed/samples/data.yml +0 -4
- data/qed/samples/output-erb.txt +0 -1
- data/qed/samples/output-liquid.txt +0 -1
- data/qed/samples/output-mustache.txt +0 -1
- data/qed/samples/output-radius.txt +0 -1
- data/qed/samples/sample.erb +0 -1
- data/qed/samples/sample.liquid +0 -1
- data/qed/samples/sample.markdown +0 -308
- data/qed/samples/sample.mustache +0 -1
- data/qed/samples/sample.radius +0 -1
- data/qed/samples/sample.rdoc +0 -8
@@ -8,27 +8,37 @@ module Malt::Engine
|
|
8
8
|
register :markdown, :md
|
9
9
|
|
10
10
|
# Convert Markdown text to HTML text.
|
11
|
-
def render(params)
|
12
|
-
text = params[:text]
|
11
|
+
def render(params={})
|
13
12
|
into = params[:to]
|
13
|
+
|
14
|
+
text = parameters(params, :text)
|
15
|
+
|
14
16
|
case into
|
15
17
|
when :html, nil
|
16
|
-
|
18
|
+
prepare_engine(params).to_html
|
17
19
|
else
|
18
20
|
super(params)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
|
-
#
|
23
|
-
def
|
24
|
-
|
25
|
-
|
24
|
+
# Prepare engine for rendering.
|
25
|
+
#def prepare_engine(params={})
|
26
|
+
# create_engine(params)
|
27
|
+
#end
|
28
|
+
|
29
|
+
# Instantiate engine class and cache if applicable.
|
30
|
+
def create_engine(params={})
|
31
|
+
text = parameters(params, :text)
|
32
|
+
|
33
|
+
cached(text) do
|
34
|
+
::BlueCloth.new(text)
|
35
|
+
end
|
26
36
|
end
|
27
37
|
|
28
|
-
|
38
|
+
private
|
29
39
|
|
30
40
|
# Load bluecloth library if not already loaded.
|
31
|
-
def
|
41
|
+
def require_engine
|
32
42
|
return if defined? ::BlueCloth
|
33
43
|
require_library 'bluecloth'
|
34
44
|
end
|
data/lib/malt/engines/builder.rb
CHANGED
@@ -8,44 +8,111 @@ module Malt::Engine
|
|
8
8
|
#
|
9
9
|
class Builder < Abstract
|
10
10
|
|
11
|
-
default :builder
|
11
|
+
default :builder, :rbml
|
12
12
|
|
13
13
|
#
|
14
|
-
|
15
|
-
|
14
|
+
def render(params={}, &content)
|
15
|
+
into = parameters(params, :to) || :html
|
16
16
|
|
17
|
-
#
|
18
|
-
def render(params, &yld)
|
19
|
-
into = params[:to]
|
20
17
|
case into
|
21
|
-
when :html,
|
22
|
-
|
18
|
+
when :xml, :html, :xhtml
|
19
|
+
prepare_engine(params, &content) #.target!
|
23
20
|
else
|
24
|
-
super(params, &
|
21
|
+
super(params, &content)
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
25
|
+
#private
|
26
|
+
|
27
|
+
# Prepare engine for rendering.
|
28
|
+
def prepare_engine(params={}, &content)
|
29
|
+
prefix = parameters(params, :prefix)
|
30
|
+
|
31
|
+
if prefix
|
32
|
+
prepare_engine_prefix(params, &content)
|
33
|
+
else
|
34
|
+
prepare_engine_scope(params, &content)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# TODO: Can Builder be cached?
|
39
|
+
|
40
|
+
#
|
41
|
+
def create_engine(params={})
|
42
|
+
opts = engine_options(params)
|
43
|
+
|
44
|
+
#cached(opts) do
|
45
|
+
::Builder::XmlMarkup.new(opts)
|
46
|
+
#end
|
39
47
|
end
|
40
48
|
|
41
|
-
|
49
|
+
#
|
50
|
+
def prepare_engine_prefix(params, &content)
|
51
|
+
prefix, text, file, scope, locals = parameters(params, :prefix, :text, :file, :scope, :locals)
|
52
|
+
|
53
|
+
bind = make_binding(scope, locals, &content)
|
54
|
+
|
55
|
+
#scope, locals = split_data(data)
|
56
|
+
|
57
|
+
#scope ||= Object.new
|
58
|
+
#locals ||= {}
|
59
|
+
|
60
|
+
engine = create_engine(params)
|
61
|
+
|
62
|
+
code = %{
|
63
|
+
lambda do |#{prefix}|
|
64
|
+
#{text}
|
65
|
+
end
|
66
|
+
}
|
67
|
+
|
68
|
+
eval(code, bind, file || '(builder)').call(engine)
|
69
|
+
end
|
42
70
|
|
43
|
-
#
|
44
|
-
|
71
|
+
# TODO: woud rather set instance variable via #instance_variable_set
|
72
|
+
# but it is not defined.
|
73
|
+
|
74
|
+
#
|
75
|
+
def prepare_engine_scope(params, &content)
|
76
|
+
text, file, scope, locals = parameters(params, :text, :file, :scope, :locals)
|
77
|
+
|
78
|
+
scope, locals = make_external(scope, locals, &content)
|
79
|
+
|
80
|
+
engine = create_engine
|
81
|
+
|
82
|
+
locals.each do |k,v|
|
83
|
+
next if k.to_sym == :target
|
84
|
+
engine.instance_eval("@#{k} = v")
|
85
|
+
end
|
86
|
+
|
87
|
+
unless scope.respond_to?(:to_struct)
|
88
|
+
scope.instance_variables.each do |k|
|
89
|
+
next if k == "@target"
|
90
|
+
v = scope.instance_variable_get(k)
|
91
|
+
engine.instance_eval("#{k} = v")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
engine.instance_eval(text, file || '(builder)')
|
96
|
+
|
97
|
+
engine.target!
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
# Load Builder library if not already loaded.
|
103
|
+
def require_engine
|
45
104
|
return if defined? ::Builder
|
46
105
|
require_library 'builder'
|
106
|
+
|
107
|
+
# Inexplicably Ruby 1.8 acts like the p method is present
|
108
|
+
# if undef_method is not used, but acts like it isn't if
|
109
|
+
# undef_method is used (raising an error).
|
110
|
+
::Builder::XmlBase.class_eval do
|
111
|
+
undef_method :p rescue nil
|
112
|
+
end
|
47
113
|
end
|
48
114
|
|
115
|
+
#
|
49
116
|
# :target=>target_object: Object receiving the markup. target_object must
|
50
117
|
# respond to the <<(a_string) operator and return itself.
|
51
118
|
# The default target is a plain string target.
|
@@ -55,15 +122,9 @@ module Malt::Engine
|
|
55
122
|
#
|
56
123
|
# :margin=>initial_indentation_level: Amount of initial indentation
|
57
124
|
# (specified in levels, not spaces).
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
margin = params[:margin] || settings[:margin]
|
62
|
-
opts = {}
|
63
|
-
opts[:target] = target if target
|
64
|
-
opts[:indent] = indent if indent
|
65
|
-
opts[:margin] = margin if margin
|
66
|
-
opts
|
125
|
+
#
|
126
|
+
def engine_option_names
|
127
|
+
[:target, :indent, :margin]
|
67
128
|
end
|
68
129
|
|
69
130
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'malt/engines/abstract'
|
2
|
+
|
3
|
+
module Malt::Engine
|
4
|
+
|
5
|
+
# Coffee Malt Engine
|
6
|
+
#
|
7
|
+
class Coffee < Abstract
|
8
|
+
|
9
|
+
default :coffee
|
10
|
+
|
11
|
+
# Render coffee script to JavaScript.
|
12
|
+
def render(params={}, &content)
|
13
|
+
into, text, file = parameters(params, :to, :text, :file)
|
14
|
+
|
15
|
+
case into
|
16
|
+
when :javascript, :js, nil
|
17
|
+
::CoffeeScript.compile(text, engine_options(params))
|
18
|
+
else
|
19
|
+
super(params, &content)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# TODO: make a psuedo intermediate ?
|
24
|
+
# def prepare_engine(params)
|
25
|
+
#
|
26
|
+
# end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# Load CoffeeScript library if not already loaded.
|
31
|
+
def require_engine
|
32
|
+
return if defined? ::CoffeeScript
|
33
|
+
require_library 'coffee_script'
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
def engine_options(params)
|
38
|
+
options = {}
|
39
|
+
options[:bare] = params[:bare] || params[:no_wrap] || false
|
40
|
+
options
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'malt/engines/abstract'
|
2
|
+
|
3
|
+
module Malt::Engine
|
4
|
+
|
5
|
+
# Creole is a MediaWiki format for Ruby.
|
6
|
+
#
|
7
|
+
# @see http://github.com/larsch/creole
|
8
|
+
|
9
|
+
class Creole < Abstract
|
10
|
+
|
11
|
+
default :wiki, :creole
|
12
|
+
|
13
|
+
# Convert WikiMedia format to HTML.
|
14
|
+
#
|
15
|
+
def render(params={}, &content)
|
16
|
+
into = parameters(params, :to)
|
17
|
+
|
18
|
+
case into
|
19
|
+
when :html, nil
|
20
|
+
prepare_engine(params, &content).to_html
|
21
|
+
else
|
22
|
+
super(params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
#def prepare_engine(params={}, &content)
|
28
|
+
# create_engine(params)
|
29
|
+
#end
|
30
|
+
|
31
|
+
#
|
32
|
+
def create_engine(params={})
|
33
|
+
text = parameters(params, :text)
|
34
|
+
opts = engine_options(params)
|
35
|
+
|
36
|
+
cached(opts, text) do
|
37
|
+
::Creole::Parser.new(text, opts)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
# Load `creole` library if not already loaded.
|
44
|
+
def require_engine
|
45
|
+
return if defined? ::Creole
|
46
|
+
require_library 'creole'
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
ENGINE_OPTION_NAMES = [:allowed_schemes, :extensions, :no_escape]
|
51
|
+
|
52
|
+
#
|
53
|
+
def engine_option_names
|
54
|
+
ENGINE_OPTION_NAMES
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
data/lib/malt/engines/erb.rb
CHANGED
@@ -15,72 +15,97 @@ module Malt::Engine
|
|
15
15
|
|
16
16
|
# Render ERB template.
|
17
17
|
#
|
18
|
-
#
|
18
|
+
# @param [Hash] params
|
19
19
|
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# * :data - data source for template interpolation
|
23
|
-
# * :safe -
|
24
|
-
# * :trim -
|
20
|
+
# @option params [String] :text
|
21
|
+
# Text of document.
|
25
22
|
#
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
23
|
+
# @option params [String] :file
|
24
|
+
# The file name where text was read (or nil).
|
25
|
+
#
|
26
|
+
# @option params [Object,Binding] :scope
|
27
|
+
# Scope from within which to render, serves as data source for
|
28
|
+
# template interpolation.
|
29
|
+
#
|
30
|
+
# @option params [Object,Binding] :locals
|
31
|
+
# Direct key/value data for template interpolation.
|
32
|
+
#
|
33
|
+
# @option params [Boolean] :safe
|
34
|
+
# Run in separate thread.
|
35
|
+
#
|
36
|
+
# @option params [String] :trim
|
37
|
+
# Trim mode, can be either of the following:
|
38
|
+
# a) `%` enables Ruby code processing for lines beginning with `%`.
|
39
|
+
# b) `<>` omit newline for lines starting with `<%` and ending in `%>`.
|
40
|
+
# c) `>` omit newline for lines ending in `%>`.
|
41
|
+
#
|
42
|
+
# @option params [Boolean] :precompile (true)
|
43
|
+
# Precompile the ERB template. Default is `true`.
|
44
|
+
# Note that `yield` currently does work with non-compiled tempaltes.
|
45
|
+
#
|
46
|
+
# @return [String] Rendered output.
|
47
|
+
#
|
48
|
+
def render(params={}, &content)
|
49
|
+
text, file, scope, locals = parameters(params, :text, :file, :scope, :locals)
|
50
|
+
|
51
|
+
#if settings[:compile] == true
|
52
|
+
#else
|
53
|
+
bind = make_binding(scope, locals, &content)
|
54
|
+
prepare_engine(params).result(bind)
|
55
|
+
#end
|
50
56
|
end
|
51
57
|
|
52
58
|
# Returns instance of underlying ::ERB class.
|
53
|
-
def
|
54
|
-
|
55
|
-
|
59
|
+
#def prepare_engine(params={})
|
60
|
+
# create_engine(params)
|
61
|
+
#end
|
62
|
+
|
63
|
+
#
|
64
|
+
def create_engine(params={})
|
65
|
+
text = parameters(params, :text)
|
56
66
|
|
57
67
|
opts = engine_options(params)
|
58
68
|
safe = opts[:safe]
|
59
69
|
trim = opts[:trim]
|
60
70
|
|
61
|
-
|
62
|
-
@cache[file] ||= ::ERB.new(text, safe, trim)
|
63
|
-
else
|
71
|
+
cached(text,safe,trim) do
|
64
72
|
::ERB.new(text, safe, trim)
|
65
73
|
end
|
66
74
|
end
|
67
75
|
|
68
|
-
|
76
|
+
private
|
69
77
|
|
70
78
|
# Load ERB library if not already loaded.
|
71
|
-
def
|
79
|
+
def require_engine
|
72
80
|
return if defined? ::ERB
|
73
81
|
require_library('erb')
|
74
82
|
end
|
75
83
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
opts[:trim] = params[:trim] || settings[:trim]
|
80
|
-
opts
|
84
|
+
#
|
85
|
+
def engine_option_names
|
86
|
+
[:safe, :trim]
|
81
87
|
end
|
82
88
|
|
89
|
+
#def engine_options(params)
|
90
|
+
# opts = {}
|
91
|
+
# opts[:safe] = params[:safe] || settings[:safe]
|
92
|
+
# opts[:trim] = params[:trim] || settings[:trim]
|
93
|
+
# opts
|
94
|
+
#end
|
95
|
+
|
96
|
+
# Compile ERB template into Ruby source code.
|
97
|
+
#
|
98
|
+
# @return [String] Ruby source code.
|
99
|
+
#def compile(params={})
|
100
|
+
# if cache?
|
101
|
+
# @source[params] ||= (
|
102
|
+
# intermediate(params).src
|
103
|
+
# )
|
104
|
+
# else
|
105
|
+
# intermediate(params).src
|
106
|
+
# end
|
107
|
+
#end
|
108
|
+
|
83
109
|
end
|
84
110
|
|
85
111
|
end
|
86
|
-
|