milkode 0.2.9 → 0.3.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.
- 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
|