milkode 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -10,12 +10,13 @@ gem 'rack' , '>= 1.5.2'
10
10
  gem 'sinatra' , '>= 1.2.6'
11
11
  gem 'launchy' , '>= 0.3.7'
12
12
  gem 'coderay' , '>= 1.0.5'
13
- gem 'thin' , '>= 1.2.10'
13
+ gem 'thin' , '>= 1.2.10', '< 2.0.0'
14
14
  gem 'archive-zip' , '>= 0.4.0'
15
15
  gem 'haml' , '>= 3.1.2'
16
16
  gem 'sass' , '>= 3.1.3'
17
17
  gem 'thor' , '>= 0.18.1'
18
18
  gem 'i18n' , '~> 0.6.5'
19
+ gem 'whichr' , '~> 0.3'
19
20
 
20
21
  # Add dependencies to develop your gem here.
21
22
  # Include everything needed to run rake, tests, features, etc.
@@ -1,3 +1,20 @@
1
+ === 1.6.0 2014/04/13
2
+
3
+ * milk
4
+ * #57 Use "rescue Error::EACCESS" instead of FileTest.readable? for Windows (thanks kazuna)
5
+ * #58 Use whichr in Util.exist_command? (thanks kazuna)
6
+
7
+ * gmilk
8
+ * #61 Without displaying stacktrace when pressed Ctrl+C on gmilk (thanks msmhrt)
9
+ * Support ENV['GMILK_OPTIONS']
10
+
11
+ * etc
12
+ * #64 thin < 2.0.0 in Gemfile (thanks MaskedW)
13
+ * Add TravisCI Button
14
+ * README.rdoc -> README.md
15
+ * Util::func -> Util.func
16
+ * Rewrite summary and description
17
+
1
18
  === 1.5.0 2014/02/08
2
19
 
3
20
  * milk web
@@ -1,3 +1,20 @@
1
+ === 1.6.0 2014/04/13
2
+
3
+ * milk
4
+ * #57 Use "rescue Error::EACCESS" instead of FileTest.readable? for Windows (thanks kazuna)
5
+ * #58 Use whichr in Util.exist_command? (thanks kazuna)
6
+
7
+ * gmilk
8
+ * #61 Without displaying stacktrace when pressed Ctrl+C on gmilk (thanks msmhrt)
9
+ * Support ENV['GMILK_OPTIONS']
10
+
11
+ * etc
12
+ * #64 thin < 2.0.0 in Gemfile (thanks MaskedW)
13
+ * Add TravisCI Button
14
+ * README.rdoc -> README.md
15
+ * Util::func -> Util.func
16
+ * Rewrite summary and description
17
+
1
18
  === 1.5.0 2014/02/08
2
19
 
3
20
  * milk web
@@ -0,0 +1,21 @@
1
+ # Milkode
2
+
3
+ [![Build Status](https://travis-ci.org/ongaeshi/milkode.svg?branch=develop)](https://travis-ci.org/ongaeshi/milkode)
4
+
5
+ Milkode is "Line Based" local source code search engine written by Ruby. It have command line interface and web application. It will accelerate the code reading of your life.
6
+
7
+ Milkode is "見るコード". "See a code" is meaning.
8
+
9
+ [Honyomi](https://github.com/ongaeshi/honyomi) are brothers.
10
+
11
+ ![milk-web-01.jpg](http://milkode.ongaeshi.me/images/milk-web-01.jpg)
12
+
13
+ ## DOCUMENTS
14
+
15
+ * [Milkode - line based local source code search engine](http://milkode.ongaeshi.me/)
16
+
17
+ ## HISTORY
18
+
19
+ * [History.rdoc](https://github.com/ongaeshi/milkode/blob/master/HISTORY.rdoc)
20
+ * [更新履歴](https://github.com/ongaeshi/milkode/blob/master/HISTORY.ja.rdoc)
21
+
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 & grep-command & web-app.}
20
- gem.description = %Q{Line based local source code search engine & grep-command & web-app.}
19
+ gem.summary = %Q{Line based local source code search engine.}
20
+ gem.description = %Q{Milkode is line based local source code search engine. It have command line interface and web application. It will accelerate the code reading of your life.}
21
21
  gem.email = "ongaeshi0621@gmail.com"
22
22
  gem.authors = ["ongaeshi"]
23
23
  # Dependencies move to 'Gemfile'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.6.0
data/bin/gmilk CHANGED
@@ -6,5 +6,5 @@
6
6
  require 'rubygems'
7
7
  require 'milkode/grep/cli_grep'
8
8
 
9
- Version = "1.5.0"
9
+ Version = "1.6.0"
10
10
  Milkode::CLI_Grep.execute(STDOUT, ARGV)
data/bin/milk CHANGED
@@ -6,5 +6,5 @@
6
6
  require 'rubygems'
7
7
  require 'milkode/cli'
8
8
 
9
- Version = "1.5.0"
9
+ Version = "1.6.0"
10
10
  Milkode::CLI.start(ARGV)
@@ -255,7 +255,7 @@ module Milkode
255
255
  when '.zip', '.xpi'
256
256
  alert("extract", "#{src}")
257
257
  zip_dir = File.join(@db_dir, "packages/#{ext.sub(".", "")}")
258
- result = File.join(zip_dir, Util::zip_extract(src, zip_dir))
258
+ result = File.join(zip_dir, Util.zip_extract(src, zip_dir))
259
259
  else
260
260
  src
261
261
  end
@@ -989,7 +989,7 @@ EOF
989
989
  if options[:package]
990
990
  add_ignore = args.map {|v| v.sub(/^.\//, "") }
991
991
  else
992
- path = Util::relative_path(File.expand_path('.'), package.directory).to_s
992
+ path = Util.relative_path(File.expand_path('.'), package.directory).to_s
993
993
  add_ignore = args.map {|v| File.join(path, v).sub(/^.\//, "") }
994
994
  end
995
995
 
@@ -1025,7 +1025,7 @@ EOF
1025
1025
  packages.each do |package|
1026
1026
  package_records(package.name).each do |record|
1027
1027
  if options[:relative]
1028
- @out.puts Util::relative_path(record.path, basedir)
1028
+ @out.puts Util.relative_path(record.path, basedir)
1029
1029
  else
1030
1030
  if options[:all]
1031
1031
  @out.puts record.path
@@ -1099,11 +1099,11 @@ EOF
1099
1099
  private
1100
1100
 
1101
1101
  def git_protocol?(options, src)
1102
- options[:protocol] == 'git' || Util::git_url?(src)
1102
+ options[:protocol] == 'git' || Util.git_url?(src)
1103
1103
  end
1104
1104
 
1105
1105
  def svn_protocol?(options, src)
1106
- options[:protocol] == 'svn' || Util::svn_url?(src)
1106
+ options[:protocol] == 'svn' || Util.svn_url?(src)
1107
1107
  end
1108
1108
 
1109
1109
  def db_file
@@ -1154,8 +1154,8 @@ EOF
1154
1154
  updater.exec
1155
1155
 
1156
1156
  # Is github repository ?
1157
- if Util::exist_command?('git') && File.exist?(File.join(package.directory, ".git"))
1158
- repo_name = Dir.chdir(package.directory) { Util::github_repo(`git config --get remote.origin.url`) }
1157
+ if Util.exist_command?('git') && File.exist?(File.join(package.directory, ".git"))
1158
+ repo_name = Dir.chdir(package.directory) { Util.github_repo(`git config --get remote.origin.url`) }
1159
1159
 
1160
1160
  if repo_name && repo_name != package.options[:github]
1161
1161
  dst = package.options
@@ -1220,7 +1220,7 @@ EOF
1220
1220
  r << "#{@file_count} records" if @file_count > 0
1221
1221
  r << "#{@add_count} add" if @add_count > 0
1222
1222
  r << "#{@update_count} update" if @update_count > 0
1223
- alert('result', "#{r.join(', ')}. (#{Gren::Util::time_s(time)})")
1223
+ alert('result', "#{r.join(', ')}. (#{Gren::Util.time_s(time)})")
1224
1224
  end
1225
1225
 
1226
1226
  def milkode_info
@@ -1265,7 +1265,7 @@ EOF
1265
1265
  end
1266
1266
 
1267
1267
  def alert(title, msg)
1268
- if (Util::platform_win?)
1268
+ if (Util.platform_win?)
1269
1269
  @out.puts "#{title.ljust(10)} : #{Kconv.kconv(msg, Kconv::SJIS)}"
1270
1270
  else
1271
1271
  @out.puts "#{title.ljust(10)} : #{msg}"
@@ -78,7 +78,7 @@ EOF
78
78
  # 指定ディレクトリの所属するパッケージのルートディレクトリを得る。
79
79
  # 見つからない場合はnilを返す。
80
80
  def package_root(dir)
81
- nd = Util::normalize_filename(dir)
81
+ nd = Util.normalize_filename(dir)
82
82
 
83
83
  @contents.find_all {|v|
84
84
  nd =~ /^#{Regexp.escape(v.directory)}(:?\/|\Z)/
@@ -88,8 +88,8 @@ module Milkode
88
88
  private
89
89
 
90
90
  def normalize
91
- if (Util::platform_win?)
92
- @hash['directory'] = Util::normalize_filename(directory)
91
+ if (Util.platform_win?)
92
+ @hash['directory'] = Util.normalize_filename(directory)
93
93
  end
94
94
  end
95
95
 
@@ -43,7 +43,7 @@ end
43
43
  get '/' do
44
44
  if Database.validate?
45
45
  @setting = WebSetting.new
46
- @version = "1.5.0"
46
+ @version = "1.6.0"
47
47
 
48
48
  @package_num = Database.instance.yaml_package_num
49
49
  @file_num = Database.instance.totalRecords
@@ -82,8 +82,8 @@ post '/search*' do
82
82
 
83
83
  query = Query.new(params[:query])
84
84
  # gotolineモードで1つだけ渡された時は直接ジャンプ
85
- if query.keywords.size == 1 && Milkode::Util::gotoline_keyword?(query.keywords[0])
86
- gotoline = Milkode::Util::parse_gotoline(query.keywords)[0]
85
+ if query.keywords.size == 1 && Milkode::Util.gotoline_keyword?(query.keywords[0])
86
+ gotoline = Milkode::Util.parse_gotoline(query.keywords)[0]
87
87
  path2 = File.join(url_for('/home'), gotoline[0][0])
88
88
  redirect Mkurl.new(path2, params).inherit_query_shead + "#n#{gotoline[1]}"
89
89
  else
@@ -65,7 +65,7 @@ module Encoders
65
65
  r << "class=\"highlight-line\"" if is_highlight
66
66
  attr = r.join(" ")
67
67
 
68
- line = Milkode::Util::highlight_keywords(line, options[:keywords], 'highlight-filename') if is_highlight
68
+ line = Milkode::Util.highlight_keywords(line, options[:keywords], 'highlight-filename') if is_highlight
69
69
 
70
70
  "<span #{attr}>#{line}</span>"
71
71
  end
@@ -23,9 +23,9 @@ module Milkode
23
23
 
24
24
  q = params[:query] && Query.new(params[:query])
25
25
 
26
- if (Util::larger_than_oneline(record.content) && q && !q.keywords.empty?)
27
- if Util::gotoline_keyword?(q.keywords[0])
28
- gotolines = Util::parse_gotoline(q.keywords)
26
+ if (Util.larger_than_oneline(record.content) && q && !q.keywords.empty?)
27
+ if Util.gotoline_keyword?(q.keywords[0])
28
+ gotolines = Util.parse_gotoline(q.keywords)
29
29
  match_lines = []
30
30
  gotolines.each do |v|
31
31
  if v[0][0][1..-1] == record.shortpath
@@ -70,7 +70,7 @@ module Milkode
70
70
  end
71
71
 
72
72
  elsif (query.keywords.size > 0)
73
- if Util::gotoline_keyword?(query.keywords[0])
73
+ if Util.gotoline_keyword?(query.keywords[0])
74
74
  searcher = SearchGotoLine.new(path, params, query, suburl)
75
75
  else
76
76
  searcher = SearchContents.new(path, params, query, suburl, locale)
@@ -66,7 +66,7 @@ module Milkode
66
66
 
67
67
  # パッケージ名未指定の時は現在位置を検索条件に追加
68
68
  if packages.empty? && current_path != ''
69
- package, restpath = Util::divide_shortpath(current_path)
69
+ package, restpath = Util.divide_shortpath(current_path)
70
70
 
71
71
  grn_package = @grndb.packages[package]
72
72
  if grn_package
@@ -183,7 +183,7 @@ module Milkode
183
183
  end
184
184
 
185
185
  def touch_viewtime(path)
186
- package, restpath = Util::divide_shortpath(path)
186
+ package, restpath = Util.divide_shortpath(path)
187
187
  @grndb.packages.touch_if(package, :viewtime) if package
188
188
  end
189
189
 
@@ -70,7 +70,7 @@ module Milkode
70
70
 
71
71
  strs.each do |v|
72
72
  option = 0
73
- option |= Regexp::IGNORECASE if (!is_sensitive && Util::downcase?(v))
73
+ option |= Regexp::IGNORECASE if (!is_sensitive && Util.downcase?(v))
74
74
  regs << Regexp.new(Regexp.escape(v), option)
75
75
  end
76
76
 
@@ -117,7 +117,7 @@ module Milkode
117
117
  return [] if files.size > FILTER_BY_DIRECTORIES_FILES
118
118
 
119
119
  files.map {|v|
120
- Util::relative_path(v[1], @path.split("/")[1..-1].join("/")).to_s # 'path/to/file' -> 'to/file' (@path == 'path')
120
+ Util.relative_path(v[1], @path.split("/")[1..-1].join("/")).to_s # 'path/to/file' -> 'to/file' (@path == 'path')
121
121
  }.find_all {|v|
122
122
  v.include?("/") # Extract directory
123
123
  }.map {|v|
@@ -189,7 +189,7 @@ EOF
189
189
  end
190
190
 
191
191
  def recommended_fuzzy_gotoline?
192
- @q.keywords.size == 1 && @q.only_keywords && Util::fuzzy_gotoline_keyword?(@q.keywords[0])
192
+ @q.keywords.size == 1 && @q.only_keywords && Util.fuzzy_gotoline_keyword?(@q.keywords[0])
193
193
  end
194
194
 
195
195
  def recommended_wide_match_range?
@@ -296,7 +296,7 @@ EOF
296
296
  @next_line = nil
297
297
 
298
298
  @records.each_with_index do |record, index|
299
- if (Util::larger_than_oneline(record.content))
299
+ if (Util.larger_than_oneline(record.content))
300
300
  if grep_match_lines_stopover(record, index, keywords, wide_match_range)
301
301
  break
302
302
  end
@@ -353,7 +353,7 @@ EOF
353
353
 
354
354
  url = @homeurl + record_link(record)
355
355
 
356
- path = Util::relative_path(record.shortpath, @path)
356
+ path = Util.relative_path(record.shortpath, @path)
357
357
 
358
358
  if path != @prev
359
359
  # dt = <<EOS
@@ -388,8 +388,8 @@ EOS
388
388
  end
389
389
 
390
390
  def result_record(record)
391
- filename = Util::relative_path(record.shortpath, @path).to_s
392
- filename = Util::highlight_keywords(filename, @q.keywords, 'highlight-filename')
391
+ filename = Util.relative_path(record.shortpath, @path).to_s
392
+ filename = Util.highlight_keywords(filename, @q.keywords, 'highlight-filename')
393
393
 
394
394
  <<EOS
395
395
  <dt class='result-file'>#{file_or_dirimg(true, @suburl)}<a href='#{@homeurl + record_link(record)}'>#{filename}</a></dt>
@@ -417,7 +417,7 @@ EOS
417
417
  refinements << "<a href='#{refinement_suffix(record.suffix)}'>.#{record.suffix}</a>" if record.suffix
418
418
 
419
419
  # ディレクトリで絞り込み
420
- path = Util::relative_path(record.shortpath, @path)
420
+ path = Util.relative_path(record.shortpath, @path)
421
421
  dirname = path.to_s.split('/')[-2]
422
422
  refinements << "<a href='#{refinement_directory(record.shortpath + '/..')}'>#{dirname}/</a>" if dirname
423
423
 
@@ -78,8 +78,8 @@ EOF
78
78
  end
79
79
 
80
80
  def result_record(record)
81
- filename = Util::relative_path(record.shortpath, @path).to_s
82
- filename = Util::highlight_keywords(filename, @q.fpaths + @q.fpath_or_packages, 'highlight-filename')
81
+ filename = Util.relative_path(record.shortpath, @path).to_s
82
+ filename = Util.highlight_keywords(filename, @q.fpaths + @q.fpath_or_packages, 'highlight-filename')
83
83
 
84
84
  <<EOS
85
85
  <dt class='result-file'>#{file_or_dirimg(true, @suburl)}<a href='#{@homeurl + record_link(record)}'>#{filename}</a></dt>
@@ -32,7 +32,7 @@ module Milkode
32
32
  @homeurl = @suburl + "/home/"
33
33
 
34
34
  # 検索クエリを解析
35
- gotolines = Util::parse_gotoline(@q.gotolines + @q.keywords)
35
+ gotolines = Util.parse_gotoline(@q.gotolines + @q.keywords)
36
36
  @gotoline = gotolines[0]
37
37
 
38
38
  # 検索
@@ -129,7 +129,7 @@ EOF
129
129
  url = @homeurl + record_link(record)
130
130
 
131
131
  <<EOS
132
- <dt class='result-record'><a href='#{url + "#n#{coderay.highlight_lines[0]}"}'>#{Util::relative_path record.shortpath, @path}</a></dt>
132
+ <dt class='result-record'><a href='#{url + "#n#{coderay.highlight_lines[0]}"}'>#{Util.relative_path record.shortpath, @path}</a></dt>
133
133
  <dd>
134
134
  #{coderay.to_html_anchorlink(url)}
135
135
  </dd>
@@ -33,7 +33,7 @@ module Milkode
33
33
  @homeurl = @suburl + "/home/"
34
34
 
35
35
  # 検索クエリを解析
36
- @gotolines = Util::parse_gotoline(@q.keywords)
36
+ @gotolines = Util.parse_gotoline(@q.keywords)
37
37
 
38
38
  # レコードをピックアップ
39
39
  @records = []
@@ -118,7 +118,7 @@ EOF
118
118
  url = @homeurl + record_link(record)
119
119
 
120
120
  <<EOS
121
- <dt class='result-record'><a href='#{url + "#n#{coderay.highlight_lines[0]}"}'>#{Util::relative_path record.shortpath, @path}</a></dt>
121
+ <dt class='result-record'><a href='#{url + "#n#{coderay.highlight_lines[0]}"}'>#{Util.relative_path record.shortpath, @path}</a></dt>
122
122
  <dd>
123
123
  #{coderay.to_html_anchorlink(url)}
124
124
  </dd>
@@ -6,6 +6,7 @@ require 'pathname'
6
6
  require 'kconv'
7
7
  require 'open3'
8
8
  require 'strscan'
9
+ require 'whichr'
9
10
 
10
11
  module Milkode
11
12
  module Util
@@ -116,7 +117,7 @@ module Milkode
116
117
  end
117
118
 
118
119
  def ignore_case?(pattens, is_sensitive)
119
- !is_sensitive && (pattens.all? {|v| Util::downcase? v})
120
+ !is_sensitive && (pattens.all? {|v| Util.downcase? v})
120
121
  end
121
122
 
122
123
  def gotoline_keyword?(keyword)
@@ -235,11 +236,15 @@ module Milkode
235
236
 
236
237
  # 指定したコマンドが存在するか?
237
238
  def exist_command?(command)
238
- begin
239
- Open3.capture3('type', command)[2].exited?
240
- rescue Errno::ENOENT
241
- false
242
- end
239
+ # open3 : Not working on Pure Windows
240
+ # begin
241
+ # Open3.capture3('type', command)[2].exited?
242
+ # rescue Errno::ENOENT
243
+ # false
244
+ # end
245
+
246
+ # whichr
247
+ !(RubyWhich.new.which(command).empty?)
243
248
  end
244
249
 
245
250
  def highlight_keywords(src, keywords, css_class)
@@ -124,12 +124,12 @@ EOF
124
124
  def add(package_dir, restpath, package_name = nil)
125
125
  filename = File.join(package_dir, restpath) # フルパスの作成
126
126
  filename = File.expand_path(filename) # 絶対パスに変換
127
- path = Util::filename_to_utf8(filename) # データベースに格納する時のファイル名はutf8
127
+ path = Util.filename_to_utf8(filename) # データベースに格納する時のファイル名はutf8
128
128
  package = package_name || File.basename(package_dir)
129
- package = Util::filename_to_utf8(package)
130
- restpath = Util::filename_to_utf8(restpath)
129
+ package = Util.filename_to_utf8(package)
130
+ restpath = Util.filename_to_utf8(restpath)
131
131
  suffix = File.extname(path).sub('.', "")
132
- timestamp = Util::truncate_nsec(File.mtime(filename)) # OSへの問い合わせは変換前のファイル名で
132
+ timestamp = Util.truncate_nsec(File.mtime(filename)) # OSへの問い合わせは変換前のファイル名で
133
133
 
134
134
  record = @table[path]
135
135
 
@@ -173,7 +173,7 @@ EOF
173
173
 
174
174
  # shortpathの一致するレコードを取得
175
175
  def find_shortpath(shortpath)
176
- package, restpath = Util::divide_shortpath(shortpath)
176
+ package, restpath = Util.divide_shortpath(shortpath)
177
177
  result = @table.select { |record| (record.package == package) & (record.restpath == restpath) }
178
178
  return result.records[0]
179
179
  end
@@ -183,7 +183,7 @@ EOF
183
183
  if (shortpath.nil? || shortpath.empty?)
184
184
  @table.select.records
185
185
  else
186
- package, restpath = Util::divide_shortpath(shortpath)
186
+ package, restpath = Util.divide_shortpath(shortpath)
187
187
 
188
188
  if (restpath.nil? || restpath.empty?)
189
189
  @table.select { |record| record.package == package }.to_a
@@ -406,7 +406,7 @@ EOF
406
406
  private
407
407
 
408
408
  def load_content(filename)
409
- Util::load_content($stdout, filename)
409
+ Util.load_content($stdout, filename)
410
410
  end
411
411
 
412
412
  def package_expression(record, packages)
@@ -205,9 +205,6 @@ module Milkode
205
205
  # 除外ディレクトリならばパス
206
206
  next if ignoreDir?(fpath, next_path)
207
207
 
208
- # 読み込み不可ならばパス
209
- next unless FileTest.readable?(fpath)
210
-
211
208
  # ファイルならば中身を探索、ディレクトリならば再帰
212
209
  case File.ftype(fpath)
213
210
  when "directory"
@@ -229,9 +226,14 @@ module Milkode
229
226
  end
230
227
 
231
228
  def ignoreFile?(fpath, mini_path)
232
- GrenFileTest::ignoreFile?(fpath) ||
233
- GrenFileTest::binary?(fpath) ||
234
- package_ignore?(fpath, mini_path)
229
+ begin
230
+ GrenFileTest::ignoreFile?(fpath) ||
231
+ GrenFileTest::binary?(fpath) ||
232
+ package_ignore?(fpath, mini_path)
233
+ rescue Errno::EACCES # Can't read file
234
+ alert_info("skip", "Permission denied - #{fpath}")
235
+ true
236
+ end
235
237
  end
236
238
 
237
239
  def package_ignore?(fpath, mini_path)
@@ -248,7 +250,7 @@ module Milkode
248
250
 
249
251
  if File.exist? filename
250
252
  alert_info("add_ignore", filename)
251
- str = Util::load_content($stdout, filename)
253
+ str = Util.load_content($stdout, filename)
252
254
  @current_ignore.add IgnoreSetting.create_from_gitignore(path, str)
253
255
  end
254
256
  end
@@ -256,7 +258,7 @@ module Milkode
256
258
  def add_global_gitignore(filename)
257
259
  if File.exist? filename
258
260
  alert_info("add_ignore", filename)
259
- str = Util::load_content($stdout, filename)
261
+ str = Util.load_content($stdout, filename)
260
262
  @current_ignore.add IgnoreSetting.create_from_gitignore("/", str)
261
263
  end
262
264
  end
@@ -266,7 +268,7 @@ module Milkode
266
268
  end
267
269
 
268
270
  def alert(title, msg)
269
- if (Util::platform_win?)
271
+ if (Util.platform_win?)
270
272
  @out.puts "#{title.ljust(10)} : #{Kconv.kconv(msg, Kconv::SJIS)}"
271
273
  else
272
274
  @out.puts "#{title.ljust(10)} : #{msg}"
@@ -14,8 +14,19 @@ module Milkode
14
14
  AUTO_EXTERNAL_RECORD_NUM = 500
15
15
 
16
16
  def self.execute(stdout, arguments=[])
17
+ begin
18
+ execute_in(stdout, arguments)
19
+ rescue Interrupt
20
+ puts
21
+ end
22
+ end
23
+
24
+ def self.execute_in(stdout, arguments)
25
+ # Add ENV['GMILK_OPTIONS'] value
26
+ arguments += ENV['GMILK_OPTIONS'].split if ENV['GMILK_OPTIONS']
27
+
17
28
  # 引数の文字コードをUTF-8に変換
18
- if (Util::platform_win?)
29
+ if (Util.platform_win?)
19
30
  arguments = arguments.map{|arg| Kconv.kconv(arg, Kconv::UTF8)}
20
31
  end
21
32
 
@@ -79,7 +90,7 @@ EOF
79
90
  opt.on('-n NUM', 'Limits the number of match to show.') {|v| option.matchCountLimit = v.to_i }
80
91
  opt.on('--no-external', 'Disable auto external.') {|v| my_option[:no_external] = true }
81
92
  opt.on('--no-snip', 'There being a long line, it does not snip.') {|v| option.noSnip = true }
82
- opt.on('-o ENCODE', '--output-encode ENCODE', 'Specify output encode(none, jis, sjis, euc, ascii, utf8, utf16). Default is "utf8"') {|v| option.output_kcode = Util::str2kcode(v) }
93
+ opt.on('-o ENCODE', '--output-encode ENCODE', 'Specify output encode(none, jis, sjis, euc, ascii, utf8, utf16). Default is "utf8"') {|v| option.output_kcode = Util.str2kcode(v) }
83
94
  opt.on('-p PACKAGE', '--package PACKAGE', 'Specify search package.') {|v| setup_package(option, my_option, v) }
84
95
  opt.on('-r', '--root', 'Search from package root.') {|v| current_dir = package_root_dir(File.expand_path(".")); my_option[:find_mode] = true }
85
96
  opt.on('-s SUFFIX', '--suffix SUFFIX', 'Suffix.') {|v| option.suffixs << v; my_option[:find_mode] = true }
@@ -101,7 +112,7 @@ EOF
101
112
 
102
113
  unless ap.gotowords.empty?
103
114
  my_option[:find_mode] = true
104
- my_option[:gotoline_data] = Util::parse_gotoline(ap.gotowords)
115
+ my_option[:gotoline_data] = Util.parse_gotoline(ap.gotowords)
105
116
  end
106
117
 
107
118
  # p ap.arguments
@@ -189,7 +200,7 @@ EOF
189
200
  my_option[:gotoline_data].each do |v|
190
201
  if is_abs_path
191
202
  # @memo ここにはこないはず
192
- package, restpath = Util::divide_shortpath(v[0][0])
203
+ package, restpath = Util.divide_shortpath(v[0][0])
193
204
  # p [package, restpath]
194
205
  option.packages = [package]
195
206
  option.filePatterns = [restpath]
@@ -210,8 +221,8 @@ EOF
210
221
  findGrep.searchAndPrint2(stdout, records)
211
222
  else
212
223
  # レコード数が多い時は"-e grep"で検索
213
- if Util::exist_command?('cat') && Util::exist_command?('grep') && Util::exist_command?('xargs')
214
- $stderr.puts "Number of records is large. Use auto external tool (gmilk -e grep)"
224
+ if Util.exist_command?('cat') && Util.exist_command?('grep') && Util.exist_command?('xargs')
225
+ $stderr.puts "Because number of records is large, Milkode use external tool. (Same as 'gmilk -e grep')"
215
226
  search_external_tool(arguments, option, records, 'grep -n', 'grep')
216
227
  else
217
228
  findGrep.searchAndPrint2(stdout, records)
@@ -330,7 +341,7 @@ EOF
330
341
 
331
342
  def after
332
343
  if @arguments.first
333
- if Util::gotoline_keyword? @arguments[0]
344
+ if Util.gotoline_keyword? @arguments[0]
334
345
  @state = :gotoline
335
346
  end
336
347
  end
@@ -16,12 +16,12 @@ module Milkode
16
16
 
17
17
  def search_and_print(stdout)
18
18
  @gotolines.each do |gotoline|
19
- package_name, restpath = Util::divide_shortpath(gotoline[0][0])
19
+ package_name, restpath = Util.divide_shortpath(gotoline[0][0])
20
20
  package = @yaml.find_name(package_name)
21
21
 
22
22
  if package
23
23
  path = File.join(package.directory, restpath)
24
- relative_path = Util::relative_path(path, Dir.pwd).to_s
24
+ relative_path = Util.relative_path(path, Dir.pwd).to_s
25
25
  lineno = gotoline[1]
26
26
  content = get_text_lineno(path, lineno)
27
27
 
@@ -45,8 +45,8 @@ module Milkode
45
45
  end
46
46
 
47
47
  def print(stdout)
48
- stdout.puts "dir : #{@start_dir} (#{Gren::Util::time_s(time)})"
49
- stdout.puts "files : #{@search_count} in #{@count} (#{Gren::Util::size_s(@search_size)} in #{Gren::Util::size_s(@size)})"
48
+ stdout.puts "dir : #{@start_dir} (#{Gren::Util.time_s(time)})"
49
+ stdout.puts "files : #{@search_count} in #{@count} (#{Gren::Util.size_s(@search_size)} in #{Gren::Util.size_s(@size)})"
50
50
  stdout.puts "match : #{@match_file_count} files, #{match_count} hit"
51
51
  end
52
52
  end
@@ -91,7 +91,7 @@ module Milkode
91
91
 
92
92
  strs.each do |v|
93
93
  option = 0
94
- option |= Regexp::IGNORECASE if (@option.ignoreCase || (!@option.caseSensitive && Milkode::Util::downcase?(v)))
94
+ option |= Regexp::IGNORECASE if (@option.ignoreCase || (!@option.caseSensitive && Milkode::Util.downcase?(v)))
95
95
  regs << Regexp.new(v, option)
96
96
  end
97
97
 
@@ -155,7 +155,7 @@ module Milkode
155
155
  end
156
156
 
157
157
  def time_s
158
- Gren::Util::time_s(@result.time)
158
+ Gren::Util.time_s(@result.time)
159
159
  end
160
160
 
161
161
  def searchFromDB(stdout, records, dir)
@@ -167,7 +167,7 @@ module Milkode
167
167
  if (@option.gotoline > 0)
168
168
  records.each do |record|
169
169
  if FileTest.exist?(record.path)
170
- relative_path = Milkode::Util::relative_path(record.path, Dir.pwd).to_s
170
+ relative_path = Milkode::Util.relative_path(record.path, Dir.pwd).to_s
171
171
  line = getTextLineno(relative_path, @option.gotoline)
172
172
  stdout.puts "#{relative_path}:#{@option.gotoline}:#{line}" if (line)
173
173
  @result.match_file_count += 1
@@ -185,7 +185,7 @@ module Milkode
185
185
  else
186
186
  records.each do |record|
187
187
  path = record.path
188
- relative_path = Milkode::Util::relative_path(path, Dir.pwd).to_s
188
+ relative_path = Milkode::Util.relative_path(path, Dir.pwd).to_s
189
189
  stdout.puts relative_path
190
190
  @result.match_file_count += 1
191
191
  raise MatchCountOverError if (0 < @option.matchCountLimit && @option.matchCountLimit <= @result.match_file_count)
@@ -340,7 +340,7 @@ module Milkode
340
340
  if ( result )
341
341
  unless (@option.dispHtml)
342
342
  # header = "#{path}:#{index + 1}:"
343
- rpath = Milkode::Util::relative_path(path, Dir.pwd).to_s
343
+ rpath = Milkode::Util.relative_path(path, Dir.pwd).to_s
344
344
  header = "#{rpath}:#{index + 1}:"
345
345
 
346
346
  line = GrenSnip::snip(line, match_datas) unless (@option.noSnip)
@@ -391,7 +391,7 @@ EOF
391
391
  def self.file2lines(file, kcode)
392
392
  data = file.read
393
393
 
394
- unless Milkode::Util::ruby19?
394
+ unless Milkode::Util.ruby19?
395
395
  if (kcode != Kconv::NOCONV)
396
396
  file_kcode = Kconv::guess(data)
397
397
 
@@ -5,17 +5,17 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "milkode"
8
- s.version = "1.5.0"
8
+ s.version = "1.6.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 = "2014-02-08"
13
- s.description = "Line based local source code search engine & grep-command & web-app."
12
+ s.date = "2014-04-13"
13
+ s.description = "Milkode is line based local source code search engine. It have command line interface and web application. It will accelerate the code reading of your life."
14
14
  s.email = "ongaeshi0621@gmail.com"
15
15
  s.executables = ["gmilk", "milk"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
- "README.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  "HISTORY.ja.rdoc",
25
25
  "HISTORY.rdoc",
26
26
  "LICENSE.txt",
27
- "README.rdoc",
27
+ "README.md",
28
28
  "Rakefile",
29
29
  "VERSION",
30
30
  "bin/gmilk",
@@ -202,7 +202,7 @@ Gem::Specification.new do |s|
202
202
  s.licenses = ["MIT"]
203
203
  s.require_paths = ["lib"]
204
204
  s.rubygems_version = "1.8.23"
205
- s.summary = "Line based local source code search engine & grep-command & web-app."
205
+ s.summary = "Line based local source code search engine."
206
206
 
207
207
  if s.respond_to? :specification_version then
208
208
  s.specification_version = 3
@@ -214,12 +214,13 @@ Gem::Specification.new do |s|
214
214
  s.add_runtime_dependency(%q<sinatra>, [">= 1.2.6"])
215
215
  s.add_runtime_dependency(%q<launchy>, [">= 0.3.7"])
216
216
  s.add_runtime_dependency(%q<coderay>, [">= 1.0.5"])
217
- s.add_runtime_dependency(%q<thin>, [">= 1.2.10"])
217
+ s.add_runtime_dependency(%q<thin>, ["< 2.0.0", ">= 1.2.10"])
218
218
  s.add_runtime_dependency(%q<archive-zip>, [">= 0.4.0"])
219
219
  s.add_runtime_dependency(%q<haml>, [">= 3.1.2"])
220
220
  s.add_runtime_dependency(%q<sass>, [">= 3.1.3"])
221
221
  s.add_runtime_dependency(%q<thor>, [">= 0.18.1"])
222
222
  s.add_runtime_dependency(%q<i18n>, ["~> 0.6.5"])
223
+ s.add_runtime_dependency(%q<whichr>, ["~> 0.3"])
223
224
  s.add_development_dependency(%q<bundler>, [">= 0"])
224
225
  s.add_development_dependency(%q<jeweler>, [">= 0"])
225
226
  s.add_development_dependency(%q<rack-test>, [">= 0"])
@@ -232,12 +233,13 @@ Gem::Specification.new do |s|
232
233
  s.add_dependency(%q<sinatra>, [">= 1.2.6"])
233
234
  s.add_dependency(%q<launchy>, [">= 0.3.7"])
234
235
  s.add_dependency(%q<coderay>, [">= 1.0.5"])
235
- s.add_dependency(%q<thin>, [">= 1.2.10"])
236
+ s.add_dependency(%q<thin>, ["< 2.0.0", ">= 1.2.10"])
236
237
  s.add_dependency(%q<archive-zip>, [">= 0.4.0"])
237
238
  s.add_dependency(%q<haml>, [">= 3.1.2"])
238
239
  s.add_dependency(%q<sass>, [">= 3.1.3"])
239
240
  s.add_dependency(%q<thor>, [">= 0.18.1"])
240
241
  s.add_dependency(%q<i18n>, ["~> 0.6.5"])
242
+ s.add_dependency(%q<whichr>, ["~> 0.3"])
241
243
  s.add_dependency(%q<bundler>, [">= 0"])
242
244
  s.add_dependency(%q<jeweler>, [">= 0"])
243
245
  s.add_dependency(%q<rack-test>, [">= 0"])
@@ -251,12 +253,13 @@ Gem::Specification.new do |s|
251
253
  s.add_dependency(%q<sinatra>, [">= 1.2.6"])
252
254
  s.add_dependency(%q<launchy>, [">= 0.3.7"])
253
255
  s.add_dependency(%q<coderay>, [">= 1.0.5"])
254
- s.add_dependency(%q<thin>, [">= 1.2.10"])
256
+ s.add_dependency(%q<thin>, ["< 2.0.0", ">= 1.2.10"])
255
257
  s.add_dependency(%q<archive-zip>, [">= 0.4.0"])
256
258
  s.add_dependency(%q<haml>, [">= 3.1.2"])
257
259
  s.add_dependency(%q<sass>, [">= 3.1.3"])
258
260
  s.add_dependency(%q<thor>, [">= 0.18.1"])
259
261
  s.add_dependency(%q<i18n>, ["~> 0.6.5"])
262
+ s.add_dependency(%q<whichr>, ["~> 0.3"])
260
263
  s.add_dependency(%q<bundler>, [">= 0"])
261
264
  s.add_dependency(%q<jeweler>, [">= 0"])
262
265
  s.add_dependency(%q<rack-test>, [">= 0"])
@@ -26,9 +26,9 @@ class TestCLI < Test::Unit::TestCase
26
26
  def test_add
27
27
  # system("type git")
28
28
  command("add")
29
- assert_not_match /error/, command("add git@github.com:ongaeshi/mini-repo-git.git")
30
- assert_not_match /error/, command("add git@github.com:ongaeshi/mini-repo-git.git -n mrg-develop -b develop")
31
- # assert_match /error/, command("add git@github.com:ongaeshi/mini-repo-git.git -n mrg-developa -b developa") # not found branch
29
+ assert_not_match /error/, command("add git://github.com/ongaeshi/mini-repo-git.git")
30
+ assert_not_match /error/, command("add git://github.com/ongaeshi/mini-repo-git.git -n mrg-develop -b develop")
31
+ # assert_match /error/, command("add git://github.com/ongaeshi/mini-repo-git.git -n mrg-developa -b developa") # not found branch
32
32
  end
33
33
 
34
34
  def test_grep
@@ -106,7 +106,7 @@ EOF
106
106
 
107
107
  def test_create_from_gitignore_sjis
108
108
  Dir.chdir(File.join(File.dirname(__FILE__))) do
109
- str = Milkode::Util::load_content($stdout, "data/.gitignore.sjis") # sjis -> utf-8
109
+ str = Milkode::Util.load_content($stdout, "data/.gitignore.sjis") # sjis -> utf-8
110
110
  is = IgnoreSetting.create_from_gitignore("/doc", str)
111
111
  assert_equal "/doc", is.path
112
112
  assert_equal ["coverage", "rdoc", "doc", ".yardoc", ".bundle", "pkg"], is.ignores
@@ -36,9 +36,9 @@ EOF
36
36
 
37
37
  def test_dump
38
38
  obj = MilkodeYaml.new(SRC)
39
- if Milkode::Util::ruby20?
39
+ if Milkode::Util.ruby20?
40
40
  assert_equal SRC, obj.dump
41
- elsif Milkode::Util::ruby19?
41
+ elsif Milkode::Util.ruby19?
42
42
  assert_equal <<EOF, obj.dump
43
43
  ---
44
44
  version: '0.2'
@@ -75,7 +75,7 @@ EOF
75
75
 
76
76
  assert_equal 1, obj.contents.size
77
77
 
78
- assert_equal <<EOF, obj.dump if Milkode::Util::ruby19?
78
+ assert_equal <<EOF, obj.dump if Milkode::Util.ruby19?
79
79
  ---
80
80
  version: '0.2'
81
81
  contents:
@@ -89,7 +89,7 @@ EOF
89
89
 
90
90
  assert_equal 2, obj.contents.size
91
91
 
92
- if Milkode::Util::ruby20?
92
+ if Milkode::Util.ruby20?
93
93
  assert_equal <<EOF, obj.dump
94
94
  ---
95
95
  version: '0.2'
@@ -100,7 +100,7 @@ contents:
100
100
  - '*.bak'
101
101
  - /rdoc
102
102
  EOF
103
- elsif Milkode::Util::ruby19?
103
+ elsif Milkode::Util.ruby19?
104
104
  assert_equal <<EOF, obj.dump
105
105
  ---
106
106
  version: '0.2'
@@ -122,7 +122,7 @@ EOF
122
122
  obj = MilkodeYaml.new(V_0_1)
123
123
  assert_equal true, obj.migrate
124
124
 
125
- assert_equal <<EOF, obj.dump if Milkode::Util::ruby19?
125
+ assert_equal <<EOF, obj.dump if Milkode::Util.ruby19?
126
126
  ---
127
127
  version: '0.2'
128
128
  contents:
@@ -145,7 +145,7 @@ EOF
145
145
  p = Package.create(p.directory, p.ignore + ['*.a'])
146
146
  obj.update(p)
147
147
 
148
- if Milkode::Util::ruby20?
148
+ if Milkode::Util.ruby20?
149
149
  assert_equal <<EOF, obj.dump
150
150
  ---
151
151
  version: '0.2'
@@ -158,7 +158,7 @@ contents:
158
158
  - '*.a'
159
159
  - directory: /a/b/c
160
160
  EOF
161
- elsif Milkode::Util::ruby19?
161
+ elsif Milkode::Util.ruby19?
162
162
  assert_equal <<EOF, obj.dump
163
163
  ---
164
164
  version: '0.2'
@@ -165,7 +165,7 @@ module Milkode
165
165
 
166
166
  def t_touch
167
167
  r = @packages.add("r1", "", {})
168
- t = Util::truncate_nsec(Time.now)
168
+ t = Util.truncate_nsec(Time.now)
169
169
 
170
170
  assert_not_equal t, r.updatetime
171
171
  assert_not_equal t, r.viewtime
@@ -14,13 +14,13 @@ class TestUtil < Test::Unit::TestCase
14
14
  include FileTestUtils
15
15
 
16
16
  def test_zip_extract
17
- Milkode::Util::zip_extract('../data/abc.zip', '.')
17
+ Milkode::Util.zip_extract('../data/abc.zip', '.')
18
18
  assert File.exist?('abc')
19
19
  assert File.exist?('abc/a.txt')
20
20
  assert File.exist?('abc/b.txt')
21
21
  assert File.exist?('abc/c.txt')
22
22
 
23
- Milkode::Util::zip_extract('../data/nodir_abc.zip', '.')
23
+ Milkode::Util.zip_extract('../data/nodir_abc.zip', '.')
24
24
  assert File.exist?('nodir_abc')
25
25
  assert File.exist?('nodir_abc/a.txt')
26
26
  assert File.exist?('nodir_abc/b.txt')
@@ -29,17 +29,17 @@ class TestUtil < Test::Unit::TestCase
29
29
 
30
30
  # Remove because fail test on single test
31
31
  # def test_root_entrylist
32
- # assert_equal ['abc/'], Milkode::Util::root_entrylist('../data/abc.zip')
33
- # assert_equal ['a.txt', 'b.txt', 'c.txt'], Milkode::Util::root_entrylist('../data/nodir_abc.zip')
32
+ # assert_equal ['abc/'], Milkode::Util.root_entrylist('../data/abc.zip')
33
+ # assert_equal ['a.txt', 'b.txt', 'c.txt'], Milkode::Util.root_entrylist('../data/nodir_abc.zip')
34
34
  # end
35
35
 
36
36
  def test_platform
37
- if (Milkode::Util::platform_osx?)
38
- assert_equal Milkode::Util::shell_kcode, Kconv::UTF8
37
+ if (Milkode::Util.platform_osx?)
38
+ assert_equal Milkode::Util.shell_kcode, Kconv::UTF8
39
39
  end
40
40
 
41
- if (Milkode::Util::platform_win?)
42
- assert_equal Milkode::Util::shell_kcode, Kconv::SJIS
41
+ if (Milkode::Util.platform_win?)
42
+ assert_equal Milkode::Util.shell_kcode, Kconv::SJIS
43
43
  end
44
44
  end
45
45
 
@@ -55,92 +55,92 @@ class TestUtil < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  def test_filename_to_utf8
58
- if (Milkode::Util::ruby19?)
59
- assert_equal Encoding::UTF_8, Milkode::Util::filename_to_utf8('ダミー').encoding
60
- assert_equal Encoding::UTF_8, Milkode::Util::filename_to_utf8(create_filename_str('ダミー')).encoding
58
+ if (Milkode::Util.ruby19?)
59
+ assert_equal Encoding::UTF_8, Milkode::Util.filename_to_utf8('ダミー').encoding
60
+ assert_equal Encoding::UTF_8, Milkode::Util.filename_to_utf8(create_filename_str('ダミー')).encoding
61
61
  else
62
62
  # 実行だけはしておく
63
- Milkode::Util::filename_to_utf8('ダミー')
64
- Milkode::Util::filename_to_utf8(create_filename_str('ダミー'))
63
+ Milkode::Util.filename_to_utf8('ダミー')
64
+ Milkode::Util.filename_to_utf8(create_filename_str('ダミー'))
65
65
  end
66
66
  end
67
67
 
68
68
  def test_downcase?
69
- assert !Milkode::Util::downcase?("DUMMY")
70
- assert Milkode::Util::downcase?("dummy")
71
- assert !Milkode::Util::downcase?("Dummy")
72
- assert !Milkode::Util::downcase?("dummyNode")
69
+ assert !Milkode::Util.downcase?("DUMMY")
70
+ assert Milkode::Util.downcase?("dummy")
71
+ assert !Milkode::Util.downcase?("Dummy")
72
+ assert !Milkode::Util.downcase?("dummyNode")
73
73
  end
74
74
 
75
75
  def test_ignore_case?
76
- assert_equal true, Milkode::Util::ignore_case?(['a', 'b'], false)
77
- assert_equal false, Milkode::Util::ignore_case?(['a', 'b'], true)
78
- assert_equal false, Milkode::Util::ignore_case?(['a', 'B'], false)
79
- assert_equal false, Milkode::Util::ignore_case?(['A', 'b'], true)
76
+ assert_equal true, Milkode::Util.ignore_case?(['a', 'b'], false)
77
+ assert_equal false, Milkode::Util.ignore_case?(['a', 'b'], true)
78
+ assert_equal false, Milkode::Util.ignore_case?(['a', 'B'], false)
79
+ assert_equal false, Milkode::Util.ignore_case?(['A', 'b'], true)
80
80
  end
81
81
 
82
82
  def test_parse_gotoline
83
- assert_equal [[['a', 'b'], 123]], Milkode::Util::parse_gotoline(['a', '123', 'b'])
84
- assert_equal [[['a', '123', 'b'], 55]], Milkode::Util::parse_gotoline(['a', '123', 'b', '55'])
85
- assert_equal [[['a', 'b'], 1]], Milkode::Util::parse_gotoline(['a', 'b'])
86
- assert_equal [[['a'], 55]], Milkode::Util::parse_gotoline(['a:55'])
87
- assert_equal [[['lib/aaa.c'], 8], [['test/bbb.rb'], 9]], Milkode::Util::parse_gotoline(['lib/aaa.c:8', 'test/bbb.rb:9'])
88
- assert_equal [[['c:/tmp/ccc.txt'], 99]], Milkode::Util::parse_gotoline(['c:/tmp/ccc.txt:99'])
89
- assert_equal [[['/milkode/hoge.rb'], 99]], Milkode::Util::parse_gotoline(['/milkode/hoge.rb:99'])
83
+ assert_equal [[['a', 'b'], 123]], Milkode::Util.parse_gotoline(['a', '123', 'b'])
84
+ assert_equal [[['a', '123', 'b'], 55]], Milkode::Util.parse_gotoline(['a', '123', 'b', '55'])
85
+ assert_equal [[['a', 'b'], 1]], Milkode::Util.parse_gotoline(['a', 'b'])
86
+ assert_equal [[['a'], 55]], Milkode::Util.parse_gotoline(['a:55'])
87
+ assert_equal [[['lib/aaa.c'], 8], [['test/bbb.rb'], 9]], Milkode::Util.parse_gotoline(['lib/aaa.c:8', 'test/bbb.rb:9'])
88
+ assert_equal [[['c:/tmp/ccc.txt'], 99]], Milkode::Util.parse_gotoline(['c:/tmp/ccc.txt:99'])
89
+ assert_equal [[['/milkode/hoge.rb'], 99]], Milkode::Util.parse_gotoline(['/milkode/hoge.rb:99'])
90
90
  end
91
91
 
92
92
  def test_gotoline_multi?
93
- assert_equal true, Milkode::Util::gotoline_multi?("test:1".split)
94
- assert_equal true, Milkode::Util::gotoline_multi?("test.rb:5 lib.c:10".split)
95
- assert_equal false, Milkode::Util::gotoline_multi?("a 123 b".split)
96
- assert_equal false, Milkode::Util::gotoline_multi?("c:/user 5".split)
93
+ assert_equal true, Milkode::Util.gotoline_multi?("test:1".split)
94
+ assert_equal true, Milkode::Util.gotoline_multi?("test.rb:5 lib.c:10".split)
95
+ assert_equal false, Milkode::Util.gotoline_multi?("a 123 b".split)
96
+ assert_equal false, Milkode::Util.gotoline_multi?("c:/user 5".split)
97
97
  end
98
98
 
99
99
  def test_git_url?
100
- assert_equal false, Milkode::Util::git_url?('http:://ongaeshi.me')
101
- assert_equal true, Milkode::Util::git_url?('git://github.com/ongaeshi/milkode.git')
102
- assert_equal true, Milkode::Util::git_url?('git@github.com:ongaeshi/milkode.git')
103
- assert_equal true, Milkode::Util::git_url?('ssh:foo@bar/baz.git')
104
- assert_equal true, Milkode::Util::git_url?('https://github.com/ongaeshi/milkode.git')
100
+ assert_equal false, Milkode::Util.git_url?('http:://ongaeshi.me')
101
+ assert_equal true, Milkode::Util.git_url?('git://github.com/ongaeshi/milkode.git')
102
+ assert_equal true, Milkode::Util.git_url?('git@github.com:ongaeshi/milkode.git')
103
+ assert_equal true, Milkode::Util.git_url?('ssh:foo@bar/baz.git')
104
+ assert_equal true, Milkode::Util.git_url?('https://github.com/ongaeshi/milkode.git')
105
105
  end
106
106
 
107
107
  def test_svn_url?
108
- assert_equal true, Milkode::Util::svn_url?('svn://ongaeshi.me/svn/trunk/')
109
- assert_equal true, Milkode::Util::svn_url?('svn+ssh://ongaeshi.me/svn/trunk/')
110
- assert_equal false, Milkode::Util::svn_url?('svna://ongaeshi.me/svn/trunk/')
111
- assert_equal false, Milkode::Util::svn_url?('http:://ongaeshi.me')
112
- assert_equal false, Milkode::Util::svn_url?('git://github.com/ongaeshi/milkode.git')
113
- assert_equal false, Milkode::Util::svn_url?('git@github.com:ongaeshi/milkode.git')
114
- assert_equal false, Milkode::Util::svn_url?('ssh:foo@bar/baz.git')
108
+ assert_equal true, Milkode::Util.svn_url?('svn://ongaeshi.me/svn/trunk/')
109
+ assert_equal true, Milkode::Util.svn_url?('svn+ssh://ongaeshi.me/svn/trunk/')
110
+ assert_equal false, Milkode::Util.svn_url?('svna://ongaeshi.me/svn/trunk/')
111
+ assert_equal false, Milkode::Util.svn_url?('http:://ongaeshi.me')
112
+ assert_equal false, Milkode::Util.svn_url?('git://github.com/ongaeshi/milkode.git')
113
+ assert_equal false, Milkode::Util.svn_url?('git@github.com:ongaeshi/milkode.git')
114
+ assert_equal false, Milkode::Util.svn_url?('ssh:foo@bar/baz.git')
115
115
  end
116
116
 
117
117
  def test_divide_shortpath
118
- package, restpath = Milkode::Util::divide_shortpath('package/to/a.txt')
118
+ package, restpath = Milkode::Util.divide_shortpath('package/to/a.txt')
119
119
  assert_equal 'package', package
120
120
  assert_equal 'to/a.txt', restpath
121
121
 
122
- package, restpath = Milkode::Util::divide_shortpath('/package/to/a.txt')
122
+ package, restpath = Milkode::Util.divide_shortpath('/package/to/a.txt')
123
123
  assert_equal 'package', package
124
124
  assert_equal 'to/a.txt', restpath
125
125
  end
126
126
 
127
127
  def test_highlight_keywords
128
- assert_equal "stringstr", Milkode::Util::highlight_keywords("stringstr", [], 'attr')
129
- assert_equal "<span class='attr'>str</span>ing", Milkode::Util::highlight_keywords("string", ["str"], 'attr')
130
- assert_equal "<span class='attr'>str</span>ing<span class='attr'>str</span>", Milkode::Util::highlight_keywords("stringstr", ["str"], 'attr')
131
- assert_equal "<span class='attr'>stri</span>ng<span class='attr'>str</span>", Milkode::Util::highlight_keywords("stringstr", ["str", "i", "s"], 'attr')
132
- assert_equal "abc<span class='attr'>d</span>", Milkode::Util::highlight_keywords("abcd", ["d"], 'attr')
133
- assert_equal "<span class='attr'>日本</span>語a<span class='attr'>bc</span>dで<span class='attr'>す</span>", Milkode::Util::highlight_keywords("日本語abcdです", ["bc", "日本", "す"], 'attr')
134
- assert_equal "<span><span class='attr'>span</span></span>", Milkode::Util::highlight_keywords("<span>span</span>", ["span"], 'attr')
128
+ assert_equal "stringstr", Milkode::Util.highlight_keywords("stringstr", [], 'attr')
129
+ assert_equal "<span class='attr'>str</span>ing", Milkode::Util.highlight_keywords("string", ["str"], 'attr')
130
+ assert_equal "<span class='attr'>str</span>ing<span class='attr'>str</span>", Milkode::Util.highlight_keywords("stringstr", ["str"], 'attr')
131
+ assert_equal "<span class='attr'>stri</span>ng<span class='attr'>str</span>", Milkode::Util.highlight_keywords("stringstr", ["str", "i", "s"], 'attr')
132
+ assert_equal "abc<span class='attr'>d</span>", Milkode::Util.highlight_keywords("abcd", ["d"], 'attr')
133
+ assert_equal "<span class='attr'>日本</span>語a<span class='attr'>bc</span>dで<span class='attr'>す</span>", Milkode::Util.highlight_keywords("日本語abcdです", ["bc", "日本", "す"], 'attr')
134
+ assert_equal "<span><span class='attr'>span</span></span>", Milkode::Util.highlight_keywords("<span>span</span>", ["span"], 'attr')
135
135
  end
136
136
 
137
137
  def test_github_repo
138
- assert_equal 'ongaeshi/firelink', Milkode::Util::github_repo('git@github.com:ongaeshi/firelink.git')
139
- assert_equal 'ongaeshi/milkode' , Milkode::Util::github_repo('git@github.com:ongaeshi/milkode.git')
140
- assert_equal 'ongaeshi/milkode' , Milkode::Util::github_repo('git://github.com/ongaeshi/milkode.git')
141
- assert_equal 'ongaeshi/milkode' , Milkode::Util::github_repo('https://github.com/ongaeshi/milkode.git')
142
- assert_equal 'ongaeshi/milkode' , Milkode::Util::github_repo('http://github.com/ongaeshi/milkode.git')
143
- assert_equal nil , Milkode::Util::github_repo('https://ongaeshi.me/ongaeshi/milkode.git')
138
+ assert_equal 'ongaeshi/firelink', Milkode::Util.github_repo('git@github.com:ongaeshi/firelink.git')
139
+ assert_equal 'ongaeshi/milkode' , Milkode::Util.github_repo('git@github.com:ongaeshi/milkode.git')
140
+ assert_equal 'ongaeshi/milkode' , Milkode::Util.github_repo('git://github.com/ongaeshi/milkode.git')
141
+ assert_equal 'ongaeshi/milkode' , Milkode::Util.github_repo('https://github.com/ongaeshi/milkode.git')
142
+ assert_equal 'ongaeshi/milkode' , Milkode::Util.github_repo('http://github.com/ongaeshi/milkode.git')
143
+ assert_equal nil , Milkode::Util.github_repo('https://ongaeshi.me/ongaeshi/milkode.git')
144
144
  end
145
145
 
146
146
  def teardown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milkode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
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: 2014-02-08 00:00:00.000000000 Z
12
+ date: 2014-04-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: termcolor
@@ -118,6 +118,9 @@ dependencies:
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
+ - - <
122
+ - !ruby/object:Gem::Version
123
+ version: 2.0.0
121
124
  - - ! '>='
122
125
  - !ruby/object:Gem::Version
123
126
  version: 1.2.10
@@ -126,6 +129,9 @@ dependencies:
126
129
  version_requirements: !ruby/object:Gem::Requirement
127
130
  none: false
128
131
  requirements:
132
+ - - <
133
+ - !ruby/object:Gem::Version
134
+ version: 2.0.0
129
135
  - - ! '>='
130
136
  - !ruby/object:Gem::Version
131
137
  version: 1.2.10
@@ -209,6 +215,22 @@ dependencies:
209
215
  - - ~>
210
216
  - !ruby/object:Gem::Version
211
217
  version: 0.6.5
218
+ - !ruby/object:Gem::Dependency
219
+ name: whichr
220
+ requirement: !ruby/object:Gem::Requirement
221
+ none: false
222
+ requirements:
223
+ - - ~>
224
+ - !ruby/object:Gem::Version
225
+ version: '0.3'
226
+ type: :runtime
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ none: false
230
+ requirements:
231
+ - - ~>
232
+ - !ruby/object:Gem::Version
233
+ version: '0.3'
212
234
  - !ruby/object:Gem::Dependency
213
235
  name: bundler
214
236
  requirement: !ruby/object:Gem::Requirement
@@ -289,7 +311,9 @@ dependencies:
289
311
  - - ! '>='
290
312
  - !ruby/object:Gem::Version
291
313
  version: 2.5.4
292
- description: Line based local source code search engine & grep-command & web-app.
314
+ description: Milkode is line based local source code search engine. It have command
315
+ line interface and web application. It will accelerate the code reading of your
316
+ life.
293
317
  email: ongaeshi0621@gmail.com
294
318
  executables:
295
319
  - gmilk
@@ -297,7 +321,7 @@ executables:
297
321
  extensions: []
298
322
  extra_rdoc_files:
299
323
  - LICENSE.txt
300
- - README.rdoc
324
+ - README.md
301
325
  files:
302
326
  - .document
303
327
  - .travis.yml
@@ -305,7 +329,7 @@ files:
305
329
  - HISTORY.ja.rdoc
306
330
  - HISTORY.rdoc
307
331
  - LICENSE.txt
308
- - README.rdoc
332
+ - README.md
309
333
  - Rakefile
310
334
  - VERSION
311
335
  - bin/gmilk
@@ -502,5 +526,5 @@ rubyforge_project:
502
526
  rubygems_version: 1.8.23
503
527
  signing_key:
504
528
  specification_version: 3
505
- summary: Line based local source code search engine & grep-command & web-app.
529
+ summary: Line based local source code search engine.
506
530
  test_files: []
@@ -1,6 +0,0 @@
1
- = milkode
2
-
3
- Line based local source code search engine & web-app.
4
-
5
- * {History.rdoc}[https://github.com/ongaeshi/milkode/blob/master/HISTORY.rdoc]
6
- * {更新履歴}[https://github.com/ongaeshi/milkode/blob/master/HISTORY.ja.rdoc]