pacer 1.0.1-java → 1.0.2-java
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 +0 -1
 - data/Gemfile +29 -0
 - data/lib/pacer/core/graph/edges_route.rb +4 -4
 - data/lib/pacer/core/graph/element_route.rb +1 -1
 - data/lib/pacer/core/graph/vertices_route.rb +13 -9
 - data/lib/pacer/core/route.rb +0 -25
 - data/lib/pacer/graph/pacer_graph.rb +13 -13
 - data/lib/pacer/pipe/loop_pipe.rb +2 -5
 - data/lib/pacer/pipe/path_wrapping_pipe.rb +3 -9
 - data/lib/pacer/pipe/simple_visitor_pipe.rb +1 -2
 - data/lib/pacer/pipe/wrapping_pipe.rb +1 -7
 - data/lib/pacer/route.rb +18 -7
 - data/lib/pacer/side_effect/is_unique.rb +18 -12
 - data/lib/pacer/transform/join.rb +4 -5
 - data/lib/pacer/utils/trie.rb +1 -4
 - data/lib/pacer/utils/tsort.rb +2 -2
 - data/lib/pacer/version.rb +1 -1
 - data/lib/pacer/wrappers/edge_wrapper.rb +17 -17
 - data/lib/pacer/wrappers/element_wrapper.rb +4 -29
 - data/lib/pacer/wrappers/index_wrapper.rb +1 -2
 - data/lib/pacer/wrappers/vertex_wrapper.rb +10 -7
 - data/lib/pacer/wrappers/wrapper_selector.rb +2 -2
 - data/lib/pacer/wrappers/wrapping_pipe_function.rb +6 -13
 - data/lib/{pacer-1.0.1-standalone.jar → pacer-1.0.2-standalone.jar} +0 -0
 - data/lib/pacer.rb +0 -1
 - data/pacer.gemspec +0 -2
 - data/pom.xml +1 -1
 - data/spec/pacer/core/graph/vertices_route_spec.rb +12 -0
 - data/spec/pacer/filter/property_filter_spec.rb +3 -6
 - data/spec/pacer/side_effect/as_spec.rb +8 -5
 - data/spec/pacer/side_effect/is_unique_spec.rb +11 -0
 - data/spec/pacer/transform/map_spec.rb +2 -2
 - data/spec/pacer/transform/process_spec.rb +1 -1
 - data/spec/pacer/wrapper/edge_wrapper_spec.rb +2 -4
 - data/spec/pacer/wrapper/element_wrapper_spec.rb +17 -6
 - data/spec/pacer/wrapper/vertex_wrapper_spec.rb +2 -4
 - metadata +12 -25
 - data/Gemfile-dev +0 -33
 - data/Gemfile-release +0 -4
 - data/lib/pacer/extensions/block_filter_element.rb +0 -17
 - data/lib/pacer/extensions.rb +0 -6
 - data/tags +0 -1165
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -2,3 +2,32 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            source "http://rubygems.org"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            gemspec
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            group :development do
         
     | 
| 
      
 7 
     | 
    
         
            +
              gem 'rspec', '~> 2.10.0'
         
     | 
| 
      
 8 
     | 
    
         
            +
              gem 'rr', '~> 1.0'
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem 'simplecov'
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem 'yard'
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem 'rake'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              # pacer-* gems are required for testing pacer.
         
     | 
| 
      
 14 
     | 
    
         
            +
              # If you have the gem repos cloned locally, we'll use them.
         
     | 
| 
      
 15 
     | 
    
         
            +
              #
         
     | 
| 
      
 16 
     | 
    
         
            +
              libs = [
         
     | 
| 
      
 17 
     | 
    
         
            +
                ['pacer-neo4j', '2.0.0.pre'],
         
     | 
| 
      
 18 
     | 
    
         
            +
                ['pacer-orient', '2.0.0.pre'],
         
     | 
| 
      
 19 
     | 
    
         
            +
                ['pacer-dex', '2.0.0.pre']
         
     | 
| 
      
 20 
     | 
    
         
            +
              ] 
         
     | 
| 
      
 21 
     | 
    
         
            +
              libs.each do |lib, version|
         
     | 
| 
      
 22 
     | 
    
         
            +
                if File.directory? "../#{lib}"
         
     | 
| 
      
 23 
     | 
    
         
            +
                  gem lib, :path => "../#{lib}" 
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
               
         
     | 
| 
      
 28 
     | 
    
         
            +
              gem 'autotest-standalone'
         
     | 
| 
      
 29 
     | 
    
         
            +
              gem 'autotest-growl'
         
     | 
| 
      
 30 
     | 
    
         
            +
              gem 'pry'
         
     | 
| 
      
 31 
     | 
    
         
            +
              gem 'awesome_print', '0.4.0'
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
         @@ -9,7 +9,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       9 
9 
     | 
    
         
             
                # Extends the route with out vertices from this route's matching edges.
         
     | 
| 
       10 
10 
     | 
    
         
             
                #
         
     | 
| 
       11 
11 
     | 
    
         
             
                # @param [Array<Hash, extension>, Hash, extension] filter see {Pacer::Route#property_filter}
         
     | 
| 
       12 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 12 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       13 
13 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       14 
14 
     | 
    
         
             
                def out_v(*filters, &block)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
         @@ -21,7 +21,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       21 
21 
     | 
    
         
             
                # Extends the route with in vertices from this route's matching edges.
         
     | 
| 
       22 
22 
     | 
    
         
             
                #
         
     | 
| 
       23 
23 
     | 
    
         
             
                # @param [Array<Hash, extension>, Hash, extension] filter see {Pacer::Route#property_filter}
         
     | 
| 
       24 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 24 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       25 
25 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       26 
26 
     | 
    
         
             
                def in_v(*filters, &block)
         
     | 
| 
       27 
27 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
         @@ -33,7 +33,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       33 
33 
     | 
    
         
             
                # Extends the route with both in and oud vertices from this route's matching edges.
         
     | 
| 
       34 
34 
     | 
    
         
             
                #
         
     | 
| 
       35 
35 
     | 
    
         
             
                # @param [Array<Hash, extension>, Hash, extension] filter see {Pacer::Route#property_filter}
         
     | 
| 
       36 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 36 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       37 
37 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       38 
38 
     | 
    
         
             
                def both_v(*filters, &block)
         
     | 
| 
       39 
39 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
         @@ -45,7 +45,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       45 
45 
     | 
    
         
             
                # Extend route with the additional edge label, property and block filters.
         
     | 
