arango-driver 3.5.0.alpha0
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +1073 -0
- data/arango_opal.js +15 -0
- data/lib/arango-driver.rb +61 -0
- data/lib/arango.rb +96 -0
- data/lib/arango/aql.rb +188 -0
- data/lib/arango/collection.rb +575 -0
- data/lib/arango/collection/documents.rb +122 -0
- data/lib/arango/collection/edges.rb +149 -0
- data/lib/arango/collection/importing.rb +57 -0
- data/lib/arango/collection/indexes.rb +53 -0
- data/lib/arango/collection/replication.rb +24 -0
- data/lib/arango/collection/user.rb +28 -0
- data/lib/arango/cursor.rb +67 -0
- data/lib/arango/database.rb +188 -0
- data/lib/arango/database/analyzer.rb +21 -0
- data/lib/arango/database/aql_functions.rb +54 -0
- data/lib/arango/database/aql_queries.rb +114 -0
- data/lib/arango/database/aql_query_cache.rb +27 -0
- data/lib/arango/database/collections.rb +100 -0
- data/lib/arango/database/foxx_services.rb +103 -0
- data/lib/arango/database/graph_access.rb +27 -0
- data/lib/arango/database/http_route.rb +9 -0
- data/lib/arango/database/replication.rb +96 -0
- data/lib/arango/database/stream_transactions.rb +25 -0
- data/lib/arango/database/tasks.rb +67 -0
- data/lib/arango/database/transactions.rb +15 -0
- data/lib/arango/database/user.rb +26 -0
- data/lib/arango/database/view_access.rb +37 -0
- data/lib/arango/document.rb +443 -0
- data/lib/arango/edge.rb +164 -0
- data/lib/arango/error.rb +97 -0
- data/lib/arango/error_db.rb +27 -0
- data/lib/arango/foxx.rb +255 -0
- data/lib/arango/graph.rb +202 -0
- data/lib/arango/graph/basics.rb +39 -0
- data/lib/arango/graph/edge_access.rb +56 -0
- data/lib/arango/graph/vertex_access.rb +33 -0
- data/lib/arango/helper/collection_assignment.rb +13 -0
- data/lib/arango/helper/database_assignment.rb +14 -0
- data/lib/arango/helper/request_method.rb +45 -0
- data/lib/arango/helper/return.rb +21 -0
- data/lib/arango/helper/satisfaction.rb +28 -0
- data/lib/arango/helper/server_assignment.rb +13 -0
- data/lib/arango/helper/traversal.rb +12 -0
- data/lib/arango/index.rb +103 -0
- data/lib/arango/replication.rb +231 -0
- data/lib/arango/request.rb +92 -0
- data/lib/arango/request_batch.rb +174 -0
- data/lib/arango/result.rb +130 -0
- data/lib/arango/search_view.rb +23 -0
- data/lib/arango/server.rb +68 -0
- data/lib/arango/server/administration.rb +296 -0
- data/lib/arango/server/agency.rb +23 -0
- data/lib/arango/server/async.rb +51 -0
- data/lib/arango/server/batch.rb +35 -0
- data/lib/arango/server/config.rb +76 -0
- data/lib/arango/server/databases.rb +71 -0
- data/lib/arango/server/monitoring.rb +17 -0
- data/lib/arango/server/opal_support.rb +95 -0
- data/lib/arango/server/tasks.rb +69 -0
- data/lib/arango/server/user.rb +22 -0
- data/lib/arango/task.rb +223 -0
- data/lib/arango/transaction.rb +113 -0
- data/lib/arango/traversal.rb +212 -0
- data/lib/arango/user.rb +174 -0
- data/lib/arango/version.rb +3 -0
- data/lib/arango/vertex.rb +112 -0
- data/lib/arango/view.rb +124 -0
- data/lib/arango/view/basics.rb +25 -0
- metadata +296 -0
@@ -0,0 +1,122 @@
|
|
1
|
+
module Arango
|
2
|
+
class Collection
|
3
|
+
module Documents
|
4
|
+
def new_document(document, wait_for_sync: nil)
|
5
|
+
Arango::Document.new(document, collection: self, wait_for_sync: wait_for_sync)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_document(document, wait_for_sync: nil)
|
9
|
+
Arango::Document.new(document, collection: self, wait_for_sync: wait_for_sync).create
|
10
|
+
end
|
11
|
+
def batch_create_document(document, wait_for_sync: nil)
|
12
|
+
Arango::Document.new(document, collection: self, wait_for_sync: wait_for_sync).batch_create
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_documents(array_of_property_hashes, wait_for_sync: nil)
|
16
|
+
Arango::Document.create_documents(array_of_property_hashes, collection: self, wait_for_sync: wait_for_sync)
|
17
|
+
end
|
18
|
+
def batch_create_documents(array_of_property_hashes, wait_for_sync: nil)
|
19
|
+
Arango::Document.batch_create_documents(array_of_property_hashes, collection: self, wait_for_sync: wait_for_sync)
|
20
|
+
end
|
21
|
+
|
22
|
+
def exist_document?(*args)
|
23
|
+
Arango::Document.exist?(*args, collection: self)
|
24
|
+
end
|
25
|
+
def batch_exist_document?(*args)
|
26
|
+
Arango::Document.batch_exist?(*args, collection: self)
|
27
|
+
end
|
28
|
+
alias document_exist? exist_document?
|
29
|
+
alias batch_document_exist? batch_exist_document?
|
30
|
+
|
31
|
+
def get_document(key)
|
32
|
+
Arango::Document.get(key, collection: self)
|
33
|
+
end
|
34
|
+
def batch_get_document(key)
|
35
|
+
Arango::Document.batch_get(key, collection: self)
|
36
|
+
end
|
37
|
+
alias fetch_document get_document
|
38
|
+
alias retrieve_document get_document
|
39
|
+
alias batch_fetch_document batch_get_document
|
40
|
+
alias batch_retrieve_document batch_get_document
|
41
|
+
|
42
|
+
def get_documents(keys)
|
43
|
+
Arango::Document.get_documents(keys, collection: self)
|
44
|
+
end
|
45
|
+
def batch_get_documents(name)
|
46
|
+
Arango::Document.batch_get_documents(name: name, collection: self)
|
47
|
+
end
|
48
|
+
alias fetch_documents get_documents
|
49
|
+
alias retrieve_documents get_documents
|
50
|
+
alias batch_fetch_documents batch_get_documents
|
51
|
+
alias batch_retrieve_documents batch_get_documents
|
52
|
+
|
53
|
+
def all_documents(offset: 0, limit: nil, batch_size: nil)
|
54
|
+
return nil if type == :edge
|
55
|
+
Arango::Document.all(offset: offset, limit: limit, batch_size: batch_size, collection: self)
|
56
|
+
end
|
57
|
+
def batch_all_documents(offset: 0, limit: nil, batch_size: nil)
|
58
|
+
return nil if type == :edge
|
59
|
+
Arango::Document.batch_all(offset: offset, limit: limit, batch_size: batch_size, collection: self)
|
60
|
+
end
|
61
|
+
|
62
|
+
def list_documents(offset: 0, limit: nil, batch_size: nil)
|
63
|
+
Arango::Document.list(offset: offset, limit: limit, batch_size: batch_size, collection: self)
|
64
|
+
end
|
65
|
+
def batch_list_documents(offset: 0, limit: nil, batch_size: nil)
|
66
|
+
Arango::Document.batch_list(offset: offset, limit: limit, batch_size: batch_size, collection: self)
|
67
|
+
end
|
68
|
+
|
69
|
+
def replace_document(document)
|
70
|
+
Arango::Document.replace(document)
|
71
|
+
end
|
72
|
+
def batch_replace_document(document)
|
73
|
+
Arango::Document.batch_replace(document)
|
74
|
+
end
|
75
|
+
|
76
|
+
def replace_documents(documents_array, wait_for_sync: nil, ignore_revs: nil, return_old: nil, return_new: nil)
|
77
|
+
Arango::Document.replace_documents(documents_array)
|
78
|
+
end
|
79
|
+
def batch_replace_documents(documents_array, wait_for_sync: nil, ignore_revs: nil, return_old: nil, return_new: nil)
|
80
|
+
Arango::Document.batch_replace_documents(documents_array)
|
81
|
+
end
|
82
|
+
|
83
|
+
def save_document(document)
|
84
|
+
Arango::Document.save(document)
|
85
|
+
end
|
86
|
+
def batch_save_document(document)
|
87
|
+
Arango::Document.batch_save(document)
|
88
|
+
end
|
89
|
+
alias update_document save_document
|
90
|
+
|
91
|
+
def save_documents(documents_array, wait_for_sync: nil, ignore_revs: nil)
|
92
|
+
Arango::Document.save_documents(documents_array)
|
93
|
+
end
|
94
|
+
def batch_save_documents(documents_array, wait_for_sync: nil, ignore_revs: nil)
|
95
|
+
Arango::Document.batch_save_documents(documents_array)
|
96
|
+
end
|
97
|
+
alias update_documents save_documents
|
98
|
+
|
99
|
+
def drop_document(document)
|
100
|
+
Arango::Document.drop(document, collection: self)
|
101
|
+
end
|
102
|
+
def batch_drop_document(document)
|
103
|
+
Arango::Document.batch_drop(document, collection: self)
|
104
|
+
end
|
105
|
+
alias delete_document drop_document
|
106
|
+
alias destroy_document drop_document
|
107
|
+
alias batch_delete_document batch_drop_document
|
108
|
+
alias batch_destroy_document batch_drop_document
|
109
|
+
|
110
|
+
def drop_documents(documents_array)
|
111
|
+
Arango::Document.drop_documents(documents_array, collection: self)
|
112
|
+
end
|
113
|
+
def batch_drop_documents(documents_array)
|
114
|
+
Arango::Document.batch_drop_documents(documents_array, collection: self)
|
115
|
+
end
|
116
|
+
alias delete_documents drop_documents
|
117
|
+
alias destroy_documents drop_documents
|
118
|
+
alias batch_delete_documents batch_drop_documents
|
119
|
+
alias batch_destroy_documents batch_drop_documents
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
module Arango
|
2
|
+
module Collection
|
3
|
+
module Edges
|
4
|
+
# === GRAPH ===
|
5
|
+
def graph=(graph)
|
6
|
+
satisfy_class?(graph, [Arango::Graph, NilClass])
|
7
|
+
if !graph.nil? && graph.database.name != @database.name
|
8
|
+
raise Arango::Error.new err: :database_graph_no_same_as_collection_database,
|
9
|
+
data: { graph_database_name: graph.database.name, collection_database_name: @database.name}
|
10
|
+
end
|
11
|
+
@graph = graph
|
12
|
+
end
|
13
|
+
alias assign_graph graph=
|
14
|
+
|
15
|
+
def vertex(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
16
|
+
if @type == :edge
|
17
|
+
raise Arango::Error.new err: :is_a_edge_collection, data: {type: @type}
|
18
|
+
end
|
19
|
+
if @graph.nil?
|
20
|
+
Arango::Document.new(name: name, body: body, rev: rev, collection: self)
|
21
|
+
else
|
22
|
+
Arango::Vertex.new(name: name, body: body, rev: rev, collection: self)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def edge(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
27
|
+
if @type == :document
|
28
|
+
raise Arango::Error.new err: :is_a_document_collection, data: {type: @type}
|
29
|
+
end
|
30
|
+
if @graph.nil?
|
31
|
+
Arango::Document.new(name: name, body: body, rev: rev, collection: self)
|
32
|
+
else
|
33
|
+
Arango::Edge.new(name: name, body: body, rev: rev, from: from, to: to,
|
34
|
+
collection: self)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def edge_exist?
|
39
|
+
|
40
|
+
end
|
41
|
+
alias edge_exists? edge_exist?
|
42
|
+
|
43
|
+
def edge(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
44
|
+
Arango::Document.new(name: name, collection: self, body: body, rev: rev,
|
45
|
+
from: from, to: to)
|
46
|
+
end
|
47
|
+
|
48
|
+
def edges(type: "edge") # "path", "id", "key"
|
49
|
+
@return_edge = false
|
50
|
+
if type == "edge"
|
51
|
+
@return_edge = true
|
52
|
+
type = "key"
|
53
|
+
end
|
54
|
+
satisfy_category?(type, %w[path id key edge])
|
55
|
+
body = { type: type, collection: @name }
|
56
|
+
result = @database.request("PUT", "_api/simple/all-keys", body: body)
|
57
|
+
|
58
|
+
@has_more_simple = result[:hasMore]
|
59
|
+
@id_simple = result[:id]
|
60
|
+
return result if return_directly?(result)
|
61
|
+
return result[:result] unless @return_edge
|
62
|
+
if @return_edge
|
63
|
+
result[:result].map{|key| Arango::Document.new(name: key, collection: self)}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def insert_edge
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
def insert_edges
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
def replace_edge
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
def replace_edges(edge: {}, wait_for_sync: nil, ignore_revs: nil,
|
80
|
+
return_old: nil, return_new: nil)
|
81
|
+
edge.each{|x| x = x.body if x.is_a?(Arango::Document)}
|
82
|
+
query = {
|
83
|
+
waitForSync: wait_for_sync,
|
84
|
+
returnNew: return_new,
|
85
|
+
returnOld: return_old,
|
86
|
+
ignoreRevs: ignore_revs
|
87
|
+
}
|
88
|
+
result = @database.request("PUT", "_api/edge/#{@name}", body: edge,
|
89
|
+
query: query)
|
90
|
+
return results if return_directly?(result)
|
91
|
+
results.map.with_index do |result, index|
|
92
|
+
body2 = result.clone
|
93
|
+
if return_new == true
|
94
|
+
body2.delete(:new)
|
95
|
+
body2 = body2.merge(result[:new])
|
96
|
+
end
|
97
|
+
real_body = edge[index]
|
98
|
+
real_body = real_body.merge(body2)
|
99
|
+
Arango::Document.new(name: result[:_key], collection: self, body: real_body)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def update_edge
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def update_edges(edge: {}, wait_for_sync: nil, ignore_revs: nil,
|
108
|
+
return_old: nil, return_new: nil, keep_null: nil, merge_objects: nil)
|
109
|
+
edge.each{|x| x = x.body if x.is_a?(Arango::Document)}
|
110
|
+
query = {
|
111
|
+
waitForSync: wait_for_sync,
|
112
|
+
returnNew: return_new,
|
113
|
+
returnOld: return_old,
|
114
|
+
ignoreRevs: ignore_revs,
|
115
|
+
keepNull: keep_null,
|
116
|
+
mergeObject: merge_objects
|
117
|
+
}
|
118
|
+
result = @database.request("PATCH", "_api/edge/#{@name}", body: edge,
|
119
|
+
query: query, keep_null: keep_null)
|
120
|
+
return results if return_directly?(result)
|
121
|
+
results.map.with_index do |result, index|
|
122
|
+
body2 = result.clone
|
123
|
+
if return_new
|
124
|
+
body2.delete(:new)
|
125
|
+
body2 = body2.merge(result[:new])
|
126
|
+
end
|
127
|
+
real_body = edge[index]
|
128
|
+
real_body = real_body.merge(body2)
|
129
|
+
Arango::Document.new(name: result[:_key], collection: self,
|
130
|
+
body: real_body)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def destroy_edge
|
135
|
+
|
136
|
+
end
|
137
|
+
def destroy_edges(edge: {}, wait_for_sync: nil, return_old: nil,
|
138
|
+
ignore_revs: nil)
|
139
|
+
edge.each{|x| x = x.body if x.is_a?(Arango::Document)}
|
140
|
+
query = {
|
141
|
+
waitForSync: wait_for_sync,
|
142
|
+
returnOld: return_old,
|
143
|
+
ignoreRevs: ignore_revs
|
144
|
+
}
|
145
|
+
@database.request("DELETE", "_api/edge/#{@id}", query: query, body: edge)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Arango
|
2
|
+
class Collection
|
3
|
+
module Importing
|
4
|
+
# === IMPORT ===
|
5
|
+
|
6
|
+
def import_documents
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
## maybe not
|
11
|
+
def import(attributes:, values:, fromPrefix: nil,
|
12
|
+
toPrefix: nil, overwrite: nil, wait_for_sync: nil,
|
13
|
+
onDuplicate: nil, complete: nil, details: nil)
|
14
|
+
satisfy_category?(onDuplicate, [nil, "error", "update", "replace", "ignore"])
|
15
|
+
satisfy_category?(overwrite, [nil, "yes", "true", true])
|
16
|
+
satisfy_category?(complete, [nil, "yes", "true", true])
|
17
|
+
satisfy_category?(details, [nil, "yes", "true", true])
|
18
|
+
query = {
|
19
|
+
collection: @name,
|
20
|
+
fromPrefix: fromPrefix,
|
21
|
+
toPrefix: toPrefix,
|
22
|
+
overwrite: overwrite,
|
23
|
+
waitForSync: wait_for_sync,
|
24
|
+
onDuplicate: onDuplicate,
|
25
|
+
complete: complete,
|
26
|
+
details: details
|
27
|
+
}
|
28
|
+
body = "#{attributes}\n"
|
29
|
+
values[0].is_a?(Array) ? values.each{|x| body += "#{x}\n"} : body += "#{values}\n"
|
30
|
+
@database.request("POST", "_api/import", query: query, body: body)
|
31
|
+
end
|
32
|
+
|
33
|
+
def import_json(body:, type: "auto", fromPrefix: nil,
|
34
|
+
toPrefix: nil, overwrite: nil, wait_for_sync: nil,
|
35
|
+
onDuplicate: nil, complete: nil, details: nil)
|
36
|
+
satisfy_category?(type, %w[auto list documents])
|
37
|
+
satisfy_category?(onDuplicate, [nil, "error", "update", "replace", "ignore"])
|
38
|
+
satisfy_category?(overwrite, [nil, "yes", "true", true])
|
39
|
+
satisfy_category?(complete, [nil, "yes", "true", true])
|
40
|
+
satisfy_category?(details, [nil, "yes", "true", true])
|
41
|
+
query = {
|
42
|
+
collection: @name,
|
43
|
+
type: type,
|
44
|
+
fromPrefix: fromPrefix,
|
45
|
+
toPrefix: toPrefix,
|
46
|
+
overwrite: overwrite,
|
47
|
+
waitForSync: wait_for_sync,
|
48
|
+
onDuplicate: onDuplicate,
|
49
|
+
complete: complete,
|
50
|
+
details: details
|
51
|
+
}
|
52
|
+
@database.request("POST", "_api/import", query: query,
|
53
|
+
body: body)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Arango
|
2
|
+
class Collection
|
3
|
+
module Indexes
|
4
|
+
# === INDEXES ===
|
5
|
+
|
6
|
+
def ensure_hash_index
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def ensure_skip_list_index
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def ensure_geo_index
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def ensure_fulltext_index
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def ensure_persistent_index
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def ensure_ttl_index
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def index(body: {}, id: nil, type: "hash", unique: nil, fields:,
|
31
|
+
sparse: nil, geoJson: nil, minLength: nil, deduplicate: nil)
|
32
|
+
Arango::Index.new(collection: self, body: body, id: id, type: type,
|
33
|
+
unique: unique, fields: fields, sparse: sparse, geo_json: geoJson,
|
34
|
+
min_length: minLength, deduplicate: deduplicate)
|
35
|
+
end
|
36
|
+
|
37
|
+
def indexes
|
38
|
+
query = { collection: @name }
|
39
|
+
result = @database.request("GET", "_api/index", query: query)
|
40
|
+
return result if return_directly?(result)
|
41
|
+
result[:indexes].map do |x|
|
42
|
+
Arango::Index.new(body: x, id: x[:id], collection: self,
|
43
|
+
type: x[:type], unique: x[:unique], fields: x[:fields],
|
44
|
+
sparse: x[:sparse])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def delete_index
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Arango
|
2
|
+
class Collection
|
3
|
+
module Replication
|
4
|
+
# === REPLICATION ===
|
5
|
+
|
6
|
+
def data(batchId:, from: nil, to: nil, chunkSize: nil,
|
7
|
+
includeSystem: nil, failOnUnknown: nil, ticks: nil, flush: nil)
|
8
|
+
query = {
|
9
|
+
collection: @name,
|
10
|
+
batchId: batchId,
|
11
|
+
from: from,
|
12
|
+
to: to,
|
13
|
+
chunkSize: chunkSize,
|
14
|
+
includeSystem: includeSystem,
|
15
|
+
failOnUnknown: failOnUnknown,
|
16
|
+
ticks: ticks,
|
17
|
+
flush: flush
|
18
|
+
}
|
19
|
+
@database.request("GET", "_api/replication/dump", query: query)
|
20
|
+
end
|
21
|
+
alias dump data
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Arango
|
2
|
+
class Collection
|
3
|
+
module User
|
4
|
+
# === USER ACCESS ===
|
5
|
+
|
6
|
+
def check_user(user)
|
7
|
+
user = Arango::User.new(user: user) if user.is_a?(String)
|
8
|
+
return user
|
9
|
+
end
|
10
|
+
private :check_user
|
11
|
+
|
12
|
+
def add_user_access(grant:, user:)
|
13
|
+
user = check_user(user)
|
14
|
+
user.add_collection_access(grant: grant, database: @database.name, collection: @name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def revoke_user_access(user:)
|
18
|
+
user = check_user(user)
|
19
|
+
user.clear_collection_access(database: @database.name, collection: @name)
|
20
|
+
end
|
21
|
+
|
22
|
+
def user_access(user:)
|
23
|
+
user = check_user(user)
|
24
|
+
user.collection_access(database: @database.name, collection: @name)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Arango
|
2
|
+
class Cursor
|
3
|
+
def has_next?
|
4
|
+
|
5
|
+
end
|
6
|
+
|
7
|
+
def next
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
def first
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def each
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def map
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def filter
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def any_match?
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def all_match?
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def none_match?
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def inject
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def remaining_as_list
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
def all_count
|
48
|
+
# get_count
|
49
|
+
end
|
50
|
+
|
51
|
+
def count
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def stats
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
def warnings
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
def is_cached?
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|