reditor 0.1.1 → 0.2.0
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/bin/reditor +3 -0
- data/lib/reditor/candidates_locator.rb +29 -21
- data/lib/reditor/command.rb +10 -6
- data/lib/reditor/library_locator.rb +3 -4
- data/lib/reditor/version.rb +1 -1
- data/reditor.gemspec +9 -5
- data/spec/command_spec.rb +3 -3
- data/spec/samples/blank_project/.gitkeep +0 -0
- metadata +82 -30
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 35bee5c62877ca050e26ad2d340b1db648ab3ee9
|
4
|
+
data.tar.gz: c54e40dde0e6f8fe6a6c60b040d02fe38f8fd247
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7096bb557e3cfe6aac7fc7632c5aa533cae42bddff69cafb1b4065cc7eea0f8750b3f75bf2ef2f51538d0fd8c06667973ff39c4e5a341d68624fd85f6b137381
|
7
|
+
data.tar.gz: a7e4cddc1c9701a4380ad1257e73d24829a3f08998e7bd775814e9ac36fdf162e235f9579022201f7ae94a520c4ecfdec308f6b999a42e83307af0dbbde3ba9d
|
data/bin/reditor
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require '
|
2
|
+
require 'hotwater'
|
3
3
|
|
4
4
|
module Reditor
|
5
5
|
class CandidatesLocator
|
@@ -7,38 +7,46 @@ module Reditor
|
|
7
7
|
new(keyword.to_s).detect
|
8
8
|
end
|
9
9
|
|
10
|
-
attr_reader :
|
10
|
+
attr_reader :keyword, :limit
|
11
11
|
|
12
|
-
def initialize(keyword)
|
13
|
-
|
14
|
-
keyword.length > 4 ? keyword[0...-3] : keyword
|
15
|
-
}
|
16
|
-
|
17
|
-
@pattern = /#{tokens.map {|t| Regexp.quote(t) }.join('|')}/i
|
12
|
+
def initialize(keyword, limit = 20)
|
13
|
+
@keyword, @limit = keyword, limit
|
18
14
|
end
|
19
15
|
|
20
16
|
def detect
|
21
|
-
|
17
|
+
available_libraries.sort_by {|name|
|
18
|
+
Hotwater.damerau_levenshtein_distance(@keyword, name)
|
19
|
+
}.take(@limit)
|
22
20
|
end
|
23
21
|
|
24
|
-
def
|
25
|
-
|
22
|
+
def available_libraries
|
23
|
+
(availables_from_loadpath +
|
24
|
+
availables_from_gem +
|
25
|
+
availables_from_bundler).uniq
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def availables_from_bundler
|
31
|
+
require 'bundler'
|
32
|
+
|
33
|
+
Bundler.load.specs.map(&:name)
|
26
34
|
rescue NameError, Bundler::GemNotFound, Bundler::GemfileNotFound
|
27
35
|
[]
|
28
36
|
end
|
29
37
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
pathname.entries.select {|entry|
|
35
|
-
entry.extname == '.rb' && entry.to_path =~ pattern
|
36
|
-
}.map {|entry| entry.basename('.*').to_path }
|
37
|
-
}.flatten
|
38
|
+
def availables_from_gem
|
39
|
+
Gem::Specification.map(&:name)
|
40
|
+
rescue Gem::LoadError
|
41
|
+
[]
|
38
42
|
end
|
39
43
|
|
40
|
-
def
|
41
|
-
|
44
|
+
def availables_from_loadpath
|
45
|
+
$LOAD_PATH.each_with_object([]) {|path, availables|
|
46
|
+
Pathname.new(File.expand_path(path)).entries.each do |entry|
|
47
|
+
availables << entry.basename('.rb').to_s if entry.extname == '.rb'
|
48
|
+
end
|
49
|
+
}
|
42
50
|
end
|
43
51
|
end
|
44
52
|
end
|
data/lib/reditor/command.rb
CHANGED
@@ -56,23 +56,21 @@ module Reditor
|
|
56
56
|
end
|
57
57
|
|
58
58
|
block.call dir, file
|
59
|
-
rescue LibraryNotFound => e
|
60
|
-
warn e.message
|
61
59
|
end
|
62
60
|
|
63
61
|
def choose_exec(name, &block)
|
64
62
|
candidates = CandidatesLocator.detect(name)
|
65
63
|
|
66
|
-
raise LibraryNotFound, "Library #{name} not found" if candidates.empty?
|
67
|
-
|
68
64
|
candidates.each.with_index do |candidate, i|
|
69
65
|
say "[#{i}] #{candidate}"
|
70
66
|
end
|
71
67
|
print "Choose number of library [0]> "
|
72
68
|
|
73
|
-
|
69
|
+
abort_reditor unless num = $stdin.gets
|
74
70
|
|
75
|
-
detect_exec candidates[
|
71
|
+
detect_exec candidates[num.to_i], &block
|
72
|
+
rescue Interrupt
|
73
|
+
abort_reditor
|
76
74
|
end
|
77
75
|
|
78
76
|
def editor_command
|
@@ -82,5 +80,11 @@ module Reditor
|
|
82
80
|
def shell_command
|
83
81
|
ENV['SHELL'] or raise '$SHELL is not provided.'
|
84
82
|
end
|
83
|
+
|
84
|
+
def abort_reditor
|
85
|
+
puts
|
86
|
+
|
87
|
+
exit
|
88
|
+
end
|
85
89
|
end
|
86
90
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'bundler'
|
3
2
|
|
4
3
|
# TODO: care version specification
|
5
4
|
module Reditor
|
@@ -19,11 +18,12 @@ module Reditor
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def detect_from_bundler
|
21
|
+
require 'bundler'
|
22
|
+
|
22
23
|
return nil unless spec = Bundler.load.specs.find {|spec| spec.name == name }
|
23
24
|
|
24
25
|
Pathname.new(spec.full_gem_path)
|
25
|
-
rescue NameError
|
26
|
-
rescue Bundler::GemNotFound, Bundler::GemfileNotFound
|
26
|
+
rescue NameError, Bundler::GemNotFound, Bundler::GemfileNotFound
|
27
27
|
end
|
28
28
|
|
29
29
|
def detect_from_loadpath
|
@@ -41,7 +41,6 @@ module Reditor
|
|
41
41
|
|
42
42
|
Pathname.new(spec.full_gem_path)
|
43
43
|
rescue Gem::LoadError
|
44
|
-
nil
|
45
44
|
end
|
46
45
|
end
|
47
46
|
end
|
data/lib/reditor/version.rb
CHANGED
data/reditor.gemspec
CHANGED
@@ -4,8 +4,8 @@ require File.expand_path('../lib/reditor/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ['hibariya']
|
6
6
|
gem.email = ['celluloid.key@gmail.com']
|
7
|
-
gem.description = %q{Open a ruby library
|
8
|
-
gem.summary = %q{Open a ruby library
|
7
|
+
gem.description = %q{Open a ruby library with your editor. Reditor supports gem, bundler, and stdlib(pure ruby).}
|
8
|
+
gem.summary = %q{Open a ruby library with your editor}
|
9
9
|
gem.homepage = 'https://github.com/hibariya/reditor'
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -15,8 +15,12 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ['lib']
|
16
16
|
gem.version = Reditor::VERSION
|
17
17
|
|
18
|
-
gem.add_runtime_dependency '
|
18
|
+
gem.add_runtime_dependency 'hotwater', '~> 0.1.2'
|
19
|
+
gem.add_runtime_dependency 'thor', '~> 0.17.0'
|
20
|
+
gem.add_runtime_dependency 'rake', '~> 10.0.3' # workaround for `WARN: Unresolved specs during Gem::Specification.reset: rake (>= 0)' on ruby-2.0.0
|
19
21
|
|
20
|
-
gem.add_development_dependency '
|
21
|
-
gem.add_development_dependency '
|
22
|
+
gem.add_development_dependency 'pry'
|
23
|
+
gem.add_development_dependency 'rake'
|
24
|
+
gem.add_development_dependency 'rspec', '~> 2.13.0'
|
25
|
+
gem.add_development_dependency 'tapp'
|
22
26
|
end
|
data/spec/command_spec.rb
CHANGED
@@ -24,10 +24,10 @@ describe 'reditor command' do
|
|
24
24
|
it { should match /thread\.rb$/ }
|
25
25
|
end
|
26
26
|
|
27
|
-
context '
|
28
|
-
subject { capture_reditor('
|
27
|
+
context 'Incorrect name library in non-bundler broject' do
|
28
|
+
subject { capture_reditor('cvs', where: 'blank_project') }
|
29
29
|
|
30
|
-
it { should match
|
30
|
+
it { should match /\[0\] csv/ }
|
31
31
|
end
|
32
32
|
|
33
33
|
context 'rubygems library in non-bundler project' do
|
File without changes
|
metadata
CHANGED
@@ -1,65 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reditor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- hibariya
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: hotwater
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.2
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: thor
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- -
|
31
|
+
- - ~>
|
20
32
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
33
|
+
version: 0.17.0
|
22
34
|
type: :runtime
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- -
|
38
|
+
- - ~>
|
28
39
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
40
|
+
version: 0.17.0
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 10.0.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 10.0.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
32
57
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
58
|
requirements:
|
35
|
-
- -
|
59
|
+
- - '>='
|
36
60
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
61
|
+
version: '0'
|
38
62
|
type: :development
|
39
63
|
prerelease: false
|
40
64
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
65
|
requirements:
|
43
|
-
- -
|
66
|
+
- - '>='
|
44
67
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
46
83
|
- !ruby/object:Gem::Dependency
|
47
84
|
name: rspec
|
48
85
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
86
|
requirements:
|
51
|
-
- -
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.13.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.13.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: tapp
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
52
102
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
103
|
+
version: '0'
|
54
104
|
type: :development
|
55
105
|
prerelease: false
|
56
106
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
107
|
requirements:
|
59
|
-
- -
|
108
|
+
- - '>='
|
60
109
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
description: Open a ruby library
|
110
|
+
version: '0'
|
111
|
+
description: Open a ruby library with your editor. Reditor supports gem, bundler,
|
112
|
+
and stdlib(pure ruby).
|
63
113
|
email:
|
64
114
|
- celluloid.key@gmail.com
|
65
115
|
executables:
|
@@ -80,35 +130,37 @@ files:
|
|
80
130
|
- lib/reditor/version.rb
|
81
131
|
- reditor.gemspec
|
82
132
|
- spec/command_spec.rb
|
133
|
+
- spec/samples/blank_project/.gitkeep
|
83
134
|
- spec/samples/bundler_project/Gemfile
|
84
135
|
- spec/samples/bundler_project_without_lockfile/Gemfile
|
85
136
|
- spec/spec_helper.rb
|
86
137
|
homepage: https://github.com/hibariya/reditor
|
87
138
|
licenses: []
|
139
|
+
metadata: {}
|
88
140
|
post_install_message:
|
89
141
|
rdoc_options: []
|
90
142
|
require_paths:
|
91
143
|
- lib
|
92
144
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
145
|
requirements:
|
95
|
-
- -
|
146
|
+
- - '>='
|
96
147
|
- !ruby/object:Gem::Version
|
97
148
|
version: '0'
|
98
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
150
|
requirements:
|
101
|
-
- -
|
151
|
+
- - '>='
|
102
152
|
- !ruby/object:Gem::Version
|
103
153
|
version: '0'
|
104
154
|
requirements: []
|
105
155
|
rubyforge_project:
|
106
|
-
rubygems_version:
|
156
|
+
rubygems_version: 2.0.0
|
107
157
|
signing_key:
|
108
|
-
specification_version:
|
109
|
-
summary: Open a ruby library
|
158
|
+
specification_version: 4
|
159
|
+
summary: Open a ruby library with your editor
|
110
160
|
test_files:
|
111
161
|
- spec/command_spec.rb
|
162
|
+
- spec/samples/blank_project/.gitkeep
|
112
163
|
- spec/samples/bundler_project/Gemfile
|
113
164
|
- spec/samples/bundler_project_without_lockfile/Gemfile
|
114
165
|
- spec/spec_helper.rb
|
166
|
+
has_rdoc:
|