| 
       46 
46 
     | 
    
         
             
                #
         
     | 
| 
       47 
47 
     | 
    
         
             
                # @param [Array<Hash, extension>, Hash, extension] filter see {Pacer::Route#property_filter}
         
     | 
| 
       48 
     | 
    
         
            -
                # @yield [EdgeWrapper 
     | 
| 
      
 48 
     | 
    
         
            +
                # @yield [EdgeWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       49 
49 
     | 
    
         
             
                # @return [EdgesRoute]
         
     | 
| 
       50 
50 
     | 
    
         
             
                def e(*filters, &block)
         
     | 
| 
       51 
51 
     | 
    
         
             
                  filter(*filters, &block)
         
     | 
| 
         @@ -10,7 +10,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       10 
10 
     | 
    
         
             
                # Attach a filter to the current route.
         
     | 
| 
       11 
11 
     | 
    
         
             
                #
         
     | 
| 
       12 
12 
     | 
    
         
             
                # @param [Array<Hash, extension>, Hash, extension] filter see {Pacer::Route#property_filter}
         
     | 
| 
       13 
     | 
    
         
            -
                # @yield [ElementWrapper 
     | 
| 
      
 13 
     | 
    
         
            +
                # @yield [ElementWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       14 
14 
     | 
    
         
             
                # @return [ElementRoute] the same type and extensions as the source route.
         
     | 
| 
       15 
15 
     | 
    
         
             
                def filter(*filters, &block)
         
     | 
| 
       16 
16 
     | 
    
         
             
                  Pacer::Route.property_filter(self, filters, block)
         
     | 
| 
         @@ -15,7 +15,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       15 
15 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       16 
16 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       17 
17 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       18 
     | 
    
         
            -
                # @yield [EdgeWrapper 
     | 
| 
      
 18 
     | 
    
         
            +
                # @yield [EdgeWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       19 
19 
     | 
    
         
             
                # @return [EdgesRoute]
         
     | 
| 
       20 
20 
     | 
    
         
             
                def out_e(*filters, &block)
         
     | 
| 
       21 
21 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
         @@ -32,13 +32,15 @@ module Pacer::Core::Graph 
     | 
|
| 
       32 
32 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       33 
33 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       34 
34 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       35 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 35 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       36 
36 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       37 
37 
     | 
    
         
             
                def out(*filters, &block)
         
     | 
| 
       38 
38 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
       39 
39 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
       40 
40 
     | 
    
         
             
                                                           :pipe_class => OutPipe,
         
     | 
| 
       41 
41 
     | 
    
         
             
                                                           :pipe_args => route_labels,
         
     | 
| 
      
 42 
     | 
    
         
            +
                                                           :wrapper => nil,
         
     | 
| 
      
 43 
     | 
    
         
            +
                                                           :extensions => [],
         
     | 
| 
       42 
44 
     | 
    
         
             
                                                           :route_name => edge_route_name('out')),
         
     | 
| 
       43 
45 
     | 
    
         
             
                                              filters, block)
         
     | 
| 
       44 
46 
     | 
    
         
             
                end
         
     | 
| 
         @@ -49,7 +51,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       49 
51 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       50 
52 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       51 
53 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       52 
     | 
    
         
            -
                # @yield [EdgeWrapper 
     | 
| 
      
 54 
     | 
    
         
            +
                # @yield [EdgeWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       53 
55 
     | 
    
         
             
                # @return [EdgesRoute]
         
     | 
| 
       54 
56 
     | 
    
         
             
                def in_e(*filters, &block)
         
     | 
| 
       55 
57 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
         @@ -66,13 +68,15 @@ module Pacer::Core::Graph 
     | 
|
| 
       66 
68 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       67 
69 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       68 
70 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       69 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 71 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       70 
72 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       71 
73 
     | 
    
         
             
                def in(*filters, &block)
         
     | 
| 
       72 
74 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
       73 
75 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
       74 
76 
     | 
    
         
             
                                                           :pipe_class => InPipe,
         
     | 
| 
       75 
77 
     | 
    
         
             
                                                           :pipe_args => route_labels,
         
     | 
| 
      
 78 
     | 
    
         
            +
                                                           :wrapper => nil,
         
     | 
| 
      
 79 
     | 
    
         
            +
                                                           :extensions => [],
         
     | 
| 
       76 
80 
     | 
    
         
             
                                                           :route_name => edge_route_name('in')),
         
     | 
| 
       77 
81 
     | 
    
         
             
                                              filters, block)
         
     | 
| 
       78 
82 
     | 
    
         
             
                end
         
     | 
| 
         @@ -83,7 +87,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       83 
87 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       84 
88 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       85 
89 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       86 
     | 
    
         
            -
                # @yield [EdgeWrapper 
     | 
| 
      
 90 
     | 
    
         
            +
                # @yield [EdgeWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       87 
91 
     | 
    
         
             
                # @return [EdgesRoute]
         
     | 
| 
       88 
92 
     | 
    
         
             
                def both_e(*filters, &block)
         
     | 
| 
       89 
93 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
         @@ -100,13 +104,15 @@ module Pacer::Core::Graph 
     | 
|
| 
       100 
104 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       101 
105 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       102 
106 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       103 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 107 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       104 
108 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       105 
109 
     | 
    
         
             
                def both(*filters, &block)
         
     | 
| 
       106 
110 
     | 
    
         
             
                  filters = extract_labels(filters)
         
     | 
| 
       107 
111 
     | 
    
         
             
                  Pacer::Route.property_filter(chain_route(:element_type => :vertex,
         
     | 
| 
       108 
112 
     | 
    
         
             
                                                           :pipe_class => BothPipe,
         
     | 
| 
       109 
113 
     | 
    
         
             
                                                           :pipe_args => route_labels,
         
     | 
| 
      
 114 
     | 
    
         
            +
                                                           :wrapper => nil,
         
     | 
| 
      
 115 
     | 
    
         
            +
                                                           :extensions => [],
         
     | 
| 
       110 
116 
     | 
    
         
             
                                                           :route_name => edge_route_name('both')),
         
     | 
| 
       111 
117 
     | 
    
         
             
                                              filters, block)
         
     | 
| 
       112 
118 
     | 
    
         
             
                end
         
     | 
| 
         @@ -117,7 +123,7 @@ module Pacer::Core::Graph 
     | 
|
| 
       117 
123 
     | 
    
         
             
                #   If string(s) or symbol(s) are given, they will be treated as edge
         
     | 
