red_grape 0.0.3 → 0.0.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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/{README.txt → README.md} +49 -49
- data/Rakefile +1 -19
- data/TODO.txt +23 -0
- data/bin/redgrape +3 -4
- data/bin/trellis +19 -1
- data/lib/ext/array_ext.rb +7 -1
- data/lib/ext/nil_class_ext.rb +5 -0
- data/lib/red_grape/element.rb +0 -4
- data/lib/red_grape/graph.rb +59 -2
- data/lib/red_grape/graph_store.rb +8 -1
- data/lib/red_grape/pipe/paths_pipe.rb +14 -19
- data/lib/red_grape/version.rb +3 -0
- data/lib/red_grape.rb +2 -2
- data/red_grape.gemspec +24 -0
- data/test/test_graph.rb +38 -0
- metadata +20 -32
- data/.gemtest +0 -0
- data/Manifest.txt +0 -49
data/.gitignore
ADDED
data/Gemfile
ADDED
data/{README.txt → README.md}
RENAMED
@@ -15,52 +15,52 @@ RedGrape is an in-memory graph database written in ruby. I made this in order to
|
|
15
15
|
|
16
16
|
## SYNOPSIS:
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
g1 = RedGrape.load_graph 'data/graph-example-1.xml'
|
19
|
+
g1.v(1).out('knows').filter{it.age < 30}.name.transform{it.size}.take
|
20
|
+
# => [5]
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
g2 = RedGrape.load_graph 'data/graph-example-2.xml'
|
23
|
+
g2.v(89).as('x').outE.inV.loop('x'){loops < 3}.path.take
|
24
|
+
# => [[v[89], e[7006][89-followed_by->127], v[127], e[7786][127-sung_by->340], v[340]], [v[89],
|
25
25
|
|
26
26
|
## REPL:
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
28
|
+
$ bin/redgrape
|
29
|
+
T
|
30
|
+
ooooo
|
31
|
+
----- ooo -----
|
32
|
+
RED o GRAPE
|
33
|
+
-----------------
|
34
|
+
ruby :001 > g = RedGrape.create_tinker_graph
|
35
|
+
=> redgrape[vertices:6 edges:6]
|
36
|
+
ruby :002 > g.class
|
37
|
+
=> RedGrape::Graph
|
38
|
+
ruby :003 > g.V
|
39
|
+
=> [v[1], v[2], v[3], v[4], v[5], v[6]]
|
40
|
+
ruby :004 > g.V.name
|
41
|
+
=> ["marko", "vadas", "lop", "josh", "ripple", "peter"]
|
42
|
+
ruby :005 > g.E
|
43
|
+
=> [e[7][1-knows->2], e[8][1-knows->4], e[9][1-created->3], e[10][4-created->5], e[11][4-created->3], e[12][6-created->3]]
|
44
|
+
ruby :006 > v = g.v(1)
|
45
|
+
=> v[1]
|
46
|
+
ruby :007 > "#{v.name} is #{v.age} years old."
|
47
|
+
=> "marko is 29 years old."
|
48
|
+
ruby :008 > v.out
|
49
|
+
=> [v[2], v[4], v[3]]
|
50
|
+
ruby :009 > v.out('knows')
|
51
|
+
=> [v[2], v[4]]
|
52
|
+
ruby :010 > v.outE
|
53
|
+
=> [e[7][1-knows->2], e[8][1-knows->4], e[9][1-created->3]]
|
54
|
+
ruby :011 > v.outE('knows')
|
55
|
+
=> [e[7][1-knows->2], e[8][1-knows->4]]
|
56
|
+
ruby :012 > v.outE.weight
|
57
|
+
=> [0.5, 1.0, 0.4]
|
58
|
+
ruby :013 > v.outE.has('weight', :lt, 1).inV
|
59
|
+
=> [v[2], v[3]]
|
60
|
+
ruby :014 > v.outE.filter{it.weight < 1}.inV
|
61
|
+
=> [v[2], v[3]]
|
62
|
+
ruby :015 > v.out('knows').filter{it.age > 30}.out('created').name
|
63
|
+
=> ["ripple", "lop"]
|
64
64
|
|
65
65
|
In REPL, the `take' method which invokes all pipes is automatically called.
|
66
66
|
|
@@ -86,12 +86,12 @@ In REPL, the `take' method which invokes all pipes is automatically called.
|
|
86
86
|
=> [:tinker]
|
87
87
|
ruby-1.9.3-head :003 > g = store.graph :tinker
|
88
88
|
=> redgrape[vertices:6 edges:6]
|
89
|
-
ruby-1.9.3-head :004 > g.
|
90
|
-
=> [
|
91
|
-
ruby-1.9.3-head :005 > g
|
92
|
-
=> [
|
93
|
-
|
94
|
-
|
89
|
+
ruby-1.9.3-head :004 > g.add_vertex 7
|
90
|
+
=> redgrape[vertices:7 edges:6]
|
91
|
+
ruby-1.9.3-head :005 > store.put_graph :tinker, g
|
92
|
+
=> redgrape[vertices:7 edges:6]
|
93
|
+
|
94
|
+
Changes on a graph are not committed until the put_graph method called.
|
95
95
|
|
96
96
|
## REQUIREMENTS:
|
97
97
|
|
@@ -101,7 +101,7 @@ In REPL, the `take' method which invokes all pipes is automatically called.
|
|
101
101
|
|
102
102
|
After checking out the source, run:
|
103
103
|
|
104
|
-
|
104
|
+
$ rake newb
|
105
105
|
|
106
106
|
This task will install any missing dependencies, run the tests/specs,
|
107
107
|
and generate the RDoc.
|
data/Rakefile
CHANGED
@@ -1,19 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'hoe'
|
5
|
-
|
6
|
-
# Hoe.plugin :compiler
|
7
|
-
# Hoe.plugin :gem_prelude_sucks
|
8
|
-
# Hoe.plugin :inline
|
9
|
-
# Hoe.plugin :racc
|
10
|
-
# Hoe.plugin :rcov
|
11
|
-
# Hoe.plugin :rubyforge
|
12
|
-
|
13
|
-
Hoe.spec 'red_grape' do
|
14
|
-
developer('ANDO Yasushi', 'andyjpn@gmail.com')
|
15
|
-
|
16
|
-
# self.rubyforge_name = 'red_grapex' # if different than 'red_grape'
|
17
|
-
end
|
18
|
-
|
19
|
-
# vim: syntax=ruby
|
1
|
+
require "bundler/gem_tasks"
|
data/TODO.txt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
TODO
|
2
|
+
* serialize a graph
|
3
|
+
* implement tinkerpop methods
|
4
|
+
* use symbols for keys
|
5
|
+
* customize irb prompt
|
6
|
+
|
7
|
+
DONE
|
8
|
+
* show features
|
9
|
+
* marshal
|
10
|
+
* readonly graph
|
11
|
+
* use dRuby for persistence
|
12
|
+
* cut a GraphML reader function from Graph class
|
13
|
+
|
14
|
+
MEMO
|
15
|
+
#IRB.init_config 'redgrape'
|
16
|
+
#IRB.conf[:PROMPT][:RED_GRAPE] = {
|
17
|
+
# :PROMPT_I => "abc%N(%m):%03n:%i> ",
|
18
|
+
# :PROMPT_S => "abc%N(%m):%03n:%i%l ",
|
19
|
+
# :PROMPT_C => "abc%N(%m):%03n:%i* ",
|
20
|
+
# :RETURN => "%s\n"
|
21
|
+
#}
|
22
|
+
#IRB.conf[:PROMPT_MODE] = :RED_GRAPE
|
23
|
+
|
data/bin/redgrape
CHANGED
data/bin/trellis
CHANGED
@@ -1,8 +1,26 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
$: << File.expand_path('../../lib', __FILE__)
|
3
|
+
|
4
|
+
require 'optparse'
|
3
5
|
require 'red_grape/graph_store'
|
6
|
+
require 'red_grape/version'
|
7
|
+
|
8
|
+
DEFAULT_DBFILE = 'dbfile.bin'
|
9
|
+
|
10
|
+
::Version = RedGrape::VERSION
|
11
|
+
COMMAND_LINE = "#{$0} #{ARGV.join(' ')}"
|
12
|
+
OPT = {}
|
13
|
+
opts = OptionParser.new
|
14
|
+
opts.on('-p', '--port <port number>',
|
15
|
+
"Set the port number (default: #{RedGrape::GraphStore::DEFAULT_PORT})"){|v| OPT[:port] = v}
|
16
|
+
opts.on('-d', '--file <datafile>',
|
17
|
+
"Set the name of a file to store data (default: #{DEFAULT_DBFILE})"){|v| OPT[:dbfile] = v}
|
18
|
+
opts.on_tail('-v', '--version', 'Show version'){puts(opts.ver); exit}
|
19
|
+
opts.on_tail('-h', '--help', 'Show this message'){puts(opts.help); exit}
|
20
|
+
opts.order! ARGV
|
4
21
|
|
5
|
-
|
22
|
+
Signal.trap :INT, 'EXIT'
|
23
|
+
RedGrape::GraphStore.start(:default, DEFAULT_DBFILE) do
|
6
24
|
puts <<-EOS
|
7
25
|
Start server: #{DRb.uri}
|
8
26
|
[Ctrl+C to stop]
|
data/lib/ext/array_ext.rb
CHANGED
@@ -30,7 +30,13 @@ class Array
|
|
30
30
|
alias method_missing_without_prop_pipe method_missing
|
31
31
|
def method_missing_with_prop_pipe(name, *args, &block)
|
32
32
|
if graph_item_array?
|
33
|
-
map!
|
33
|
+
map! do |e|
|
34
|
+
begin
|
35
|
+
e.send name, *args, &block
|
36
|
+
rescue NoMethodError
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
end.compact!
|
34
40
|
else
|
35
41
|
method_missing_without_prop_pipe name, *args, &block
|
36
42
|
end
|
data/lib/red_grape/element.rb
CHANGED
data/lib/red_grape/graph.rb
CHANGED
@@ -27,6 +27,38 @@ module RedGrape
|
|
27
27
|
g.add_edge 12, v6, v3, 'created', weight:0.2
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
def features
|
32
|
+
{
|
33
|
+
ignores_supplied_ids:false,
|
34
|
+
is_persistent:false,
|
35
|
+
is_rdf_model:false,
|
36
|
+
is_wrapper:false,
|
37
|
+
supports_boolean_property:true,
|
38
|
+
supports_double_property:true,
|
39
|
+
supports_duplicate_edges:true,
|
40
|
+
supports_edge_index:false,
|
41
|
+
supports_edge_iteration:true,
|
42
|
+
supports_edge_key_index:false,
|
43
|
+
supports_float_property:true,
|
44
|
+
supports_indices:false,
|
45
|
+
supports_integer_property:true,
|
46
|
+
supports_key_indices:false,
|
47
|
+
supports_long_property:true,
|
48
|
+
supports_map_property:true,
|
49
|
+
supports_mixed_list_property:true,
|
50
|
+
supports_primitive_array_property:true,
|
51
|
+
supports_self_loops:true,
|
52
|
+
supports_serializable_object_property:true,
|
53
|
+
supports_string_property:true,
|
54
|
+
supports_threded_transactions:false,
|
55
|
+
supports_transactions:false,
|
56
|
+
supports_uniform_list_property:true,
|
57
|
+
supports_vertex_index:false,
|
58
|
+
supports_vertex_iteration:true,
|
59
|
+
supports_vertex_key_index:false
|
60
|
+
}
|
61
|
+
end
|
30
62
|
end
|
31
63
|
|
32
64
|
attr_accessor :serializer
|
@@ -112,10 +144,10 @@ module RedGrape
|
|
112
144
|
id = id.id if id.is_a? Vertex
|
113
145
|
v = @vertices.delete id.to_s
|
114
146
|
if v
|
115
|
-
v.out_edges.each do |e|
|
147
|
+
v.out_edges.dup.each do |e|
|
116
148
|
remove_edge e
|
117
149
|
end
|
118
|
-
v.in_edges.each do |e|
|
150
|
+
v.in_edges.dup.each do |e|
|
119
151
|
remove_edge e
|
120
152
|
end
|
121
153
|
end
|
@@ -165,6 +197,31 @@ module RedGrape
|
|
165
197
|
Graph::Vertex.new
|
166
198
|
end
|
167
199
|
|
200
|
+
def readonly
|
201
|
+
dup.readonly!
|
202
|
+
end
|
203
|
+
|
204
|
+
def readonly!
|
205
|
+
%w(add_vertex add_edge remove_vertex remove_edge load).each do |name|
|
206
|
+
eval "def self.#{name}(*args); raise NoMethodError end"
|
207
|
+
end
|
208
|
+
def self.readonly?; true end
|
209
|
+
self
|
210
|
+
end
|
211
|
+
|
212
|
+
def readonly?
|
213
|
+
false
|
214
|
+
end
|
215
|
+
|
216
|
+
def dup
|
217
|
+
obj = self.class.new
|
218
|
+
obj.instance_variable_set :@serializer, @serializer
|
219
|
+
obj.instance_variable_set :@vertices, @vertices.dup
|
220
|
+
obj.instance_variable_set :@edges, @edges.dup
|
221
|
+
obj.instance_variable_set :@property_descriptions, @property_descriptions.dup
|
222
|
+
obj
|
223
|
+
end
|
224
|
+
|
168
225
|
def to_s
|
169
226
|
"redgrape[vertices:#{@vertices.size} edges:#{@edges.size}]"
|
170
227
|
end
|
@@ -55,7 +55,14 @@ module RedGrape
|
|
55
55
|
end if @filename
|
56
56
|
end
|
57
57
|
|
58
|
-
uri =
|
58
|
+
uri = case uri
|
59
|
+
when NilClass, :default
|
60
|
+
DEFAULT_URI
|
61
|
+
when Integer
|
62
|
+
"druby://localhost:#{uri}"
|
63
|
+
else
|
64
|
+
uri
|
65
|
+
end
|
59
66
|
DRb.start_service uri, self
|
60
67
|
block.call if block
|
61
68
|
sleep
|
@@ -6,26 +6,21 @@ module RedGrape
|
|
6
6
|
class PathsPipe < Pipe::Base
|
7
7
|
def pass(obj, context)
|
8
8
|
context.push_history obj do |ctx|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
PathGroup.new history
|
13
|
-
else
|
14
|
-
ary = []
|
15
|
-
history.each_with_index do |h, index|
|
16
|
-
prc = self.opts[index]
|
17
|
-
if prc
|
18
|
-
context.it = h
|
19
|
-
ary << context.eval(&prc)
|
20
|
-
else
|
21
|
-
ary << h
|
22
|
-
end
|
23
|
-
end
|
24
|
-
PathGroup.new ary
|
25
|
-
end
|
9
|
+
history = ctx.history.dup
|
10
|
+
if self.opts.empty?
|
11
|
+
PathGroup.new history
|
26
12
|
else
|
27
|
-
|
28
|
-
|
13
|
+
ary = []
|
14
|
+
history.each_with_index do |h, index|
|
15
|
+
prc = self.opts[index]
|
16
|
+
if prc
|
17
|
+
context.it = h
|
18
|
+
ary << context.eval(&prc)
|
19
|
+
else
|
20
|
+
ary << h
|
21
|
+
end
|
22
|
+
end
|
23
|
+
PathGroup.new ary
|
29
24
|
end
|
30
25
|
end
|
31
26
|
end
|
data/lib/red_grape.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
require 'ext/nil_class_ext'
|
1
2
|
require 'ext/object_ext'
|
2
3
|
require 'ext/array_ext'
|
4
|
+
require 'red_grape/version'
|
3
5
|
require 'red_grape/pipe/in_pipe'
|
4
6
|
require 'red_grape/pipe/out_pipe'
|
5
7
|
require 'red_grape/pipe/property_pipe'
|
@@ -23,8 +25,6 @@ require 'red_grape/pipe/cap_pipe'
|
|
23
25
|
require 'red_grape/graph'
|
24
26
|
|
25
27
|
module RedGrape
|
26
|
-
VERSION = '0.0.3'
|
27
|
-
|
28
28
|
module_function
|
29
29
|
def set_auto_take(val=true)
|
30
30
|
Pipe.set_auto_take val
|
data/red_grape.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "red_grape/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "red_grape"
|
7
|
+
s.version = RedGrape::VERSION
|
8
|
+
s.authors = ["ANDO Yasushi"]
|
9
|
+
s.email = ["andyjpn@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/technohippy/red-grape"
|
11
|
+
s.summary = %q{RedGrape - Extremely Simple GraphDB}
|
12
|
+
s.description = %q{RedGrape is an in-memory graph database written in ruby. I made this in order to learn how graph databases work so that please do not use this for any serious purpose.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "red_grape"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
s.add_runtime_dependency "nokogiri"
|
24
|
+
end
|
data/test/test_graph.rb
CHANGED
@@ -69,6 +69,12 @@ class GraphTest < Test::Unit::TestCase
|
|
69
69
|
assert_equal 'lop', graph.edge(5).target.name
|
70
70
|
end
|
71
71
|
|
72
|
+
def test_features
|
73
|
+
features = RedGrape::Graph.features
|
74
|
+
assert_equal Hash, features.class
|
75
|
+
assert features.keys.include?(:ignores_supplied_ids)
|
76
|
+
end
|
77
|
+
|
72
78
|
def test_add_vertex
|
73
79
|
g = RedGrape::Graph.new
|
74
80
|
g.add_vertex id:1, val:'a'
|
@@ -107,6 +113,13 @@ class GraphTest < Test::Unit::TestCase
|
|
107
113
|
g.remove_vertex v2
|
108
114
|
assert !v1.out_edges.map(&:id).include?(e12.id)
|
109
115
|
assert !v3.in_edges.map(&:id).include?(e23.id)
|
116
|
+
|
117
|
+
g = RedGrape.create_tinker_graph
|
118
|
+
assert_equal 6, g.v.size
|
119
|
+
assert_equal 6, g.e.size
|
120
|
+
g.remove_vertex 1
|
121
|
+
assert_equal 5, g.v.size
|
122
|
+
assert_equal 3, g.e.size
|
110
123
|
end
|
111
124
|
|
112
125
|
def test_add_edge
|
@@ -140,4 +153,29 @@ class GraphTest < Test::Unit::TestCase
|
|
140
153
|
assert v2.out_edges.map(&:id).include?(e23.id)
|
141
154
|
assert v3.in_edges.map(&:id).include?(e23.id)
|
142
155
|
end
|
156
|
+
|
157
|
+
def test_readonly
|
158
|
+
g1 = RedGrape::Graph.new
|
159
|
+
|
160
|
+
assert !g1.readonly?
|
161
|
+
g1.add_vertex 1
|
162
|
+
|
163
|
+
g2 = g1.readonly
|
164
|
+
assert !g1.readonly?
|
165
|
+
assert g2.readonly?
|
166
|
+
assert_equal 1, g2.v.size
|
167
|
+
assert_raise(NoMethodError) do
|
168
|
+
g2.add_vertex 2
|
169
|
+
end
|
170
|
+
g1.add_vertex 2
|
171
|
+
assert_equal 2, g1.v.size
|
172
|
+
assert_equal 1, g2.v.size
|
173
|
+
|
174
|
+
g1.readonly!
|
175
|
+
assert g1.readonly?
|
176
|
+
assert_raise(NoMethodError) do
|
177
|
+
g1.add_vertex 3
|
178
|
+
end
|
179
|
+
assert_equal 2, g1.v.size
|
180
|
+
end
|
143
181
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red_grape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,30 +9,19 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: nokogiri
|
16
|
+
requirement: &70245490551240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
22
|
-
type: :
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: hoe
|
27
|
-
requirement: &70272812464400 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '3.0'
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70272812464400
|
24
|
+
version_requirements: *70245490551240
|
36
25
|
description: RedGrape is an in-memory graph database written in ruby. I made this
|
37
26
|
in order to learn how graph databases work so that please do not use this for any
|
38
27
|
serious purpose.
|
@@ -42,22 +31,23 @@ executables:
|
|
42
31
|
- redgrape
|
43
32
|
- trellis
|
44
33
|
extensions: []
|
45
|
-
extra_rdoc_files:
|
46
|
-
- Manifest.txt
|
47
|
-
- README.txt
|
48
|
-
- History.txt
|
34
|
+
extra_rdoc_files: []
|
49
35
|
files:
|
50
36
|
- .autotest
|
51
|
-
-
|
52
|
-
-
|
53
|
-
- README.txt
|
37
|
+
- .gitignore
|
38
|
+
- Gemfile
|
54
39
|
- History.txt
|
40
|
+
- README.md
|
41
|
+
- Rakefile
|
42
|
+
- TODO.txt
|
55
43
|
- bin/redgrape
|
56
44
|
- bin/trellis
|
57
45
|
- data/graph-example-1.xml
|
58
46
|
- data/graph-example-2.xml
|
59
47
|
- lib/ext/array_ext.rb
|
48
|
+
- lib/ext/nil_class_ext.rb
|
60
49
|
- lib/ext/object_ext.rb
|
50
|
+
- lib/red_grape.rb
|
61
51
|
- lib/red_grape/edge.rb
|
62
52
|
- lib/red_grape/element.rb
|
63
53
|
- lib/red_grape/graph.rb
|
@@ -87,8 +77,9 @@ files:
|
|
87
77
|
- lib/red_grape/pipe/transform_pipe.rb
|
88
78
|
- lib/red_grape/property_description.rb
|
89
79
|
- lib/red_grape/serializer/graphml_serializer.rb
|
80
|
+
- lib/red_grape/version.rb
|
90
81
|
- lib/red_grape/vertex.rb
|
91
|
-
-
|
82
|
+
- red_grape.gemspec
|
92
83
|
- test/test_element.rb
|
93
84
|
- test/test_graph.rb
|
94
85
|
- test/test_on_the_nature_of_pipes.rb
|
@@ -96,13 +87,10 @@ files:
|
|
96
87
|
- test/test_pipe_base.rb
|
97
88
|
- test/test_traversal_patterns.rb
|
98
89
|
- test/test_vertex.rb
|
99
|
-
- .gemtest
|
100
90
|
homepage: https://github.com/technohippy/red-grape
|
101
91
|
licenses: []
|
102
92
|
post_install_message:
|
103
|
-
rdoc_options:
|
104
|
-
- --main
|
105
|
-
- README.txt
|
93
|
+
rdoc_options: []
|
106
94
|
require_paths:
|
107
95
|
- lib
|
108
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -122,7 +110,7 @@ rubyforge_project: red_grape
|
|
122
110
|
rubygems_version: 1.8.10
|
123
111
|
signing_key:
|
124
112
|
specification_version: 3
|
125
|
-
summary: RedGrape
|
113
|
+
summary: RedGrape - Extremely Simple GraphDB
|
126
114
|
test_files:
|
127
115
|
- test/test_element.rb
|
128
116
|
- test/test_graph.rb
|
data/.gemtest
DELETED
File without changes
|
data/Manifest.txt
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
.autotest
|
2
|
-
Manifest.txt
|
3
|
-
Rakefile
|
4
|
-
README.txt
|
5
|
-
History.txt
|
6
|
-
bin/redgrape
|
7
|
-
bin/trellis
|
8
|
-
data/graph-example-1.xml
|
9
|
-
data/graph-example-2.xml
|
10
|
-
lib/ext/array_ext.rb
|
11
|
-
lib/ext/object_ext.rb
|
12
|
-
lib/red_grape/edge.rb
|
13
|
-
lib/red_grape/element.rb
|
14
|
-
lib/red_grape/graph.rb
|
15
|
-
lib/red_grape/graph_store.rb
|
16
|
-
lib/red_grape/path_group.rb
|
17
|
-
lib/red_grape/pipe/aggregate_pipe.rb
|
18
|
-
lib/red_grape/pipe/as_pipe.rb
|
19
|
-
lib/red_grape/pipe/back_pipe.rb
|
20
|
-
lib/red_grape/pipe/base.rb
|
21
|
-
lib/red_grape/pipe/cap_pipe.rb
|
22
|
-
lib/red_grape/pipe/context.rb
|
23
|
-
lib/red_grape/pipe/except_pipe.rb
|
24
|
-
lib/red_grape/pipe/fill_pipe.rb
|
25
|
-
lib/red_grape/pipe/filter_pipe.rb
|
26
|
-
lib/red_grape/pipe/group_count_pipe.rb
|
27
|
-
lib/red_grape/pipe/has_pipe.rb
|
28
|
-
lib/red_grape/pipe/if_then_else_pipe.rb
|
29
|
-
lib/red_grape/pipe/in_pipe.rb
|
30
|
-
lib/red_grape/pipe/in_v_pipe.rb
|
31
|
-
lib/red_grape/pipe/loop_pipe.rb
|
32
|
-
lib/red_grape/pipe/out_e_pipe.rb
|
33
|
-
lib/red_grape/pipe/out_pipe.rb
|
34
|
-
lib/red_grape/pipe/paths_pipe.rb
|
35
|
-
lib/red_grape/pipe/property_pipe.rb
|
36
|
-
lib/red_grape/pipe/retain_pipe.rb
|
37
|
-
lib/red_grape/pipe/side_effect_pipe.rb
|
38
|
-
lib/red_grape/pipe/transform_pipe.rb
|
39
|
-
lib/red_grape/property_description.rb
|
40
|
-
lib/red_grape/serializer/graphml_serializer.rb
|
41
|
-
lib/red_grape/vertex.rb
|
42
|
-
lib/red_grape.rb
|
43
|
-
test/test_element.rb
|
44
|
-
test/test_graph.rb
|
45
|
-
test/test_on_the_nature_of_pipes.rb
|
46
|
-
test/test_pipe.rb
|
47
|
-
test/test_pipe_base.rb
|
48
|
-
test/test_traversal_patterns.rb
|
49
|
-
test/test_vertex.rb
|