ruby-aws 1.7.1 → 1.7.2
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.md +5 -0
- data/Manifest.txt +0 -28
- data/Rakefile +3 -4
- data/lib/ruby-aws.rb +2 -1
- data/lib/ruby-aws/version.rb +2 -2
- metadata +7 -49
- metadata.gz.sig +0 -0
- data/lib/amazon/util.rb +0 -10
- data/lib/amazon/util/binder.rb +0 -48
- data/lib/amazon/util/data_reader.rb +0 -169
- data/lib/amazon/util/filter_chain.rb +0 -79
- data/lib/amazon/util/hash_nesting.rb +0 -93
- data/lib/amazon/util/lazy_results.rb +0 -59
- data/lib/amazon/util/logging.rb +0 -23
- data/lib/amazon/util/paginated_iterator.rb +0 -70
- data/lib/amazon/util/proactive_results.rb +0 -116
- data/lib/amazon/util/threadpool.rb +0 -129
- data/lib/amazon/util/user_data_store.rb +0 -100
- data/lib/amazon/webservices/mechanical_turk.rb +0 -123
- data/lib/amazon/webservices/mechanical_turk_requester.rb +0 -285
- data/lib/amazon/webservices/mturk/mechanical_turk_error_handler.rb +0 -153
- data/lib/amazon/webservices/mturk/question_generator.rb +0 -58
- data/lib/amazon/webservices/util/amazon_authentication_relay.rb +0 -72
- data/lib/amazon/webservices/util/command_line.rb +0 -157
- data/lib/amazon/webservices/util/convenience_wrapper.rb +0 -90
- data/lib/amazon/webservices/util/filter_proxy.rb +0 -45
- data/lib/amazon/webservices/util/mock_transport.rb +0 -70
- data/lib/amazon/webservices/util/request_signer.rb +0 -42
- data/lib/amazon/webservices/util/rest_transport.rb +0 -120
- data/lib/amazon/webservices/util/soap_simplifier.rb +0 -48
- data/lib/amazon/webservices/util/soap_transport.rb +0 -20
- data/lib/amazon/webservices/util/soap_transport_header_handler.rb +0 -27
- data/lib/amazon/webservices/util/unknown_result_exception.rb +0 -27
- data/lib/amazon/webservices/util/validation_exception.rb +0 -55
- data/lib/amazon/webservices/util/xml_simplifier.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c6aaad8789ddc40a7fdd1e7a1b0e580f92906a2
|
4
|
+
data.tar.gz: b31a187c9f7ae32ef27694dc0fd1ce692e0cf8ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59b97519cafe92afabc0ecb129e82351dca107e2e88f354e4e25a3da2516059be5bc1dc56a73234b6a15ef6effdc11a1b8b275faca0faa4eb351066c3c2bf8ee
|
7
|
+
data.tar.gz: d5af3916c8b0924fd868367bf99805a6c91de66954e81f7094e05be1d58f461ef5afb04cd8ea8ad6cab19ecdde5b38eaf2d53c85f2b03b1eb3d1163f40029318
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.md
CHANGED
data/Manifest.txt
CHANGED
@@ -5,34 +5,6 @@ NOTICE.txt
|
|
5
5
|
README.md
|
6
6
|
Rakefile
|
7
7
|
bin/ruby-aws
|
8
|
-
lib/amazon/util.rb
|
9
|
-
lib/amazon/util/binder.rb
|
10
|
-
lib/amazon/util/data_reader.rb
|
11
|
-
lib/amazon/util/filter_chain.rb
|
12
|
-
lib/amazon/util/hash_nesting.rb
|
13
|
-
lib/amazon/util/lazy_results.rb
|
14
|
-
lib/amazon/util/logging.rb
|
15
|
-
lib/amazon/util/paginated_iterator.rb
|
16
|
-
lib/amazon/util/proactive_results.rb
|
17
|
-
lib/amazon/util/threadpool.rb
|
18
|
-
lib/amazon/util/user_data_store.rb
|
19
|
-
lib/amazon/webservices/mechanical_turk.rb
|
20
|
-
lib/amazon/webservices/mechanical_turk_requester.rb
|
21
|
-
lib/amazon/webservices/mturk/mechanical_turk_error_handler.rb
|
22
|
-
lib/amazon/webservices/mturk/question_generator.rb
|
23
|
-
lib/amazon/webservices/util/amazon_authentication_relay.rb
|
24
|
-
lib/amazon/webservices/util/command_line.rb
|
25
|
-
lib/amazon/webservices/util/convenience_wrapper.rb
|
26
|
-
lib/amazon/webservices/util/filter_proxy.rb
|
27
|
-
lib/amazon/webservices/util/mock_transport.rb
|
28
|
-
lib/amazon/webservices/util/request_signer.rb
|
29
|
-
lib/amazon/webservices/util/rest_transport.rb
|
30
|
-
lib/amazon/webservices/util/soap_simplifier.rb
|
31
|
-
lib/amazon/webservices/util/soap_transport.rb
|
32
|
-
lib/amazon/webservices/util/soap_transport_header_handler.rb
|
33
|
-
lib/amazon/webservices/util/unknown_result_exception.rb
|
34
|
-
lib/amazon/webservices/util/validation_exception.rb
|
35
|
-
lib/amazon/webservices/util/xml_simplifier.rb
|
36
8
|
lib/ruby-aws.rb
|
37
9
|
lib/ruby-aws/version.rb
|
38
10
|
run_rcov.sh
|
data/Rakefile
CHANGED
@@ -8,12 +8,11 @@ Hoe.spec 'ruby-aws' do
|
|
8
8
|
self.version = RubyAWS::VERSION.dup
|
9
9
|
developer 'David J Parrott', 'valthon@nothlav.net'
|
10
10
|
license 'APLv2'
|
11
|
-
extra_deps << ['
|
12
|
-
extra_deps << ['nokogiri','>= 1.4']
|
11
|
+
extra_deps << ['mturk', '>= 1.8.0']
|
13
12
|
need_tar
|
14
13
|
need_zip
|
15
14
|
|
16
|
-
self.summary = '
|
15
|
+
self.summary = 'Deprecated - please use the mturk gem'
|
17
16
|
self.email = 'ruby-aws-develop@rubyforge.org'
|
18
17
|
self.urls = ["http://rubyforge.org/projects/ruby-aws/"]
|
19
18
|
end
|
@@ -21,7 +20,7 @@ end
|
|
21
20
|
task :gitversion do
|
22
21
|
gv = `git describe --dirty`.chomp.gsub(/^v/,'').gsub('-','.')
|
23
22
|
File.open('lib/ruby-aws/version.rb', File::WRONLY | File::CREAT | File::TRUNC ) do |f|
|
24
|
-
f << "# Copyright:: Copyright (c) 2007-
|
23
|
+
f << "# Copyright:: Copyright (c) 2007-2015 Amazon Technologies, Inc.\n"
|
25
24
|
f << "# License:: Apache License, Version 2.0\n"
|
26
25
|
f << "\n"
|
27
26
|
f << "module RubyAWS\n"
|
data/lib/ruby-aws.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
2
|
# License:: Apache License, Version 2.0
|
3
3
|
|
4
|
+
puts 'DEPRECATION WARNING: This gem (ruby-aws) is has been replaced by the "mturk" gem.'
|
4
5
|
require 'ruby-aws/version'
|
5
6
|
|
6
7
|
module RubyAWS
|
@@ -16,4 +17,4 @@ module RubyAWS
|
|
16
17
|
|
17
18
|
end
|
18
19
|
|
19
|
-
require '
|
20
|
+
require 'mturk'
|
data/lib/ruby-aws/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David J Parrott
|
@@ -29,36 +29,22 @@ cert_chain:
|
|
29
29
|
tlC13CXjOWGW+hn+n/swny4LFXOus/qZixxiMAePSmN3QUC+bl/GvdBqZz0uPmQc
|
30
30
|
QRVpdW2BFol3aw2mXmdYxaOwHvTxcB7DHmkfOf2h
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2015-02-17 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: mturk
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.8.0
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: nokogiri
|
50
|
-
requirement: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.4'
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.4'
|
47
|
+
version: 1.8.0
|
62
48
|
- !ruby/object:Gem::Dependency
|
63
49
|
name: rdoc
|
64
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,34 +101,6 @@ files:
|
|
115
101
|
- README.md
|
116
102
|
- Rakefile
|
117
103
|
- bin/ruby-aws
|
118
|
-
- lib/amazon/util.rb
|
119
|
-
- lib/amazon/util/binder.rb
|
120
|
-
- lib/amazon/util/data_reader.rb
|
121
|
-
- lib/amazon/util/filter_chain.rb
|
122
|
-
- lib/amazon/util/hash_nesting.rb
|
123
|
-
- lib/amazon/util/lazy_results.rb
|
124
|
-
- lib/amazon/util/logging.rb
|
125
|
-
- lib/amazon/util/paginated_iterator.rb
|
126
|
-
- lib/amazon/util/proactive_results.rb
|
127
|
-
- lib/amazon/util/threadpool.rb
|
128
|
-
- lib/amazon/util/user_data_store.rb
|
129
|
-
- lib/amazon/webservices/mechanical_turk.rb
|
130
|
-
- lib/amazon/webservices/mechanical_turk_requester.rb
|
131
|
-
- lib/amazon/webservices/mturk/mechanical_turk_error_handler.rb
|
132
|
-
- lib/amazon/webservices/mturk/question_generator.rb
|
133
|
-
- lib/amazon/webservices/util/amazon_authentication_relay.rb
|
134
|
-
- lib/amazon/webservices/util/command_line.rb
|
135
|
-
- lib/amazon/webservices/util/convenience_wrapper.rb
|
136
|
-
- lib/amazon/webservices/util/filter_proxy.rb
|
137
|
-
- lib/amazon/webservices/util/mock_transport.rb
|
138
|
-
- lib/amazon/webservices/util/request_signer.rb
|
139
|
-
- lib/amazon/webservices/util/rest_transport.rb
|
140
|
-
- lib/amazon/webservices/util/soap_simplifier.rb
|
141
|
-
- lib/amazon/webservices/util/soap_transport.rb
|
142
|
-
- lib/amazon/webservices/util/soap_transport_header_handler.rb
|
143
|
-
- lib/amazon/webservices/util/unknown_result_exception.rb
|
144
|
-
- lib/amazon/webservices/util/validation_exception.rb
|
145
|
-
- lib/amazon/webservices/util/xml_simplifier.rb
|
146
104
|
- lib/ruby-aws.rb
|
147
105
|
- lib/ruby-aws/version.rb
|
148
106
|
- run_rcov.sh
|
@@ -202,10 +160,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
160
|
version: '0'
|
203
161
|
requirements: []
|
204
162
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.4.5
|
206
164
|
signing_key:
|
207
165
|
specification_version: 4
|
208
|
-
summary:
|
166
|
+
summary: Deprecated - please use the mturk gem
|
209
167
|
test_files:
|
210
168
|
- test/test_ruby-aws.rb
|
211
169
|
- test/unit/test_question_generator.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/amazon/util.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
|
4
|
-
require 'amazon/util/logging'
|
5
|
-
require 'amazon/util/paginated_iterator'
|
6
|
-
require 'amazon/util/lazy_results'
|
7
|
-
require 'amazon/util/proactive_results'
|
8
|
-
require 'amazon/util/binder'
|
9
|
-
require 'amazon/util/data_reader'
|
10
|
-
require 'amazon/util/threadpool'
|
data/lib/amazon/util/binder.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
|
4
|
-
require 'erb'
|
5
|
-
|
6
|
-
module Amazon
|
7
|
-
module Util
|
8
|
-
|
9
|
-
# Simple class for holding eval information
|
10
|
-
# useful for feeding to ERB templates and the like
|
11
|
-
class Binder
|
12
|
-
|
13
|
-
def initialize(initial={},&block) # :yields: self
|
14
|
-
initial.each {|k,v| set(k,v) }
|
15
|
-
yield self unless block.nil?
|
16
|
-
end
|
17
|
-
|
18
|
-
def merge(hash)
|
19
|
-
hash.each {|k,v| set(k,v) }
|
20
|
-
end
|
21
|
-
|
22
|
-
def set(k,v)
|
23
|
-
self.instance_variable_set "@#{k.to_s}", "#{v.to_s}"
|
24
|
-
end
|
25
|
-
|
26
|
-
def bind
|
27
|
-
binding
|
28
|
-
end
|
29
|
-
|
30
|
-
# Helper method to simplify ERB evaluation
|
31
|
-
def old_erb_eval( template )
|
32
|
-
buffer = ""
|
33
|
-
c = ERB::Compiler.new("")
|
34
|
-
c.put_cmd = "buffer <<" if c.respond_to? :put_cmd=
|
35
|
-
c.insert_cmd = "buffer <<" if c.respond_to? :insert_cmd=
|
36
|
-
compiled = c.compile template
|
37
|
-
eval compiled
|
38
|
-
return buffer
|
39
|
-
end
|
40
|
-
def erb_eval( template )
|
41
|
-
t = ERB.new template
|
42
|
-
return t.result(binding)
|
43
|
-
end
|
44
|
-
|
45
|
-
end # Binder
|
46
|
-
|
47
|
-
end # Amazon::Util
|
48
|
-
end # Amazon
|
@@ -1,169 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
|
4
|
-
require 'yaml'
|
5
|
-
require 'csv'
|
6
|
-
require 'amazon/util/hash_nesting'
|
7
|
-
|
8
|
-
module Amazon
|
9
|
-
module Util
|
10
|
-
|
11
|
-
# DataReader is a class for loading in data files. It is used to support bulk file-based operations.
|
12
|
-
# DataReader supports a number of different formats:
|
13
|
-
# * YAML
|
14
|
-
# * Tabular
|
15
|
-
# * CSV
|
16
|
-
# * Java Properties
|
17
|
-
# By default, DataReader assumes Tabular, but load and save both support your choice of format
|
18
|
-
class DataReader
|
19
|
-
|
20
|
-
attr_accessor :data
|
21
|
-
|
22
|
-
def initialize(data=[])
|
23
|
-
@data = data
|
24
|
-
end
|
25
|
-
|
26
|
-
def [](index)
|
27
|
-
return @data[index]
|
28
|
-
end
|
29
|
-
|
30
|
-
def []=(index)
|
31
|
-
return @data[index]
|
32
|
-
end
|
33
|
-
|
34
|
-
def load( filename, format=:Tabular )
|
35
|
-
return {} unless File.exist? filename
|
36
|
-
raw_data = File.read( filename )
|
37
|
-
case format
|
38
|
-
when :Tabular
|
39
|
-
@data = parse_csv( raw_data, "\t" )
|
40
|
-
when :YAML
|
41
|
-
@data = YAML.load( raw_data ) || {}
|
42
|
-
when :CSV
|
43
|
-
@data = parse_csv( raw_data )
|
44
|
-
when :Properties
|
45
|
-
@data = parse_properties( raw_data )
|
46
|
-
else
|
47
|
-
raise "invalid format. options are :Tabular, :YAML, :CSV, :Properties"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def save( filename, format=:Tabular, force_headers=false )
|
52
|
-
return if @data.nil? or @data.empty?
|
53
|
-
existing = File.exist?( filename ) && File.size( filename ) > 0
|
54
|
-
File.open( filename, 'a+' ) {|f|
|
55
|
-
f << case format
|
56
|
-
when :Tabular
|
57
|
-
generate_csv( @data, force_headers || !existing, "\t" )
|
58
|
-
when :YAML
|
59
|
-
YAML.dump( @data )
|
60
|
-
when :CSV
|
61
|
-
generate_csv( @data, force_headers || !existing )
|
62
|
-
when :Properties
|
63
|
-
generate_properties( @data )
|
64
|
-
end
|
65
|
-
f << "\n" # adding a newline on the end, so appending is happy
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.load( filename, format=:Tabular )
|
70
|
-
reader = DataReader.new()
|
71
|
-
reader.load( filename, format )
|
72
|
-
end
|
73
|
-
|
74
|
-
def self.save( filename, data, format=:Tabular, force_headers=false )
|
75
|
-
reader = DataReader.new( data )
|
76
|
-
reader.save( filename, format, force_headers )
|
77
|
-
end
|
78
|
-
|
79
|
-
private
|
80
|
-
|
81
|
-
def parse_csv( raw_data, delim=nil )
|
82
|
-
rows = nil
|
83
|
-
if CSV.const_defined? :Reader
|
84
|
-
rows = CSV.parse( raw_data, delim )
|
85
|
-
else
|
86
|
-
ops = {:row_sep => :auto}
|
87
|
-
ops[:col_sep] = delim unless delim.nil?
|
88
|
-
rows = CSV.parse( raw_data, ops )
|
89
|
-
end
|
90
|
-
return parse_rows( rows )
|
91
|
-
end
|
92
|
-
|
93
|
-
def parse_rows( rows )
|
94
|
-
processed = []
|
95
|
-
headers = rows.shift
|
96
|
-
for row in rows
|
97
|
-
item = {}
|
98
|
-
headers.each_index do |i|
|
99
|
-
item[headers[i].to_sym] = correct_type(row[i]) unless row[i].nil? or row[i].empty?
|
100
|
-
end
|
101
|
-
item.extend HashNesting
|
102
|
-
processed << item.unnest
|
103
|
-
end
|
104
|
-
return processed
|
105
|
-
end
|
106
|
-
|
107
|
-
def split_data( data )
|
108
|
-
data = data.collect {|d| d.extend(HashNesting).nest }
|
109
|
-
headers = data[0].keys.sort
|
110
|
-
rows = data.collect { |item|
|
111
|
-
row = []
|
112
|
-
item.keys.each {|k|
|
113
|
-
headers << k unless headers.include? k
|
114
|
-
index = headers.index k
|
115
|
-
row[index] = item[k].to_s
|
116
|
-
}
|
117
|
-
row
|
118
|
-
}
|
119
|
-
return headers, rows
|
120
|
-
end
|
121
|
-
|
122
|
-
def generate_csv( data, dump_header, delim=nil )
|
123
|
-
return "" if data.nil? or data.empty?
|
124
|
-
headers, rows = split_data( data )
|
125
|
-
return generate_rows( headers, rows, dump_header, delim )
|
126
|
-
end
|
127
|
-
|
128
|
-
def generate_rows( headers, rows, dump_header, record_seperator=nil )
|
129
|
-
rows.unshift headers if dump_header
|
130
|
-
buff = rows.collect { |row|
|
131
|
-
if CSV.const_defined? :Reader
|
132
|
-
CSV.generate_line( row, record_seperator )
|
133
|
-
else
|
134
|
-
ops = {:row_sep => ''}
|
135
|
-
ops[:col_sep] = record_seperator unless record_seperator.nil?
|
136
|
-
CSV.generate_line( row, ops )
|
137
|
-
end
|
138
|
-
}
|
139
|
-
return buff.join("\n")
|
140
|
-
end
|
141
|
-
|
142
|
-
def parse_properties( raw_data )
|
143
|
-
processed = {}
|
144
|
-
for line in raw_data.split(/\n\r?/)
|
145
|
-
next if line =~ /^\W*(#.*)?$/ # ignore lines beginning w/ comments
|
146
|
-
if md = /^([^:=]+)[=:](.*)/.match(line)
|
147
|
-
processed[md[1].strip] = correct_type(md[2].strip)
|
148
|
-
end
|
149
|
-
end
|
150
|
-
processed.extend HashNesting
|
151
|
-
return processed.unnest
|
152
|
-
end
|
153
|
-
|
154
|
-
def generate_properties( raw_data )
|
155
|
-
raw_data.extend HashNesting
|
156
|
-
(raw_data.nest.collect {|k,v| "#{k}:#{v}" }).join("\n")
|
157
|
-
end
|
158
|
-
|
159
|
-
# convert to integer if possible
|
160
|
-
def correct_type( str )
|
161
|
-
return str.to_f if str =~ /^\d+\.\d+$/ unless str =~ /^0\d/
|
162
|
-
return str.to_i if str =~ /^\d+$/ unless str =~ /^0\d/
|
163
|
-
return str
|
164
|
-
end
|
165
|
-
|
166
|
-
end # DataReader
|
167
|
-
|
168
|
-
end # Amazon::Util
|
169
|
-
end # Amazon
|
@@ -1,79 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (c) 2007 Amazon Technologies, Inc.
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
|
4
|
-
module Amazon
|
5
|
-
module Util
|
6
|
-
|
7
|
-
# A class for managing around style interceptors,
|
8
|
-
# which can be used to implement a decorator design pattern.
|
9
|
-
class FilterChain
|
10
|
-
|
11
|
-
class Filter
|
12
|
-
|
13
|
-
attr_reader :name, :filter_params, :filter_block
|
14
|
-
|
15
|
-
def initialize( name, filter_params, filter_block )
|
16
|
-
@name = name
|
17
|
-
@filter_params = filter_params
|
18
|
-
@filter_block = filter_block
|
19
|
-
end
|
20
|
-
|
21
|
-
def execute( chain, block_params )
|
22
|
-
@filter_block.call( chain, block_params, *@filter_params )
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
attr_reader :filters
|
28
|
-
|
29
|
-
def initialize()
|
30
|
-
@filters = []
|
31
|
-
end
|
32
|
-
|
33
|
-
def execute( *block_params, &block )
|
34
|
-
if @filters.size == 0
|
35
|
-
block.call( *block_params )
|
36
|
-
else
|
37
|
-
create_chain( @filters, 0, block, block_params ).call
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def add( name=nil, *filter_params, &filter_block )
|
42
|
-
add_filter( Filter.new( name, filter_params, filter_block ) )
|
43
|
-
end
|
44
|
-
|
45
|
-
def add_filter( filter )
|
46
|
-
if !filter.name.nil?
|
47
|
-
@filters.each_with_index { |existing_filter,i|
|
48
|
-
if filter.name == existing_filter.name
|
49
|
-
@filters[i] = filter
|
50
|
-
return
|
51
|
-
end
|
52
|
-
}
|
53
|
-
end
|
54
|
-
@filters << filter
|
55
|
-
end
|
56
|
-
|
57
|
-
def remove( name )
|
58
|
-
@filters.delete_if { |filter| name == filter.name }
|
59
|
-
end
|
60
|
-
|
61
|
-
def remove_all()
|
62
|
-
@filters.clear
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
def create_chain( filters, pos, block, block_params )
|
68
|
-
if pos >= filters.size
|
69
|
-
return proc{ block.call( *block_params ) }
|
70
|
-
else
|
71
|
-
chain = create_chain( filters, pos+1, block, block_params )
|
72
|
-
return proc { filters[pos].execute( chain, block_params ) }
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
end # Amazon::Util
|
79
|
-
end # Amazon
|