herbgobbler 0.3.2 → 0.3.3
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/core/method_call_node.rb +9 -1
- data/lib/core/rails_text_extractor.rb +5 -0
- data/lib/core/text_extractor.rb +4 -0
- data/lib/core/tr8n_text_extractor.rb +12 -1
- data/lib/nodes/herb_erb_tr8n_text_call_node.rb +4 -0
- data/lib/nodes/herb_node_retaining_text_node.rb +2 -2
- data/lib/nodes/herb_tr8n_lambda_call_node.rb +17 -0
- data/lib/nodes/herb_tr8n_string_node.rb +1 -1
- data/lib/nodes/herb_tr8n_text_call_node.rb +20 -5
- data/lib/nodes/nodes.rb +1 -0
- data/scripts/display_syntax_tree.rb +1 -0
- metadata +3 -2
@@ -5,7 +5,15 @@ module MethodCallNode
|
|
5
5
|
text_string = ''
|
6
6
|
self.elements.each do |node|
|
7
7
|
if( node.is_a?( TextNode ) )
|
8
|
-
|
8
|
+
|
9
|
+
# If this method call is part of a string, then translate it
|
10
|
+
# as a method call otherwise just translate it is regular text
|
11
|
+
if( surrounding_nodes.nil? || !surrounded_by_text?( surrounding_nodes ) )
|
12
|
+
translated_node = text_extractor.translate_text( node.text_value )
|
13
|
+
else
|
14
|
+
translated_node = text_extractor.translate_method_call_text( node.text_value )
|
15
|
+
end
|
16
|
+
|
9
17
|
text_string << "(#{translated_node.text_value})"
|
10
18
|
else
|
11
19
|
text_string << node.text_value
|
@@ -63,7 +63,12 @@ class RailsTextExtractor < BaseTextExtractor
|
|
63
63
|
@translation_store.add_translation( call_node.key_value, call_node.original_text )
|
64
64
|
call_node
|
65
65
|
end
|
66
|
+
|
67
|
+
def translate_method_call_text( method_to_translate )
|
68
|
+
translate_text( method_to_translate )
|
69
|
+
end
|
66
70
|
|
71
|
+
|
67
72
|
# This takes in a text node and returns one or more nodes that will
|
68
73
|
# then be output. The nodes that are output should implement
|
69
74
|
# node_name and text_value
|
data/lib/core/text_extractor.rb
CHANGED
@@ -22,6 +22,10 @@ class TextExtractor
|
|
22
22
|
def translate_text( text_node_to_translate )
|
23
23
|
raise "Please impelement me (translate_text)"
|
24
24
|
end
|
25
|
+
|
26
|
+
def translate_method_call_text( method_to_translate )
|
27
|
+
raise "Please implement me (method_to_translate)"
|
28
|
+
end
|
25
29
|
|
26
30
|
def end_html_text
|
27
31
|
raise "Please implement me (end_html_text)"
|
@@ -6,6 +6,7 @@ class Tr8nTextExtractor < BaseTextExtractor
|
|
6
6
|
@key_store = []
|
7
7
|
@debug = false
|
8
8
|
@html_tag_count = 0
|
9
|
+
@lambda_call = nil
|
9
10
|
end
|
10
11
|
|
11
12
|
# This is called when text extraction has begun
|
@@ -19,9 +20,19 @@ class Tr8nTextExtractor < BaseTextExtractor
|
|
19
20
|
|
20
21
|
def add_variable( variable_name, variable_value )
|
21
22
|
puts "Adding variable: #{variable_name} = #{variable_value}" if @debug
|
22
|
-
@
|
23
|
+
if( @lambda_call.nil? )
|
24
|
+
@current_node.add_variable( variable_name, variable_value )
|
25
|
+
else
|
26
|
+
@current_node.add_lambda( variable_name, variable_value, @lambda_call )
|
27
|
+
@lambda_call = nil
|
28
|
+
end
|
23
29
|
end
|
24
30
|
|
31
|
+
def translate_method_call_text( method_to_translate )
|
32
|
+
@lambda_call = HerbTr8nLambdaCallNode.new( method_to_translate )
|
33
|
+
@lambda_call
|
34
|
+
end
|
35
|
+
|
25
36
|
def translate_text( text_node_to_translate )
|
26
37
|
puts "Translating text: #{text_node_to_translate}" if @debug
|
27
38
|
# This should just return a node that responds to text_value
|
@@ -9,6 +9,10 @@ class HerbErbTr8nTextCallNode < HerbTr8nTextCallNode
|
|
9
9
|
mark_as_called_and_push_whitespace
|
10
10
|
super( name, value )
|
11
11
|
end
|
12
|
+
def add_lambda( variable_name, variable_value, lambda_call_node )
|
13
|
+
mark_as_called_and_push_whitespace
|
14
|
+
super( variable_name, variable_value, lambda_call_node )
|
15
|
+
end
|
12
16
|
|
13
17
|
def add_pluralization( variable_name, singular, variable )
|
14
18
|
mark_as_called_and_push_whitespace
|
@@ -16,7 +16,7 @@ class HerbNodeRetainingTextNode < HerbNodeRetainingNode
|
|
16
16
|
else
|
17
17
|
false
|
18
18
|
end
|
19
|
-
elsif( find_last_non_whitespace_node.node_name == "html_start_tag" || find_first_non_whitespace_node.node_name == "html_end_tag" )
|
19
|
+
elsif( find_last_non_whitespace_node.node_name == "html_start_tag" || find_first_non_whitespace_node.node_name == "html_end_tag" || find_first_non_whitespace_node.node_name == "erb_block_end" )
|
20
20
|
true
|
21
21
|
else
|
22
22
|
false
|
@@ -45,7 +45,7 @@ class HerbNodeRetainingTextNode < HerbNodeRetainingNode
|
|
45
45
|
start_tag = HerbNodeRetainingTextNode.new
|
46
46
|
start_tag.add_all( nodes[0..nodes.length - (end_tag.nodes.length + 1 ) ] )
|
47
47
|
[start_tag, end_tag]
|
48
|
-
elsif(find_first_non_whitespace_node.node_name == "html_end_tag" )
|
48
|
+
elsif(find_first_non_whitespace_node.node_name == "html_end_tag" || find_first_non_whitespace_node.node_name == "erb_block_end")
|
49
49
|
start_tag = extract_leading_tag
|
50
50
|
end_tag = HerbNodeRetainingTextNode.new
|
51
51
|
end_tag.add_all( nodes[start_tag.nodes.length..nodes.length ] )
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class HerbTr8nLambdaCallNode
|
2
|
+
|
3
|
+
attr_reader :original_text
|
4
|
+
|
5
|
+
def initialize( original_text )
|
6
|
+
@original_text = original_text
|
7
|
+
end
|
8
|
+
|
9
|
+
def generate_lambda( value )
|
10
|
+
"lambda {|text| #{value}}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def text_value
|
14
|
+
'"#{text}"'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -19,6 +19,12 @@ class HerbTr8nTextCallNode
|
|
19
19
|
@child_nodes << child_node
|
20
20
|
@text_values << child_node
|
21
21
|
end
|
22
|
+
|
23
|
+
def add_lambda( variable_name, variable_value, lambda_call_node )
|
24
|
+
@variable_names_and_values << [variable_name, lambda_call_node.generate_lambda( variable_value )]
|
25
|
+
@text_values << generate_block_variable( variable_name, lambda_call_node.original_text )
|
26
|
+
|
27
|
+
end
|
22
28
|
|
23
29
|
def add_variable( name, value )
|
24
30
|
@variable_names_and_values << [name, value]
|
@@ -40,12 +46,16 @@ class HerbTr8nTextCallNode
|
|
40
46
|
end
|
41
47
|
|
42
48
|
def block_variable
|
43
|
-
|
44
|
-
to_return += text_values_as_concated_string
|
45
|
-
to_return += "]"
|
46
|
-
to_return
|
49
|
+
generate_block_variable( variable_name_being_assigned_to, text_values_as_concated_string )
|
47
50
|
end
|
48
51
|
|
52
|
+
def generate_block_variable( variable, text )
|
53
|
+
to_return = "[#{variable}: "
|
54
|
+
to_return += text
|
55
|
+
to_return += "]"
|
56
|
+
to_return
|
57
|
+
end
|
58
|
+
|
49
59
|
def empty?
|
50
60
|
@text_values.empty? && @variable_names_and_values.empty?
|
51
61
|
end
|
@@ -93,7 +103,7 @@ class HerbTr8nTextCallNode
|
|
93
103
|
|
94
104
|
def variable_string( html_end_tag, count )
|
95
105
|
to_return = "\""
|
96
|
-
to_return += @html_start_tag.text_value
|
106
|
+
to_return += escape_double_quotes( @html_start_tag.text_value )
|
97
107
|
to_return += "{$#{count}}"
|
98
108
|
to_return += html_end_tag.text_value
|
99
109
|
to_return += "\""
|
@@ -142,5 +152,10 @@ class HerbTr8nTextCallNode
|
|
142
152
|
@text_values << ( HerbTr8nStringNode.new( white_space_text ) ).to_s
|
143
153
|
end
|
144
154
|
|
155
|
+
private
|
156
|
+
def escape_double_quotes( text )
|
157
|
+
text.gsub( "\"", "\\\"" )
|
158
|
+
end
|
159
|
+
|
145
160
|
end
|
146
161
|
|
data/lib/nodes/nodes.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: herbgobbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
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-04-
|
12
|
+
date: 2012-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/nodes/herb_non_text_node.rb
|
103
103
|
- lib/nodes/herb_string_variable.rb
|
104
104
|
- lib/nodes/herb_text_node.rb
|
105
|
+
- lib/nodes/herb_tr8n_lambda_call_node.rb
|
105
106
|
- lib/nodes/herb_tr8n_string_node.rb
|
106
107
|
- lib/nodes/herb_tr8n_text_call_node.rb
|
107
108
|
- lib/nodes/herb_white_space_text_node.rb
|