nodifier 0.1.4 → 0.1.5

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.
@@ -0,0 +1,13 @@
1
+ class FormatterState
2
+ def initialize
3
+ @formatted_children = false
4
+ end
5
+
6
+ def children_are_formatted!
7
+ @formatted_children = true
8
+ end
9
+
10
+ def formatted_children?
11
+ @formatted_children
12
+ end
13
+ end
data/lib/node.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/indentation'
2
- require File.dirname(__FILE__) + '/stopper'
2
+ require File.dirname(__FILE__) + '/nodes'
3
+ require File.dirname(__FILE__) + '/formatter_state'
3
4
  require File.dirname(__FILE__) + '/xml_node_formatter'
4
5
 
5
6
  class Node
@@ -12,7 +13,7 @@ class Node
12
13
 
13
14
  def initialize(label)
14
15
  @label = label
15
- @children = []
16
+ @children = Nodes.new
16
17
  end
17
18
 
18
19
  def to_s(indent_level = 0, &formatter_block)
@@ -20,19 +21,17 @@ class Node
20
21
  return to_s(indent_level) { |node| node.label }
21
22
  end
22
23
 
23
- stopper = Stopper.new
24
+ state = FormatterState.new
24
25
  case formatter_block.arity
25
- when 1:
26
+ when 1
26
27
  s = indent(formatter_block.call(self), indent_level)
27
- when 2:
28
- s = indent(formatter_block.call([self, stopper]), indent_level)
28
+ when 2
29
+ s = indent(formatter_block.call([self, state]), indent_level)
29
30
  end
30
31
 
31
- unless stopper.stopped?
32
- @children.each do |child|
33
- s << "\n"
34
- s << child.to_s(indent_level + 1, &formatter_block)
35
- end
32
+ unless state.formatted_children?
33
+ s << "\n" unless @children.empty?
34
+ s << @children.to_s(indent_level + 1, &formatter_block)
36
35
  end
37
36
 
38
37
  s
data/lib/nodes.rb ADDED
@@ -0,0 +1,12 @@
1
+ class Nodes < Array
2
+ def to_s(indent_level = 0, &formatter_block)
3
+ s = ''
4
+
5
+ each do |node|
6
+ s << "\n" unless s.empty?
7
+ s << node.to_s(indent_level, &formatter_block)
8
+ end
9
+
10
+ s
11
+ end
12
+ end
data/lib/nodifier.rb CHANGED
@@ -10,7 +10,7 @@ class Nodifier
10
10
  end
11
11
 
12
12
  def nodify(content)
13
- nodes = []
13
+ nodes = Nodes.new
14
14
  current_node = nil
15
15
  child_content = ''
16
16
 
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nodifier
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
5
+ version: 0.1.5
11
6
  platform: ruby
12
7
  authors:
13
8
  - Daniel Tao
@@ -15,8 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-11-03 00:00:00 -07:00
19
- default_executable:
13
+ date: 2011-11-03 00:00:00 Z
20
14
  dependencies: []
21
15
 
22
16
  description: A simple Ruby library for parsing plain text into a node-based structure
@@ -28,13 +22,13 @@ extensions: []
28
22
  extra_rdoc_files: []
29
23
 
30
24
  files:
25
+ - lib/formatter_state.rb
31
26
  - lib/indentation.rb
32
27
  - lib/node.rb
33
28
  - lib/node_parser.rb
29
+ - lib/nodes.rb
34
30
  - lib/nodifier.rb
35
- - lib/stopper.rb
36
31
  - lib/xml_node_formatter.rb
37
- has_rdoc: true
38
32
  homepage: http://github.com/dtao/nodifier
39
33
  licenses: []
40
34
 
@@ -48,23 +42,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
48
42
  requirements:
49
43
  - - ">="
50
44
  - !ruby/object:Gem::Version
51
- hash: 3
52
- segments:
53
- - 0
54
45
  version: "0"
55
46
  required_rubygems_version: !ruby/object:Gem::Requirement
56
47
  none: false
57
48
  requirements:
58
49
  - - ">="
59
50
  - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
51
  version: "0"
64
52
  requirements: []
65
53
 
66
54
  rubyforge_project:
67
- rubygems_version: 1.6.2
55
+ rubygems_version: 1.8.10
68
56
  signing_key:
69
57
  specification_version: 3
70
58
  summary: Nodifier, for parsing text into nodes
data/lib/stopper.rb DELETED
@@ -1,13 +0,0 @@
1
- class Stopper
2
- def initialize
3
- @stopped = false
4
- end
5
-
6
- def stop!
7
- @stopped = true
8
- end
9
-
10
- def stopped?
11
- @stopped
12
- end
13
- end