pacer 2.0.10.pre-java → 2.0.12-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.
- checksums.yaml +5 -13
- data/.autotest +0 -4
- data/.gitignore +1 -0
- data/.travis.yml +2 -2
- data/Rakefile +25 -0
- data/blog/detach_benchmarks.txt +56 -0
- data/ext/.classpath +26 -0
- data/ext/.gitignore +44 -0
- data/ext/.project +23 -0
- data/ext/pom.xml +76 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/BlackboxPipeline.java +56 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/CollectionFilterPipe.java +18 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/EdgesPipe.java +26 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/ExpandablePipe.java +93 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipe.java +50 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/IsEmptyPipe.java +35 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/IsUniquePipe.java +58 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipe.java +32 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/LabelPrefixPipe.java +23 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/NeverPipe.java +10 -0
- data/ext/src/main/java/com/xnlogic/pacer/pipes/VerticesPipe.java +26 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/BlackboxPipelineTest.java +33 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/CollectionFilterPipeTest.java +50 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/EdgesPipeTest.java +103 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/ExpandablePipeTest.java +66 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipeTest.java +85 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/IsUniquePipeTest.java +62 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipeTest.java +97 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/LabelPrefixPipeTest.java +69 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/NeverPipeTest.java +17 -0
- data/ext/src/test/java/com/xnlogic/pacer/pipes/VerticesPipeTest.java +97 -0
- data/lib/pacer/core/graph/element_route.rb +2 -2
- data/lib/pacer/core/graph/path_route.rb +2 -2
- data/lib/pacer/core/route.rb +77 -1
- data/lib/pacer/filter/property_filter/edge_filters.rb +5 -1
- data/lib/pacer/filter/property_filter/filters.rb +23 -7
- data/lib/pacer/pipe/path_wrapping_pipe.rb +14 -3
- data/lib/pacer/pipe/wrapping_pipe.rb +15 -4
- data/lib/pacer/pipes.rb +15 -13
- data/lib/pacer/route.rb +1 -0
- data/lib/pacer/side_effect/as_var.rb +1 -1
- data/lib/pacer/side_effect/is_unique.rb +2 -2
- data/lib/pacer/transform/branch.rb +1 -1
- data/lib/pacer/transform/lookup_ids.rb +1 -1
- data/lib/pacer/transform/path_tree.rb +1 -1
- data/lib/pacer/transform/reduce.rb +1 -1
- data/lib/pacer/transform/sort_section.rb +17 -9
- data/lib/pacer/transform/stream_sort.rb +1 -0
- data/lib/pacer/transform/stream_uniq.rb +1 -0
- data/lib/pacer/transform/wrapped_path.rb +1 -1
- data/lib/pacer/version.rb +1 -1
- data/lib/pacer/visitors/section.rb +10 -3
- data/lib/pacer/visitors/visits_section.rb +4 -4
- data/lib/pacer-ext.jar +0 -0
- data/lib/pacer.rb +1 -0
- data/pacer.gemspec +2 -1
- data/spec/pacer/filter/property_filter_spec.rb +17 -0
- data/spec/pacer/transform/path_spec.rb +10 -0
- data/spec/pacer/transform/sort_section_spec.rb +8 -1
- metadata +59 -30
- data/lib/pacer/pipe/blackbox_pipeline.rb +0 -55
- data/lib/pacer/pipe/collection_filter_pipe.rb +0 -12
- data/lib/pacer/pipe/edges_pipe.rb +0 -22
- data/lib/pacer/pipe/expandable_pipe.rb +0 -51
- data/lib/pacer/pipe/id_collection_filter_pipe.rb +0 -37
- data/lib/pacer/pipe/is_empty_pipe.rb +0 -23
- data/lib/pacer/pipe/is_unique_pipe.rb +0 -51
- data/lib/pacer/pipe/label_collection_filter_pipe.rb +0 -15
- data/lib/pacer/pipe/label_prefix_pipe.rb +0 -15
- data/lib/pacer/pipe/never_pipe.rb +0 -9
- data/lib/pacer/pipe/vertices_pipe.rb +0 -22
| @@ -79,11 +79,20 @@ Run.tg(:read_only) do | |
| 79 79 | 
             
                  subject { graph.v(Tackle::SimpleMixin, :name => 'pangloss') }
         | 
| 80 80 | 
             
                  its(:count) { should == 1 }
         | 
| 81 81 | 
             
                  its(:extensions) { should == [Tackle::SimpleMixin] }
         | 
| 82 | 
            +
                  it 'should produce an equivalent predecate' do
         | 
| 83 | 
            +
                    p = subject.filters.to_predicate
         | 
| 84 | 
            +
                    graph.v.to_a.select(&p).should == subject.to_a
         | 
| 85 | 
            +
                  end
         | 
| 82 86 | 
             
                end
         | 
| 83 87 |  | 
| 84 88 | 
             
                context 'reversed params' do
         | 
| 85 89 | 
             
                  subject { graph.v.v(TP::Pangloss, Tackle::SimpleMixin) }
         | 
| 86 90 | 
             
                  its(:count) { should == 1 }
         | 
| 91 | 
            +
                  it 'should produce an equivalent predecate' do
         | 
| 92 | 
            +
                    pending 'does not work for self.route style.'
         | 
| 93 | 
            +
                    #p = subject.filters.to_predicate
         | 
| 94 | 
            +
                    #graph.v.to_a.select(&p).should == subject.to_a
         | 
| 95 | 
            +
                  end
         | 
| 87 96 | 
             
                end
         | 
| 88 97 |  | 
| 89 98 | 
             
                context 'reversed params' do
         | 
| @@ -109,6 +118,10 @@ Run.tg(:read_only) do | |
| 109 118 | 
             
                    it { should_not be_empty }
         | 
| 110 119 | 
             
                    its('first.class') { should_not == wrapper_class }
         | 
| 111 120 | 
             
                    its('first.class.extensions') { should == exts + [Pacer::Utils::TSort] }
         | 
| 121 | 
            +
                    it 'should produce an equivalent predecate' do
         | 
| 122 | 
            +
                      p = subject.filters.to_predicate
         | 
| 123 | 
            +
                      graph.v.to_a.select(&p).should == subject.to_a
         | 
| 124 | 
            +
                    end
         | 
| 112 125 | 
             
                  end
         | 
| 113 126 |  | 
| 114 127 | 
             
                  describe 'v(wrapper_class, :name => "pacer")' do
         | 
| @@ -119,6 +132,10 @@ Run.tg(:read_only) do | |
| 119 132 | 
             
                    its(:first) { should be_a wrapper_class }
         | 
| 120 133 | 
             
                    its(:filters) { should_not be_nil }
         | 
| 121 134 | 
             
                    its('filters.wrapper') { should == wrapper_class }
         | 
| 135 | 
            +
                    it 'should produce an equivalent predecate' do
         | 
| 136 | 
            +
                      p = subject.filters.to_predicate
         | 
| 137 | 
            +
                      graph.v.to_a.select(&p).should == subject.to_a
         | 
| 138 | 
            +
                    end
         | 
| 122 139 | 
             
                  end
         | 
| 123 140 | 
             
                end
         | 
| 124 141 | 
             
              end
         | 
| @@ -15,6 +15,16 @@ describe Pacer::Transform::Path do | |
| 15 15 | 
             
                        [@g.vertex(5), @g.edge(12), @g.vertex(3)]]
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
| 18 | 
            +
                it 'should be the same as above with a detached route' do
         | 
| 19 | 
            +
                  p = @g.v.detach { |v| v.filter(:type => 'person').out_e.in_v(:type => 'project').paths }
         | 
| 20 | 
            +
                  p = p.build(@g, true)
         | 
| 21 | 
            +
                  Set[*@g.v.to_a.flat_map { |x| p.read x }.map(&:to_a)].should ==
         | 
| 22 | 
            +
                    Set[[@g.vertex(0), @g.edge(0), @g.vertex(1)],
         | 
| 23 | 
            +
                        [@g.vertex(5), @g.edge(1), @g.vertex(4)],
         | 
| 24 | 
            +
                        [@g.vertex(5), @g.edge(13), @g.vertex(2)],
         | 
| 25 | 
            +
                        [@g.vertex(5), @g.edge(12), @g.vertex(3)]]
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 18 28 | 
             
                it 'should include all elements traversed' do
         | 
