herbgobbler 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|