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 ADDED
@@ -0,0 +1,4 @@
1
+ *.swp
2
+ dbfile.bin
3
+ pkg/
4
+ red_grape-*.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in red-grape.gemspec
4
+ gemspec
@@ -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
- 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]
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
- 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],
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
- $ 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"]
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.v
90
- => [v[1], v[2], v[3], v[4], v[5], v[6]]
91
- ruby-1.9.3-head :005 > g.v.out
92
- => [v[2], v[4], v[3], v[5], v[3], v[3]]
93
- ruby-1.9.3-head :006 > g.v.out.name
94
- => ["vadas", "josh", "lop", "ripple", "lop", "lop"]
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
- $ rake newb
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
- # -*- ruby -*-
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
@@ -72,10 +72,9 @@ CMD = ARGV.shift
72
72
  $store = RedGrape::GraphStore.open
73
73
 
74
74
  puts %Q{ T
75
- ooooo
76
- ------ ooo ------
77
- RED o GRAPE
78
- -------------------
75
+ o000o
76
+ o0o
77
+ -------- 0 --oo-o--
79
78
  }
80
79
 
81
80
  IRB.start
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
- RedGrape::GraphStore.start(:default, 'dbfile.bin') do
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! {|e| e.send name, *args, &block}
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
@@ -0,0 +1,5 @@
1
+ class NilClass
2
+ def _
3
+ nil
4
+ end
5
+ end
@@ -53,10 +53,6 @@ module RedGrape
53
53
  pipe.pass self, context
54
54
  end
55
55
 
56
- def copy(depth=nil)
57
- self # TODO
58
- end
59
-
60
56
  def ==(obj)
61
57
  self.class == obj.class && self.id == obj.id
62
58
  end
@@ -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 = DEFAULT_URI if uri.nil? || uri == :default
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
- if self.last?
10
- history = ctx.history.dup
11
- if self.opts.empty?
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
- # TODO
28
- raise 'not implemented'
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
@@ -0,0 +1,3 @@
1
+ module RedGrape
2
+ VERSION = "0.0.4"
3
+ 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.3
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-06 00:00:00.000000000 Z
12
+ date: 2012-06-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rdoc
16
- requirement: &70272812464840 !ruby/object:Gem::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: '3.10'
22
- type: :development
21
+ version: '0'
22
+ type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70272812464840
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
- - Manifest.txt
52
- - Rakefile
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
- - lib/red_grape.rb
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 is an in-memory graph database written in ruby
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