herbgobbler 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -233,7 +233,7 @@ grammar ERBGrammer
233
233
  end
234
234
 
235
235
  rule tag_text
236
- (!'>' !'/>' (erb_string / .) )* <NonTextNode>
236
+ (!'>' !'/>' ( erb_block / erb_string / . ) )* <NonTextNode>
237
237
  {
238
238
  def node_name
239
239
  "tag_text"
data/lib/core/erb_file.rb CHANGED
@@ -64,7 +64,7 @@ class ErbFile
64
64
  new_node_set = []
65
65
  @nodes = combine_nodes( @nodes )
66
66
  @nodes.each do |node|
67
- if( node.text? )
67
+ if( node.respond_to?(:text?) && node.text? )
68
68
  text_extractor.start_html_text
69
69
  node.extract_text( text_extractor, new_node_set )
70
70
  new_node_set += text_extractor.end_html_text
@@ -1,8 +1,7 @@
1
1
  module MethodCallNode
2
2
  include TextNode
3
3
 
4
- def extract_text( text_extractor, node_tree, surrounding_nodes )
5
-
4
+ def extract_text( text_extractor, node_tree, surrounding_nodes = nil )
6
5
  text_string = ''
7
6
  self.elements.each do |node|
8
7
  if( node.is_a?( TextNode ) )
@@ -12,8 +11,10 @@ module MethodCallNode
12
11
  text_string << node.text_value
13
12
  end
14
13
  end
15
-
16
- if( surrounded_by_text? (surrounding_nodes) )
14
+
15
+ if( surrounding_nodes.nil? )
16
+ node_tree << HerbNonTextNode.new( text_string )
17
+ elsif( surrounded_by_text? (surrounding_nodes) )
17
18
  text_extractor.add_variable( generate_i18n_key( text_extractor, node_tree ).to_s, text_string.strip )
18
19
  else
19
20
  node_tree << HerbNonTextNode.new( "<%= #{text_string.strip} %>" )
@@ -57,7 +57,9 @@ class HerbNodeRetainingTextNode < HerbNodeRetainingNode
57
57
  end
58
58
 
59
59
  def can_be_exploded?
60
- find_all_non_matched_tags_and_white_space(nodes).empty?
60
+ # it is possible that this node contains only non text nodes. If
61
+ # there is no text within this combined node then this should be uncombined
62
+ find_all_non_matched_tags_and_white_space(nodes).empty? || contains_only_non_text_and_non_method_nodes?
61
63
  end
62
64
 
63
65
  def can_be_combined?
@@ -83,6 +85,15 @@ class HerbNodeRetainingTextNode < HerbNodeRetainingNode
83
85
 
84
86
  private
85
87
 
88
+ def contains_only_non_text_and_non_method_nodes?
89
+ found_text = false
90
+ nodes.each do |current_node|
91
+ found_text = true if current_node.is_a?( TextNode ) && !current_node.is_a?(MethodCallNode)
92
+
93
+ end
94
+ !found_text
95
+ end
96
+
86
97
  def extract_leading_tag
87
98
  node = find_first_non_whitespace_node
88
99
  to_return = []
@@ -9,10 +9,16 @@ puts "---------- Original ----------------"
9
9
  puts File.read( file_name )
10
10
  puts "---------- Un-Combined Syntax Tree -------------"
11
11
  top_levels.each_with_index do |top_level, index|
12
- puts "(#{index}): #{top_level.text_value}"
12
+ puts "(#{index}): #{top_level.text_value} #{top_level.is_a?(TextNode)}"
13
13
  end
14
14
  puts "---------- Combined Syntax Tree -------------"
15
15
  erb_file.combine_nodes( erb_file.flatten_elements ).each do |element|
16
- puts "`#{element.text_value}`(text=#{element.is_a?(TextNode)})(combindable=#{element.is_a?(NonTextNode) && element.can_be_combined?})(class=#{element.class})"
16
+ if( element.respond_to?(:node_name) )
17
+ name = "(node_name = #{element.node_name})"
18
+ else
19
+ name = ""
20
+ end
21
+
22
+ puts "`#{element.text_value}`(text=#{element.is_a?(TextNode)})(combindable=#{element.is_a?(NonTextNode) && element.can_be_combined?})(class=#{element.class})#{name}"
17
23
  end
18
24
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: herbgobbler
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 7
10
- version: 0.1.7
9
+ - 8
10
+ version: 0.1.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Douglas Sellers
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-03-01 00:00:00 -08:00
18
+ date: 2012-03-05 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency