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.
@@ -32,11 +32,15 @@ grammar HtmlErb
32
32
  end
33
33
 
34
34
  rule text
35
- (optional_whitespace erb_eval / optional_whitespace word)+ <Text>
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
@@ -14,4 +14,7 @@ module HtmlErb
14
14
 
15
15
  class Eval < Treetop::Runtime::SyntaxNode
16
16
  end
17
+
18
+ class Word < Treetop::Runtime::SyntaxNode
19
+ end
17
20
  end
@@ -2,7 +2,7 @@ module L10nizer #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -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"))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: threedaymonk-l10nizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Battley