| 
       118 
124 
     | 
    
         
             
                #   labels. Unlike other property filters which all must be matched, an
         
     | 
| 
       119 
125 
     | 
    
         
             
                #   edge will pass the filter if it matches any of the given labels.
         
     | 
| 
       120 
     | 
    
         
            -
                # @yield [VertexWrapper 
     | 
| 
      
 126 
     | 
    
         
            +
                # @yield [VertexWrapper] filter proc, see {Pacer::Route#property_filter}
         
     | 
| 
       121 
127 
     | 
    
         
             
                # @return [VerticesRoute]
         
     | 
| 
       122 
128 
     | 
    
         
             
                def v(*filters, &block)
         
     | 
| 
       123 
129 
     | 
    
         
             
                  filter(*filters, &block)
         
     | 
| 
         @@ -165,8 +171,6 @@ module Pacer::Core::Graph 
     | 
|
| 
       165 
171 
     | 
    
         
             
                  else
         
     | 
| 
       166 
172 
     | 
    
         
             
                    to_vertices = [to_vertices].compact
         
     | 
| 
       167 
173 
     | 
    
         
             
                  end
         
     | 
| 
       168 
     | 
    
         
            -
                  graph = self.graph
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
174 
     | 
    
         
             
                  has_props = !props.empty?
         
     | 
| 
       171 
175 
     | 
    
         
             
                  edge_ids = []
         
     | 
| 
       172 
176 
     | 
    
         
             
                  counter = 0
         
     | 
    
        data/lib/pacer/core/route.rb
    CHANGED
    
    | 
         @@ -203,31 +203,6 @@ module Pacer 
     | 
|
| 
       203 
203 
     | 
    
         
             
                    chain_route wrapper: wrapper
         
     | 
| 
       204 
204 
     | 
    
         
             
                  end
         
     | 
| 
       205 
205 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                  def wrapper
         
     | 
| 
       207 
     | 
    
         
            -
                    @wrapper
         
     | 
| 
       208 
     | 
    
         
            -
                  end
         
     | 
| 
       209 
     | 
    
         
            -
             
     | 
| 
       210 
     | 
    
         
            -
                  # Get the set of extensions currently on this route.
         
     | 
| 
       211 
     | 
    
         
            -
                  #
         
     | 
| 
       212 
     | 
    
         
            -
                  # The order of extensions for custom defined wrappers are
         
     | 
| 
       213 
     | 
    
         
            -
                  # guaranteed. If a wrapper is iterated with additional extensions,
         
     | 
| 
       214 
     | 
    
         
            -
                  # a new wrapper will be created dynamically with the original
         
     | 
| 
       215 
     | 
    
         
            -
                  # extensions in order followed by any additional extensions in
         
     | 
| 
       216 
     | 
    
         
            -
                  # undefined order.
         
     | 
| 
       217 
     | 
    
         
            -
                  #
         
     | 
| 
       218 
     | 
    
         
            -
                  # Returns an Array
         
     | 
| 
       219 
     | 
    
         
            -
                  #
         
     | 
| 
       220 
     | 
    
         
            -
                  # @return [Array[extension]]
         
     | 
| 
       221 
     | 
    
         
            -
                  attr_reader :extensions
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
                  def all_extensions
         
     | 
| 
       224 
     | 
    
         
            -
                    if wrapper
         
     | 
| 
       225 
     | 
    
         
            -
                      wrapper.extensions + extensions
         
     | 
| 
       226 
     | 
    
         
            -
                    else
         
     | 
| 
       227 
     | 
    
         
            -
                      extensions
         
     | 
| 
       228 
     | 
    
         
            -
                    end
         
     | 
| 
       229 
     | 
    
         
            -
                  end
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
206 
     | 
    
         
             
                  # If any objects in the given array are modules that contain a Route
         
     | 
| 
       232 
207 
     | 
    
         
             
                  # submodule, extend this route with the Route module.
         
     | 
| 
       233 
208 
     | 
    
         
             
                  # @return [self]
         
     | 
| 
         @@ -9,7 +9,11 @@ module Pacer 
     | 
|
| 
       9 
9 
     | 
    
         
             
                attr_reader :blueprints_graph, :encoder
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                def initialize(encoder, open, shutdown = nil)
         
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
      
 12 
     | 
    
         
            +
                  if open.is_a? Proc
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @reopen = open
         
     | 
| 
      
 14 
     | 
    
         
            +
                  else
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @reopen = proc { open }
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
       13 
17 
     | 
    
         
             
                  @shutdown = shutdown
         
     | 
| 
       14 
18 
     | 
    
         
             
                  reopen
         
     | 
| 
       15 
19 
     | 
    
         
             
                  @encoder = encoder
         
     | 
| 
         @@ -62,12 +66,11 @@ module Pacer 
     | 
|
| 
       62 
66 
     | 
    
         
             
                  if v
         
     | 
| 
       63 
67 
     | 
    
         
             
                    wrapper = modules.detect { |obj| obj.ancestors.include? Pacer::Wrappers::VertexWrapper }
         
     | 
| 
       64 
68 
     | 
    
         
             
                    if wrapper
         
     | 
| 
       65 
     | 
    
         
            -
                      v = wrapper.new v
         
     | 
| 
      
 69 
     | 
    
         
            +
                      v = wrapper.new graph, v
         
     | 
| 
       66 
70 
     | 
    
         
             
                      modules.delete wrapper
         
     | 
| 
       67 
71 
     | 
    
         
             
                    else
         
     | 
| 
       68 
     | 
    
         
            -
                      v = Pacer::Wrappers::VertexWrapper.new v
         
     | 
| 
      
 72 
     | 
    
         
            +
                      v = Pacer::Wrappers::VertexWrapper.new graph, v
         
     | 
| 
       69 
73 
     | 
    
         
             
                    end
         
     | 
| 
       70 
     | 
    
         
            -
                    v.graph = self
         
     | 
| 
       71 
74 
     | 
    
         
             
                    v.add_extensions modules
         
     | 
| 
       72 
75 
     | 
    
         
             
                  else
         
     | 
| 
       73 
76 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -90,12 +93,11 @@ module Pacer 
     | 
|
| 
       90 
93 
     | 
    
         
             
                  if v
         
     | 
| 
       91 
94 
     | 
    
         
             
                    wrapper = modules.detect { |obj| obj.ancestors.include? Pacer::Wrappers::EdgeWrapper }
         
     | 
| 
       92 
