milkode 0.2.9 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.ja.rdoc +11 -0
- data/HISTORY.rdoc +11 -0
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/bin/gmilk +1 -1
- data/bin/milk +1 -1
- data/lib/milkode/cdstk/cdstk.rb +22 -0
- data/lib/milkode/cdstk/cli_cdstk.rb +4 -0
- data/lib/milkode/cdstk/cli_cdstksub.rb +8 -0
- data/lib/milkode/cdweb/app.rb +1 -1
- data/lib/milkode/common/util.rb +5 -1
- data/lib/milkode/findgrep/findgrep.rb +56 -33
- data/lib/milkode/grep/cli_grep.rb +85 -12
- data/milkode.gemspec +5 -8
- data/test/test_bin_exec.rb +2 -4
- data/test/test_cli_cdstk.rb +5 -0
- data/test/test_cli_grep.rb +20 -0
- data/test/test_util.rb +7 -0
- metadata +6 -11
- data/bin/cdv +0 -6
- data/bin/cdview +0 -10
- data/lib/milkode/cdview/cli_cdview.rb +0 -43
data/HISTORY.ja.rdoc
CHANGED
data/HISTORY.rdoc
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
=== 0.3.0 2012/01/20
|
2
|
+
|
3
|
+
* gmilk
|
4
|
+
* Add -k -l option.
|
5
|
+
* If you type lowercase all ignore case, case is one of the strictly search.
|
6
|
+
* milk
|
7
|
+
* Add 'milk info'.
|
8
|
+
* To display the number of files in the package when 'milk list'.
|
9
|
+
* etc
|
10
|
+
* Delete cdv, cdview.
|
11
|
+
|
1
12
|
=== 0.2.9 2011/12/24
|
2
13
|
|
3
14
|
* gmilk
|
data/Rakefile
CHANGED
@@ -16,8 +16,8 @@ Jeweler::Tasks.new do |gem|
|
|
16
16
|
gem.name = "milkode"
|
17
17
|
gem.homepage = "http://github.com/ongaeshi/milkode"
|
18
18
|
gem.license = "MIT"
|
19
|
-
gem.summary = %Q{Line based local source code search engine & web-app.}
|
20
|
-
gem.description = %Q{Line based local source code search engine & web-app.}
|
19
|
+
gem.summary = %Q{Line based local source code search engine & grep-command & web-app.}
|
20
|
+
gem.description = %Q{Line based local source code search engine & grep-command & web-app.}
|
21
21
|
gem.email = "ongaeshi0621@gmail.com"
|
22
22
|
gem.authors = ["ongaeshi"]
|
23
23
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/gmilk
CHANGED
data/bin/milk
CHANGED
data/lib/milkode/cdstk/cdstk.rb
CHANGED
@@ -276,6 +276,13 @@ module Milkode
|
|
276
276
|
}.join("\n")
|
277
277
|
|
278
278
|
@out.puts str
|
279
|
+
|
280
|
+
# print information
|
281
|
+
if args.empty?
|
282
|
+
milkode_info
|
283
|
+
else
|
284
|
+
list_info(a) unless a.empty?
|
285
|
+
end
|
279
286
|
end
|
280
287
|
|
281
288
|
def pwd(options)
|
@@ -416,6 +423,10 @@ mcd() {
|
|
416
423
|
EOF
|
417
424
|
end
|
418
425
|
|
426
|
+
def info(args, options)
|
427
|
+
milkode_info
|
428
|
+
end
|
429
|
+
|
419
430
|
private
|
420
431
|
|
421
432
|
def db_file
|
@@ -498,6 +509,17 @@ EOF
|
|
498
509
|
end
|
499
510
|
end
|
500
511
|
|
512
|
+
def list_info(packages)
|
513
|
+
option = FindGrep::FindGrep::DEFAULT_OPTION.dup
|
514
|
+
option.dbFile = Dbdir.groonga_path(Dbdir.default_dir)
|
515
|
+
option.isSilent = true
|
516
|
+
option.packages = packages.map{|v| v[1]}
|
517
|
+
findGrep = FindGrep::FindGrep.new([], option)
|
518
|
+
records = findGrep.pickupRecords
|
519
|
+
|
520
|
+
alert('*milk_list*', "#{packages.size} packages, #{records.size} records in #{db_file}.")
|
521
|
+
end
|
522
|
+
|
501
523
|
def db_define
|
502
524
|
Groonga::Schema.define do |schema|
|
503
525
|
schema.create_table("documents", :type => :hash) do |table|
|
@@ -19,6 +19,7 @@ The most commonly used #{File.basename($0)} are:
|
|
19
19
|
dir Disp package dir.
|
20
20
|
dump Dump records.
|
21
21
|
grep Print lines matching a pattern
|
22
|
+
info Disp information.
|
22
23
|
init Init db.
|
23
24
|
list List packages.
|
24
25
|
mcd Print 'mcd' command.
|
@@ -60,6 +61,7 @@ EOF
|
|
60
61
|
subopt['dir'], suboptions['dir'] = CLI_Cdstksub.setup_dir
|
61
62
|
subopt['setdb'], suboptions['setdb'] = CLI_Cdstksub.setup_setdb
|
62
63
|
subopt['mcd'], suboptions['mcd'] = CLI_Cdstksub.setup_mcd
|
64
|
+
subopt['info'], suboptions['info'] = CLI_Cdstksub.setup_info
|
63
65
|
|
64
66
|
if (subopt[subcommand])
|
65
67
|
subopt[subcommand].parse!(arguments) unless arguments.empty?
|
@@ -97,6 +99,8 @@ EOF
|
|
97
99
|
obj.setdb(arguments, suboptions[subcommand])
|
98
100
|
when 'mcd'
|
99
101
|
obj.mcd(arguments, suboptions[subcommand])
|
102
|
+
when 'info'
|
103
|
+
obj.info(arguments, suboptions[subcommand])
|
100
104
|
end
|
101
105
|
else
|
102
106
|
if subcommand
|
data/lib/milkode/cdweb/app.rb
CHANGED
data/lib/milkode/common/util.rb
CHANGED
@@ -99,6 +99,11 @@ module Milkode
|
|
99
99
|
str
|
100
100
|
end
|
101
101
|
end
|
102
|
+
|
103
|
+
def downcase?(str)
|
104
|
+
str == str.downcase
|
105
|
+
end
|
106
|
+
|
102
107
|
end
|
103
108
|
end
|
104
109
|
|
@@ -197,6 +202,5 @@ module Gren
|
|
197
202
|
puts
|
198
203
|
end
|
199
204
|
module_function :p_classtree_sub
|
200
|
-
|
201
205
|
end
|
202
206
|
end
|
@@ -15,8 +15,8 @@ require 'pathname'
|
|
15
15
|
|
16
16
|
module FindGrep
|
17
17
|
class FindGrep
|
18
|
-
Option = Struct.new(:
|
19
|
-
:
|
18
|
+
Option = Struct.new(:patternsNot,
|
19
|
+
:patternsOr,
|
20
20
|
:directory,
|
21
21
|
:depth,
|
22
22
|
:ignoreCase,
|
@@ -34,7 +34,8 @@ module FindGrep
|
|
34
34
|
:groongaOnly,
|
35
35
|
:isMatchFile,
|
36
36
|
:dispHtml,
|
37
|
-
:matchCountLimit
|
37
|
+
:matchCountLimit,
|
38
|
+
:keywords)
|
38
39
|
|
39
40
|
DEFAULT_OPTION = Option.new([],
|
40
41
|
[],
|
@@ -55,7 +56,8 @@ module FindGrep
|
|
55
56
|
false,
|
56
57
|
false,
|
57
58
|
false,
|
58
|
-
-1
|
59
|
+
-1,
|
60
|
+
[])
|
59
61
|
|
60
62
|
class MatchCountOverError < RuntimeError ; end
|
61
63
|
|
@@ -65,8 +67,8 @@ module FindGrep
|
|
65
67
|
@patterns = patterns
|
66
68
|
@option = option
|
67
69
|
@patternRegexps = strs2regs(patterns, @option.ignoreCase)
|
68
|
-
@subRegexps = strs2regs(option.
|
69
|
-
@orRegexps = strs2regs(option.
|
70
|
+
@subRegexps = strs2regs(option.patternsNot, @option.ignoreCase)
|
71
|
+
@orRegexps = strs2regs(option.patternsOr, @option.ignoreCase)
|
70
72
|
@filePatterns = (!@option.dbFile) ? strs2regs(option.filePatterns) : []
|
71
73
|
@ignoreFiles = strs2regs(option.ignoreFiles)
|
72
74
|
@ignoreDirs = strs2regs(option.ignoreDirs)
|
@@ -135,12 +137,47 @@ module FindGrep
|
|
135
137
|
end
|
136
138
|
end
|
137
139
|
|
140
|
+
def pickupRecords
|
141
|
+
raise unless @option.dbFile
|
142
|
+
searchDatabase
|
143
|
+
end
|
144
|
+
|
138
145
|
def searchFromDB(stdout, dir)
|
146
|
+
# データベースを検索
|
147
|
+
records = searchDatabase
|
148
|
+
|
149
|
+
# ヒットしたレコード数
|
150
|
+
stdout.puts "Found : #{records.size} records." if (!@option.dispHtml && !@option.isSilent)
|
151
|
+
|
152
|
+
# 検索にヒットしたファイルを実際に検索
|
153
|
+
begin
|
154
|
+
if (@patterns.size > 0)
|
155
|
+
records.each do |record|
|
156
|
+
if (@option.groongaOnly)
|
157
|
+
searchGroongaOnly(stdout, record)
|
158
|
+
else
|
159
|
+
searchFile(stdout, record.path, record.path) if FileTest.exist?(record.path)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
else
|
163
|
+
records.each do |record|
|
164
|
+
path = record.path
|
165
|
+
relative_path = Milkode::Util::relative_path(path, Dir.pwd).to_s
|
166
|
+
stdout.puts relative_path
|
167
|
+
@result.match_file_count += 1
|
168
|
+
raise MatchCountOverError if (0 < @option.matchCountLimit && @option.matchCountLimit <= @result.match_file_count)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
rescue MatchCountOverError
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def searchDatabase
|
139
176
|
# 全てのパターンを検索
|
140
177
|
table = @documents.select do |record|
|
141
178
|
expression = nil
|
142
179
|
|
143
|
-
#
|
180
|
+
# パターン(マッチ行)
|
144
181
|
@patterns.each do |word|
|
145
182
|
sub_expression = record.content =~ word
|
146
183
|
if expression.nil?
|
@@ -149,6 +186,17 @@ module FindGrep
|
|
149
186
|
expression &= sub_expression
|
150
187
|
end
|
151
188
|
end
|
189
|
+
|
190
|
+
# キーワード(絞り込むための手がかり)
|
191
|
+
@option.keywords.each do |word|
|
192
|
+
sub_expression = record.content =~ word
|
193
|
+
sub_expression |= record.path =~ word
|
194
|
+
if expression.nil?
|
195
|
+
expression = sub_expression
|
196
|
+
else
|
197
|
+
expression &= sub_expression
|
198
|
+
end
|
199
|
+
end
|
152
200
|
|
153
201
|
# パッケージ(OR)
|
154
202
|
pe = package_expression(record, @option.packages)
|
@@ -190,32 +238,7 @@ module FindGrep
|
|
190
238
|
# {:key => "timestamp", :order => "descending"}])
|
191
239
|
|
192
240
|
# ファイル名でソート
|
193
|
-
|
194
|
-
|
195
|
-
# データベースにヒット
|
196
|
-
stdout.puts "Found : #{records.size} records." if (!@option.dispHtml && !@option.isSilent)
|
197
|
-
|
198
|
-
# 検索にヒットしたファイルを実際に検索
|
199
|
-
begin
|
200
|
-
if (@patterns.size > 0)
|
201
|
-
records.each do |record|
|
202
|
-
if (@option.groongaOnly)
|
203
|
-
searchGroongaOnly(stdout, record)
|
204
|
-
else
|
205
|
-
searchFile(stdout, record.path, record.path) if FileTest.exist?(record.path)
|
206
|
-
end
|
207
|
-
end
|
208
|
-
else
|
209
|
-
records.each do |record|
|
210
|
-
path = record.path
|
211
|
-
relative_path = Milkode::Util::relative_path(path, Dir.pwd).to_s
|
212
|
-
stdout.puts relative_path
|
213
|
-
@result.match_file_count += 1
|
214
|
-
raise MatchCountOverError if (0 < @option.matchCountLimit && @option.matchCountLimit <= @result.match_file_count)
|
215
|
-
end
|
216
|
-
end
|
217
|
-
rescue MatchCountOverError
|
218
|
-
end
|
241
|
+
table.sort([{:key => "shortpath", :order => "ascending"}])
|
219
242
|
end
|
220
243
|
|
221
244
|
def and_expression(key, list)
|
@@ -10,9 +10,12 @@ module Milkode
|
|
10
10
|
class CLI_Grep
|
11
11
|
def self.execute(stdout, arguments=[])
|
12
12
|
option = FindGrep::FindGrep::DEFAULT_OPTION.dup
|
13
|
+
|
14
|
+
# default option
|
13
15
|
option.dbFile = Dbdir.groonga_path(Dbdir.default_dir)
|
14
16
|
option.isSilent = true
|
15
|
-
|
17
|
+
|
18
|
+
# local option
|
16
19
|
my_option = {}
|
17
20
|
my_option[:packages] = []
|
18
21
|
|
@@ -21,24 +24,48 @@ module Milkode
|
|
21
24
|
rescue NotFoundPackage => e
|
22
25
|
current_dir = File.expand_path(".")
|
23
26
|
end
|
24
|
-
|
27
|
+
|
25
28
|
# opt = OptionParser.new "#{File.basename($0)} [option] pattern"
|
26
|
-
opt = OptionParser.new
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
opt = OptionParser.new <<EOF
|
30
|
+
gmilk [option] pattern
|
31
|
+
gmilk is 'milk grep'.
|
32
|
+
|
33
|
+
Stateful:
|
34
|
+
-l, Change state 'line'. (Match line words.)
|
35
|
+
-k, Change state 'keyword'. (Match file-content or file-path.)
|
36
|
+
First state is 'line'.
|
37
|
+
Example: gmilk line1 line2 -k keyword1 keyword2 -l line3 -k keyword3 ...
|
38
|
+
|
39
|
+
Normal:
|
40
|
+
EOF
|
32
41
|
opt.on('-a', '--all', 'Search all package.') {|v| my_option[:all] = true }
|
33
|
-
opt.on('
|
34
|
-
opt.on('-i', '--ignore', 'Ignore case.') {|v| option.ignoreCase = true}
|
42
|
+
opt.on('--cache', 'Search only db.') {|v| option.groongaOnly = true }
|
35
43
|
opt.on('--color', 'Color highlight.') {|v| option.colorHighlight = true}
|
44
|
+
opt.on('--cs', '--case-sensitive', 'Case sensitivity.') {|v| my_option[:case_sensitive] = true }
|
45
|
+
opt.on('-d DIR', '--directory DIR', 'Start directory. (deafult:".")') {|v| current_dir = File.expand_path(v); my_option[:find_mode] = true}
|
46
|
+
opt.on('-f FILE_PATH', '--file-path FILE_PATH', 'File path. (Enable multiple call)') {|v| option.filePatterns << v; my_option[:find_mode] = true }
|
47
|
+
opt.on('-n NUM', 'Limits the number of match to show.') {|v| option.matchCountLimit = v.to_i }
|
36
48
|
opt.on('--no-snip', 'There being a long line, it does not snip.') {|v| option.noSnip = true }
|
37
|
-
opt.on('--
|
38
|
-
opt.on('--
|
49
|
+
opt.on('-p PACKAGE', '--package PACKAGE', 'Specify search package.') {|v| setup_package(option, my_option, v) }
|
50
|
+
opt.on('-r', '--root', 'Search from package root.') {|v| current_dir = package_root_dir(File.expand_path(".")); my_option[:find_mode] = true }
|
51
|
+
opt.on('-s SUFFIX', '--suffix SUFFIX', 'Suffix.') {|v| option.suffixs << v; my_option[:find_mode] = true }
|
39
52
|
opt.on('-u', '--update', 'With update db.') {|v| my_option[:update] = true }
|
53
|
+
opt.on('--verbose', 'Set the verbose level of output.') {|v| option.isSilent = false }
|
54
|
+
|
40
55
|
begin
|
56
|
+
ap = ArgumentParser.new arguments
|
57
|
+
|
58
|
+
ap.prev
|
41
59
|
opt.parse!(arguments)
|
60
|
+
ap.after
|
61
|
+
|
62
|
+
arguments = ap.arguments
|
63
|
+
option.keywords = ap.keywords
|
64
|
+
my_option[:find_mode] = true unless ap.keywords.empty?
|
65
|
+
|
66
|
+
# p ap.arguments
|
67
|
+
# p ap.keywords
|
68
|
+
|
42
69
|
rescue NotFoundPackage => e
|
43
70
|
stdout.puts "fatal: Not found package '#{e}'."
|
44
71
|
return
|
@@ -54,6 +81,10 @@ module Milkode
|
|
54
81
|
end
|
55
82
|
|
56
83
|
if (arguments.size > 0 || my_option[:find_mode])
|
84
|
+
# ignore?
|
85
|
+
downcase_all = arguments.all? {|v| Util::downcase? v}
|
86
|
+
option.ignoreCase = true if downcase_all && !my_option[:case_sensitive]
|
87
|
+
|
57
88
|
# update
|
58
89
|
if my_option[:update]
|
59
90
|
cdstk = Cdstk.new(stdout, Dbdir.select_dbdir)
|
@@ -106,6 +137,48 @@ module Milkode
|
|
106
137
|
CdstkYaml.load(Dbdir.select_dbdir)
|
107
138
|
end
|
108
139
|
|
140
|
+
class ArgumentParser
|
141
|
+
attr_reader :arguments
|
142
|
+
attr_reader :keywords
|
143
|
+
|
144
|
+
def initialize(arguments)
|
145
|
+
@arguments = arguments
|
146
|
+
@keywords = []
|
147
|
+
@state = :line
|
148
|
+
end
|
149
|
+
|
150
|
+
def prev
|
151
|
+
@arguments.map! do |v|
|
152
|
+
v.gsub("-l", ":l").
|
153
|
+
gsub("-k", ":k")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def after
|
158
|
+
result = []
|
159
|
+
|
160
|
+
@arguments.each do |v|
|
161
|
+
case v
|
162
|
+
when ":l"
|
163
|
+
@state = :line
|
164
|
+
next
|
165
|
+
when ":k"
|
166
|
+
@state = :keyword
|
167
|
+
next
|
168
|
+
end
|
169
|
+
|
170
|
+
case @state
|
171
|
+
when :line
|
172
|
+
result << v
|
173
|
+
when :keyword
|
174
|
+
@keywords << v
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
@arguments = result
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
109
182
|
# --- error ---
|
110
183
|
class NotFoundPackage < RuntimeError ; end
|
111
184
|
|
data/milkode.gemspec
CHANGED
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{milkode}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["ongaeshi"]
|
12
|
-
s.date = %q{
|
13
|
-
s.description = %q{Line based local source code search engine & web-app.}
|
12
|
+
s.date = %q{2012-01-20}
|
13
|
+
s.description = %q{Line based local source code search engine & grep-command & web-app.}
|
14
14
|
s.email = %q{ongaeshi0621@gmail.com}
|
15
|
-
s.executables = ["
|
15
|
+
s.executables = ["gmilk", "milk"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE.txt",
|
18
18
|
"README.rdoc"
|
@@ -27,8 +27,6 @@ Gem::Specification.new do |s|
|
|
27
27
|
"README.rdoc",
|
28
28
|
"Rakefile",
|
29
29
|
"VERSION",
|
30
|
-
"bin/cdv",
|
31
|
-
"bin/cdview",
|
32
30
|
"bin/gmilk",
|
33
31
|
"bin/milk",
|
34
32
|
"lib/milkode/cdstk/cdstk.rb",
|
@@ -36,7 +34,6 @@ Gem::Specification.new do |s|
|
|
36
34
|
"lib/milkode/cdstk/cdstk_yaml.rb",
|
37
35
|
"lib/milkode/cdstk/cli_cdstk.rb",
|
38
36
|
"lib/milkode/cdstk/cli_cdstksub.rb",
|
39
|
-
"lib/milkode/cdview/cli_cdview.rb",
|
40
37
|
"lib/milkode/cdweb/app.rb",
|
41
38
|
"lib/milkode/cdweb/cli_cdweb.rb",
|
42
39
|
"lib/milkode/cdweb/config.ru",
|
@@ -111,7 +108,7 @@ Gem::Specification.new do |s|
|
|
111
108
|
s.licenses = ["MIT"]
|
112
109
|
s.require_paths = ["lib"]
|
113
110
|
s.rubygems_version = %q{1.3.6}
|
114
|
-
s.summary = %q{Line based local source code search engine & web-app.}
|
111
|
+
s.summary = %q{Line based local source code search engine & grep-command & web-app.}
|
115
112
|
s.test_files = [
|
116
113
|
"test/data/a_project/cdstk.rb",
|
117
114
|
"test/data/a_project/cdstk_yaml.rb",
|
data/test/test_bin_exec.rb
CHANGED
@@ -8,16 +8,14 @@
|
|
8
8
|
require 'rubygems'
|
9
9
|
require 'test/unit'
|
10
10
|
require 'milkode/cdstk/cli_cdstk'
|
11
|
-
require 'milkode/cdview/cli_cdview'
|
12
11
|
|
13
12
|
class TestBinExec < Test::Unit::TestCase
|
14
13
|
def test_bin_exec
|
15
14
|
io = StringIO.new
|
16
|
-
|
15
|
+
|
16
|
+
# milk
|
17
17
|
Milkode::CLI_Cdstk.execute(io)
|
18
18
|
|
19
|
-
Milkode::CLI_Cdview.execute(io)
|
20
|
-
|
21
19
|
# 一定時間だけ起動するような仕組みは無いものか
|
22
20
|
# Milkode::CLI_Cdweb.execute(io, "--no-browser -p 5555".split)
|
23
21
|
|
data/test/test_cli_cdstk.rb
CHANGED
@@ -22,6 +22,7 @@ class TestCLI_Cdstk < Test::Unit::TestCase
|
|
22
22
|
t_grep
|
23
23
|
t_mcd
|
24
24
|
t_setdb
|
25
|
+
t_info
|
25
26
|
end
|
26
27
|
|
27
28
|
def teardown
|
@@ -40,6 +41,10 @@ class TestCLI_Cdstk < Test::Unit::TestCase
|
|
40
41
|
assert_match /mcd/, command("mcd")
|
41
42
|
end
|
42
43
|
|
44
|
+
def t_info
|
45
|
+
assert_match /.*packages.*records/, command("info")
|
46
|
+
end
|
47
|
+
|
43
48
|
def t_setdb
|
44
49
|
# 引数無しで現在の値を表示
|
45
50
|
assert_equal @work.expand_path("db1") + "\n", command("setdb")
|
data/test/test_cli_grep.rb
CHANGED
@@ -23,6 +23,8 @@ class TestCLI_Grep < Test::Unit::TestCase
|
|
23
23
|
t_not_package_root
|
24
24
|
t_exec_onlysuffix
|
25
25
|
t_cache
|
26
|
+
t_case_sensitive
|
27
|
+
t_keyword
|
26
28
|
end
|
27
29
|
|
28
30
|
def teardown
|
@@ -72,6 +74,24 @@ class TestCLI_Grep < Test::Unit::TestCase
|
|
72
74
|
CLI_Grep.execute(io, "-p a_project test --cache".split)
|
73
75
|
assert_match "grenfiletest", io.string
|
74
76
|
end
|
77
|
+
|
78
|
+
def t_case_sensitive
|
79
|
+
io = StringIO.new
|
80
|
+
CLI_Grep.execute(io, "-p a_project default tokenizer".split)
|
81
|
+
assert_equal 3, io.string.split("\n").count
|
82
|
+
|
83
|
+
io = StringIO.new
|
84
|
+
CLI_Grep.execute(io, "-p a_project default tokenizer --cs".split)
|
85
|
+
assert_equal 1, io.string.split("\n").count
|
86
|
+
end
|
87
|
+
|
88
|
+
def t_keyword
|
89
|
+
io = StringIO.new
|
90
|
+
CLI_Grep.execute(io, "a b -k c d".split)
|
91
|
+
CLI_Grep.execute(io, "a -n 5 b -k c d".split)
|
92
|
+
CLI_Grep.execute(io, "a b -k -p a_project c d".split)
|
93
|
+
CLI_Grep.execute(io, "a b -k c d -l e -k f".split)
|
94
|
+
end
|
75
95
|
end
|
76
96
|
|
77
97
|
|
data/test/test_util.rb
CHANGED
@@ -63,6 +63,13 @@ class TestUtil < Test::Unit::TestCase
|
|
63
63
|
Milkode::Util::filename_to_utf8(create_filename_str('ダミー'))
|
64
64
|
end
|
65
65
|
end
|
66
|
+
|
67
|
+
def test_downcase?
|
68
|
+
assert !Milkode::Util::downcase?("DUMMY")
|
69
|
+
assert Milkode::Util::downcase?("dummy")
|
70
|
+
assert !Milkode::Util::downcase?("Dummy")
|
71
|
+
assert !Milkode::Util::downcase?("dummyNode")
|
72
|
+
end
|
66
73
|
|
67
74
|
def teardown
|
68
75
|
teardown_custom(true)
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- ongaeshi
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2012-01-20 00:00:00 +09:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -225,13 +225,11 @@ dependencies:
|
|
225
225
|
requirement: *id015
|
226
226
|
prerelease: false
|
227
227
|
type: :runtime
|
228
|
-
description: Line based local source code search engine & web-app.
|
228
|
+
description: Line based local source code search engine & grep-command & web-app.
|
229
229
|
email: ongaeshi0621@gmail.com
|
230
230
|
executables:
|
231
|
-
- cdv
|
232
231
|
- gmilk
|
233
232
|
- milk
|
234
|
-
- cdview
|
235
233
|
extensions: []
|
236
234
|
|
237
235
|
extra_rdoc_files:
|
@@ -247,8 +245,6 @@ files:
|
|
247
245
|
- README.rdoc
|
248
246
|
- Rakefile
|
249
247
|
- VERSION
|
250
|
-
- bin/cdv
|
251
|
-
- bin/cdview
|
252
248
|
- bin/gmilk
|
253
249
|
- bin/milk
|
254
250
|
- lib/milkode/cdstk/cdstk.rb
|
@@ -256,7 +252,6 @@ files:
|
|
256
252
|
- lib/milkode/cdstk/cdstk_yaml.rb
|
257
253
|
- lib/milkode/cdstk/cli_cdstk.rb
|
258
254
|
- lib/milkode/cdstk/cli_cdstksub.rb
|
259
|
-
- lib/milkode/cdview/cli_cdview.rb
|
260
255
|
- lib/milkode/cdweb/app.rb
|
261
256
|
- lib/milkode/cdweb/cli_cdweb.rb
|
262
257
|
- lib/milkode/cdweb/config.ru
|
@@ -355,7 +350,7 @@ rubyforge_project:
|
|
355
350
|
rubygems_version: 1.3.6
|
356
351
|
signing_key:
|
357
352
|
specification_version: 3
|
358
|
-
summary: Line based local source code search engine & web-app.
|
353
|
+
summary: Line based local source code search engine & grep-command & web-app.
|
359
354
|
test_files:
|
360
355
|
- test/data/a_project/cdstk.rb
|
361
356
|
- test/data/a_project/cdstk_yaml.rb
|
data/bin/cdv
DELETED
data/bin/cdview
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require 'optparse'
|
3
|
-
require 'milkode/findgrep/findgrep'
|
4
|
-
require 'milkode/common/dbdir'
|
5
|
-
include Milkode
|
6
|
-
|
7
|
-
module Milkode
|
8
|
-
class CLI_Cdview
|
9
|
-
def self.execute(stdout, arguments=[])
|
10
|
-
# オプション
|
11
|
-
option = FindGrep::FindGrep::DEFAULT_OPTION
|
12
|
-
option.dbFile = Dbdir.groonga_path(Dbdir.default_dir)
|
13
|
-
|
14
|
-
# デフォルトのマッチモードは'File'
|
15
|
-
option.isMatchFile = true
|
16
|
-
|
17
|
-
# オプション解析
|
18
|
-
opt = OptionParser.new("#{File.basename($0)} [option] keyword1 [keyword2 ...]")
|
19
|
-
opt.on('--db [GREN_DB_FILE]', 'Search from the grendb database.') {|v| option.dbFile = Dbdir.groonga_path(v) }
|
20
|
-
opt.on('-f KEYWORD', '--file-keyword KEYWORD', 'Path keyword. (Enable multiple call)') {|v| option.filePatterns << v}
|
21
|
-
opt.on('-s SUFFIX', '--suffix SUFFIX', 'Search suffix.') {|v| option.suffixs << v }
|
22
|
-
opt.on('-i', '--ignore', 'Ignore case.') {|v| option.ignoreCase = true}
|
23
|
-
opt.on('-c', '--color', 'Color highlight.') {|v| option.colorHighlight = true}
|
24
|
-
opt.on('--no-snip', 'There being a long line, it does not snip.') {|v| option.noSnip = true }
|
25
|
-
opt.on('-g', '--groonga-only', 'Search only groonga db.') {|v| option.groongaOnly = true }
|
26
|
-
opt.on('--mf', '--match-file', 'Match file. (Default)') {|v| option.isMatchFile = true }
|
27
|
-
opt.on('-l', '--ml', '--match-line', 'Match line, same mode as "gren".') {|v| option.isMatchFile = false }
|
28
|
-
|
29
|
-
opt.parse!(arguments)
|
30
|
-
|
31
|
-
# 検索オブジェクトの生成
|
32
|
-
if (option.dbFile && (arguments.size > 0 || option.keywordsOr.size > 0))
|
33
|
-
findGrep = FindGrep::FindGrep.new(arguments, option)
|
34
|
-
findGrep.searchAndPrint(stdout)
|
35
|
-
else
|
36
|
-
stdout.print opt.help
|
37
|
-
stdout.puts
|
38
|
-
stdout.puts "please set GREN DATABSE FILE!! (--db option, or set ENV['GRENDB_DEFAULT_DB'].)" unless option.dbFile
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|