threedaymonk-l10nizer 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/l10nizer/grammar.treetop +6 -2
- data/lib/l10nizer/node.rb +13 -1
- data/lib/l10nizer/parser.rb +3 -0
- data/lib/l10nizer/version.rb +1 -1
- data/test/test_processor.rb +17 -0
- metadata +1 -1
@@ -32,11 +32,15 @@ grammar HtmlErb
|
|
32
32
|
end
|
33
33
|
|
34
34
|
rule text
|
35
|
-
(optional_whitespace erb_eval /
|
35
|
+
(optional_whitespace (erb_eval / inline_markup / word))+ <Text>
|
36
|
+
end
|
37
|
+
|
38
|
+
rule inline_markup
|
39
|
+
"<" "/"? ("em" / "strong" / "span") [^>]* ">"
|
36
40
|
end
|
37
41
|
|
38
42
|
rule word
|
39
|
-
[^<\s]+
|
43
|
+
[^<\s]+ <Word>
|
40
44
|
end
|
41
45
|
|
42
46
|
rule erb_eval
|
data/lib/l10nizer/node.rb
CHANGED
@@ -6,6 +6,8 @@ module L10nizer
|
|
6
6
|
TextNode.new(node, keygen)
|
7
7
|
when HtmlErb::Eval
|
8
8
|
EvalNode.new(node, keygen)
|
9
|
+
when HtmlErb::Word
|
10
|
+
WordNode.new(node)
|
9
11
|
else
|
10
12
|
BasicNode.new(node)
|
11
13
|
end
|
@@ -29,6 +31,10 @@ module L10nizer
|
|
29
31
|
def evaluated?
|
30
32
|
false
|
31
33
|
end
|
34
|
+
|
35
|
+
def string?
|
36
|
+
false
|
37
|
+
end
|
32
38
|
end
|
33
39
|
|
34
40
|
class TextNode < BasicNode
|
@@ -60,7 +66,7 @@ module L10nizer
|
|
60
66
|
|
61
67
|
def vars_and_text
|
62
68
|
@vars_and_text ||= (
|
63
|
-
if children.all?{ |c| c.evaluated? }
|
69
|
+
if children.all?{ |c| c.evaluated? } || !children.any?{ |c| c.string? }
|
64
70
|
[]
|
65
71
|
else
|
66
72
|
l10n = ""
|
@@ -93,4 +99,10 @@ module L10nizer
|
|
93
99
|
true
|
94
100
|
end
|
95
101
|
end
|
102
|
+
|
103
|
+
class WordNode < BasicNode
|
104
|
+
def string?
|
105
|
+
true
|
106
|
+
end
|
107
|
+
end
|
96
108
|
end
|
data/lib/l10nizer/parser.rb
CHANGED
data/lib/l10nizer/version.rb
CHANGED
data/test/test_processor.rb
CHANGED
@@ -87,6 +87,23 @@ class ProcessorTest < Test::Unit::TestCase
|
|
87
87
|
assert_equal html, l10nizer.reformed
|
88
88
|
end
|
89
89
|
|
90
|
+
context "when string contains inline markup" do
|
91
|
+
setup do
|
92
|
+
html = "<p>String with a <span>span</span> and <strong>strong</strong> and <em>emphasised</em> text</p>"
|
93
|
+
@l10nizer = L10nizer::Processor.new(html, lambda{ "key" })
|
94
|
+
end
|
95
|
+
|
96
|
+
should "include that markup in text" do
|
97
|
+
expected = "String with a <span>span</span> and <strong>strong</strong> and <em>emphasised</em> text"
|
98
|
+
assert_equal [expected], @l10nizer.l10ns.values
|
99
|
+
end
|
100
|
+
|
101
|
+
should "use only one localisation" do
|
102
|
+
expected = %{<p><%= t("key") %></p>}
|
103
|
+
assert_equal expected, @l10nizer.reformed
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
90
107
|
context "when parsing a sample document" do
|
91
108
|
setup do
|
92
109
|
@html = File.read(File.join(File.dirname(__FILE__), "samples", "input.html.erb"))
|