95 
     | 
    
         
             
                    if wrapper
         
     | 
| 
       93 
     | 
    
         
            -
                      v = wrapper.new v
         
     | 
| 
      
 96 
     | 
    
         
            +
                      v = wrapper.new graph, v
         
     | 
| 
       94 
97 
     | 
    
         
             
                      modules.delete wrapper
         
     | 
| 
       95 
98 
     | 
    
         
             
                    else
         
     | 
| 
       96 
     | 
    
         
            -
                      v = Pacer::Wrappers::EdgeWrapper.new v
         
     | 
| 
      
 99 
     | 
    
         
            +
                      v = Pacer::Wrappers::EdgeWrapper.new graph, v
         
     | 
| 
       97 
100 
     | 
    
         
             
                    end
         
     | 
| 
       98 
     | 
    
         
            -
                    v.graph = self
         
     | 
| 
       99 
101 
     | 
    
         
             
                    v.add_extensions modules
         
     | 
| 
       100 
102 
     | 
    
         
             
                  end
         
     | 
| 
       101 
103 
     | 
    
         
             
                end
         
     | 
| 
         @@ -116,14 +118,13 @@ module Pacer 
     | 
|
| 
       116 
118 
     | 
    
         
             
                  id, wrapper, modules, props = id_modules_properties(args)
         
     | 
| 
       117 
119 
     | 
    
         
             
                  raw_vertex = creating_elements { blueprints_graph.addVertex(id) }
         
     | 
| 
       118 
120 
     | 
    
         
             
                  if wrapper
         
     | 
| 
       119 
     | 
    
         
            -
                    vertex = wrapper.new raw_vertex
         
     | 
| 
      
 121 
     | 
    
         
            +
                    vertex = wrapper.new graph, raw_vertex
         
     | 
| 
       120 
122 
     | 
    
         
             
                  else
         
     | 
| 
       121 
     | 
    
         
            -
                    vertex = Pacer::Wrappers::VertexWrapper.new raw_vertex
         
     | 
| 
      
 123 
     | 
    
         
            +
                    vertex = Pacer::Wrappers::VertexWrapper.new graph, raw_vertex
         
     | 
| 
       122 
124 
     | 
    
         
             
                  end
         
     | 
| 
       123 
125 
     | 
    
         
             
                  if modules.any?
         
     | 
| 
       124 
126 
     | 
    
         
             
                    vertex = vertex.add_extensions modules
         
     | 
| 
       125 
127 
     | 
    
         
             
                  end
         
     | 
| 
       126 
     | 
    
         
            -
                  vertex.graph = self
         
     | 
| 
       127 
128 
     | 
    
         
             
                  props.each { |k, v| vertex[k.to_s] = v } if props
         
     | 
| 
       128 
129 
     | 
    
         
             
                  vertex
         
     | 
| 
       129 
130 
     | 
    
         
             
                end
         
     | 
| 
         @@ -143,14 +144,13 @@ module Pacer 
     | 
|
| 
       143 
144 
     | 
    
         
             
                  _, wrapper, modules, props = id_modules_properties(args)
         
     | 
| 
       144 
145 
     | 
    
         
             
                  raw_edge = creating_elements { blueprints_graph.addEdge(id, from_v.element, to_v.element, label.to_s) }
         
     | 
| 
       145 
146 
     | 
    
         
             
                  if wrapper
         
     | 
| 
       146 
     | 
    
         
            -
                    edge = wrapper.new raw_edge
         
     | 
| 
      
 147 
     | 
    
         
            +
                    edge = wrapper.new graph, raw_edge
         
     | 
| 
       147 
148 
     | 
    
         
             
                  else
         
     | 
| 
       148 
     | 
    
         
            -
                    edge = Pacer::Wrappers::EdgeWrapper.new raw_edge
         
     | 
| 
      
 149 
     | 
    
         
            +
                    edge = Pacer::Wrappers::EdgeWrapper.new graph, raw_edge
         
     | 
| 
       149 
150 
     | 
    
         
             
                  end
         
     | 
| 
       150 
151 
     | 
    
         
             
                  if modules.any?
         
     | 
| 
       151 
152 
     | 
    
         
             
                    edge = edge.add_extensions modules
         
     | 
| 
       152 
153 
     | 
    
         
             
                  end
         
     | 
| 
       153 
     | 
    
         
            -
                  edge.graph = self
         
     | 
| 
       154 
154 
     | 
    
         
             
                  props.each { |k, v| edge[k.to_s] = v } if props
         
     | 
| 
       155 
155 
     | 
    
         
             
                  edge
         
     | 
| 
       156 
156 
     | 
    
         
             
                end
         
     | 
    
        data/lib/pacer/pipe/loop_pipe.rb
    CHANGED
    
    | 
         @@ -52,12 +52,9 @@ module Pacer::Pipes 
     | 
|
| 
       52 
52 
     | 
    
         
             
                      end
         
     | 
| 
       53 
53 
     | 
    
         
             
                      depth = 0
         
     | 
| 
       54 
54 
     | 
    
         
             
                    end
         
     | 
| 
       55 
     | 
    
         
            -
                    wrapped = wrapper.new(element)
         
     | 
| 
       56 
     | 
    
         
            -
                    wrapped.graph = graph if wrapped.respond_to? :graph=
         
     | 
| 
      
 55 
     | 
    
         
            +
                    wrapped = wrapper.new(graph, element)
         
     | 
| 
       57 
56 
     | 
    
         
             
                    path = @next_path.map do |e|
         
     | 
| 
       58 
     | 
    
         
            -
                       
     | 
| 
       59 
     | 
    
         
            -
                      w.graph = graph if w.respond_to? :graph=
         
     | 
| 
       60 
     | 
    
         
            -
                      w
         
     | 
| 
      
 57 
     | 
    
         
            +
                      wrapper.new graph, e
         
     | 
| 
       61 
58 
     | 
    
         
             
                    end
         
     | 
| 
       62 
59 
     | 
    
         
             
                    case control_block.call wrapped, depth, path
         
     | 
| 
       63 
60 
     | 
    
         
             
                    when :loop
         
     | 
| 
         @@ -19,17 +19,11 @@ module Pacer 
     | 
|
| 
       19 
19 
     | 
    
         
             
                    path = starts.next
         
     | 
| 
       20 
20 
     | 
    
         
             
                    path.collect do |item|
         
     | 
| 
       21 
21 
     | 
    
         
             
                      if item.is_a? Pacer::Vertex
         
     | 
