nodifier 0.1.1
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.
- data/lib/indentation.rb +16 -0
- data/lib/node.rb +9 -0
- data/lib/node_parser.rb +7 -0
- data/lib/nodifier.rb +43 -0
- metadata +57 -0
data/lib/indentation.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Indentation
|
2
|
+
|
3
|
+
def unindent(content)
|
4
|
+
output = ''
|
5
|
+
|
6
|
+
first_line = content.lines.first
|
7
|
+
leading_spaces = first_line.length - first_line.lstrip.length
|
8
|
+
|
9
|
+
content.lines do |line|
|
10
|
+
output << line[leading_spaces..-1] || ""
|
11
|
+
end
|
12
|
+
|
13
|
+
output
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/lib/node.rb
ADDED
data/lib/node_parser.rb
ADDED
data/lib/nodifier.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/indentation'
|
2
|
+
require File.dirname(__FILE__) + '/node'
|
3
|
+
require File.dirname(__FILE__) + '/node_parser'
|
4
|
+
|
5
|
+
class Nodifier
|
6
|
+
include Indentation
|
7
|
+
|
8
|
+
def initialize(parser = nil)
|
9
|
+
@parser = parser || NodeParser.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def nodify(content)
|
13
|
+
nodes = []
|
14
|
+
current_node = nil
|
15
|
+
child_content = ''
|
16
|
+
|
17
|
+
content = unindent content
|
18
|
+
|
19
|
+
content.lines do |line|
|
20
|
+
if not line.start_with?(' ')
|
21
|
+
if not child_content.empty?
|
22
|
+
append_child_content current_node, child_content
|
23
|
+
child_content = ''
|
24
|
+
end
|
25
|
+
|
26
|
+
current_node = @parser.parse line.rstrip
|
27
|
+
nodes << current_node
|
28
|
+
else
|
29
|
+
child_content << line
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
append_child_content current_node, child_content unless child_content.empty?
|
34
|
+
|
35
|
+
nodes
|
36
|
+
end
|
37
|
+
|
38
|
+
def append_child_content(node, child_content)
|
39
|
+
nodify(child_content).each do |child_node|
|
40
|
+
node.children << child_node
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nodifier
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Daniel Tao
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-11-02 00:00:00 Z
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A simple Ruby library for parsing plain text into a node-based structure
|
17
|
+
email: daniel.tao@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/indentation.rb
|
26
|
+
- lib/node.rb
|
27
|
+
- lib/node_parser.rb
|
28
|
+
- lib/nodifier.rb
|
29
|
+
homepage: http://github.com/dtao/nodifier
|
30
|
+
licenses: []
|
31
|
+
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "0"
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.8.10
|
53
|
+
signing_key:
|
54
|
+
specification_version: 3
|
55
|
+
summary: Nodifier, for parsing text into nodes
|
56
|
+
test_files: []
|
57
|
+
|