veritas 0.0.5 → 0.0.6
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/.travis.yml +5 -4
- data/Gemfile +16 -14
- data/Guardfile +0 -4
- data/README.md +188 -0
- data/Rakefile +2 -2
- data/TODO +0 -16
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/roodi.yml +4 -4
- data/config/site.reek +7 -3
- data/lib/veritas/aggregate.rb +18 -0
- data/lib/veritas/algebra/extension.rb +2 -29
- data/lib/veritas/algebra/projection.rb +2 -29
- data/lib/veritas/algebra/rename/aliases.rb +4 -32
- data/lib/veritas/algebra/rename.rb +2 -29
- data/lib/veritas/algebra/restriction.rb +2 -29
- data/lib/veritas/algebra/summarization.rb +2 -31
- data/lib/veritas/attribute/time.rb +1 -1
- data/lib/veritas/attribute.rb +20 -40
- data/lib/veritas/function/binary.rb +2 -3
- data/lib/veritas/function/connective/negation.rb +1 -1
- data/lib/veritas/function/predicate/enumerable.rb +19 -0
- data/lib/veritas/function/predicate/exclusion.rb +1 -1
- data/lib/veritas/function/predicate/match.rb +1 -1
- data/lib/veritas/function/unary.rb +5 -3
- data/lib/veritas/function.rb +1 -41
- data/lib/veritas/relation/base.rb +2 -29
- data/lib/veritas/relation/empty.rb +30 -2
- data/lib/veritas/relation/header.rb +17 -31
- data/lib/veritas/relation/materialized.rb +0 -12
- data/lib/veritas/relation/operation/limit.rb +2 -29
- data/lib/veritas/relation/operation/offset.rb +2 -29
- data/lib/veritas/relation/operation/order/direction.rb +3 -29
- data/lib/veritas/relation/operation/order/direction_set.rb +18 -34
- data/lib/veritas/relation/operation/order.rb +4 -56
- data/lib/veritas/relation.rb +8 -36
- data/lib/veritas/support/aliasable.rb +20 -7
- data/lib/veritas/support/comparator.rb +81 -0
- data/lib/veritas/support/evaluator.rb +1 -1
- data/lib/veritas/support/immutable.rb +22 -49
- data/lib/veritas/support/operation/binary.rb +3 -30
- data/lib/veritas/support/operation/unary.rb +3 -29
- data/lib/veritas/tuple.rb +19 -29
- data/lib/veritas/version.rb +1 -1
- data/lib/veritas.rb +1 -0
- data/spec/integration/veritas/relation/efficient_enumerable_spec.rb +3 -3
- data/spec/shared/hash_method_behavior.rb +7 -2
- data/spec/unit/date/pred_spec.rb +1 -1
- data/spec/unit/veritas/aggregate/equal_value_spec.rb +52 -0
- data/spec/unit/veritas/aggregate/hash_spec.rb +15 -0
- data/spec/unit/veritas/aliasable/inheritable_alias_spec.rb +1 -1
- data/spec/unit/veritas/comparator/compare_spec.rb +40 -0
- data/spec/unit/veritas/comparator/methods/eql_spec.rb +48 -0
- data/spec/unit/veritas/evaluator/context/respond_to_spec.rb +1 -1
- data/spec/unit/veritas/function/predicate/enumerable/call_spec.rb +36 -0
- data/spec/unit/veritas/function/unary/hash_spec.rb +18 -0
- data/spec/unit/veritas/immutable/freeze_spec.rb +2 -2
- data/spec/unit/veritas/immutable/memoize_spec.rb +13 -0
- data/spec/unit/veritas/immutable/module_methods/memoize_spec.rb +1 -1
- data/spec/unit/veritas/relation/empty/class_methods/new_spec.rb +30 -0
- data/spec/unit/veritas/relation/empty/each_spec.rb +20 -5
- data/spec/unit/veritas/relation/empty/size_spec.rb +11 -0
- data/spec/unit/veritas/relation/header/hash_spec.rb +1 -1
- data/spec/unit/veritas/relation/materialized/empty_spec.rb +0 -10
- data/spec/unit/veritas/relation/operation/order/direction_set/class_methods/coerce_spec.rb +12 -3
- data/tasks/metrics/heckle.rake +2 -3
- data/veritas.gemspec +21 -18
- metadata +36 -33
- data/README.rdoc +0 -143
- data/spec/unit/veritas/function/eql_spec.rb +0 -14
- data/spec/unit/veritas/function/equal_value_spec.rb +0 -14
- data/spec/unit/veritas/function/hash_spec.rb +0 -13
- data/spec/unit/veritas/immutable/memory/element_reference_spec.rb +0 -26
- data/spec/unit/veritas/immutable/memory/element_set_spec.rb +0 -19
- data/spec/unit/veritas/relation/operation/order/methods/order_spec.rb +0 -54
data/lib/veritas.rb
CHANGED
@@ -3,9 +3,14 @@
|
|
3
3
|
shared_examples_for 'a hash method' do
|
4
4
|
it_should_behave_like 'an idempotent method'
|
5
5
|
|
6
|
-
|
6
|
+
# TOOD: figure out if #hash under rbx should also always use Fixnum
|
7
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
8
|
+
it { should be_kind_of(Integer) }
|
9
|
+
else
|
10
|
+
it { should be_instance_of(Fixnum) }
|
11
|
+
end
|
7
12
|
|
8
13
|
it 'memoizes the hash code' do
|
9
|
-
subject.should eql(object.memoized(
|
14
|
+
subject.should eql(object.memoized(:hash))
|
10
15
|
end
|
11
16
|
end
|
data/spec/unit/date/pred_spec.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Aggregate, '#==' do
|
6
|
+
subject { object == other }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Aggregate) }
|
9
|
+
let(:object) { described_class.new(attribute) }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
|
12
|
+
context 'with the same object' do
|
13
|
+
let(:other) { object }
|
14
|
+
|
15
|
+
it { should be(true) }
|
16
|
+
|
17
|
+
it 'is symmetric' do
|
18
|
+
should eql(other == object)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with an equivalent object' do
|
23
|
+
let(:other) { object.dup }
|
24
|
+
|
25
|
+
it { should be(true) }
|
26
|
+
|
27
|
+
it 'is symmetric' do
|
28
|
+
should eql(other == object)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with an equivalent object of a subclass' do
|
33
|
+
let(:other) { Class.new(described_class).new(attribute) }
|
34
|
+
|
35
|
+
it { should be(true) }
|
36
|
+
|
37
|
+
it 'is symmetric' do
|
38
|
+
should eql(other == object)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with an object having a different attribute' do
|
43
|
+
let(:other_attribute) { Attribute::Integer.new(:other_id) }
|
44
|
+
let(:other) { described_class.new(other_attribute) }
|
45
|
+
|
46
|
+
it { should be(false) }
|
47
|
+
|
48
|
+
it 'is symmetric' do
|
49
|
+
should eql(other.eql?(object))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Aggregate, '#hash' do
|
6
|
+
subject { object.hash }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Aggregate) }
|
9
|
+
let(:object) { described_class.new(attribute) }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
|
12
|
+
it_should_behave_like 'a hash method'
|
13
|
+
|
14
|
+
it { should == described_class.hash ^ attribute.hash }
|
15
|
+
end
|
@@ -37,7 +37,7 @@ describe Aliasable, '#inheritable_alias' do
|
|
37
37
|
file, line = aliasable.other.first.split(':')[0, 2]
|
38
38
|
|
39
39
|
File.expand_path(file).should eql(File.expand_path('../../../../../lib/veritas/support/aliasable.rb', __FILE__))
|
40
|
-
line.to_i.should eql(
|
40
|
+
line.to_i.should eql(38)
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'sets the file and line number properly' do
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Comparator, '#compare' do
|
6
|
+
subject { object.compare(*methods) }
|
7
|
+
|
8
|
+
let(:methods) { [ :nil?, :to_s ] }
|
9
|
+
let(:object) { Class.new { extend Comparator } }
|
10
|
+
let(:instance) { object.new }
|
11
|
+
|
12
|
+
before do
|
13
|
+
object.instance_eval { include Immutable }
|
14
|
+
end
|
15
|
+
|
16
|
+
it { should equal(object) }
|
17
|
+
|
18
|
+
it 'includes Comparator::Methods' do
|
19
|
+
expect { subject }.to change { object.include?(Comparator::Methods) }.from(false).to(true)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'defines a #hash public instance method' do
|
23
|
+
expect { subject }.to change { object.public_instance_methods(false).map(&:to_s) }.from([]).to([ 'hash' ])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'defines a #hash method that uses the class and declared methods' do
|
27
|
+
subject
|
28
|
+
instance.hash.should equal(object.hash ^ false.hash ^ instance.to_s.hash)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'memoizes #hash' do
|
32
|
+
subject
|
33
|
+
instance.hash
|
34
|
+
instance.memoized(:hash).should_not be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'defines a #cmp? private instance method' do
|
38
|
+
expect { subject }.to change { object.private_instance_methods(false).map(&:to_s) }.from([]).to([ 'cmp?' ])
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Comparator::Methods, '#eql?' do
|
6
|
+
subject { object.eql?(other) }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new { include Comparator::Methods } }
|
9
|
+
let(:object) { described_class.new }
|
10
|
+
|
11
|
+
before do
|
12
|
+
described_class.class_eval do
|
13
|
+
extend Comparator
|
14
|
+
include Immutable
|
15
|
+
compare :nil?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with the same object' do
|
20
|
+
let(:other) { object }
|
21
|
+
|
22
|
+
it { should be(true) }
|
23
|
+
|
24
|
+
it 'is symmetric' do
|
25
|
+
should eql(other.eql?(object))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'with an equivalent object' do
|
30
|
+
let(:other) { object.dup }
|
31
|
+
|
32
|
+
it { should be(true) }
|
33
|
+
|
34
|
+
it 'is symmetric' do
|
35
|
+
should eql(other.eql?(object))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with an equivalent object of a subclass' do
|
40
|
+
let(:other) { Class.new(described_class).new }
|
41
|
+
|
42
|
+
it { should be(false) }
|
43
|
+
|
44
|
+
it 'is symmetric' do
|
45
|
+
should eql(other.eql?(object))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evaluator::Context, '#respond_to?' do
|
6
|
-
subject { object.respond_to?(method) }
|
6
|
+
subject { object.respond_to?(method, include_private) }
|
7
7
|
|
8
8
|
let(:attribute) { Attribute::Integer.new(:id) }
|
9
9
|
let(:header) { Relation::Header.new([ attribute ]) }
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Function::Predicate::Enumerable, '#call' do
|
6
|
+
subject { object.call(tuple) }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Function) { include Function::Binary } }
|
9
|
+
let(:header) { Relation::Header.new([ [ :id, Integer ] ]) }
|
10
|
+
let(:tuple) { Tuple.new(header, [ 1 ]) }
|
11
|
+
|
12
|
+
before do
|
13
|
+
described_class.class_eval { include Function::Predicate::Enumerable }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with an enumerable of non-callable objects' do
|
17
|
+
let(:object) { described_class.new(header[:id], [ 1 ]) }
|
18
|
+
|
19
|
+
it 'sends the left and right value to self.class.call' do
|
20
|
+
response = mock('#call response')
|
21
|
+
described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
|
22
|
+
should equal(response)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with an enumerable of callable objects' do
|
27
|
+
let(:callable) { proc { 1 } }
|
28
|
+
let(:object) { described_class.new(header[:id], [ callable ]) }
|
29
|
+
|
30
|
+
it 'sends the left and right value to self.class.call' do
|
31
|
+
response = mock('#call response')
|
32
|
+
described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
|
33
|
+
should equal(response)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
5
|
+
|
6
|
+
describe Function::Unary, '#hash' do
|
7
|
+
subject { object.hash }
|
8
|
+
|
9
|
+
let(:described_class) { UnarySpecs::Object }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
let(:header) { Relation::Header.new([ attribute ]) }
|
12
|
+
let(:operand) { attribute.eq(1) }
|
13
|
+
let(:object) { described_class.new(operand) }
|
14
|
+
|
15
|
+
it_should_behave_like 'a hash method'
|
16
|
+
|
17
|
+
it { should == described_class.hash ^ operand.hash }
|
18
|
+
end
|
@@ -26,7 +26,7 @@ describe Immutable, '#freeze' do
|
|
26
26
|
it 'sets a memoization instance variable' do
|
27
27
|
object.should_not be_instance_variable_defined(:@__memory)
|
28
28
|
subject
|
29
|
-
object.instance_variable_get(:@__memory).should be_instance_of(
|
29
|
+
object.instance_variable_get(:@__memory).should be_instance_of(Hash)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -44,7 +44,7 @@ describe Immutable, '#freeze' do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'sets an instance variable for memoization' do
|
47
|
-
subject.instance_variable_get(:@__memory).should be_instance_of(
|
47
|
+
subject.instance_variable_get(:@__memory).should be_instance_of(Hash)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -41,4 +41,17 @@ describe Immutable, '#memoize' do
|
|
41
41
|
object.send(method).should be_frozen
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
context 'when the method is already memoized' do
|
46
|
+
let(:value) { stub }
|
47
|
+
let(:original) { nil }
|
48
|
+
|
49
|
+
before do
|
50
|
+
object.memoize(method, original)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'does not change the value' do
|
54
|
+
expect { subject }.to_not change { object.send(method) }
|
55
|
+
end
|
56
|
+
end
|
44
57
|
end
|
@@ -26,7 +26,7 @@ shared_examples_for 'memoizes method' do
|
|
26
26
|
file, line = object.new.send(method).first.split(':')[0, 2]
|
27
27
|
|
28
28
|
File.expand_path(file).should eql(File.expand_path('../../../../../../lib/veritas/support/immutable.rb', __FILE__))
|
29
|
-
line.to_i.should eql(
|
29
|
+
line.to_i.should eql(185)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'sets the file and line number properly' do
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Relation::Empty, '.new' do
|
6
|
+
let(:object) { described_class }
|
7
|
+
let(:header) { [ [ :id, Integer ] ] }
|
8
|
+
|
9
|
+
context 'with a header' do
|
10
|
+
subject { object.new(header) }
|
11
|
+
|
12
|
+
it { should be_instance_of(object) }
|
13
|
+
|
14
|
+
its(:header){ should == header }
|
15
|
+
|
16
|
+
its(:tuples) { should == [] }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with a header and tuples' do
|
20
|
+
subject { object.new(header, tuples) }
|
21
|
+
|
22
|
+
let(:tuples) { mock('Tuples') }
|
23
|
+
|
24
|
+
it { should be_instance_of(object) }
|
25
|
+
|
26
|
+
its(:header){ should == header }
|
27
|
+
|
28
|
+
its(:tuples) { should equal(tuples) }
|
29
|
+
end
|
30
|
+
end
|
@@ -5,12 +5,27 @@ require 'spec_helper'
|
|
5
5
|
describe Relation::Empty, '#each' do
|
6
6
|
subject { object.each { |tuple| yields << tuple } }
|
7
7
|
|
8
|
-
let(:
|
9
|
-
let(:yields) { []
|
8
|
+
let(:header) { [ [ :id, Integer ] ] }
|
9
|
+
let(:yields) { [] }
|
10
10
|
|
11
|
-
|
11
|
+
context 'with an empty relation having no tuples' do
|
12
|
+
let(:object) { described_class.new(header) }
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
it_should_behave_like 'an #each method'
|
15
|
+
|
16
|
+
it 'yields no tuples' do
|
17
|
+
expect { subject }.to_not change { yields.dup }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with an empty relation having tuples' do
|
22
|
+
let(:tuples) { mock('Tuples') }
|
23
|
+
let(:object) { described_class.new(header, tuples) }
|
24
|
+
|
25
|
+
it_should_behave_like 'an #each method'
|
26
|
+
|
27
|
+
it 'yields no tuples' do
|
28
|
+
expect { subject }.to_not change { yields.dup }
|
29
|
+
end
|
15
30
|
end
|
16
31
|
end
|
@@ -12,21 +12,11 @@ describe Relation::Materialized, '#empty?' do
|
|
12
12
|
let(:body) { [] }
|
13
13
|
|
14
14
|
it { should be(true) }
|
15
|
-
|
16
|
-
it 'does not execute body#each' do
|
17
|
-
body.should_not_receive(:each)
|
18
|
-
subject
|
19
|
-
end
|
20
15
|
end
|
21
16
|
|
22
17
|
context 'with a body containing an entry' do
|
23
18
|
let(:body) { [ [ 1 ] ] }
|
24
19
|
|
25
20
|
it { should be(false) }
|
26
|
-
|
27
|
-
it 'does not execute body#each' do
|
28
|
-
body.should_not_receive(:each)
|
29
|
-
subject
|
30
|
-
end
|
31
21
|
end
|
32
22
|
end
|
@@ -5,9 +5,10 @@ require 'spec_helper'
|
|
5
5
|
describe Relation::Operation::Order::DirectionSet, '.coerce' do
|
6
6
|
subject { object.coerce(argument) }
|
7
7
|
|
8
|
-
let(:
|
9
|
-
let(:
|
10
|
-
let(:
|
8
|
+
let(:direction) { Attribute::Integer.new(:id).desc }
|
9
|
+
let(:directions) { [ direction ] }
|
10
|
+
let(:object) { described_class }
|
11
|
+
let(:direction_set) { object.new(directions) }
|
11
12
|
|
12
13
|
context 'when the argument is a DirectionSet' do
|
13
14
|
let(:argument) { direction_set }
|
@@ -15,6 +16,14 @@ describe Relation::Operation::Order::DirectionSet, '.coerce' do
|
|
15
16
|
it { should equal(argument) }
|
16
17
|
end
|
17
18
|
|
19
|
+
context 'when the argument is a Direction' do
|
20
|
+
let(:argument) { direction }
|
21
|
+
|
22
|
+
it { should be_instance_of(object) }
|
23
|
+
|
24
|
+
it { should == direction_set }
|
25
|
+
end
|
26
|
+
|
18
27
|
context 'when the argument responds to #to_ary' do
|
19
28
|
let(:argument) { directions }
|
20
29
|
|
data/tasks/metrics/heckle.rake
CHANGED
@@ -194,7 +194,7 @@ begin
|
|
194
194
|
ObjectSpace.each_object(Module) do |descedant|
|
195
195
|
next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
|
196
196
|
descedant_spec_prefix = spec_dir.join(descedant.name.underscore)
|
197
|
-
descedant_specs
|
197
|
+
descedant_specs << descedant_spec_prefix
|
198
198
|
|
199
199
|
if method.to_s == 'initialize'
|
200
200
|
descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/new_spec.rb')))
|
@@ -209,8 +209,7 @@ begin
|
|
209
209
|
|
210
210
|
ObjectSpace.each_object(Module) do |descedant|
|
211
211
|
next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
|
212
|
-
|
213
|
-
descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/*_spec.rb')))
|
212
|
+
descedant_specs << spec_dir.join(descedant.name.underscore).join('class_methods')
|
214
213
|
end
|
215
214
|
|
216
215
|
specs << [ ".#{method}", descedant_specs ]
|
data/veritas.gemspec
CHANGED
@@ -4,17 +4,17 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "veritas"
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["Dan Kubb"]
|
12
|
+
s.date = "2011-10-04"
|
13
|
+
s.description = "Simplifies querying of structured data using relational algebra"
|
14
|
+
s.email = "dan.kubb@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README.
|
17
|
+
"README.md",
|
18
18
|
"TODO"
|
19
19
|
]
|
20
20
|
s.files = [
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Gemfile",
|
26
26
|
"Guardfile",
|
27
27
|
"LICENSE",
|
28
|
-
"README.
|
28
|
+
"README.md",
|
29
29
|
"Rakefile",
|
30
30
|
"TODO",
|
31
31
|
"benchmarks/memory.rb",
|
@@ -128,6 +128,7 @@ Gem::Specification.new do |s|
|
|
128
128
|
"lib/veritas/relation/operation/unary.rb",
|
129
129
|
"lib/veritas/support/abstract_class.rb",
|
130
130
|
"lib/veritas/support/aliasable.rb",
|
131
|
+
"lib/veritas/support/comparator.rb",
|
131
132
|
"lib/veritas/support/evaluator.rb",
|
132
133
|
"lib/veritas/support/immutable.rb",
|
133
134
|
"lib/veritas/support/operation/binary.rb",
|
@@ -161,7 +162,9 @@ Gem::Specification.new do |s|
|
|
161
162
|
"spec/unit/veritas/aggregate/count/methods/count_spec.rb",
|
162
163
|
"spec/unit/veritas/aggregate/count/type_spec.rb",
|
163
164
|
"spec/unit/veritas/aggregate/default_spec.rb",
|
165
|
+
"spec/unit/veritas/aggregate/equal_value_spec.rb",
|
164
166
|
"spec/unit/veritas/aggregate/finalize_spec.rb",
|
167
|
+
"spec/unit/veritas/aggregate/hash_spec.rb",
|
165
168
|
"spec/unit/veritas/aggregate/maximum/class_methods/call_spec.rb",
|
166
169
|
"spec/unit/veritas/aggregate/maximum/class_methods/default_spec.rb",
|
167
170
|
"spec/unit/veritas/aggregate/maximum/methods/maximum_spec.rb",
|
@@ -299,6 +302,8 @@ Gem::Specification.new do |s|
|
|
299
302
|
"spec/unit/veritas/attribute/type_spec.rb",
|
300
303
|
"spec/unit/veritas/attribute/valid_primitive_spec.rb",
|
301
304
|
"spec/unit/veritas/attribute/valid_value_spec.rb",
|
305
|
+
"spec/unit/veritas/comparator/compare_spec.rb",
|
306
|
+
"spec/unit/veritas/comparator/methods/eql_spec.rb",
|
302
307
|
"spec/unit/veritas/evaluator/context/add_spec.rb",
|
303
308
|
"spec/unit/veritas/evaluator/context/element_reference_spec.rb",
|
304
309
|
"spec/unit/veritas/evaluator/context/functions_spec.rb",
|
@@ -334,10 +339,7 @@ Gem::Specification.new do |s|
|
|
334
339
|
"spec/unit/veritas/function/connective/negation/methods/fixtures/classes.rb",
|
335
340
|
"spec/unit/veritas/function/connective/negation/methods/not_spec.rb",
|
336
341
|
"spec/unit/veritas/function/connective/type_spec.rb",
|
337
|
-
"spec/unit/veritas/function/eql_spec.rb",
|
338
|
-
"spec/unit/veritas/function/equal_value_spec.rb",
|
339
342
|
"spec/unit/veritas/function/fixtures/classes.rb",
|
340
|
-
"spec/unit/veritas/function/hash_spec.rb",
|
341
343
|
"spec/unit/veritas/function/inspect_spec.rb",
|
342
344
|
"spec/unit/veritas/function/numeric/absolute/class_methods/call_spec.rb",
|
343
345
|
"spec/unit/veritas/function/numeric/absolute/inspect_spec.rb",
|
@@ -389,6 +391,7 @@ Gem::Specification.new do |s|
|
|
389
391
|
"spec/unit/veritas/function/numeric/unary_plus/methods/unary_plus_spec.rb",
|
390
392
|
"spec/unit/veritas/function/predicate/call_spec.rb",
|
391
393
|
"spec/unit/veritas/function/predicate/class_methods/call_spec.rb",
|
394
|
+
"spec/unit/veritas/function/predicate/enumerable/call_spec.rb",
|
392
395
|
"spec/unit/veritas/function/predicate/enumerable/class_methods/compare_method_spec.rb",
|
393
396
|
"spec/unit/veritas/function/predicate/eql_spec.rb",
|
394
397
|
"spec/unit/veritas/function/predicate/equality/class_methods/call_spec.rb",
|
@@ -501,6 +504,7 @@ Gem::Specification.new do |s|
|
|
501
504
|
"spec/unit/veritas/function/unary/call_spec.rb",
|
502
505
|
"spec/unit/veritas/function/unary/equal_value_spec.rb",
|
503
506
|
"spec/unit/veritas/function/unary/fixtures/classes.rb",
|
507
|
+
"spec/unit/veritas/function/unary/hash_spec.rb",
|
504
508
|
"spec/unit/veritas/function/unary/invertible/inverse_spec.rb",
|
505
509
|
"spec/unit/veritas/function/unary/rename_spec.rb",
|
506
510
|
"spec/unit/veritas/immutable/class_methods/freeze_object_spec.rb",
|
@@ -510,8 +514,6 @@ Gem::Specification.new do |s|
|
|
510
514
|
"spec/unit/veritas/immutable/freeze_spec.rb",
|
511
515
|
"spec/unit/veritas/immutable/memoize_spec.rb",
|
512
516
|
"spec/unit/veritas/immutable/memoized_spec.rb",
|
513
|
-
"spec/unit/veritas/immutable/memory/element_reference_spec.rb",
|
514
|
-
"spec/unit/veritas/immutable/memory/element_set_spec.rb",
|
515
517
|
"spec/unit/veritas/immutable/module_methods/included_spec.rb",
|
516
518
|
"spec/unit/veritas/immutable/module_methods/memoize_spec.rb",
|
517
519
|
"spec/unit/veritas/operation/binary/eql_spec.rb",
|
@@ -529,9 +531,11 @@ Gem::Specification.new do |s|
|
|
529
531
|
"spec/unit/veritas/relation/directions_spec.rb",
|
530
532
|
"spec/unit/veritas/relation/each_spec.rb",
|
531
533
|
"spec/unit/veritas/relation/element_reference_spec.rb",
|
534
|
+
"spec/unit/veritas/relation/empty/class_methods/new_spec.rb",
|
532
535
|
"spec/unit/veritas/relation/empty/each_spec.rb",
|
533
536
|
"spec/unit/veritas/relation/empty/empty_spec.rb",
|
534
537
|
"spec/unit/veritas/relation/empty/header_spec.rb",
|
538
|
+
"spec/unit/veritas/relation/empty/size_spec.rb",
|
535
539
|
"spec/unit/veritas/relation/empty_spec.rb",
|
536
540
|
"spec/unit/veritas/relation/eql_spec.rb",
|
537
541
|
"spec/unit/veritas/relation/equal_value_spec.rb",
|
@@ -615,7 +619,6 @@ Gem::Specification.new do |s|
|
|
615
619
|
"spec/unit/veritas/relation/operation/order/eql_spec.rb",
|
616
620
|
"spec/unit/veritas/relation/operation/order/hash_spec.rb",
|
617
621
|
"spec/unit/veritas/relation/operation/order/header_spec.rb",
|
618
|
-
"spec/unit/veritas/relation/operation/order/methods/order_spec.rb",
|
619
622
|
"spec/unit/veritas/relation/operation/order/methods/sort_by_spec.rb",
|
620
623
|
"spec/unit/veritas/relation/operation/reverse/class_methods/new_spec.rb",
|
621
624
|
"spec/unit/veritas/relation/operation/reverse/directions_spec.rb",
|
@@ -652,10 +655,10 @@ Gem::Specification.new do |s|
|
|
652
655
|
"tasks/yard.rake",
|
653
656
|
"veritas.gemspec"
|
654
657
|
]
|
655
|
-
s.homepage =
|
656
|
-
s.require_paths = [
|
657
|
-
s.rubygems_version =
|
658
|
-
s.summary =
|
658
|
+
s.homepage = "https://github.com/dkubb/veritas"
|
659
|
+
s.require_paths = ["lib"]
|
660
|
+
s.rubygems_version = "1.8.10"
|
661
|
+
s.summary = "Ruby Relational Algebra"
|
659
662
|
|
660
663
|
if s.respond_to? :specification_version then
|
661
664
|
s.specification_version = 3
|