sal 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sal.rb +0 -1
- data/lib/sal/compiler.rb +20 -21
- data/lib/sal/engine.rb +2 -1
- data/lib/sal/parser.rb +3 -14
- data/lib/sal/template.rb +4 -4
- data/lib/sal/version.rb +1 -1
- metadata +4 -5
- data/lib/sal/filter.rb +0 -5
data/lib/sal.rb
CHANGED
data/lib/sal/compiler.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
module Sal
|
2
2
|
# Compiles HTML into Temple::HTML expressions
|
3
3
|
# @api private
|
4
|
-
class Compiler < Filter
|
4
|
+
class Compiler < Temple::Filter
|
5
|
+
def call(exp)
|
6
|
+
[:multi,
|
7
|
+
[:code, "_saldict = Sal::Wrapper.new(self)"],
|
8
|
+
super]
|
9
|
+
end
|
5
10
|
|
6
11
|
def on_sal_tag(tag, attrs, content)
|
7
|
-
[:html, :tag, tag, format_attrs(attrs),
|
12
|
+
[:html, :tag, tag, format_attrs(attrs), compile(content)]
|
8
13
|
end
|
9
14
|
|
10
15
|
def on_sal_text(incode, text)
|
@@ -16,31 +21,25 @@ module Sal
|
|
16
21
|
end
|
17
22
|
|
18
23
|
def on_sal_code(code, tag, attrs, content)
|
19
|
-
tmp1, tmp2 =
|
24
|
+
tmp1, tmp2 = unique_name, unique_name
|
20
25
|
content = compile(content)
|
21
|
-
[:
|
22
|
-
|
23
|
-
[:
|
24
|
-
[:
|
25
|
-
[:
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
[:block, 'end'],
|
33
|
-
[:block, "_saldict = #{tmp2}"],
|
34
|
-
[:block, 'end'],
|
35
|
-
]
|
26
|
+
[:if, "(#{tmp1} = _saldict['#{code}'])",
|
27
|
+
[:multi,
|
28
|
+
[:code, "#{tmp2} = _saldict"],
|
29
|
+
[:code, "_saldict = #{tmp1}"],
|
30
|
+
[:case, tmp1,
|
31
|
+
['Array',
|
32
|
+
[:block, "#{tmp1}.each do |_saldict|",
|
33
|
+
[:html, :tag, tag, ada(attrs), content]]],
|
34
|
+
[:else,
|
35
|
+
[:html, :tag, tag, ada(attrs), content]]],
|
36
|
+
[:code, "_saldict = #{tmp2}"]]]
|
36
37
|
end
|
37
38
|
|
38
39
|
private
|
39
40
|
|
40
41
|
def format_attrs(attrs)
|
41
|
-
a
|
42
|
-
attrs.each{ |k,v| a << [k, [:static, v]] }
|
43
|
-
[:multi, [:html, :staticattrs] + a]
|
42
|
+
attrs.inject([:html, :attrs]) {|a, (k,v)| a << [:html, :attr, k, [:static, v]] }
|
44
43
|
end
|
45
44
|
|
46
45
|
def ada(attrs)
|
data/lib/sal/engine.rb
CHANGED
@@ -3,10 +3,11 @@ module Sal
|
|
3
3
|
set_default_options :format => :html,
|
4
4
|
:generator => Temple::Generators::ArrayBuffer
|
5
5
|
|
6
|
-
use Sal::Parser, :file, :
|
6
|
+
use Sal::Parser, :file, :encoding
|
7
7
|
use Sal::Compiler
|
8
8
|
use Temple::HTML::Fast
|
9
9
|
|
10
|
+
filter :ControlFlow
|
10
11
|
filter :MultiFlattener # Collapse nested multis into single multi
|
11
12
|
filter :StaticMerger # Merge several statics into a single static
|
12
13
|
filter :DynamicInliner # Merge several static/dynamic into single dynamic
|
data/lib/sal/parser.rb
CHANGED
@@ -4,13 +4,7 @@ module Sal
|
|
4
4
|
class Parser
|
5
5
|
include Temple::Mixins::Options
|
6
6
|
|
7
|
-
set_default_options :
|
8
|
-
:encoding => 'utf-8'
|
9
|
-
|
10
|
-
def initialize(options = {})
|
11
|
-
super
|
12
|
-
@tab = ' ' * @options[:tabsize]
|
13
|
-
end
|
7
|
+
set_default_options :encoding => 'utf-8'
|
14
8
|
|
15
9
|
# Compile the string to a Temple expression
|
16
10
|
#
|
@@ -25,13 +19,8 @@ module Sal
|
|
25
19
|
str.force_encoding(old_enc) unless str.valid_encoding?
|
26
20
|
end
|
27
21
|
|
28
|
-
result = [:multi
|
29
|
-
|
30
|
-
|
31
|
-
doc = Nokogiri::XML(str)
|
32
|
-
|
33
|
-
parse_nodeset([result], doc)
|
34
|
-
|
22
|
+
result = [:multi]
|
23
|
+
parse_nodeset([result], Nokogiri::XML(str))
|
35
24
|
result
|
36
25
|
end
|
37
26
|
|
data/lib/sal/template.rb
CHANGED
@@ -4,10 +4,10 @@ module Sal
|
|
4
4
|
Template = Temple::Templates::Tilt(Sal::Engine, :register_as => :sal)
|
5
5
|
|
6
6
|
if Object.const_defined?(:Rails)
|
7
|
-
RailsTemplate = Temple::Templates::Rails(Sal::Engine,
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
RailsTemplate = Temple::Templates::Rails(Sal::Engine,
|
8
|
+
:register_as => :sal,
|
9
|
+
:generator => Temple::Generators::RailsOutputBuffer,
|
10
|
+
:disable_capture => true)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
data/lib/sal/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: sal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andrew Stone
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-15 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: "0.
|
35
|
+
version: "0.3"
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
@@ -60,7 +60,6 @@ files:
|
|
60
60
|
- lib/sal.rb
|
61
61
|
- lib/sal/compiler.rb
|
62
62
|
- lib/sal/engine.rb
|
63
|
-
- lib/sal/filter.rb
|
64
63
|
- lib/sal/parser.rb
|
65
64
|
- lib/sal/template.rb
|
66
65
|
- lib/sal/u.rb
|
@@ -90,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
89
|
requirements: []
|
91
90
|
|
92
91
|
rubyforge_project: sal
|
93
|
-
rubygems_version: 1.6.
|
92
|
+
rubygems_version: 1.6.2
|
94
93
|
signing_key:
|
95
94
|
specification_version: 3
|
96
95
|
summary: sal is a template language.
|