ruremai 0.0.2 → 0.0.3
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/README.md +5 -1
- data/Rakefile +5 -0
- data/lib/ruremai/ext/object.rb +13 -0
- data/lib/ruremai/locator/rurema.rb +18 -8
- data/lib/ruremai/locator.rb +14 -8
- data/lib/ruremai/mean.rb +11 -0
- data/lib/ruremai/version.rb +1 -1
- data/lib/ruremai.rb +2 -0
- data/ruremai.gemspec +1 -0
- data/spec/locator/rurema_spec.rb +33 -0
- data/spec/spec_helper.rb +8 -0
- metadata +25 -3
data/README.md
CHANGED
@@ -22,12 +22,16 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
+
Method#rurema!:
|
26
|
+
|
25
27
|
```ruby
|
26
28
|
Object.method(:name).rurema!
|
27
29
|
```
|
28
30
|
|
31
|
+
Object#mean? (shortcut):
|
32
|
+
|
29
33
|
```ruby
|
30
|
-
|
34
|
+
Object.mean?.name
|
31
35
|
```
|
32
36
|
|
33
37
|
## TODO
|
data/Rakefile
CHANGED
@@ -1,22 +1,32 @@
|
|
1
1
|
module Ruremai
|
2
2
|
module Locator
|
3
|
-
|
4
|
-
class Ja <
|
5
|
-
private
|
6
|
-
|
3
|
+
class Rurema < Base
|
4
|
+
class Ja < Rurema
|
7
5
|
def uri_base
|
8
6
|
'http://doc.ruby-lang.org/ja/'
|
9
7
|
end
|
10
8
|
|
11
9
|
def candidates
|
12
|
-
uri_part = [RUBY_VERSION, 'method',
|
13
|
-
method_name =
|
10
|
+
uri_part = [RUBY_VERSION, 'method', escape(method_owner)].join('/')
|
11
|
+
method_name = escape(name.to_s)
|
12
|
+
types =
|
13
|
+
if receiver.is_a?(Module)
|
14
|
+
%w(s m i)
|
15
|
+
else
|
16
|
+
%w(i m s)
|
17
|
+
end
|
14
18
|
|
15
|
-
|
16
|
-
URI.parse("#{uri_base}
|
19
|
+
types.map {|type|
|
20
|
+
URI.parse("#{uri_base}#{uri_part}/#{type}/#{method_name}.html")
|
17
21
|
}
|
18
22
|
end
|
19
23
|
end
|
24
|
+
|
25
|
+
def escape(str)
|
26
|
+
CGI.escape(str).gsub(/(%[\dA-Z]{2})/) {|s|
|
27
|
+
%(=#{s[1..-1].downcase})
|
28
|
+
}
|
29
|
+
end
|
20
30
|
end
|
21
31
|
end
|
22
32
|
end
|
data/lib/ruremai/locator.rb
CHANGED
@@ -9,36 +9,42 @@ module Ruremai
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
attr_reader :name, :owner
|
12
|
+
attr_reader :name, :receiver, :owner
|
13
13
|
|
14
14
|
def initialize(method)
|
15
|
-
@method
|
16
|
-
@name
|
17
|
-
@
|
15
|
+
@method = method
|
16
|
+
@name = method.name
|
17
|
+
@receiver = method.receiver
|
18
|
+
@owner = method.owner
|
18
19
|
end
|
19
20
|
|
20
21
|
def located
|
21
22
|
candidates.detect {|uri| exist?(uri) }
|
22
23
|
end
|
23
24
|
|
24
|
-
private
|
25
|
-
|
26
25
|
def candidates
|
27
26
|
[]
|
28
27
|
end
|
29
28
|
|
29
|
+
private
|
30
|
+
|
30
31
|
def exist?(uri)
|
31
32
|
Net::HTTP.start(uri.host, uri.port) {|http|
|
32
33
|
response = http.head(uri.path)
|
33
34
|
|
34
|
-
case response
|
35
|
-
when
|
35
|
+
case response
|
36
|
+
when Net::HTTPSuccess, Net::HTTPRedirection
|
36
37
|
true
|
37
38
|
else
|
38
39
|
false
|
39
40
|
end
|
40
41
|
}
|
41
42
|
end
|
43
|
+
|
44
|
+
# XXX can't care singleton method
|
45
|
+
def method_owner
|
46
|
+
owner.name ? owner.name : receiver.name
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
44
50
|
end
|
data/lib/ruremai/mean.rb
ADDED
data/lib/ruremai/version.rb
CHANGED
data/lib/ruremai.rb
CHANGED
@@ -4,9 +4,11 @@ require 'net/http'
|
|
4
4
|
require 'launchy'
|
5
5
|
require 'ruremai/version'
|
6
6
|
require 'ruremai/ext/method'
|
7
|
+
require 'ruremai/ext/object'
|
7
8
|
|
8
9
|
module Ruremai
|
9
10
|
autoload :Locator, 'ruremai/locator'
|
11
|
+
autoload :Mean, 'ruremai/mean'
|
10
12
|
|
11
13
|
class NoReferenceManualFound < StandardError; end
|
12
14
|
|
data/ruremai.gemspec
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ruremai::Locator::Rurema::Ja do
|
4
|
+
describe '#candidates' do
|
5
|
+
let(:locator) { Ruremai::Locator::Rurema::Ja.new(target) }
|
6
|
+
|
7
|
+
subject { locator.candidates.map(&:to_s) }
|
8
|
+
|
9
|
+
context 'CamelCase method' do
|
10
|
+
let(:target) { method(:Integer) }
|
11
|
+
|
12
|
+
it { should include %(http://doc.ruby-lang.org/ja/1.9.3/method/Kernel/m/Integer.html) }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'query method' do
|
16
|
+
let(:target) { nil.method(:nil?) }
|
17
|
+
|
18
|
+
it { should include %(http://doc.ruby-lang.org/ja/#{RUBY_VERSION}/method/NilClass/i/nil=3f.html) }
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'space ship operator' do
|
22
|
+
let(:target) { 0.method(:<=>) }
|
23
|
+
|
24
|
+
it { should include %(http://doc.ruby-lang.org/ja/#{RUBY_VERSION}/method/Fixnum/i/=3c=3d=3e.html) }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'nested class' do
|
28
|
+
let(:target) { Net::HTTP.method(:new) }
|
29
|
+
|
30
|
+
it { should include 'http://doc.ruby-lang.org/ja/1.9.3/method/Net=3a=3aHTTP/s/new.html' }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruremai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: launchy
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: 1.3.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.10.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.10.0
|
46
62
|
description: Object.method(:name).rurema!
|
47
63
|
email:
|
48
64
|
- celluloid.key@gmail.com
|
@@ -57,10 +73,14 @@ files:
|
|
57
73
|
- Rakefile
|
58
74
|
- lib/ruremai.rb
|
59
75
|
- lib/ruremai/ext/method.rb
|
76
|
+
- lib/ruremai/ext/object.rb
|
60
77
|
- lib/ruremai/locator.rb
|
61
78
|
- lib/ruremai/locator/rurema.rb
|
79
|
+
- lib/ruremai/mean.rb
|
62
80
|
- lib/ruremai/version.rb
|
63
81
|
- ruremai.gemspec
|
82
|
+
- spec/locator/rurema_spec.rb
|
83
|
+
- spec/spec_helper.rb
|
64
84
|
homepage: https://github.com/hibariya/ruremai
|
65
85
|
licenses: []
|
66
86
|
post_install_message:
|
@@ -85,4 +105,6 @@ rubygems_version: 1.8.23
|
|
85
105
|
signing_key:
|
86
106
|
specification_version: 3
|
87
107
|
summary: Open ruby reference manual by browser.
|
88
|
-
test_files:
|
108
|
+
test_files:
|
109
|
+
- spec/locator/rurema_spec.rb
|
110
|
+
- spec/spec_helper.rb
|