requidef 0.1.2 → 0.1.4
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/ChangeLog.md +13 -0
- data/README.md +5 -13
- data/bin/Makefile +2 -2
- data/bin/requidef +2 -2
- data/bin/requidef.rb +35 -0
- data/lib/{matrix.rb → generic/matrix.rb} +0 -0
- data/lib/{matrix2csv.rb → generic/matrix2csv.rb} +8 -4
- data/lib/{row_of_nodes.rb → generic/row_of_nodes.rb} +0 -0
- data/lib/{tree.rb → generic/tree.rb} +17 -1
- data/lib/{tree2matrix.rb → generic/tree2matrix.rb} +0 -0
- data/lib/html2rd.rb +43 -0
- data/lib/mm2rdtree.rb +81 -0
- data/lib/{rd2nodes.rb → rd2rdnodes.rb} +1 -1
- data/lib/rd2rdtree.rb +6 -0
- data/lib/{node.rb → rdnode.rb} +19 -0
- data/lib/{nodes2tree.rb → rdnodes2rdtree.rb} +3 -3
- data/lib/rdtree.rb +31 -0
- data/lib/{nodetree.rb → rdtree2dot.rb} +6 -29
- data/lib/rdtree2rd.rb +18 -0
- data/lib/requidef.rb +3 -3
- metadata +29 -20
data/ChangeLog.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# version 0.1.0
|
2
|
+
The consequence of 10H rapid developement.
|
3
|
+
It had many bugs so we could not use the command after 'gem install'ing.
|
4
|
+
|
5
|
+
# version 0.2.0
|
6
|
+
(Below describes the future which is not happened still.)
|
7
|
+
We found that the .rd file is not as easy to edit as we had expected.
|
8
|
+
So we decided to edit file in XMind, a free MindMap tool, export it to HTML to translate to .rd file.
|
9
|
+
Other features,
|
10
|
+
* The commandline I/F is changed.
|
11
|
+
* Fixed the reported bugs in 0.1.0.
|
12
|
+
* Provides some converter functionality.
|
13
|
+
* It is now ready to get started by just gem installing.
|
data/README.md
CHANGED
@@ -1,27 +1,19 @@
|
|
1
1
|
# requidef
|
2
|
-
Requiem for the Requirement Definitions.
|
2
|
+
Requiem for the boring Requirement Definitions.
|
3
|
+
Save time and get back to coding.
|
3
4
|
|
4
5
|
## Motivation
|
5
6
|
Do you know the most and the last thing that hinder our technology grow rapidly in this century?
|
6
7
|
The most harmful software, you know that is the MS Office.
|
7
|
-
We, workers, are forced to write lenghty documents with MS Word, MS Excel ... you know what.
|
8
|
+
We, workers, are forced to write ten of thousand of lenghty documents with MS Word, MS Excel ... you know what.
|
8
9
|
I disrespect every single of the softwares MS provides.
|
9
10
|
Today, we declared to be free from these greedy evils.
|
10
11
|
|
11
|
-
This software, requidef, will guide you to the haven where any documentation works are happy.
|
12
|
+
This software, requidef [r`ekwidef], will guide you to the haven where any documentation works are happy.
|
12
13
|
|
13
14
|
## Installation
|
14
15
|
Only for Ruby >= 1.9
|
15
|
-
|
16
|
-
gem install requidef
|
17
|
-
|
18
|
-
## Recent Releases
|
19
|
-
- 0.1.0
|
20
|
-
-- The consequence of 10 hours rapid developement.
|
21
|
-
- Next : 0.2.0
|
22
|
-
-- Bug fix. Already found 3
|
23
|
-
-- impl : tree -> rd
|
24
|
-
-- impl : http -> tree
|
16
|
+
just 'gem install requidef'.
|
25
17
|
|
26
18
|
## Contributing to requidef
|
27
19
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/bin/Makefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
sample : dot_sample csv_sample
|
2
2
|
|
3
3
|
dot_sample :
|
4
|
-
|
4
|
+
requidef --type=dot --file=sample.rd > sample.dot
|
5
5
|
dot -Tjpg sample.dot -o sample.jpg
|
6
6
|
|
7
7
|
csv_sample :
|
8
|
-
|
8
|
+
requidef -t csv -f sample.rd > sample.csv
|
9
9
|
|
10
10
|
clean_sample :
|
11
11
|
rm sample.dot sample.csv sample.jpg
|
data/bin/requidef
CHANGED
@@ -15,12 +15,12 @@ end
|
|
15
15
|
opt = OptionParser.new
|
16
16
|
|
17
17
|
type = nil
|
18
|
-
opt.on("-t VAL") do |v|
|
18
|
+
opt.on("-t", "--type=VAL") do |v|
|
19
19
|
type = v
|
20
20
|
end
|
21
21
|
|
22
22
|
input = nil
|
23
|
-
opt.on("-f VAL") do |v|
|
23
|
+
opt.on("-f", "--file=VAL") do |v|
|
24
24
|
input = v
|
25
25
|
end
|
26
26
|
opt.parse!(ARGV)
|
data/bin/requidef.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
|
3
|
+
require "requidef"
|
4
|
+
require "optparse"
|
5
|
+
|
6
|
+
def print_dot(input)
|
7
|
+
print dot(input)
|
8
|
+
end
|
9
|
+
|
10
|
+
def print_csv(input)
|
11
|
+
print csv(input)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Main
|
15
|
+
opt = OptionParser.new
|
16
|
+
|
17
|
+
type = nil
|
18
|
+
opt.on("-t", "--type=VAL") do |v|
|
19
|
+
type = v
|
20
|
+
end
|
21
|
+
|
22
|
+
input = nil
|
23
|
+
opt.on("-f", "--file=VAL") do |v|
|
24
|
+
input = v
|
25
|
+
end
|
26
|
+
opt.parse!(ARGV)
|
27
|
+
|
28
|
+
case type
|
29
|
+
when "dot"
|
30
|
+
print_dot(input)
|
31
|
+
when "csv"
|
32
|
+
print_csv(input)
|
33
|
+
else
|
34
|
+
raise "no match on type"
|
35
|
+
end
|
File without changes
|
@@ -1,13 +1,17 @@
|
|
1
1
|
require_relative "matrix"
|
2
2
|
|
3
|
-
def matrix2csv(matrix, &writer)
|
3
|
+
def matrix2csv(matrix, range = [0...matrix.m_size, 0...matrix.n_size], &writer)
|
4
4
|
s = ""
|
5
|
-
for i in 0
|
5
|
+
for i in range[0]
|
6
6
|
ms = []
|
7
|
-
|
7
|
+
ms_range = range[1]
|
8
|
+
for j in ms_range
|
8
9
|
ms[j] = writer.call matrix.get([i,j])
|
9
10
|
end
|
10
|
-
|
11
|
+
# NOTE: The separator of csv file is decisively |
|
12
|
+
# I/F to change the charactor is the future work.
|
13
|
+
separator = "|"
|
14
|
+
s += ms[ms_range].join separator
|
11
15
|
s += "\n" unless i == matrix.m_size - 1
|
12
16
|
end
|
13
17
|
s
|
File without changes
|
@@ -5,6 +5,12 @@ class Tree
|
|
5
5
|
@parents = []
|
6
6
|
end
|
7
7
|
|
8
|
+
def list_depth_traverse(under)
|
9
|
+
list = []
|
10
|
+
do_list_depth_traverse(under, list)
|
11
|
+
return list
|
12
|
+
end
|
13
|
+
|
8
14
|
def values
|
9
15
|
@values
|
10
16
|
end
|
@@ -58,6 +64,16 @@ class Tree
|
|
58
64
|
|
59
65
|
private
|
60
66
|
|
67
|
+
def do_list_depth_traverse(under, list)
|
68
|
+
list << under
|
69
|
+
if leaf?(under)
|
70
|
+
return
|
71
|
+
end
|
72
|
+
children(under).each do |id|
|
73
|
+
do_list_depth_traverse(id, list)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
61
77
|
def register_edge(from, to)
|
62
78
|
if @edges[from] == nil
|
63
79
|
@edges[from] = Array.new
|
@@ -89,5 +105,5 @@ if __FILE__ == $0
|
|
89
105
|
puts "children:#{t.children(i)}"
|
90
106
|
end
|
91
107
|
|
92
|
-
|
108
|
+
p t.list_depth_traverse(t.root_id)
|
93
109
|
end
|
File without changes
|
data/lib/html2rd.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# NOTE:
|
2
|
+
# HTML from XMind 3.2.1 lets only h1, h2 and h3.
|
3
|
+
# So, this code only succeeds if the height of the tree is no more greater than 3.
|
4
|
+
# No practical. Must reconsider.
|
5
|
+
|
6
|
+
require "hpricot"
|
7
|
+
|
8
|
+
def html2rd(html)
|
9
|
+
body = read_body(html)
|
10
|
+
regex = /<h(\d).*?>(.*?)<\/h\d>/m
|
11
|
+
body.scan(regex).map do |e|
|
12
|
+
hx2rd(e)
|
13
|
+
end.join("\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
def hx2rd(header)
|
17
|
+
depth = header[0].to_i
|
18
|
+
s = read_anchor(header[1].strip)
|
19
|
+
"#{repeat(depth, "-")} #{s}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def read_anchor(anchor)
|
23
|
+
anchor.scan(/<a.*?>(.*?)<\/a>/m)[0][0]
|
24
|
+
end
|
25
|
+
|
26
|
+
def repeat(n, s)
|
27
|
+
Array.new(n, s).join
|
28
|
+
end
|
29
|
+
|
30
|
+
def read_body(html)
|
31
|
+
doc = Hpricot(open("sample.html"))
|
32
|
+
x = ""
|
33
|
+
(doc/"body").each do |e|
|
34
|
+
x += e.to_html
|
35
|
+
end
|
36
|
+
x
|
37
|
+
end
|
38
|
+
|
39
|
+
if __FILE__ == $0
|
40
|
+
p html2rd("sample.html")
|
41
|
+
# p read_body("sample.html")
|
42
|
+
# p read_anchor("<a name=\"hoge\">text</a>")
|
43
|
+
end
|
data/lib/mm2rdtree.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require "rexml/document"
|
2
|
+
require_relative "generic/tree"
|
3
|
+
require_relative "rdnode"
|
4
|
+
|
5
|
+
def mm2tree(mm)
|
6
|
+
build_tree(mm)
|
7
|
+
end
|
8
|
+
|
9
|
+
# Doc -> Tree (of Text node class)
|
10
|
+
def build_tree(mm)
|
11
|
+
t = Tree.new
|
12
|
+
doc_root_id = 1
|
13
|
+
t.add_node(0, DummyRoot)
|
14
|
+
t.add_edge(0, doc_root_id)
|
15
|
+
do_build_tree(root_node_of(mm), doc_root_id, 1, t)
|
16
|
+
t
|
17
|
+
end
|
18
|
+
|
19
|
+
def do_build_tree(doc, id, depth, t)
|
20
|
+
t.add_node( id, to_node(doc, depth) )
|
21
|
+
n = doc.elements.size
|
22
|
+
for i in 1...n+1
|
23
|
+
child_id = id+i
|
24
|
+
child_depth = depth + 1
|
25
|
+
child_doc = doc.elements[i]
|
26
|
+
child_value = to_node( child_doc, child_depth )
|
27
|
+
t.add_node( child_id, child_value )
|
28
|
+
t.add_edge( id, child_id )
|
29
|
+
|
30
|
+
do_build_tree( child_doc, child_id, child_depth, t )
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_node(doc, depth)
|
35
|
+
text = doc.attributes["TEXT"]
|
36
|
+
Text.new(depth, text)
|
37
|
+
end
|
38
|
+
|
39
|
+
def root_node_of(mm)
|
40
|
+
f = File.open(mm, "r")
|
41
|
+
|
42
|
+
txt = f.read
|
43
|
+
doc = REXML::Document.new( txt )
|
44
|
+
|
45
|
+
f.close
|
46
|
+
doc.root.elements[1]
|
47
|
+
end
|
48
|
+
|
49
|
+
if __FILE__ == $0
|
50
|
+
# p root_node_of("sample.mm")
|
51
|
+
p mm2tree("sample.mm")
|
52
|
+
|
53
|
+
puts "# Test ------------------------"
|
54
|
+
include REXML
|
55
|
+
f = File.open("sample.mm", "r")
|
56
|
+
txt = f.read
|
57
|
+
|
58
|
+
p txt
|
59
|
+
doc = Document.new txt
|
60
|
+
p doc
|
61
|
+
p doc.size
|
62
|
+
p "xx"
|
63
|
+
p doc.root.size
|
64
|
+
p doc.root.elements.size
|
65
|
+
p doc.root.elements[1]
|
66
|
+
p doc.root.elements[2]
|
67
|
+
p doc.root.elements[3]
|
68
|
+
|
69
|
+
n = doc.root.elements[1]
|
70
|
+
p n.attributes["TEXT"]
|
71
|
+
|
72
|
+
f.close
|
73
|
+
|
74
|
+
# Try:
|
75
|
+
# doc.size # what means?
|
76
|
+
# doc.root #=> Element
|
77
|
+
# doc.root.
|
78
|
+
# n.attributes[name]
|
79
|
+
|
80
|
+
puts "# -----------------------------"
|
81
|
+
end
|
data/lib/rd2rdtree.rb
ADDED
data/lib/{node.rb → rdnode.rb}
RENAMED
@@ -25,6 +25,10 @@ class Link < Node
|
|
25
25
|
def to_csv
|
26
26
|
""
|
27
27
|
end
|
28
|
+
|
29
|
+
def to_rd
|
30
|
+
"#{dashes(@depth)} >>#{@dest}"
|
31
|
+
end
|
28
32
|
end
|
29
33
|
|
30
34
|
class Tag < Node
|
@@ -46,8 +50,13 @@ class Tag < Node
|
|
46
50
|
def to_desc
|
47
51
|
@text
|
48
52
|
end
|
53
|
+
|
54
|
+
def to_rd
|
55
|
+
"#{dashes(@depth)} [[#{@tag}:#{@text}]]"
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
59
|
+
|
51
60
|
class Text < Node
|
52
61
|
def initialize(depth, text)
|
53
62
|
super(depth)
|
@@ -65,8 +74,18 @@ class Text < Node
|
|
65
74
|
def to_desc
|
66
75
|
@text
|
67
76
|
end
|
77
|
+
|
78
|
+
def to_rd
|
79
|
+
"#{dashes(@depth)} #{@text}"
|
80
|
+
end
|
68
81
|
end
|
69
82
|
|
83
|
+
def dashes(n)
|
84
|
+
Array.new(n, "-").join ""
|
85
|
+
end
|
86
|
+
|
87
|
+
DummyRoot = Text.new(0, "DummyRoot")
|
88
|
+
|
70
89
|
if __FILE__ == $0
|
71
90
|
n = Text.new(10, "akira")
|
72
91
|
n.tmp[:x] = 100
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require_relative "tree"
|
2
|
-
require_relative "
|
1
|
+
require_relative "generic/tree"
|
2
|
+
require_relative "rdnode"
|
3
3
|
|
4
4
|
def nodes2tree(nodes)
|
5
5
|
nodess = depth2link(nodes)
|
@@ -17,7 +17,7 @@ def nodes2tree(nodes)
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def depth2link(nodes)
|
20
|
-
nodess = [
|
20
|
+
nodess = [DummyRoot] + nodes
|
21
21
|
nodess.each_with_index do |n, i|
|
22
22
|
n.id = i
|
23
23
|
end
|
data/lib/rdtree.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative "generic/matrix2csv"
|
2
|
+
require_relative "generic/tree2matrix"
|
3
|
+
require_relative "rdtree2dot"
|
4
|
+
|
5
|
+
class Tree
|
6
|
+
|
7
|
+
def to_csv
|
8
|
+
m = tree2matrix(self)
|
9
|
+
|
10
|
+
range = [
|
11
|
+
0...m.m_size,
|
12
|
+
1...m.n_size]
|
13
|
+
c = matrix2csv(m, range) do |n|
|
14
|
+
s = nil
|
15
|
+
if n == nil
|
16
|
+
s = ""
|
17
|
+
else
|
18
|
+
s = n.to_csv
|
19
|
+
end
|
20
|
+
s
|
21
|
+
end
|
22
|
+
c
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require_relative "rd2rdtree"
|
27
|
+
if __FILE__ == $0
|
28
|
+
t = rd2rdtree("sample.rd")
|
29
|
+
puts t.to_csv
|
30
|
+
puts t.to_dot
|
31
|
+
end
|
@@ -1,26 +1,7 @@
|
|
1
|
-
require_relative "
|
2
|
-
require_relative "tree2matrix"
|
3
|
-
require_relative "node"
|
1
|
+
require_relative "generic/tree"
|
4
2
|
|
5
3
|
class Tree
|
6
4
|
|
7
|
-
def to_csv
|
8
|
-
m = tree2matrix(self)
|
9
|
-
|
10
|
-
# TODO: Link node write the tag it links to.
|
11
|
-
# Maybe, let Node has ID so we can reach the parent.
|
12
|
-
c = matrix2csv(m) do |n|
|
13
|
-
s = nil
|
14
|
-
if n == nil
|
15
|
-
s = ""
|
16
|
-
else
|
17
|
-
s = n.to_csv
|
18
|
-
end
|
19
|
-
s
|
20
|
-
end
|
21
|
-
c
|
22
|
-
end
|
23
|
-
|
24
5
|
def to_dot
|
25
6
|
elems = []
|
26
7
|
for i in 0...size
|
@@ -43,13 +24,18 @@ class Tree
|
|
43
24
|
elems << dot_edge_desc(i, child) unless link_node?(child)
|
44
25
|
end
|
45
26
|
end
|
27
|
+
|
28
|
+
# NOTE: The ratio of the output figure is 1 at default.
|
29
|
+
# I/F to change the ratio is the future work.
|
46
30
|
"""
|
47
31
|
digraph graphname {
|
32
|
+
graph [ratio = 1]
|
48
33
|
#{elems.join("\n ")}
|
49
34
|
}
|
50
35
|
"""
|
51
36
|
end
|
52
37
|
|
38
|
+
private
|
53
39
|
def dot_node_desc(id)
|
54
40
|
"v#{id} [label=\"#{value(id).to_desc}\"];"
|
55
41
|
end
|
@@ -91,12 +77,3 @@ digraph graphname {
|
|
91
77
|
id2id
|
92
78
|
end
|
93
79
|
end
|
94
|
-
|
95
|
-
require_relative "rd2nodes"
|
96
|
-
require_relative "nodes2tree"
|
97
|
-
if __FILE__ == $0
|
98
|
-
t = nodes2tree( rd2nodes("sample.rd") )
|
99
|
-
p t
|
100
|
-
p t.to_csv
|
101
|
-
print t.to_dot
|
102
|
-
end
|
data/lib/rdtree2rd.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative "generic/tree"
|
2
|
+
|
3
|
+
class Tree
|
4
|
+
def to_rd
|
5
|
+
nodes = list_depth_traverse(root_id)
|
6
|
+
# NOTE: Eliminate the DummyRoot from rd file.
|
7
|
+
nodes.delete(root_id)
|
8
|
+
nodes.map do |node|
|
9
|
+
value(node).to_rd
|
10
|
+
end.join("\n")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require_relative "rd2rdtree"
|
15
|
+
if __FILE__ == $0
|
16
|
+
t = rd2rdtree( "sample.rd" )
|
17
|
+
print t.to_rd
|
18
|
+
end
|
data/lib/requidef.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: requidef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-22 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &26055980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.3.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *26055980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &26055500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *26055500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &26055020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.6.4
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *26055020
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rcov
|
49
|
-
requirement: &
|
49
|
+
requirement: &26054540 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,33 +54,42 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *26054540
|
58
58
|
description: Which do you use for your requirement definition job? MS Excel? MS Word?
|
59
59
|
Uninstall them. Because you will get a better solution.
|
60
60
|
email: ruby.wktk@gmail.com
|
61
61
|
executables:
|
62
62
|
- Makefile
|
63
63
|
- requidef
|
64
|
+
- requidef.rb
|
64
65
|
- sample.rd
|
65
66
|
extensions: []
|
66
67
|
extra_rdoc_files:
|
68
|
+
- ChangeLog.md
|
67
69
|
- LICENSE.txt
|
68
70
|
- README.md
|
69
71
|
files:
|
70
|
-
- lib/matrix.rb
|
71
|
-
- lib/matrix2csv.rb
|
72
|
-
- lib/
|
73
|
-
- lib/
|
74
|
-
- lib/
|
75
|
-
- lib/
|
72
|
+
- lib/generic/matrix.rb
|
73
|
+
- lib/generic/matrix2csv.rb
|
74
|
+
- lib/generic/row_of_nodes.rb
|
75
|
+
- lib/generic/tree.rb
|
76
|
+
- lib/generic/tree2matrix.rb
|
77
|
+
- lib/html2rd.rb
|
78
|
+
- lib/mm2rdtree.rb
|
79
|
+
- lib/rd2rdnodes.rb
|
80
|
+
- lib/rd2rdtree.rb
|
81
|
+
- lib/rdnode.rb
|
82
|
+
- lib/rdnodes2rdtree.rb
|
83
|
+
- lib/rdtree.rb
|
84
|
+
- lib/rdtree2dot.rb
|
85
|
+
- lib/rdtree2rd.rb
|
76
86
|
- lib/requidef.rb
|
77
|
-
-
|
78
|
-
- lib/tree.rb
|
79
|
-
- lib/tree2matrix.rb
|
87
|
+
- ChangeLog.md
|
80
88
|
- LICENSE.txt
|
81
89
|
- README.md
|
82
90
|
- bin/Makefile
|
83
91
|
- bin/requidef
|
92
|
+
- bin/requidef.rb
|
84
93
|
- bin/sample.rd
|
85
94
|
homepage: http://github.com/akiradeveloper/requidef
|
86
95
|
licenses:
|
@@ -97,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
106
|
version: '0'
|
98
107
|
segments:
|
99
108
|
- 0
|
100
|
-
hash:
|
109
|
+
hash: -1372144996746053066
|
101
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
111
|
none: false
|
103
112
|
requirements:
|