Skip to content

Commit 71c0141

Browse files
committed
Update Countable, Enumerable, and Queryable to include their Enumerator classes inline, and remove a separate enumerator.rb to address #433.
1 parent f50d4d1 commit 71c0141

4 files changed

Lines changed: 31 additions & 43 deletions

File tree

lib/rdf/mixin/countable.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ module RDF
22
##
33
# @since 0.2.0
44
module Countable
5-
autoload :Enumerator, 'rdf/mixin/enumerator'
65
extend RDF::Util::Aliasing::LateBound
76

7+
# Extends Enumerator with {Countable}, which is used by {Countable#enum_for}
8+
class Enumerator < ::Enumerator
9+
include RDF::Countable
10+
end
11+
812
##
913
# Returns `true` if `self` contains no RDF statements.
1014
#

lib/rdf/mixin/enumerable.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,23 @@ module RDF
5757
# @see RDF::Graph
5858
# @see RDF::Repository
5959
module Enumerable
60-
autoload :Enumerator, 'rdf/mixin/enumerator'
6160
extend RDF::Util::Aliasing::LateBound
6261
include ::Enumerable
6362
include RDF::Countable # NOTE: must come after ::Enumerable
6463

64+
# Extends Enumerator with {Queryable} and {Enumerable}, which is used by {Enumerable#each_statement} and {Queryable#enum_for}
65+
class Enumerator < ::Enumerator
66+
include RDF::Queryable
67+
include RDF::Enumerable
68+
69+
##
70+
# @return [Array]
71+
# @note Make sure returned arrays are also queryable
72+
def to_a
73+
return super.to_a.extend(RDF::Queryable, RDF::Enumerable)
74+
end
75+
end
76+
6577
##
6678
# Returns `true` if this enumerable supports the given `feature`.
6779
#

lib/rdf/mixin/enumerator.rb

Lines changed: 0 additions & 40 deletions
This file was deleted.

lib/rdf/mixin/queryable.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,21 @@ module RDF
99
# @see RDF::Graph
1010
# @see RDF::Repository
1111
module Queryable
12-
autoload :Enumerator, 'rdf/mixin/enumerator'
1312
include ::Enumerable
1413

14+
# Extends Enumerator with {Queryable} and {Enumerable}, which is used by {Enumerable#each_statement} and {Queryable#enum_for}
15+
class Enumerator < ::Enumerator
16+
include RDF::Queryable
17+
include RDF::Enumerable
18+
19+
##
20+
# @return [Array]
21+
# @note Make sure returned arrays are also queryable
22+
def to_a
23+
return super.to_a.extend(RDF::Queryable, RDF::Enumerable)
24+
end
25+
end
26+
1527
##
1628
# Queries `self` for RDF statements matching the given `pattern`.
1729
#

0 commit comments

Comments
 (0)