nodifier 0.1.4 → 0.1.5

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