| 19 29 | 
             
                  @g.v.out_e.in_v.paths.each do |path|
         | 
| 20 30 | 
             
                    path[0].should be_a(Pacer::Wrappers::VertexWrapper)
         | 
| @@ -10,6 +10,13 @@ Run.tg :read_only do | |
| 10 10 | 
             
                  graph.v.section(:x).out.out.sort_section(:x) { |a, b| a[:name] <=> b[:name] }
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 | 
            +
                it 'should be sorted' do
         | 
| 14 | 
            +
                  sorted = graph.v.flat_map do |v|
         | 
| 15 | 
            +
                    v.out.out[:name].to_a.sort
         | 
| 16 | 
            +
                  end.to_a
         | 
| 17 | 
            +
                  by_custom[:name].to_a.should == sorted
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 13 20 | 
             
                it 'should have the same elements' do
         | 
| 14 21 | 
             
                  by_custom.group_count.should == unsorted.group_count
         | 
| 15 22 | 
             
                end
         | 
| @@ -22,7 +29,7 @@ Run.tg :read_only do | |
| 22 29 |  | 
| 23 30 | 
             
                it 'should put groups into the correct order' do
         | 
| 24 31 | 
             
                  # depends on the order of graph.v(type: 'project') ...
         | 
| 25 | 
            -
                  route = graph.v(type: 'project').section(:proj).out[:name]. | 
| 32 | 
            +
                  route = graph.v(type: 'project').section(:proj).out[:name].sort_section(:proj) { |a, b| a <=> b }
         | 