| 
       22 
     | 
    
         
            -
                         
     | 
| 
       23 
     | 
    
         
            -
                        wrapped.graph = graph
         
     | 
| 
       24 
     | 
    
         
            -
                        wrapped
         
     | 
| 
      
 22 
     | 
    
         
            +
                        vertex_wrapper.new graph, item
         
     | 
| 
       25 
23 
     | 
    
         
             
                      elsif item.is_a? Pacer::Edge
         
     | 
| 
       26 
     | 
    
         
            -
                         
     | 
| 
       27 
     | 
    
         
            -
                        wrapped.graph = graph
         
     | 
| 
       28 
     | 
    
         
            -
                        wrapped
         
     | 
| 
      
 24 
     | 
    
         
            +
                        edge_wrapper.new graph, item
         
     | 
| 
       29 
25 
     | 
    
         
             
                      elsif other_wrapper
         
     | 
| 
       30 
     | 
    
         
            -
                         
     | 
| 
       31 
     | 
    
         
            -
                        wrapped.graph = graph if wrapped.respond_to? :graph
         
     | 
| 
       32 
     | 
    
         
            -
                        wrapped
         
     | 
| 
      
 26 
     | 
    
         
            +
                        other_wrapper.new graph, item
         
     | 
| 
       33 
27 
     | 
    
         
             
                      else
         
     | 
| 
       34 
28 
     | 
    
         
             
                        item
         
     | 
| 
       35 
29 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -24,13 +24,7 @@ module Pacer 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  def processNextStart
         
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
       28 
     | 
    
         
            -
                    if element_type == :vertex or element_type == :edge or element_type == :mixed
         
     | 
| 
       29 
     | 
    
         
            -
                      e.graph = graph
         
     | 
| 
       30 
     | 
    
         
            -
                    elsif e.respond_to? :graph=
         
     | 
| 
       31 
     | 
    
         
            -
                      e.graph = graph
         
     | 
| 
       32 
     | 
    
         
            -
                    end
         
     | 
| 
       33 
     | 
    
         
            -
                    e
         
     | 
| 
      
 27 
     | 
    
         
            +
                    wrapper.new graph, starts.next
         
     | 
| 
       34 
28 
     | 
    
         
             
                  end
         
     | 
| 
       35 
29 
     | 
    
         
             
                end
         
     | 
| 
       36 
