herbgobbler 0.1.7 → 0.1.8

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.
@@ -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