| 26 33 | 
             
                  route.to_a.should == %w[
         | 
| 27 34 | 
             
                    blueprints
         | 
| 28 35 | 
             
                    blueprints
         | 
    
        metadata
    CHANGED
    
    | @@ -1,45 +1,58 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pacer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.0. | 
| 4 | 
            +
              version: 2.0.12
         | 
| 5 5 | 
             
            platform: java
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Darrick Wiebe
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2015-01-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: lock_jar
         | 
| 15 | 
            -
               | 
| 15 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ~>
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: 0.10.2
         | 
| 20 | 
            -
               | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 20 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 23 21 | 
             
                requirements:
         | 
| 24 22 | 
             
                - - ~>
         | 
| 25 23 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 24 | 
             
                    version: 0.10.2
         | 
| 25 | 
            +
              prerelease: false
         | 
| 26 | 
            +
              type: :runtime
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: xn_gem_release_tasks
         | 
| 29 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 29 34 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 35 | 
             
                requirements:
         | 
| 31 | 
            -
                - -  | 
| 36 | 
            +
                - - '>='
         | 
| 32 37 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 38 | 
             
                    version: '0'
         | 
| 34 | 
            -
              type: :development
         | 
| 35 39 | 
             
              prerelease: false
         | 
| 40 | 
            +
              type: :development
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rake-compiler
         | 
| 36 43 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 44 | 
             
                requirements:
         | 
| 38 | 
            -
                - -  | 
| 45 | 
            +
                - - ~>
         | 
| 39 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 47 | 
            +
                    version: 0.9.2
         | 
| 48 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            +
                requirements:
         | 
| 50 | 
            +
                - - ~>
         | 
| 51 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            +
                    version: 0.9.2
         | 
| 53 | 
            +
              prerelease: false
         | 
| 54 | 
            +
              type: :development
         | 
| 55 | 
            +
            description: Pacer defines composeable routes through a graph and then traverses them very quickly.
         | 
| 43 56 | 
             
            email: dw@xnlogic.com
         | 
| 44 57 | 
             
            executables: []
         | 
| 45 58 | 
             
            extensions: []
         | 
| @@ -66,7 +79,34 @@ files: | |
| 66 79 | 
             
            - bin/yard
         | 
| 67 80 | 
             
            - bin/yardoc
         | 
| 68 81 | 
             
            - blog/2012-09-18-pacer-1.0.md
         | 
| 82 | 
            +
            - blog/detach_benchmarks.txt
         | 
| 83 | 
            +
            - ext/.classpath
         | 
| 84 | 
            +
            - ext/.gitignore
         | 
| 85 | 
            +
            - ext/.project
         | 
| 86 | 
            +
            - ext/pom.xml
         | 
| 87 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/BlackboxPipeline.java
         | 
| 88 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/CollectionFilterPipe.java
         | 
| 89 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/EdgesPipe.java
         | 
| 90 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/ExpandablePipe.java
         | 
| 91 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipe.java
         | 
| 92 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/IsEmptyPipe.java
         | 
| 93 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/IsUniquePipe.java
         | 
| 94 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipe.java
         | 
| 95 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/LabelPrefixPipe.java
         | 
| 96 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/NeverPipe.java
         | 
| 97 | 
            +
            - ext/src/main/java/com/xnlogic/pacer/pipes/VerticesPipe.java
         | 
| 98 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/BlackboxPipelineTest.java
         | 
| 99 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/CollectionFilterPipeTest.java
         | 
| 100 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/EdgesPipeTest.java
         | 
| 101 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/ExpandablePipeTest.java
         | 
| 102 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipeTest.java
         | 
| 103 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/IsUniquePipeTest.java
         | 
| 104 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipeTest.java
         | 
| 105 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/LabelPrefixPipeTest.java
         | 
| 106 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/NeverPipeTest.java
         | 
| 107 | 
            +
            - ext/src/test/java/com/xnlogic/pacer/pipes/VerticesPipeTest.java
         | 
| 69 108 | 
             
            - ideas.rb
         | 
| 109 | 
            +
            - lib/pacer-ext.jar
         | 
| 70 110 | 
             
            - lib/pacer.rb
         | 
| 71 111 | 
             
            - lib/pacer/blueprints/group_vertex.rb
         | 
| 72 112 | 
             
            - lib/pacer/blueprints/payload_elements.rb
         | 
| @@ -111,22 +151,12 @@ files: | |
| 111 151 | 
             
            - lib/pacer/graph/simple_encoder.rb
         | 
| 112 152 | 
             
            - lib/pacer/graph/yaml_encoder.rb
         | 
| 113 153 | 
             
            - lib/pacer/loader.rb
         | 
| 114 | 
            -
            - lib/pacer/pipe/blackbox_pipeline.rb
         | 
| 115 154 | 
             
            - lib/pacer/pipe/block_filter_pipe.rb
         | 
| 116 | 
            -
            - lib/pacer/pipe/collection_filter_pipe.rb
         | 
| 117 155 | 
             
            - lib/pacer/pipe/cross_product_transform_pipe.rb
         | 
| 118 | 
            -
            - lib/pacer/pipe/edges_pipe.rb
         | 
| 119 156 | 
             
            - lib/pacer/pipe/enumerable_pipe.rb
         | 
| 120 | 
            -
            - lib/pacer/pipe/expandable_pipe.rb
         | 
| 121 | 
            -
            - lib/pacer/pipe/id_collection_filter_pipe.rb
         | 
| 122 | 
            -
            - lib/pacer/pipe/is_empty_pipe.rb
         | 
| 123 | 
            -
            - lib/pacer/pipe/is_unique_pipe.rb
         | 
| 124 | 
            -
            - lib/pacer/pipe/label_collection_filter_pipe.rb
         | 
| 125 | 
            -
            - lib/pacer/pipe/label_prefix_pipe.rb
         | 
| 126 157 | 
             
            - lib/pacer/pipe/loop_pipe.rb
         | 
| 127 158 | 
             
            - lib/pacer/pipe/multi_pipe.rb
         | 
| 128 159 | 
             
            - lib/pacer/pipe/naked_pipe.rb
         | 
| 129 | 
            -
            - lib/pacer/pipe/never_pipe.rb
         | 
| 130 160 | 
             
            - lib/pacer/pipe/path_wrapping_pipe.rb
         | 
| 131 161 | 
             
            - lib/pacer/pipe/process_pipe.rb
         | 
| 132 162 | 
             
            - lib/pacer/pipe/property_comparison_pipe.rb
         | 
| @@ -137,7 +167,6 @@ files: | |
| 137 167 | 
             
            - lib/pacer/pipe/type_filter_pipe.rb
         | 
| 138 168 | 
             
            - lib/pacer/pipe/unary_transform_pipe.rb
         | 
| 139 169 | 
             
            - lib/pacer/pipe/unwrapping_pipe.rb
         | 
| 140 | 
            -
            - lib/pacer/pipe/vertices_pipe.rb
         | 
| 141 170 | 
             
            - lib/pacer/pipe/visitor_pipe.rb
         | 
| 142 171 | 
             
            - lib/pacer/pipe/wrapping_pipe.rb
         | 
| 143 172 | 
             
            - lib/pacer/pipes.rb
         | 
| @@ -256,24 +285,24 @@ homepage: http://github.com/pangloss/pacer | |
| 256 285 | 
             
            licenses:
         | 
| 257 286 | 
             
            - MIT
         | 
| 258 287 | 
             
            metadata: {}
         | 
| 259 | 
            -
            post_install_message: | 
| 288 | 
            +
            post_install_message:
         | 
| 260 289 | 
             
            rdoc_options: []
         | 
| 261 290 | 
             
            require_paths:
         | 
| 262 291 | 
             
            - lib
         | 
| 263 292 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 264 293 | 
             
              requirements:
         | 
| 265 | 
            -
              - -  | 
| 294 | 
            +
              - - '>='
         | 
| 266 295 | 
             
                - !ruby/object:Gem::Version
         | 
| 267 296 | 
             
                  version: '0'
         | 
| 268 297 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 269 298 | 
             
              requirements:
         | 
| 270 | 
            -
              - -  | 
| 299 | 
            +
              - - '>='
         | 
| 271 300 | 
             
                - !ruby/object:Gem::Version
         | 
| 272 | 
            -
                  version:  | 
| 301 | 
            +
                  version: '0'
         | 
| 273 302 | 
             
            requirements: []
         | 
| 274 | 
            -
            rubyforge_project: | 
| 303 | 
            +
            rubyforge_project:
         | 
| 275 304 | 
             
            rubygems_version: 2.4.5
         | 
| 276 | 
            -
            signing_key: | 
| 305 | 
            +
            signing_key:
         | 
| 277 306 | 
             
            specification_version: 4
         | 
| 278 307 | 
             
            summary: A very efficient and easy to use graph traversal engine.
         | 
| 279 308 | 
             
            test_files:
         | 
| @@ -1,55 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              # Same concept as the regular pipeline, but this one
         | 
| 3 | 
            -
              # does not touch the intermediate pipes. They must be
         | 
| 4 | 
            -
              # wired together before being passed in to this object.
         | 
| 5 | 
            -
              # This allows me to build a pipeline in Pacer and then
         | 
| 6 | 
            -
              # pass it on to a pipe like FutureFilterPipe that only
         | 
| 7 | 
            -
              # knows how to act on a single pipe.
         | 
| 8 | 
            -
              class BlackboxPipeline
         | 
| 9 | 
            -
                include com.tinkerpop.pipes.Pipe
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                attr_reader :pathEnabled
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def initialize(start_pipe, end_pipe)
         | 
| 14 | 
            -
                  @start_pipe = start_pipe
         | 
| 15 | 
            -
                  @end_pipe = end_pipe
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def setStarts(pipe)
         | 
| 19 | 
            -
                  if pipe.respond_to? :iterator
         | 
| 20 | 
            -
                    @start_pipe.setStarts pipe.iterator
         | 
| 21 | 
            -
                  else
         | 
| 22 | 
            -
                    @start_pipe.setStarts pipe
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                def next
         | 
| 27 | 
            -
                  @end_pipe.next
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                def hasNext
         | 
| 31 | 
            -
                  @end_pipe.hasNext
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                def reset
         | 
| 35 | 
            -
                  @end_pipe.reset
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                def enablePath(b)
         | 
| 39 | 
            -
                  @pathEnabled = b
         | 
| 40 | 
            -
                  @end_pipe.enablePath b
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                def getCurrentPath
         | 
| 44 | 
            -
                  @end_pipe.getCurrentPath
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                def iterator
         | 
| 48 | 
            -
                  @end_pipe.iterator
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def to_s
         | 
| 52 | 
            -
                  "[#{ @start_pipe }...#{ @end_pipe }]"
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
            end
         | 
| @@ -1,12 +0,0 @@ | |
| 1 | 
            -
            module Pacer
         | 
| 2 | 
            -
              module Pipes
         | 
| 3 | 
            -
                module Renamed
         | 
| 4 | 
            -
                  AbstractCollectionFilterPipe = com.tinkerpop.pipes.filter.CollectionFilterPipe
         | 
| 5 | 
            -
                end
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                # This seemingly-useless class only exists because the class in Pipes
         | 
| 8 | 
            -
                # is marked abstract despite being complete.
         | 
| 9 | 
            -
                class CollectionFilterPipe < Renamed::AbstractCollectionFilterPipe
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class EdgesPipe < AbstractPipe
         | 
| 3 | 
            -
                attr_reader :starts
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def setStarts(starts)
         | 
| 6 | 
            -
                  @starts = starts.first
         | 
| 7 | 
            -
                  self.iter = @starts.getEdges.iterator
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def processNextStart
         | 
| 11 | 
            -
                  iter.next
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def reset
         | 
| 15 | 
            -
                  self.iter = @starts.getEdges.iterator
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                private
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                attr_accessor :iter
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class ExpandablePipe < RubyPipe
         | 
| 3 | 
            -
                def initialize
         | 
| 4 | 
            -
                  super()
         | 
| 5 | 
            -
                  @queue = java.util.LinkedList.new
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def add(element, metadata = nil, path = nil)
         | 
| 9 | 
            -
                  @queue.add [element, metadata, path]
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                def metadata
         | 
| 13 | 
            -
                  @metadata
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                def next
         | 
| 17 | 
            -
                  super
         | 
| 18 | 
            -
                ensure
         | 
| 19 | 
            -
                  @path = @next_path
         | 
| 20 | 
            -
                  @metadata = @next_metadata
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                protected
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                def processNextStart
         | 
| 26 | 
            -
                  if @queue.isEmpty
         | 
| 27 | 
            -
                    @next_metadata = nil
         | 
| 28 | 
            -
                    r = @starts.next
         | 
| 29 | 
            -
                    if pathEnabled and @starts.respond_to? :getCurrentPath
         | 
| 30 | 
            -
                      @next_path = @starts.getCurrentPath
         | 
| 31 | 
            -
                    else
         | 
| 32 | 
            -
                      @next_path = java.util.ArrayList.new
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
                    r
         | 
| 35 | 
            -
                  else
         | 
| 36 | 
            -
                    element, @next_metadata, @next_path = @queue.remove
         | 
| 37 | 
            -
                    element
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                def getPathToHere
         | 
| 42 | 
            -
                  path = java.util.ArrayList.new
         | 
| 43 | 
            -
                  if @path
         | 
| 44 | 
            -
                    @path.each do |e|
         | 
| 45 | 
            -
                      path.add e
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
                  path
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
              end
         | 
| 51 | 
            -
            end
         | 
| @@ -1,37 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class IdCollectionFilterPipe < RubyPipe
         | 
| 3 | 
            -
                import com.tinkerpop.blueprints.Contains
         | 
| 4 | 
            -
                attr_reader :contains_in
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                def initialize(ids, comparison)
         | 
| 7 | 
            -
                  super()
         | 
| 8 | 
            -
                  @ids = Set[*ids]
         | 
| 9 | 
            -
                  if comparison == Contains::IN
         | 
| 10 | 
            -
                    @contains_in = true
         | 
| 11 | 
            -
                  elsif
         | 
| 12 | 
            -
                    comparison == Contains::NOT_IN
         | 
| 13 | 
            -
                    @contains_in = false
         | 
| 14 | 
            -
                  else
         | 
| 15 | 
            -
                    fail InternalError, "Unknown comparison type for ID collection filter"
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def processNextStart
         | 
| 20 | 
            -
                  if contains_in
         | 
| 21 | 
            -
                    while true
         | 
| 22 | 
            -
                      element = @starts.next
         | 
| 23 | 
            -
                      if element and @ids.include? element.getId
         | 
| 24 | 
            -
                        return element
         | 
| 25 | 
            -
                      end
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  else
         | 
| 28 | 
            -
                    while true
         | 
| 29 | 
            -
                      element = @starts.next
         | 
| 30 | 
            -
                      if element and not @ids.include? element.getId
         | 
| 31 | 
            -
                        return element
         | 
| 32 | 
            -
                      end
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
                  end
         | 
| 35 | 
            -
                end
         | 
| 36 | 
            -
              end
         | 
| 37 | 
            -
            end
         | 
| @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class IsEmptyPipe < RubyPipe
         | 
| 3 | 
            -
                def initialize
         | 
| 4 | 
            -
                  super
         | 
| 5 | 
            -
                  @raise = false
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def processNextStart
         | 
| 9 | 
            -
                  raise EmptyPipe.instance if @raise
         | 
| 10 | 
            -
                  starts.next
         | 
| 11 | 
            -
                  @raise = true
         | 
| 12 | 
            -
                rescue EmptyPipe, java.util.NoSuchElementException
         | 
| 13 | 
            -
                  true
         | 
| 14 | 
            -
                else
         | 
| 15 | 
            -
                  raise EmptyPipe.instance
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def reset
         | 
| 19 | 
            -
                  @raise = false
         | 
| 20 | 
            -
                  super()
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
            end
         | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class IsUniquePipe < RubyPipe
         | 
| 3 | 
            -
                import java.util.ArrayList
         | 
| 4 | 
            -
                import com.tinkerpop.pipes.sideeffect.SideEffectPipe
         | 
| 5 | 
            -
                import com.tinkerpop.pipes.util.iterators.ExpandableIterator
         | 
| 6 | 
            -
                import com.tinkerpop.pipes.filter.DuplicateFilterPipe
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                include SideEffectPipe
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def initialize
         | 
| 11 | 
            -
                  super()
         | 
| 12 | 
            -
                  prepare_state
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def processNextStart
         | 
| 16 | 
            -
                  value = starts.next
         | 
| 17 | 
            -
                  check_uniqueness value if @unique
         | 
| 18 | 
            -
                  value
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def reset
         | 
| 22 | 
            -
                  super()
         | 
| 23 | 
            -
                  prepare_state
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                def unique?
         | 
| 27 | 
            -
                  @unique
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                def getSideEffect
         | 
| 31 | 
            -
                  @unique
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                protected
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                def check_uniqueness(value)
         | 
| 37 | 
            -
                  @expando.add value
         | 
| 38 | 
            -
                  @unique_pipe.next
         | 
| 39 | 
            -
                rescue EmptyPipe, java.util.NoSuchElementException
         | 
| 40 | 
            -
                  @unique = false
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                def prepare_state
         | 
| 44 | 
            -
                  @unique = true
         | 
| 45 | 
            -
                  @expando = ExpandableIterator.new ArrayList.new.iterator
         | 
| 46 | 
            -
                  @unique_pipe = DuplicateFilterPipe.new
         | 
| 47 | 
            -
                  @unique_pipe.setStarts @expando
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
              end
         | 
| 51 | 
            -
            end
         | 
| @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class LabelCollectionFilterPipe < RubyPipe
         | 
| 3 | 
            -
                def initialize(labels)
         | 
| 4 | 
            -
                  super()
         | 
| 5 | 
            -
                  @labels = Set[*labels.map(&:to_s)]
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def processNextStart
         | 
| 9 | 
            -
                  while true
         | 
| 10 | 
            -
                    edge = @starts.next
         | 
| 11 | 
            -
                    return edge if edge and @labels.include? edge.getLabel
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            module Pacer::Pipes
         | 
| 2 | 
            -
              class VerticesPipe < AbstractPipe
         | 
| 3 | 
            -
                attr_reader :starts
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def setStarts(starts)
         | 
| 6 | 
            -
                  @starts = starts.first
         | 
| 7 | 
            -
                  self.iter = @starts.getVertices.iterator
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def processNextStart
         | 
| 11 | 
            -
                  iter.next
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def reset
         | 
| 15 | 
            -
                  self.iter = @starts.getVertices.iterator
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                private
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                attr_accessor :iter
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         |