30 
     | 
    
         
             
              end
         
     | 
    
        data/lib/pacer/route.rb
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            [Pacer::Core::Route, Pacer::Wrappers::ElementWrapper 
     | 
| 
      
 1 
     | 
    
         
            +
            [Pacer::Core::Route, Pacer::Wrappers::ElementWrapper].each do |klass|
         
     | 
| 
       2 
2 
     | 
    
         
             
              klass.class_eval %{
         
     | 
| 
       3 
3 
     | 
    
         
             
                def chain_route(args_hash)
         
     | 
| 
       4 
4 
     | 
    
         
             
                  Pacer::RouteBuilder.current.chain self, args_hash
         
     | 
| 
         @@ -182,19 +182,30 @@ module Pacer 
     | 
|
| 
       182 
182 
     | 
    
         | 
| 
       183 
183 
     | 
    
         
             
                attr_reader :config
         
     | 
| 
       184 
184 
     | 
    
         | 
| 
      
 185 
     | 
    
         
            +
                # The wrapper object to use to wrap elements in.
         
     | 
| 
      
 186 
     | 
    
         
            +
                #
         
     | 
| 
      
 187 
     | 
    
         
            +
                # If it responds to #add_extensions and the rout also has additional
         
     | 
| 
      
 188 
     | 
    
         
            +
                # extensions, it will be used to generate a new wrapper dynamically.
         
     | 
| 
       185 
189 
     | 
    
         
             
                def wrapper
         
     | 
| 
       186 
190 
     | 
    
         
             
                  config[:wrapper]
         
     | 
| 
       187 
191 
     | 
    
         
             
                end
         
     | 
| 
       188 
192 
     | 
    
         | 
| 
      
 193 
     | 
    
         
            +
                # Get the set of extensions currently on this route.
         
     | 
| 
      
 194 
     | 
    
         
            +
                #
         
     | 
| 
      
 195 
     | 
    
         
            +
                # The order of extensions for custom defined wrappers are
         
     | 
| 
      
 196 
     | 
    
         
            +
                # guaranteed. If a wrapper is iterated with additional extensions,
         
     | 
| 
      
 197 
     | 
    
         
            +
                # a new wrapper will be created dynamically with the original
         
     | 
| 
      
 198 
     | 
    
         
            +
                # extensions in order followed by any additional extensions in
         
     | 
| 
      
 199 
     | 
    
         
            +
                # undefined order.
         
     | 
| 
      
 200 
     | 
    
         
            +
                #
         
     | 
| 
      
 201 
     | 
    
         
            +
                # Returns an Array
         
     | 
| 
      
 202 
     | 
    
         
            +
                #
         
     | 
| 
      
 203 
     | 
    
         
            +
                # @return [Array[extension]]
         
     | 
| 
       189 
204 
     | 
    
         
             
                def extensions
         
     | 
| 
       190 
     | 
    
         
            -
                  config[:extensions]
         
     | 
| 
       191 
     | 
    
         
            -
                end
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
                def all_extensions
         
     | 
| 
       194 
205 
     | 
    
         
             
                  if wrapper
         
     | 
| 
       195 
     | 
    
         
            -
                    (wrapper.extensions + extensions).uniq
         
     | 
| 
      
 206 
     | 
    
         
            +
                    (wrapper.extensions + config[:extensions]).uniq
         
     | 
| 
       196 
207 
     | 
    
         
             
                  else
         
     | 
| 
       197 
     | 
    
         
            -
                    extensions
         
     | 
| 
      
 208 
     | 
    
         
            +
                    config[:extensions]
         
     | 
| 
       198 
209 
     | 
    
         
             
                  end
         
     | 
| 
       199 
210 
     | 
    
         
             
                end
         
     | 
| 
       200 
211 
     | 
    
         | 
| 
         @@ -1,12 +1,22 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Pacer
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Routes
         
     | 
| 
       3 
3 
     | 
    
         
             
                module RouteOperations
         
     | 
| 
       4 
     | 
    
         
            -
                   
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
                  # This method adds the IsUniquePipe to the pipeline and whenever the
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # pipeline is built, yields the pipe to the block given here.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  #
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # See #unique? below for example usage.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  def is_unique(&block)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    chain_route side_effect: :is_unique, on_build_pipe: block
         
     | 
| 
       6 
10 
     | 
    
         
             
                  end
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
                  # This method builds a pipe and ataches the IsUniquePipe to the end then
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # iterates the pipeline until it finds a unique element or hits the end.
         
     | 
| 
       8 
14 
     | 
    
         
             
                  def unique?
         
     | 
| 
       9 
     | 
    
         
            -
                     
     | 
| 
      
 15 
     | 
    
         
            +
                    check = nil
         
     | 
| 
      
 16 
     | 
    
         
            +
                    is_unique { |pipe| check = pipe }.each do
         
     | 
| 
      
 17 
     | 
    
         
            +
                      return false unless check.unique?
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
                    true
         
     | 
| 
       10 
20 
     | 
    
         
             
                  end
         
     | 
| 
       11 
21 
     | 
    
         
             
                end
         
     | 
| 
       12 
22 
     | 
    
         
             
              end
         
     | 
| 
         @@ -14,19 +24,15 @@ module Pacer 
     | 
|
| 
       14 
24 
     | 
    
         | 
| 
       15 
25 
     | 
    
         
             
              module SideEffect
         
     | 
| 
       16 
26 
     | 
    
         
             
                module IsUnique
         
     | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
       18 
     | 
    
         
            -
                    checked = Pacer::Pipes::IsUniquePipe.new
         
     | 
| 
       19 
     | 
    
         
            -
                    checked.setStarts pipe
         
     | 
| 
       20 
     | 
    
         
            -
                    checked.next while checked.unique?
         
     | 
| 
       21 
     | 
    
         
            -
                    false
         
     | 
| 
       22 
     | 
    
         
            -
                  rescue Pacer::EmptyPipe, java.util.NoSuchElementException
         
     | 
| 
       23 
     | 
    
         
            -
                    true
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attr_accessor :on_build_pipe
         
     | 
| 
       25 
28 
     | 
    
         | 
| 
       26 
29 
     | 
    
         
             
                  protected
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
31 
     | 
    
         
             
                  def attach_pipe(end_pipe)
         
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
      
 32 
     | 
    
         
            +
                    checked = Pacer::Pipes::IsUniquePipe.new
         
     | 
| 
      
 33 
     | 
    
         
            +
                    checked.setStarts end_pipe
         
     | 
| 
      
 34 
     | 
    
         
            +
                    on_build_pipe.call checked if on_build_pipe
         
     | 
| 
      
 35 
     | 
    
         
            +
                    checked
         
     | 
| 
       30 
36 
     | 
    
         
             
                  end
         
     | 
| 
       31 
37 
     | 
    
         
             
                end
         
     | 
| 
       32 
38 
     | 
    
         
             
              end
         
     | 
    
        data/lib/pacer/transform/join.rb
    CHANGED
    
    | 
         @@ -66,8 +66,7 @@ module Pacer 
     | 
|
| 
       66 
66 
     | 
    
         
             
                    def processNextStart
         
     | 
| 
       67 
67 
     | 
    
         
             
                      while true
         
     | 
| 
       68 
68 
     | 
    
         
             
                        if current_keys.empty?
         
     | 
| 
       69 
     | 
    
         
            -
                          element = wrapper.new starts.next
         
     | 
| 
       70 
     | 
    
         
            -
                          element.graph = from_graph if element.respond_to? :graph
         
     | 
| 
      
 69 
     | 
    
         
            +
                          element = wrapper.new from_graph, starts.next
         
     | 
| 
       71 
70 
     | 
    
         
             
                          self.current_keys = get_keys(element)
         
     | 
| 
       72 
71 
     | 
    
         
             
                          self.current_values = get_values(element) unless current_keys.empty?
         
     | 
| 
       73 
72 
     | 
    
         
             
                        else
         
     | 
| 
         @@ -110,10 +109,10 @@ module Pacer 
     | 
|
| 
       110 
109 
     | 
    
         
             
                      array = pipe.next
         
     | 
| 
       111 
110 
     | 
    
         
             
                      array.map do |element|
         
     | 
| 
       112 
111 
     | 
    
         
             
                        if element.is_a? Pacer::Element
         
     | 
| 
       113 
     | 
    
         
            -
                           
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
                          wrapper.new from_graph, element
         
     | 
| 
      
 113 
     | 
    
         
            +
                        else
         
     | 
| 
      
 114 
     | 
    
         
            +
                          element
         
     | 
| 
       115 
115 
     | 
    
         
             
                        end
         
     | 
| 
       116 
     | 
    
         
            -
                        element
         
     | 
| 
       117 
116 
     | 
    
         
             
                      end
         
     | 
| 
       118 
117 
     | 
    
         
             
                    end
         
     | 
| 
       119 
118 
     | 
    
         | 
    
        data/lib/pacer/utils/trie.rb
    CHANGED
    
    | 
         @@ -23,9 +23,7 @@ module Pacer::Utils 
     | 
|
| 
       23 
23 
     | 
    
         
             
                  def find(array)
         
     | 
| 
       24 
24 
     | 
    
         
             
                    found = find_partial(array)
         
     | 
| 
       25 
25 
     | 
    
         
             
                    if found.length == array.length
         
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
       27 
     | 
    
         
            -
                      result.graph = graph
         
     | 
| 
       28 
     | 
    
         
            -
                      result
         
     | 
| 
      
 26 
     | 
    
         
            +
                      found.last.in_vertex.add_extensions [Trie]
         
     | 
| 
       29 
27 
     | 
    
         
             
                    end
         
     | 
| 
       30 
28 
     | 
    
         
             
                  end
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
         @@ -64,7 +62,6 @@ module Pacer::Utils 
     | 
|
| 
       64 
62 
     | 
    
         
             
                      end
         
     | 
| 
       65 
63 
     | 
    
         
             
                    end
         
     | 
| 
       66 
64 
     | 
    
         
             
                    result[:end] = true
         
     | 
| 
       67 
     | 
    
         
            -
                    result.graph = graph
         
     | 
| 
       68 
65 
     | 
    
         
             
                    result.add_extensions [Trie]
         
     | 
| 
       69 
66 
     | 
    
         
             
                  end
         
     | 
| 
       70 
67 
     | 
    
         | 
    
        data/lib/pacer/utils/tsort.rb
    CHANGED
    
    | 
         @@ -59,9 +59,9 @@ module Pacer 
     | 
|
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
                    def tsort_dependencies(tsort_anon_mod = nil)
         
     | 
| 
       61 
61 
     | 
    
         
             
                      if self.class.const_defined? :DependenciesBlock
         
     | 
| 
       62 
     | 
    
         
            -
                        self.class::DependenciesBlock.call(self).add_extensions([tsort_anon_mod])
         
     | 
| 
      
 62 
     | 
    
         
            +
                        self.class::DependenciesBlock.call(self).add_extensions([TSort, tsort_anon_mod])
         
     | 
| 
       63 
63 
     | 
    
         
             
                      else
         
     | 
| 
       64 
     | 
    
         
            -
                        self.in
         
     | 
| 
      
 64 
     | 
    
         
            +
                        self.in(extensions)
         
     | 
| 
       65 
65 
     | 
    
         
             
                      end
         
     | 
| 
       66 
66 
     | 
    
         
             
                    end
         
     | 
| 
       67 
67 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/pacer/version.rb
    CHANGED
    
    
| 
         @@ -42,14 +42,12 @@ module Pacer::Wrappers 
     | 
|
| 
       42 
42 
     | 
    
         
             
                def in_vertex(extensions = nil)
         
     | 
| 
       43 
43 
     | 
    
         
             
                  v = element.getVertex Pacer::Pipes::IN
         
     | 
| 
       44 
44 
     | 
    
         
             
                  if extensions.is_a? Enumerable
         
     | 
| 
       45 
     | 
    
         
            -
                     
     | 
| 
      
 45 
     | 
    
         
            +
                    VertexWrapper.wrapper_for(extensions).new graph, v
         
     | 
| 
       46 
46 
     | 
    
         
             
                  elsif extensions
         
     | 
| 
       47 
     | 
    
         
            -
                     
     | 
| 
      
 47 
     | 
    
         
            +
                    VertexWrapper.wrapper_for([extensions]).new graph, v
         
     | 
| 
       48 
48 
     | 
    
         
             
                  else
         
     | 
| 
       49 
     | 
    
         
            -
                     
     | 
| 
      
 49 
     | 
    
         
            +
                    VertexWrapper.new graph, v
         
     | 
| 
       50 
50 
     | 
    
         
             
                  end
         
     | 
| 
       51 
     | 
    
         
            -
                  v.graph = graph
         
     | 
| 
       52 
     | 
    
         
            -
                  v
         
     | 
| 
       53 
51 
     | 
    
         
             
                end
         
     | 
| 
       54 
52 
     | 
    
         | 
| 
       55 
53 
     | 
    
         
             
                # The outgoing vertex for this edge.
         
     | 
| 
         @@ -57,14 +55,12 @@ module Pacer::Wrappers 
     | 
|
| 
       57 
55 
     | 
    
         
             
                def out_vertex(extensions = nil)
         
     | 
| 
       58 
56 
     | 
    
         
             
                  v = element.getVertex Pacer::Pipes::OUT
         
     | 
| 
       59 
57 
     | 
    
         
             
                  if extensions.is_a? Enumerable
         
     | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
      
 58 
     | 
    
         
            +
                    VertexWrapper.wrapper_for(extensions).new graph, v
         
     | 
| 
       61 
59 
     | 
    
         
             
                  elsif extensions
         
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
      
 60 
     | 
    
         
            +
                    VertexWrapper.wrapper_for([extensions]).new graph, v
         
     | 
| 
       63 
61 
     | 
    
         
             
                  else
         
     | 
| 
       64 
     | 
    
         
            -
                     
     | 
| 
      
 62 
     | 
    
         
            +
                    VertexWrapper.new graph, v
         
     | 
| 
       65 
63 
     | 
    
         
             
                  end
         
     | 
| 
       66 
     | 
    
         
            -
                  v.graph = graph
         
     | 
| 
       67 
     | 
    
         
            -
                  v
         
     | 
| 
       68 
64 
     | 
    
         
             
                end
         
     | 
| 
       69 
65 
     | 
    
         | 
| 
       70 
66 
     | 
    
         
             
                # This method must be defined here rather than in the superclass in order
         
     | 
| 
         @@ -83,9 +79,7 @@ module Pacer::Wrappers 
     | 
|
| 
       83 
79 
     | 
    
         
             
                #   the extensions
         
     | 
| 
       84 
80 
     | 
    
         
             
                def add_extensions(exts)
         
     | 
| 
       85 
81 
     | 
    
         
             
                  if exts.any?
         
     | 
| 
       86 
     | 
    
         
            -
                     
     | 
| 
       87 
     | 
    
         
            -
                    e.graph = graph
         
     | 
| 
       88 
     | 
    
         
            -
                    e
         
     | 
| 
      
 82 
     | 
    
         
            +
                    self.class.wrap(self, extensions + exts.to_a)
         
     | 
| 
       89 
83 
     | 
    
         
             
                  else
         
     | 
| 
       90 
84 
     | 
    
         
             
                    self
         
     | 
| 
       91 
85 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -94,7 +88,7 @@ module Pacer::Wrappers 
     | 
|
| 
       94 
88 
     | 
    
         
             
                # Returns the element with a new simple wrapper.
         
     | 
| 
       95 
89 
     | 
    
         
             
                # @return [EdgeWrapper]
         
     | 
| 
       96 
90 
     | 
    
         
             
                def no_extensions
         
     | 
| 
       97 
     | 
    
         
            -
                  EdgeWrapper.new element
         
     | 
| 
      
 91 
     | 
    
         
            +
                  EdgeWrapper.new graph, element
         
     | 
| 
       98 
92 
     | 
    
         
             
                end
         
     | 
| 
       99 
93 
     | 
    
         | 
| 
       100 
94 
     | 
    
         
             
                # Returns a human-readable representation of the edge using the
         
     | 
| 
         @@ -138,8 +132,7 @@ module Pacer::Wrappers 
     | 
|
| 
       138 
132 
     | 
    
         
             
                  unless e
         
     | 
| 
       139 
133 
     | 
    
         
             
                    e = e_idx.first('id', element_id)
         
     | 
| 
       140 
134 
     | 
    
         
             
                    if e
         
     | 
| 
       141 
     | 
    
         
            -
                      e = EdgeWrapper.new(e)
         
     | 
| 
       142 
     | 
    
         
            -
                      e.graph = target_graph
         
     | 
| 
      
 135 
     | 
    
         
            +
                      e = EdgeWrapper.new(graph, e)
         
     | 
| 
       143 
136 
     | 
    
         
             
                    end
         
     | 
| 
       144 
137 
     | 
    
         
             
                  end
         
     | 
| 
       145 
138 
     | 
    
         
             
                  unless e
         
     | 
| 
         @@ -193,12 +186,19 @@ module Pacer::Wrappers 
     | 
|
| 
       193 
186 
     | 
    
         
             
                # If the other instance is an unwrapped edge, this will always return
         
     | 
| 
       194 
187 
     | 
    
         
             
                # false because otherwise the == method would not be symetrical.
         
     | 
| 
       195 
188 
     | 
    
         
             
                #
         
     | 
| 
       196 
     | 
    
         
            -
                # @see #eql?
         
     | 
| 
       197 
189 
     | 
    
         
             
                # @param other
         
     | 
| 
       198 
190 
     | 
    
         
             
                def ==(other)
         
     | 
| 
       199 
191 
     | 
    
         
             
                  other.is_a? EdgeWrapper and
         
     | 
| 
       200 
192 
     | 
    
         
             
                    element_id == other.element_id and
         
     | 
| 
       201 
193 
     | 
    
         
             
                    graph == other.graph
         
     | 
| 
       202 
194 
     | 
    
         
             
                end
         
     | 
| 
      
 195 
     | 
    
         
            +
                alias eql? ==
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
      
 197 
     | 
    
         
            +
                # Neo4j and Orient both have hash collisions between vertices and
         
     | 
| 
      
 198 
     | 
    
         
            +
                # edges which causes problems when making a set out of a path for
         
     | 
| 
      
 199 
     | 
    
         
            +
                # instance. Simple fix: negate edge hashes.
         
     | 
| 
      
 200 
     | 
    
         
            +
                def hash
         
     | 
| 
      
 201 
     | 
    
         
            +
                  -element.hash
         
     | 
| 
      
 202 
     | 
    
         
            +
                end
         
     | 
| 
       203 
203 
     | 
    
         
             
              end
         
     | 
| 
       204 
204 
     | 
    
         
             
            end
         
     | 
| 
         @@ -8,11 +8,7 @@ module Pacer::Wrappers 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                class << self
         
     | 
| 
       10 
10 
     | 
    
         
             
                  def wrap(element, exts)
         
     | 
| 
       11 
     | 
    
         
            -
                     
     | 
| 
       12 
     | 
    
         
            -
                      wrapper_for(exts).new(element.element)
         
     | 
| 
       13 
     | 
    
         
            -
                    else
         
     | 
| 
       14 
     | 
    
         
            -
                      wrapper_for(exts).new(element)
         
     | 
| 
       15 
     | 
    
         
            -
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
                    wrapper_for(exts).new(element.graph, element.element)
         
     | 
| 
       16 
12 
     | 
    
         
             
                  end
         
     | 
| 
       17 
13 
     | 
    
         | 
| 
       18 
14 
     | 
    
         
             
                  def extensions
         
     | 
| 
         @@ -83,10 +79,11 @@ module Pacer::Wrappers 
     | 
|
| 
       83 
79 
     | 
    
         
             
                # the element.
         
     | 
| 
       84 
80 
     | 
    
         
             
                #
         
     | 
| 
       85 
81 
     | 
    
         
             
                # @return [PacerGraph]
         
     | 
| 
       86 
     | 
    
         
            -
                 
     | 
| 
      
 82 
     | 
    
         
            +
                attr_reader :graph
         
     | 
| 
       87 
83 
     | 
    
         
             
                attr_reader :element
         
     | 
| 
       88 
84 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
                def initialize(element)
         
     | 
| 
      
 85 
     | 
    
         
            +
                def initialize(graph, element)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  @graph = graph
         
     | 
| 
       90 
87 
     | 
    
         
             
                  if element.is_a? ElementWrapper
         
     | 
| 
       91 
88 
     | 
    
         
             
                    @element = element.element
         
     | 
| 
       92 
89 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -95,10 +92,6 @@ module Pacer::Wrappers 
     | 
|
| 
       95 
92 
     | 
    
         
             
                  after_initialize
         
     | 
| 
       96 
93 
     | 
    
         
             
                end
         
     | 
| 
       97 
94 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
                def hash
         
     | 
| 
       99 
     | 
    
         
            -
                  element.hash
         
     | 
| 
       100 
     | 
    
         
            -
                end
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
95 
     | 
    
         
             
                # Convenience method to retrieve a property by name.
         
     | 
| 
       103 
96 
     | 
    
         
             
                #
         
     | 
| 
       104 
97 
     | 
    
         
             
                # @param [#to_s] key the property name
         
     | 
| 
         @@ -177,24 +170,6 @@ module Pacer::Wrappers 
     | 
|
| 
       177 
170 
     | 
    
         
             
                  display_name.to_s <=> other.display_name.to_s
         
     | 
| 
       178 
171 
     | 
    
         
             
                end
         
     | 
| 
       179 
172 
     | 
    
         | 
| 
       180 
     | 
    
         
            -
                # Test object equality of the element instance.
         
     | 
| 
       181 
     | 
    
         
            -
                #
         
     | 
| 
       182 
     | 
    
         
            -
                # Wrappers/extensions (if any) are ignored, the underlying element
         
     | 
| 
       183 
     | 
    
         
            -
                # only is compared
         
     | 
| 
       184 
     | 
    
         
            -
                #
         
     | 
| 
       185 
     | 
    
         
            -
                # If the graphdb instantiates multiple copies of the same element
         
     | 
| 
       186 
     | 
    
         
            -
                # this method will return false when comparing them.
         
     | 
| 
       187 
     | 
    
         
            -
                #
         
     | 
| 
       188 
     | 
    
         
            -
                # @see #==
         
     | 
| 
       189 
     | 
    
         
            -
                # @param other
         
     | 
| 
       190 
     | 
    
         
            -
                def eql?(other)
         
     | 
| 
       191 
     | 
    
         
            -
                  if other.respond_to? :element_id
         
     | 
| 
       192 
     | 
    
         
            -
                    other.graph == graph and other.element_id == element_id
         
     | 
| 
       193 
     | 
    
         
            -
                  else
         
     | 
| 
       194 
     | 
    
         
            -
                    element.equals other
         
     | 
| 
       195 
     | 
    
         
            -
                  end
         
     | 
| 
       196 
     | 
    
         
            -
                end
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
173 
     | 
    
         
             
                protected
         
     | 
| 
       199 
174 
     | 
    
         | 
| 
       200 
175 
     | 
    
         
             
                def after_initialize
         
     |