milkode 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/HISTORY.ja.rdoc +36 -0
- data/HISTORY.rdoc +20 -0
- data/VERSION +1 -1
- data/bin/gmilk +1 -1
- data/bin/milk +1 -1
- data/lib/milkode/cdweb/app.rb +69 -8
- data/lib/milkode/cdweb/lib/coderay_html2.rb +24 -16
- data/lib/milkode/cdweb/lib/coderay_wrapper.rb +3 -1
- data/lib/milkode/cdweb/lib/command.rb +21 -4
- data/lib/milkode/cdweb/lib/database.rb +12 -6
- data/lib/milkode/cdweb/lib/grep.rb +8 -6
- data/lib/milkode/cdweb/lib/mkurl.rb +7 -2
- data/lib/milkode/cdweb/lib/query.rb +36 -1
- data/lib/milkode/cdweb/lib/search_contents.rb +54 -13
- data/lib/milkode/cdweb/lib/search_files.rb +4 -4
- data/lib/milkode/cdweb/lib/search_gotoline.rb +151 -0
- data/lib/milkode/cdweb/public/css/coderay-patch.css +24 -0
- data/lib/milkode/cdweb/public/css/milkode.css +39 -5
- data/lib/milkode/cdweb/public/js/milkode.js +19 -1
- data/lib/milkode/cdweb/views/help.haml +13 -0
- data/lib/milkode/cdweb/views/layout.haml +4 -4
- data/lib/milkode/cdweb/views/search_form.haml +19 -23
- data/lib/milkode/cdweb/views/view.haml +2 -2
- data/lib/milkode/common/util.rb +10 -2
- data/lib/milkode/database/document_table.rb +12 -0
- data/lib/milkode/grep/cli_grep.rb +25 -6
- data/milkode.gemspec +8 -2
- data/test/data/a_project/empty.txt +0 -0
- data/test/test_cdweb_app.rb +73 -0
- data/test/test_query.rb +25 -0
- data/test/test_util.rb +18 -0
- metadata +22 -5
@@ -8,7 +8,11 @@ function replace_query_param(url, value)
|
|
8
8
|
var url_s = url.split("?");
|
9
9
|
|
10
10
|
if (url_s.length <= 1) {
|
11
|
-
|
11
|
+
if (value.length > 0)
|
12
|
+
return url + "?query=" + value;
|
13
|
+
else
|
14
|
+
return url;
|
15
|
+
|
12
16
|
} else {
|
13
17
|
var params = url_s[1].split("&");
|
14
18
|
var found_query = false;
|
@@ -34,3 +38,17 @@ function topic_path(id)
|
|
34
38
|
document.getElementById(id).href = url;
|
35
39
|
}
|
36
40
|
|
41
|
+
function repalce_package_name(url, package_name)
|
42
|
+
{
|
43
|
+
var url_s = url.split("?");
|
44
|
+
url = url_s[0].replace(/\/home(\/.*)?/, "/home/" + package_name); // home以下をパッケージ名に置き換え
|
45
|
+
return url;
|
46
|
+
}
|
47
|
+
|
48
|
+
function select_package()
|
49
|
+
{
|
50
|
+
var url = document.URL;
|
51
|
+
url = repalce_package_name(url, document.getElementById('package').value);
|
52
|
+
url = replace_query_param(url, document.searchform.query.value);
|
53
|
+
document.location = url;
|
54
|
+
}
|
@@ -7,10 +7,23 @@
|
|
7
7
|
|
8
8
|
.content
|
9
9
|
.sample-code
|
10
|
+
%h2 基本
|
10
11
|
%ol
|
11
12
|
%li キーワードを並べてAND検索<br>#{link('def open')}
|
12
13
|
%li 1フレーズとして検索<br>#{link('"def open"')}
|
14
|
+
|
15
|
+
%h2 オプション
|
16
|
+
%ol
|
13
17
|
%li パッケージ名で絞り込み<br>#{link('def open p:milkode')}
|
14
18
|
%li ファイル名で絞り込み<br>#{link('def open f:test')}
|
15
19
|
%li 拡張子で絞り込み<br>#{link('s:rb')}
|
20
|
+
%li ファイル名もしくはパッケージ名で絞り込み<br>#{link('fp:milkode')}
|
21
|
+
%li ファイル名、パッケージ名、もしくはファイルの内容<br>#{link('k:test')}
|
22
|
+
|
23
|
+
%h2 ダイレクトパス
|
24
|
+
%ol
|
25
|
+
%li viewモードで行番号をクリックするとダイレクトパス(現在行を表すテキスト)を表示<br><a href='/home/milkode/lib/milkode/cdstk/cdstk.rb'>/home/milkode/lib/milkode/cdstk/cdstk.rb</a>
|
26
|
+
%li ダイレクトパスで検索すると直接ジャンプ<br>#{link('/milkode/lib/milkode/cdstk/cdstk.rb:81')}
|
27
|
+
%li 空白を含むダイレクトパスは""で囲む<br>#{link('"/export-memo/2010/Tweet - 7:59"')}
|
28
|
+
%li ダイレクトパスは空白で区切って複数渡せる<br>#{link('/milkode/lib/milkode/cli.rb:41 /milkode/lib/milkode/cdstk/cdstk.rb:121')}
|
16
29
|
|
@@ -4,15 +4,15 @@
|
|
4
4
|
%head
|
5
5
|
%meta(charset='utf-8')
|
6
6
|
%title= [@title, @setting.home_title].compact.join(' - ')
|
7
|
+
%link(rel="stylesheet" href="/css/bootstrap.min.css" type="text/css" media="all")
|
8
|
+
%link(rel="stylesheet" href="/css/bootstrap-responsive.min.css" type="text/css" media="all")
|
7
9
|
%link(rel="stylesheet" href="/css/milkode.css" type="text/css" media="all")
|
8
10
|
%link(rel="stylesheet" href="/css/coderay.css" type="text/css" media="all")
|
9
11
|
%link(rel="stylesheet" href="/css/coderay-patch.css" type="text/css" media="all")
|
10
12
|
%script(type='text/javascript' src='/js/milkode.js')
|
11
13
|
|
12
14
|
%body
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
!= yield
|
15
|
+
.container-fluid#mainpage
|
16
|
+
!= yield
|
17
17
|
|
18
18
|
-# GoogleAnalyticsを使いたい場合はここにコードを挿入して下さい。
|
@@ -1,23 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
%
|
7
|
-
%
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
=
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
%label
|
21
|
-
= create_checkbox('onematch', params[:onematch])
|
22
|
-
= '1ファイル1マッチ'
|
23
|
-
%input(name="pathname" type="hidden" value="")
|
1
|
+
.search_form
|
2
|
+
:javascript
|
3
|
+
function set_pathname() {
|
4
|
+
document.searchform.pathname.value = location.pathname;
|
5
|
+
}
|
6
|
+
%form(name="searchform" action="/search" method="post")
|
7
|
+
%p
|
8
|
+
%input#query(name="query" size="70" type="text" style="width: 419px;"){:value => params[:query]}
|
9
|
+
%input#search(type="submit" name="search" value="検索" onclick="set_pathname()")
|
10
|
+
%input#clear(type="submit" name="clear" value="クリア" onclick="set_pathname()")
|
11
|
+
%br
|
12
|
+
範囲:
|
13
|
+
= create_select_shead(params[:shead])
|
14
|
+
パッケージ:
|
15
|
+
= create_select_package(@path)
|
16
|
+
= create_checkbox('onematch', params[:onematch], '1ファイル1マッチ')
|
17
|
+
= create_checkbox('sensitive', params[:sensitive], '大文字/小文字を区別')
|
18
|
+
|
19
|
+
%input(name="pathname" type="hidden" value="")
|
@@ -1,10 +1,10 @@
|
|
1
|
-
= haml :header_menu, locals => {:flistpath => '..'}
|
1
|
+
= haml :header_menu, :locals => {:flistpath => '..'}
|
2
2
|
|
3
3
|
.content
|
4
4
|
= haml :search_form
|
5
5
|
|
6
6
|
.search-summary
|
7
|
-
<span class="keyword">#{topic_path(@path, params)}</span
|
7
|
+
<span class="keyword">#{topic_path(@path, params)}</span>#{additional_info(@path, params)}(#{@elapsed}秒)
|
8
8
|
~ @record_content
|
9
9
|
|
10
10
|
|
data/lib/milkode/common/util.rb
CHANGED
@@ -89,7 +89,7 @@ module Milkode
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def larger_than_oneline(content)
|
92
|
-
content.count($/) > 1
|
92
|
+
content && content.count($/) > 1
|
93
93
|
end
|
94
94
|
|
95
95
|
def normalize_filename(str)
|
@@ -104,6 +104,14 @@ module Milkode
|
|
104
104
|
str == str.downcase
|
105
105
|
end
|
106
106
|
|
107
|
+
def ignore_case?(pattens, is_sensitive)
|
108
|
+
!is_sensitive && (pattens.all? {|v| Util::downcase? v})
|
109
|
+
end
|
110
|
+
|
111
|
+
def gotoline_keyword?(keyword)
|
112
|
+
keyword =~ /\A\/.*:\d+\Z/
|
113
|
+
end
|
114
|
+
|
107
115
|
# parse_gotoline(['a', '123', 'b']) #=> [['a', 'b'], 123]]
|
108
116
|
# parse_gotoline(['a', '123', 'b', 55]) #=> [['a', 'b', '123'], 55]]
|
109
117
|
# parse_gotoline(['a:5']) #=> [['a'], 55]]
|
@@ -153,6 +161,7 @@ module Milkode
|
|
153
161
|
# 'package/to/a.txt' #=> 'package', 'to/a.txt'
|
154
162
|
# 'package' #=> 'package', nil
|
155
163
|
def divide_shortpath(shortpath)
|
164
|
+
shortpath = shortpath[1..-1] if shortpath[0..0] == '/' # 先頭の'/'はカット
|
156
165
|
a = shortpath.split('/')
|
157
166
|
|
158
167
|
if (a.size >= 2)
|
@@ -165,7 +174,6 @@ module Milkode
|
|
165
174
|
def git_url?(src)
|
166
175
|
(src =~ /^(:?git[:@])|(:?ssh:)/) != nil
|
167
176
|
end
|
168
|
-
|
169
177
|
end
|
170
178
|
end
|
171
179
|
|
@@ -160,6 +160,7 @@ module Milkode
|
|
160
160
|
paths = options[:paths] || []
|
161
161
|
restpaths = options[:restpaths] || []
|
162
162
|
suffixs = options[:suffixs] || []
|
163
|
+
fpath_or_packages = options[:fpath_or_packages] || []
|
163
164
|
offset = options[:offset] || 0
|
164
165
|
limit = options[:limit] || -1
|
165
166
|
|
@@ -228,6 +229,17 @@ module Milkode
|
|
228
229
|
end
|
229
230
|
end
|
230
231
|
|
232
|
+
# ファイル名かパッケージ名
|
233
|
+
fpath_or_packages.each do |word|
|
234
|
+
sub_expression = record.restpath =~ word
|
235
|
+
sub_expression |= record.package =~ word
|
236
|
+
if expression.nil?
|
237
|
+
expression = sub_expression
|
238
|
+
else
|
239
|
+
expression &= sub_expression
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
231
243
|
# 検索式
|
232
244
|
expression
|
233
245
|
end
|
@@ -94,7 +94,11 @@ EOF
|
|
94
94
|
return
|
95
95
|
end
|
96
96
|
|
97
|
-
|
97
|
+
# 最初の要素の先頭が'/'なら絶対パスモード
|
98
|
+
is_abs_path = my_option[:gotoline_data] && my_option[:gotoline_data].first && (my_option[:gotoline_data][0][0][0][0..0] == '/')
|
99
|
+
|
100
|
+
# 現在位置のパッケージを記録
|
101
|
+
if option.packages.empty? && !my_option[:all] && !is_abs_path
|
98
102
|
if (package_dir_in? current_dir)
|
99
103
|
option.filePatterns << current_dir
|
100
104
|
else
|
@@ -105,8 +109,7 @@ EOF
|
|
105
109
|
|
106
110
|
if (arguments.size > 0 || my_option[:find_mode])
|
107
111
|
# ignore?
|
108
|
-
|
109
|
-
option.ignoreCase = true if downcase_all && !my_option[:case_sensitive]
|
112
|
+
option.ignoreCase = true if Util::ignore_case?(arguments, my_option[:case_sensitive])
|
110
113
|
|
111
114
|
# update
|
112
115
|
if my_option[:update]
|
@@ -132,11 +135,20 @@ EOF
|
|
132
135
|
records = findGrep.pickupRecords
|
133
136
|
# stdout.puts "#{records.size} records (#{findGrep.time_s})"
|
134
137
|
stdout.puts "#{records.size} records"
|
135
|
-
elsif
|
138
|
+
elsif my_option[:gotoline_data]
|
136
139
|
# gotoline mode
|
137
140
|
basePatterns = option.filePatterns
|
141
|
+
|
138
142
|
my_option[:gotoline_data].each do |v|
|
139
|
-
|
143
|
+
if is_abs_path
|
144
|
+
package, restpath = Util::divide_shortpath(v[0][0])
|
145
|
+
# p [package, restpath]
|
146
|
+
option.packages = [package]
|
147
|
+
option.filePatterns = [restpath]
|
148
|
+
else
|
149
|
+
option.filePatterns = basePatterns + v[0]
|
150
|
+
end
|
151
|
+
|
140
152
|
option.gotoline = v[1]
|
141
153
|
findGrep = FindGrep::FindGrep.new(arguments, option)
|
142
154
|
findGrep.searchAndPrint(stdout)
|
@@ -198,11 +210,18 @@ EOF
|
|
198
210
|
gsub("-k", ":k").
|
199
211
|
gsub("-g", ":g")
|
200
212
|
end
|
213
|
+
|
201
214
|
end
|
202
215
|
|
203
216
|
def after
|
217
|
+
if @arguments.first
|
218
|
+
if Util::gotoline_keyword? @arguments[0]
|
219
|
+
@state = :gotoline
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
204
223
|
result = []
|
205
|
-
|
224
|
+
|
206
225
|
@arguments.each do |v|
|
207
226
|
case v
|
208
227
|
when ":l"
|
data/milkode.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{milkode}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.9.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{2012-
|
12
|
+
s.date = %q{2012-07-09}
|
13
13
|
s.description = %q{Line based local source code search engine & grep-command & web-app.}
|
14
14
|
s.email = %q{ongaeshi0621@gmail.com}
|
15
15
|
s.executables = ["gmilk", "milk"]
|
@@ -46,6 +46,7 @@ Gem::Specification.new do |s|
|
|
46
46
|
"lib/milkode/cdweb/lib/query.rb",
|
47
47
|
"lib/milkode/cdweb/lib/search_contents.rb",
|
48
48
|
"lib/milkode/cdweb/lib/search_files.rb",
|
49
|
+
"lib/milkode/cdweb/lib/search_gotoline.rb",
|
49
50
|
"lib/milkode/cdweb/lib/web_setting.rb",
|
50
51
|
"lib/milkode/cdweb/public/css/bootstrap-responsive.min.css",
|
51
52
|
"lib/milkode/cdweb/public/css/bootstrap.min.css",
|
@@ -95,6 +96,7 @@ Gem::Specification.new do |s|
|
|
95
96
|
"test/data/.gitignore",
|
96
97
|
"test/data/a_project/cdstk.rb",
|
97
98
|
"test/data/a_project/cdstk_yaml.rb",
|
99
|
+
"test/data/a_project/empty.txt",
|
98
100
|
"test/data/abc.zip",
|
99
101
|
"test/data/b_project/runner.rb",
|
100
102
|
"test/data/b_project/test_dir.rb",
|
@@ -116,6 +118,7 @@ Gem::Specification.new do |s|
|
|
116
118
|
"test/runner.rb",
|
117
119
|
"test/test_cdstk.rb",
|
118
120
|
"test/test_cdstk_command.rb",
|
121
|
+
"test/test_cdweb_app.rb",
|
119
122
|
"test/test_cli.rb",
|
120
123
|
"test/test_cli_grep.rb",
|
121
124
|
"test/test_coderay_wrapper.rb",
|
@@ -165,6 +168,7 @@ Gem::Specification.new do |s|
|
|
165
168
|
s.add_runtime_dependency(%q<thor>, ["~> 0.15.0"])
|
166
169
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
167
170
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
171
|
+
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
168
172
|
else
|
169
173
|
s.add_dependency(%q<termcolor>, [">= 1.2.0"])
|
170
174
|
s.add_dependency(%q<rroonga>, [">= 1.1.0"])
|
@@ -179,6 +183,7 @@ Gem::Specification.new do |s|
|
|
179
183
|
s.add_dependency(%q<thor>, ["~> 0.15.0"])
|
180
184
|
s.add_dependency(%q<bundler>, [">= 0"])
|
181
185
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
186
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
182
187
|
end
|
183
188
|
else
|
184
189
|
s.add_dependency(%q<termcolor>, [">= 1.2.0"])
|
@@ -194,6 +199,7 @@ Gem::Specification.new do |s|
|
|
194
199
|
s.add_dependency(%q<thor>, ["~> 0.15.0"])
|
195
200
|
s.add_dependency(%q<bundler>, [">= 0"])
|
196
201
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
202
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
197
203
|
end
|
198
204
|
end
|
199
205
|
|
File without changes
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# @file
|
4
|
+
# @brief
|
5
|
+
# @author ongaeshi
|
6
|
+
# @date 2012/06/23
|
7
|
+
|
8
|
+
require 'milkode/cdweb/app'
|
9
|
+
require 'milkode/cdweb/lib/database'
|
10
|
+
require 'test_helper'
|
11
|
+
require 'test/unit'
|
12
|
+
require 'rack/test'
|
13
|
+
require 'milkode_test_work'
|
14
|
+
|
15
|
+
class TestCdwebApp < Test::Unit::TestCase
|
16
|
+
include Rack::Test::Methods
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@work = MilkodeTestWork.new({:default_db => true})
|
20
|
+
@work.add_package "db1", @work.expand_path("../data/a_project")
|
21
|
+
|
22
|
+
Database.setup(Dbdir.default_dir)
|
23
|
+
Database.instance.open_force
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
@work.teardown
|
28
|
+
end
|
29
|
+
|
30
|
+
def app
|
31
|
+
Sinatra::Application
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_main
|
35
|
+
t_default
|
36
|
+
t_home
|
37
|
+
t_help
|
38
|
+
t_not_found
|
39
|
+
t_view_empty_file
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def t_default
|
45
|
+
get '/'
|
46
|
+
assert_equal 200, last_response.status
|
47
|
+
end
|
48
|
+
|
49
|
+
def t_home
|
50
|
+
get '/home'
|
51
|
+
assert_equal 200, last_response.status
|
52
|
+
|
53
|
+
get '/home', :query => 'test'
|
54
|
+
assert_equal 200, last_response.status
|
55
|
+
end
|
56
|
+
|
57
|
+
def t_help
|
58
|
+
get '/help'
|
59
|
+
assert_equal 200, last_response.status
|
60
|
+
end
|
61
|
+
|
62
|
+
def t_not_found
|
63
|
+
get '/not_found'
|
64
|
+
assert_equal 404, last_response.status
|
65
|
+
end
|
66
|
+
|
67
|
+
def t_view_empty_file
|
68
|
+
get '/home/a_project/empty.txt'
|
69
|
+
assert_equal 200, last_response.status # 空ファイルも表示出来るようにする
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
data/test/test_query.rb
CHANGED
@@ -47,6 +47,31 @@ module Milkode
|
|
47
47
|
assert_equal q.keywords, ['def update']
|
48
48
|
end
|
49
49
|
|
50
|
+
def test_conv_keywords_to_fpath
|
51
|
+
q = create_query("array test s:rb")
|
52
|
+
assert_equal q.conv_keywords_to_fpath.query_string, 'f:array f:test s:rb'
|
53
|
+
|
54
|
+
q = create_query("hoge")
|
55
|
+
assert_equal q.conv_keywords_to_fpath.query_string, 'f:hoge'
|
56
|
+
|
57
|
+
q = create_query("hoge f:hoge")
|
58
|
+
assert_equal q.conv_keywords_to_fpath.query_string, 'f:hoge f:hoge'
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_fp
|
62
|
+
q = create_query("key1 fp:pack fp:age")
|
63
|
+
assert_equal q.keywords, ['key1']
|
64
|
+
assert_equal q.packages, []
|
65
|
+
assert_equal q.fpaths, []
|
66
|
+
assert_equal q.suffixs, []
|
67
|
+
assert_equal q.fpath_or_packages, ['pack', 'age']
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_conv_keywords_to_fpath_or_packages
|
71
|
+
q = create_query("array test s:rb")
|
72
|
+
assert_equal q.conv_keywords_to_fpath_or_packages.query_string, 'fp:array fp:test s:rb'
|
73
|
+
end
|
74
|
+
|
50
75
|
def create_query(query)
|
51
76
|
Query.new(query)
|
52
77
|
end
|
data/test/test_util.rb
CHANGED
@@ -71,6 +71,13 @@ class TestUtil < Test::Unit::TestCase
|
|
71
71
|
assert !Milkode::Util::downcase?("dummyNode")
|
72
72
|
end
|
73
73
|
|
74
|
+
def test_ignore_case?
|
75
|
+
assert_equal true, Milkode::Util::ignore_case?(['a', 'b'], false)
|
76
|
+
assert_equal false, Milkode::Util::ignore_case?(['a', 'b'], true)
|
77
|
+
assert_equal false, Milkode::Util::ignore_case?(['a', 'B'], false)
|
78
|
+
assert_equal false, Milkode::Util::ignore_case?(['A', 'b'], true)
|
79
|
+
end
|
80
|
+
|
74
81
|
def test_parse_gotoline
|
75
82
|
assert_equal [[['a', 'b'], 123]], Milkode::Util::parse_gotoline(['a', '123', 'b'])
|
76
83
|
assert_equal [[['a', '123', 'b'], 55]], Milkode::Util::parse_gotoline(['a', '123', 'b', '55'])
|
@@ -78,6 +85,7 @@ class TestUtil < Test::Unit::TestCase
|
|
78
85
|
assert_equal [[['a'], 55]], Milkode::Util::parse_gotoline(['a:55'])
|
79
86
|
assert_equal [[['lib/aaa.c'], 8], [['test/bbb.rb'], 9]], Milkode::Util::parse_gotoline(['lib/aaa.c:8', 'test/bbb.rb:9'])
|
80
87
|
assert_equal [[['c:/tmp/ccc.txt'], 99]], Milkode::Util::parse_gotoline(['c:/tmp/ccc.txt:99'])
|
88
|
+
assert_equal [[['/milkode/hoge.rb'], 99]], Milkode::Util::parse_gotoline(['/milkode/hoge.rb:99'])
|
81
89
|
end
|
82
90
|
|
83
91
|
def test_gotoline_multi?
|
@@ -93,6 +101,16 @@ class TestUtil < Test::Unit::TestCase
|
|
93
101
|
assert_equal true, Milkode::Util::git_url?('git@github.com:ongaeshi/milkode.git')
|
94
102
|
assert_equal true, Milkode::Util::git_url?('ssh:foo@bar/baz.git')
|
95
103
|
end
|
104
|
+
|
105
|
+
def test_divide_shortpath
|
106
|
+
package, restpath = Milkode::Util::divide_shortpath('package/to/a.txt')
|
107
|
+
assert_equal 'package', package
|
108
|
+
assert_equal 'to/a.txt', restpath
|
109
|
+
|
110
|
+
package, restpath = Milkode::Util::divide_shortpath('/package/to/a.txt')
|
111
|
+
assert_equal 'package', package
|
112
|
+
assert_equal 'to/a.txt', restpath
|
113
|
+
end
|
96
114
|
|
97
115
|
|
98
116
|
def teardown
|