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.
@@ -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
- translated_node = text_extractor.translate_text( node.text_value )
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
@@ -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
- @current_node.add_variable( variable_name, variable_value )
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
@@ -5,7 +5,7 @@ class HerbTr8nStringNode
5
5
 
6
6
  ESCAPE_LOOKUP_TABLE = [
7
7
  ["\"", "quot"],
8
- ["\n", "break"],
8
+ ["\n", "br"],
9
9
  ["&ndash;", "ndash"],
10
10
  ["&mdash;", "mdash"],
11
11
  ["&iexcl;", "iexcl"],
@@ -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
- to_return = "[#{variable_name_being_assigned_to}: "
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
@@ -15,3 +15,4 @@ require 'nodes/herb_tr8n_text_call_node'
15
15
  require 'nodes/herb_erb_tr8n_text_call_node'
16
16
  require 'nodes/herb_tr8n_string_node'
17
17
  require 'nodes/rails_text_variable_node'
18
+ require 'nodes/herb_tr8n_lambda_call_node'
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'backports'
2
3
  require_relative '../lib/herbgobbler'
3
4
 
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.2
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-17 00:00:00.000000000 Z
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