botch 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/lib/botch/base.rb +8 -14
- data/lib/botch/main.rb +30 -0
- data/lib/botch/version.rb +1 -1
- data/spec/delegator_spec.rb +50 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eff678a7305dfcfc0c931cce263e2b35448b8468
|
4
|
+
data.tar.gz: 2a6c7ac9038ec3eed13797de421741514b918ea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e4776acf3a3fe5023b784e2b4eaa902b469827e677c9c4aadd6752f374074d51fd115029c8bcbcd0b070681f591745e9d5b8ab690e1c7ca5505be1990b88c29
|
7
|
+
data.tar.gz: a0465a209cd8fb5199906871144d49ed593fc9de2849f9012737e0b2598ba56999988dba45beacbf270b84278c22c0a98810b74c8ce5c2028a26ab5b0a1e811e
|
data/README.md
CHANGED
data/lib/botch/base.rb
CHANGED
@@ -18,8 +18,7 @@ module Botch
|
|
18
18
|
|
19
19
|
def add(label, options = {}, &block)
|
20
20
|
raise ArgumentError unless block_given?
|
21
|
-
if
|
22
|
-
route = @routes[position]
|
21
|
+
if route = exists?(label)
|
23
22
|
route[:block] = block
|
24
23
|
route[:label] = label
|
25
24
|
else
|
@@ -34,14 +33,10 @@ module Botch
|
|
34
33
|
end
|
35
34
|
|
36
35
|
def exist?(label)
|
37
|
-
|
36
|
+
@routes.find{ |route| route[:label] == label }
|
38
37
|
end
|
39
38
|
|
40
|
-
alias
|
41
|
-
|
42
|
-
def index(label)
|
43
|
-
@routes.index{ |route| route[:label] === label }
|
44
|
-
end
|
39
|
+
alias exists? exist?
|
45
40
|
|
46
41
|
def inject(url)
|
47
42
|
@routes.inject([]) do |result, route|
|
@@ -122,9 +117,9 @@ module Botch
|
|
122
117
|
route(:rule, label, options, &block)
|
123
118
|
end
|
124
119
|
|
125
|
-
def generate_wrapper(&
|
126
|
-
|
127
|
-
|
120
|
+
def generate_wrapper(&block)
|
121
|
+
block.arity != 0 ? proc {|args| block.call(*args) } :
|
122
|
+
proc {|args| block.call }
|
128
123
|
end
|
129
124
|
|
130
125
|
def generate_method(method_name, &block)
|
@@ -153,8 +148,7 @@ module Botch
|
|
153
148
|
end
|
154
149
|
|
155
150
|
def request(method, *urls, &block)
|
156
|
-
|
157
|
-
set_default_options unless self.client
|
151
|
+
set_default_options unless self.client
|
158
152
|
raise ArgumentError unless self.client.respond_to?(method)
|
159
153
|
|
160
154
|
block = generate_main_block(&block) if block_given?
|
@@ -189,7 +183,7 @@ module Botch
|
|
189
183
|
def get(*urls, &block); request(:get, *urls, &block); end
|
190
184
|
def post(*urls, &block); request(:post, *urls, &block); end
|
191
185
|
|
192
|
-
alias
|
186
|
+
alias run get
|
193
187
|
|
194
188
|
def client=(name)
|
195
189
|
@client = Client.const_get("#{name.to_s.capitalize}Client").new(settings) if clients.include?(name)
|
data/lib/botch/main.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'botch'
|
2
|
+
|
3
|
+
module Botch
|
4
|
+
module Delegator
|
5
|
+
class << self
|
6
|
+
def delegate(*methods)
|
7
|
+
methods.each do |method_name|
|
8
|
+
define_method(method_name) do |*args, &block|
|
9
|
+
Delegator.target.send(method_name, *args, &block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def target
|
15
|
+
@target ||= Main
|
16
|
+
end
|
17
|
+
|
18
|
+
def target=(klass)
|
19
|
+
@target = klass
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
delegate :filter, :get, :helpers, :options, :post, :reset,
|
24
|
+
:request, :rule, :run, :set, :settings
|
25
|
+
end
|
26
|
+
|
27
|
+
class Main < Base; end
|
28
|
+
end
|
29
|
+
|
30
|
+
extend Botch::Delegator
|
data/lib/botch/version.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
require 'spec_helper'
|
3
|
+
require File.expand_path("../../lib/botch/main", __FILE__)
|
4
|
+
|
5
|
+
|
6
|
+
class DelegatorTest
|
7
|
+
class Dummy
|
8
|
+
attr_reader :result
|
9
|
+
|
10
|
+
def method_missing(*args, &block)
|
11
|
+
@result = args
|
12
|
+
@result << block if block_given?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.delegate_test(*args)
|
17
|
+
args.each do |name|
|
18
|
+
describe "delegate #{name}" do
|
19
|
+
before(:all) { @fake = Botch::Fake.new }
|
20
|
+
|
21
|
+
it "#{name}" do
|
22
|
+
result = DelegatorTest.dummy { send(name) }.result
|
23
|
+
expect(result).to eq([name])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "#{name} with arguments" do
|
27
|
+
fake = @fake
|
28
|
+
result = DelegatorTest.dummy { send(name, fake.url) }.result
|
29
|
+
expect(result).to eq([name, "http://example.com/"])
|
30
|
+
end
|
31
|
+
|
32
|
+
it "#{name} with block" do
|
33
|
+
fake, block = @fake, proc {}
|
34
|
+
result = DelegatorTest.dummy { send(name, fake.url, &block) }.result
|
35
|
+
expect(result).to eq([name, "http://example.com/", block])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.dummy(&block)
|
42
|
+
dummy = Dummy.new
|
43
|
+
Botch::Delegator.target = dummy
|
44
|
+
Object.new.extend(Botch::Delegator).instance_eval(&block)
|
45
|
+
Botch::Delegator.target
|
46
|
+
end
|
47
|
+
|
48
|
+
delegate_test :filter, :get, :helpers, :options, :post, :reset,
|
49
|
+
:request, :rule, :run, :set, :settings
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: botch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- namusyaka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -96,8 +96,10 @@ files:
|
|
96
96
|
- lib/botch/clients/abstract_client.rb
|
97
97
|
- lib/botch/clients/faraday_client.rb
|
98
98
|
- lib/botch/clients/mechanize_client.rb
|
99
|
+
- lib/botch/main.rb
|
99
100
|
- lib/botch/version.rb
|
100
101
|
- spec/botch_spec.rb
|
102
|
+
- spec/delegator_spec.rb
|
101
103
|
- spec/faraday_spec.rb
|
102
104
|
- spec/filter_spec.rb
|
103
105
|
- spec/mechanize_spec.rb
|
@@ -128,6 +130,7 @@ specification_version: 4
|
|
128
130
|
summary: A DSL for web clawler.
|
129
131
|
test_files:
|
130
132
|
- spec/botch_spec.rb
|
133
|
+
- spec/delegator_spec.rb
|
131
134
|
- spec/faraday_spec.rb
|
132
135
|
- spec/filter_spec.rb
|
133
136
|
- spec/mechanize_spec.rb
|