nodifier 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/indentation.rb CHANGED
@@ -7,7 +7,17 @@ module Indentation
7
7
  leading_spaces = first_line.length - first_line.lstrip.length
8
8
 
9
9
  content.lines do |line|
10
- output << line[leading_spaces..-1] || ""
10
+ output << line[leading_spaces..-1] || ''
11
+ end
12
+
13
+ output
14
+ end
15
+
16
+ def indent(content, indent_level = 1)
17
+ output = ''
18
+
19
+ content.lines do |line|
20
+ output << (' ' * indent_level) + line
11
21
  end
12
22
 
13
23
  output
data/lib/node.rb CHANGED
@@ -1,4 +1,11 @@
1
+ require File.dirname(__FILE__) + '/indentation'
2
+ require File.dirname(__FILE__) + '/xml_node_formatter'
3
+
1
4
  class Node
5
+ include Indentation
6
+
7
+ @@xml_formatter = XmlNodeFormatter.new
8
+
2
9
  attr_reader :label
3
10
  attr_reader :children
4
11
 
@@ -6,4 +13,19 @@ class Node
6
13
  @label = label
7
14
  @children = []
8
15
  end
16
+
17
+ def to_s(indent_level = 0)
18
+ s = indent(@label, indent_level)
19
+
20
+ @children.each do |child|
21
+ s << "\n"
22
+ s << indent(child.to_s, indent_level + 1)
23
+ end
24
+
25
+ s
26
+ end
27
+
28
+ def to_xml
29
+ @@xml_formatter.format self
30
+ end
9
31
  end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/indentation'
2
+ require File.dirname(__FILE__) + '/node'
3
+
4
+ class XmlNodeFormatter
5
+ include Indentation
6
+
7
+ def format(node, indent_level = 0)
8
+ return indent("<#{node.label} />", indent_level) if node.children.empty?
9
+
10
+ xml = indent("<#{node.label}>", indent_level)
11
+
12
+ node.children.each do |child|
13
+ xml << "\n"
14
+ xml << format(child, indent_level + 1)
15
+ end
16
+
17
+ xml << "\n"
18
+ xml << indent("</#{node.label}>", indent_level)
19
+
20
+ xml
21
+ end
22
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: nodifier
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Daniel Tao
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-02 00:00:00 Z
13
+ date: 2011-11-03 00:00:00 Z
14
14
  dependencies: []
15
15
 
16
16
  description: A simple Ruby library for parsing plain text into a node-based structure
@@ -26,6 +26,7 @@ files:
26
26
  - lib/node.rb
27
27
  - lib/node_parser.rb
28
28
  - lib/nodifier.rb
29
+ - lib/xml_node_formatter.rb
29
30
  homepage: http://github.com/dtao/nodifier
30
31
  licenses: []
31
32