codestock 0.1.2 → 0.1.3
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/Rakefile +1 -0
- data/VERSION +1 -1
- data/bin/cdweb +2 -2
- data/codestock.gemspec +56 -10
- data/lib/cdstk/cdstk.rb +4 -1
- data/lib/codestock/cdweb/app.rb +136 -0
- data/lib/codestock/cdweb/cli_cdweb.rb +84 -0
- data/lib/codestock/cdweb/config.ru +3 -0
- data/lib/codestock/cdweb/lib/coderay_wrapper.rb +94 -0
- data/lib/codestock/cdweb/lib/command.rb +67 -0
- data/lib/{cdweb → codestock/cdweb/lib}/database.rb +55 -28
- data/lib/{cdweb → codestock/cdweb/lib}/grep.rb +24 -8
- data/lib/codestock/cdweb/lib/mkurl.rb +56 -0
- data/lib/{cdweb → codestock/cdweb/lib}/query.rb +3 -4
- data/lib/codestock/cdweb/lib/search_contents.rb +117 -0
- data/lib/codestock/cdweb/lib/search_files.rb +88 -0
- data/lib/{cdweb → codestock/cdweb}/public/css/gren.css +16 -1
- data/lib/codestock/cdweb/public/images/directory.png +0 -0
- data/lib/codestock/cdweb/public/images/file.png +0 -0
- data/lib/codestock/cdweb/views/filelist.haml +14 -0
- data/lib/codestock/cdweb/views/help.haml +16 -0
- data/lib/codestock/cdweb/views/index.haml +17 -0
- data/lib/codestock/cdweb/views/layout.haml +33 -0
- data/lib/codestock/cdweb/views/search.haml +12 -0
- data/lib/codestock/cdweb/views/view.haml +16 -0
- data/test/file_assert.rb +41 -0
- data/test/test_coderay_wrapper.rb +22 -0
- data/test/test_coderay_wrapper_data.rb +91 -0
- data/test/test_database.rb +54 -0
- data/test/test_mkurl.rb +30 -0
- data/test/test_query.rb +54 -0
- metadata +52 -26
- data/lib/cdweb/cli_cdweb.rb +0 -54
- data/lib/cdweb/coderay_wrapper.rb +0 -38
- data/lib/cdweb/grenweb.ru +0 -35
- data/lib/cdweb/help.rb +0 -40
- data/lib/cdweb/home.rb +0 -40
- data/lib/cdweb/html_renderer.rb +0 -243
- data/lib/cdweb/searcher.rb +0 -130
- data/lib/cdweb/viewer.rb +0 -52
- data/test/test_grenweb_database.rb +0 -36
- data/test/test_grenweb_html_renderer.rb +0 -41
- data/test/test_grenweb_query.rb +0 -54
- data/test/test_grenweb_searcher.rb +0 -35
- /data/lib/{cdweb → codestock/cdweb}/public/css/coderay.css +0 -0
- /data/lib/{cdweb → codestock/cdweb}/public/images/gren-icon-mini.png +0 -0
- /data/lib/{cdweb → codestock/cdweb}/public/images/gren-icon.png +0 -0
data/lib/cdweb/html_renderer.rb
DELETED
@@ -1,243 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief HTMLの描画ルーチン
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2010/10/17
|
7
|
-
|
8
|
-
require 'rubygems'
|
9
|
-
require 'pathname'
|
10
|
-
require 'rack'
|
11
|
-
require 'cdweb/grep'
|
12
|
-
require 'cdweb/coderay_wrapper'
|
13
|
-
|
14
|
-
module CodeStock
|
15
|
-
class HTMLRendeler
|
16
|
-
include Rack::Utils
|
17
|
-
|
18
|
-
def initialize(script_name)
|
19
|
-
# @script_name = Pathname(script_name)
|
20
|
-
@script_name = '/'
|
21
|
-
end
|
22
|
-
|
23
|
-
def header(title, header1)
|
24
|
-
<<EOS
|
25
|
-
<?xml version="1.0" encoding="utf-8"?>
|
26
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
27
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
28
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
|
29
|
-
<head>
|
30
|
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
31
|
-
<!-- <meta name="robot" content="noindex,nofollow" /> -->
|
32
|
-
<title>#{title}</title>
|
33
|
-
<link rel="stylesheet" href="#{fullpath('css/gren.css')}" type="text/css" media="all" />
|
34
|
-
<link rel="stylesheet" href="#{fullpath('css/coderay.css')}" type="text/css" media="all" />
|
35
|
-
</head>
|
36
|
-
<body>
|
37
|
-
<div class="header">
|
38
|
-
<h1>
|
39
|
-
<a href="#{fullpath('')}"><img src="#{fullpath('images/gren-icon-mini.png')}" alt="gren-icon" border="0"/></a>
|
40
|
-
#{header1}
|
41
|
-
</h1>
|
42
|
-
</div>
|
43
|
-
|
44
|
-
<div class="content">
|
45
|
-
EOS
|
46
|
-
end
|
47
|
-
|
48
|
-
def footer
|
49
|
-
<<EOS
|
50
|
-
</div>
|
51
|
-
|
52
|
-
<div class="footer">
|
53
|
-
</div>
|
54
|
-
</body>
|
55
|
-
</html>
|
56
|
-
EOS
|
57
|
-
end
|
58
|
-
|
59
|
-
def header_home(title, header1, version)
|
60
|
-
<<EOS
|
61
|
-
<?xml version="1.0" encoding="utf-8"?>
|
62
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
63
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
64
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
|
65
|
-
<head>
|
66
|
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
67
|
-
<!-- <meta name="robot" content="noindex,nofollow" /> -->
|
68
|
-
<title>#{title}</title>
|
69
|
-
<link rel="stylesheet" href="#{fullpath('css/gren.css')}" type="text/css" media="all" />
|
70
|
-
</head>
|
71
|
-
<body>
|
72
|
-
<div align="center">
|
73
|
-
<div class="header_home">
|
74
|
-
<h1>
|
75
|
-
<a href="#{fullpath('')}"><img src="#{fullpath('images/gren-icon.png')}" alt="gren-icon" border="0" height="100px"/></a>
|
76
|
-
#{header1} <font class="version">#{version}</font>
|
77
|
-
</h1>
|
78
|
-
</div>
|
79
|
-
|
80
|
-
<div class="content">
|
81
|
-
EOS
|
82
|
-
end
|
83
|
-
|
84
|
-
def footer_home(package, files)
|
85
|
-
<<EOS
|
86
|
-
</div>
|
87
|
-
|
88
|
-
<div class="footer_home">
|
89
|
-
<!-- <a href="#{fullpath('::search/p:*')}">#{package}</a>のパッケージ , -->
|
90
|
-
<a href="#{fullpath('::search/f:*')}">#{files}</a>のファイル<br>
|
91
|
-
<a href="#{fullpath('::help')}">ヘルプ</a> ,
|
92
|
-
<a href="http://ongaeshi.github.com/gren">grenについて</a>
|
93
|
-
</div>
|
94
|
-
</div>
|
95
|
-
</body>
|
96
|
-
</html>
|
97
|
-
EOS
|
98
|
-
end
|
99
|
-
|
100
|
-
def result_record(record, patterns, nth=1)
|
101
|
-
if (patterns.size > 0)
|
102
|
-
<<EOS
|
103
|
-
<dt class='result-record'><a href='#{fullpath("::view/" + Rack::Utils::escape_html(record.shortpath))}'>#{record.shortpath}</a></dt>
|
104
|
-
<dd>
|
105
|
-
<pre class='lines'>
|
106
|
-
#{result_record_match_line(record, patterns, nth)}
|
107
|
-
</pre>
|
108
|
-
</dd>
|
109
|
-
EOS
|
110
|
-
else
|
111
|
-
<<EOS
|
112
|
-
<dt class='result-record'><a href='#{fullpath("::view/" + Rack::Utils::escape_html(record.shortpath))}'>#{record.shortpath}</a></dt>
|
113
|
-
EOS
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def result_record_match_line(record, patterns, nth)
|
118
|
-
str = ""
|
119
|
-
|
120
|
-
grep = Grep.new(record.content)
|
121
|
-
lines = grep.match_lines_or(patterns)
|
122
|
-
|
123
|
-
unless (lines.empty?)
|
124
|
-
index = lines[0].index
|
125
|
-
|
126
|
-
(index - nth..index + nth).each do |i|
|
127
|
-
if (0 <= i && i < grep.content.size)
|
128
|
-
match_datas = (i == index) ? lines[0].match_datas : []
|
129
|
-
str << line(i + 1, grep.content[i], match_datas) + "\n"
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
str
|
135
|
-
end
|
136
|
-
|
137
|
-
def record_content(record)
|
138
|
-
CodeRayWrapper.html_memfile(record.content, record.shortpath)
|
139
|
-
end
|
140
|
-
|
141
|
-
def record_content_line(record)
|
142
|
-
str = ""
|
143
|
-
|
144
|
-
grep = Grep.new(record.content)
|
145
|
-
grep.content.each_with_index do |l, index|
|
146
|
-
str << line(index + 1, l, []) + "\n"
|
147
|
-
end
|
148
|
-
|
149
|
-
str
|
150
|
-
end
|
151
|
-
|
152
|
-
def line(lineno, line, match_datas)
|
153
|
-
sprintf("%5d: %s", lineno, match_strong(Rack::Utils::escape_html(line), match_datas))
|
154
|
-
end
|
155
|
-
|
156
|
-
def match_strong(line, match_datas)
|
157
|
-
match_datas.each do |m|
|
158
|
-
line = line.split(m[0]).join('<strong>' + m[0] + '</strong>') unless (m.nil?)
|
159
|
-
end
|
160
|
-
|
161
|
-
line
|
162
|
-
end
|
163
|
-
|
164
|
-
def pagination_link(page, label)
|
165
|
-
href = "?page=#{page}"
|
166
|
-
pagination_span("<a href='#{href}'>#{label}</a>")
|
167
|
-
end
|
168
|
-
|
169
|
-
def pagination_span(content)
|
170
|
-
"<span class='pagination-link'>#{content}</span>\n"
|
171
|
-
end
|
172
|
-
|
173
|
-
def empty_summary()
|
174
|
-
<<EOS
|
175
|
-
<div class='search-summary'>
|
176
|
-
<p>gren web検索</p>
|
177
|
-
</div>
|
178
|
-
EOS
|
179
|
-
end
|
180
|
-
|
181
|
-
def search_summary(keyword, total_records, range, elapsed)
|
182
|
-
<<EOS
|
183
|
-
<div class='search-summary'>
|
184
|
-
<span class="keyword">#{keyword}</span>の検索結果:
|
185
|
-
<span class="total-entries">#{total_records}</span>件中
|
186
|
-
<span class="display-range">#{range.first} - #{range.last}</span>件(#{elapsed}秒)
|
187
|
-
</div>
|
188
|
-
EOS
|
189
|
-
end
|
190
|
-
|
191
|
-
def view_summary(path, elapsed)
|
192
|
-
<<EOS
|
193
|
-
<div class='search-summary'>
|
194
|
-
<span class="keyword">#{path}</span>(#{elapsed}秒)
|
195
|
-
</div>
|
196
|
-
EOS
|
197
|
-
end
|
198
|
-
|
199
|
-
def search_box(text = "")
|
200
|
-
<<EOS
|
201
|
-
<form method="post" action="#{fullpath('::search')}">
|
202
|
-
<p>
|
203
|
-
<input name="query" type="text" size="60" value="#{text}" />
|
204
|
-
<input type="submit" value="検索" />
|
205
|
-
</p>
|
206
|
-
</form>
|
207
|
-
EOS
|
208
|
-
end
|
209
|
-
|
210
|
-
def sample_code
|
211
|
-
<<EOS
|
212
|
-
<div class='sample-code'>
|
213
|
-
<ol>
|
214
|
-
<li>キーワードで検索<br>
|
215
|
-
#{link('def open')}
|
216
|
-
<li>1フレーズとして検索<br>
|
217
|
-
#{link('"def open"')}
|
218
|
-
<li>パッケージ名で絞り込み<br>
|
219
|
-
#{link('def open p:gren')}
|
220
|
-
<li>ファイル名や拡張子で絞り込み<br>
|
221
|
-
#{link('def open f:test s:rb')}
|
222
|
-
<li>組み合わせ<br>
|
223
|
-
#{link('p:gren p:tidtools s:rb f:test assert f:cli')}
|
224
|
-
</ol>
|
225
|
-
</div>
|
226
|
-
EOS
|
227
|
-
end
|
228
|
-
|
229
|
-
def link(keyword)
|
230
|
-
"<a href='#{fullpath('::search' + '/' + Rack::Utils::escape_html(keyword))}'>#{keyword}</a>"
|
231
|
-
end
|
232
|
-
|
233
|
-
def fullpath(path)
|
234
|
-
unless (path == '')
|
235
|
-
(@script_name + path).to_s
|
236
|
-
else
|
237
|
-
@script_name.to_s
|
238
|
-
end
|
239
|
-
end
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
|
data/lib/cdweb/searcher.rb
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief 検索処理本体
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2010/10/13
|
7
|
-
|
8
|
-
require 'rubygems'
|
9
|
-
require 'rack'
|
10
|
-
require 'cdweb/database'
|
11
|
-
require 'cdweb/html_renderer'
|
12
|
-
require 'cdweb/query'
|
13
|
-
|
14
|
-
module CodeStock
|
15
|
-
class Searcher
|
16
|
-
include Rack::Utils
|
17
|
-
|
18
|
-
def initialize
|
19
|
-
end
|
20
|
-
|
21
|
-
def call(env)
|
22
|
-
@request = Rack::Request.new(env)
|
23
|
-
@query = Query.new(@request)
|
24
|
-
|
25
|
-
@response = Rack::Response.new
|
26
|
-
@response["Content-Type"] = "text/html; charset=UTF-8"
|
27
|
-
|
28
|
-
@nth = 3 # マッチした行の前後何行を表示するか
|
29
|
-
|
30
|
-
@rendeler = HTMLRendeler.new(@request.script_name + '/..')
|
31
|
-
|
32
|
-
if @request.post? or @request['query']
|
33
|
-
post_request
|
34
|
-
else
|
35
|
-
search
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def post_request
|
42
|
-
query = @request['query'] || ''
|
43
|
-
if query.empty?
|
44
|
-
@request.path_info = "/"
|
45
|
-
else
|
46
|
-
@request.path_info = "/#{escape(query)}/"
|
47
|
-
end
|
48
|
-
@response.redirect(@request.url.split(/\?/, 2)[0])
|
49
|
-
@response.to_a
|
50
|
-
end
|
51
|
-
|
52
|
-
def search
|
53
|
-
render_header
|
54
|
-
render_search_box
|
55
|
-
render_search_result
|
56
|
-
render_footer
|
57
|
-
@response.to_a
|
58
|
-
end
|
59
|
-
|
60
|
-
def render_header
|
61
|
-
@response.write @rendeler.header("gren : #{@query.escape_html}", "gren")
|
62
|
-
end
|
63
|
-
|
64
|
-
def render_search_box
|
65
|
-
@response.write @rendeler.search_box(@query.escape_html)
|
66
|
-
end
|
67
|
-
|
68
|
-
def render_search_result
|
69
|
-
if @query.empty?
|
70
|
-
@response.write @rendeler.empty_summary
|
71
|
-
else
|
72
|
-
records, total_records, elapsed = Database.instance.search(@query.keywords, @query.packages, @query.fpaths, @query.suffixs, calcPage, calcLimit)
|
73
|
-
render_search_summary(records, total_records, elapsed)
|
74
|
-
records.each { |record| @response.write(@rendeler.result_record(record, @query.keywords, @nth)) }
|
75
|
-
render_pagination(calcPage, total_records)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def render_search_summary(records, total_records, elapsed)
|
80
|
-
pageStart = calcPage * calcLimit
|
81
|
-
@response.write @rendeler.search_summary(@query.query_string,
|
82
|
-
total_records,
|
83
|
-
(total_records.zero? ? 0 : pageStart + 1)..(pageStart + records.size),
|
84
|
-
elapsed)
|
85
|
-
end
|
86
|
-
|
87
|
-
def render_pagination(page, total_records)
|
88
|
-
return if @query.empty?
|
89
|
-
return if total_records < calcLimit
|
90
|
-
|
91
|
-
last_page = (total_records / calcLimit.to_f).ceil
|
92
|
-
@response.write("<div class='pagination'>\n")
|
93
|
-
if page > 0
|
94
|
-
@response.write(@rendeler.pagination_link(page - 1, "<<"))
|
95
|
-
end
|
96
|
-
last_page.times do |i|
|
97
|
-
if i == page
|
98
|
-
@response.write(@rendeler.pagination_span(i))
|
99
|
-
else
|
100
|
-
@response.write(@rendeler.pagination_link(i, i))
|
101
|
-
end
|
102
|
-
end
|
103
|
-
if page < (last_page - 1)
|
104
|
-
@response.write(@rendeler.pagination_link(page + 1, ">>"))
|
105
|
-
end
|
106
|
-
@response.write("</div>\n")
|
107
|
-
end
|
108
|
-
|
109
|
-
def render_footer
|
110
|
-
@response.write @rendeler.footer
|
111
|
-
end
|
112
|
-
|
113
|
-
private
|
114
|
-
|
115
|
-
# 1ページに表示する最大レコードを計算
|
116
|
-
def calcLimit
|
117
|
-
if @query.keywords.size == 0
|
118
|
-
100
|
119
|
-
else
|
120
|
-
20
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# 現在ページを計算
|
125
|
-
def calcPage
|
126
|
-
(@request['page'] || 0).to_i
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
data/lib/cdweb/viewer.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief ソースコードを表示する
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2010/10/13
|
7
|
-
|
8
|
-
require 'rubygems'
|
9
|
-
require 'rack'
|
10
|
-
require 'cdweb/database'
|
11
|
-
require 'cdweb/html_renderer'
|
12
|
-
|
13
|
-
module CodeStock
|
14
|
-
class Viewer
|
15
|
-
include Rack::Utils
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
end
|
19
|
-
|
20
|
-
def call(env)
|
21
|
-
@request = Rack::Request.new(env)
|
22
|
-
@response = Rack::Response.new
|
23
|
-
@response["Content-Type"] = "text/html; charset=UTF-8"
|
24
|
-
|
25
|
-
record, elapsed = Database.instance.record(req2query)
|
26
|
-
|
27
|
-
@rendeler = HTMLRendeler.new(@request.script_name + '/..')
|
28
|
-
|
29
|
-
if (record)
|
30
|
-
@response.write @rendeler.header("gren : #{record.shortpath}", "gren")
|
31
|
-
@response.write @rendeler.search_box("")
|
32
|
-
@response.write @rendeler.view_summary(record.shortpath, elapsed)
|
33
|
-
@response.write @rendeler.record_content(record)
|
34
|
-
else
|
35
|
-
@response.write @rendeler.header("gren : not found.", "gren")
|
36
|
-
@response.write @rendeler.search_box("")
|
37
|
-
@response.write @rendeler.empty_summary
|
38
|
-
end
|
39
|
-
@response.write @rendeler.footer
|
40
|
-
|
41
|
-
@response.to_a
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def req2query
|
47
|
-
p @request.path_info
|
48
|
-
unescape(@request.path_info.gsub(/\A\/|\/z/, ''))
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2011/02/20
|
7
|
-
|
8
|
-
require 'rubygems'
|
9
|
-
require 'groonga'
|
10
|
-
require 'test_helper'
|
11
|
-
require 'file_test_utils'
|
12
|
-
require 'cdweb/database'
|
13
|
-
require 'common/dbdir'
|
14
|
-
require 'cdstk/cdstk'
|
15
|
-
require 'stringio'
|
16
|
-
|
17
|
-
class TestMkgrendb < Test::Unit::TestCase
|
18
|
-
include FileTestUtils
|
19
|
-
include CodeStock
|
20
|
-
|
21
|
-
def test_setup_and_open
|
22
|
-
io = StringIO.new
|
23
|
-
obj = Cdstk.new(io)
|
24
|
-
obj.init
|
25
|
-
|
26
|
-
Database.setup('.')
|
27
|
-
Database.instance
|
28
|
-
end
|
29
|
-
|
30
|
-
def teardown
|
31
|
-
teardown_custom(true)
|
32
|
-
# teardown_custom(false)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require 'test_helper'
|
3
|
-
require 'cdweb/html_renderer.rb'
|
4
|
-
|
5
|
-
class TestGrenwebHTMLRendeler < Test::Unit::TestCase
|
6
|
-
include CodeStock
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@rendeler = HTMLRendeler.new('/')
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_pagination_line
|
13
|
-
assert_equal("<span class='pagination-link'><a href='?page=1'>test</a></span>\n", @rendeler.pagination_link(1, "test"))
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_search_summary
|
17
|
-
assert_equal(@rendeler.search_summary(10, 500, 10..20, 0.00893),
|
18
|
-
<<-EOS)
|
19
|
-
<div class='search-summary'>
|
20
|
-
<span class="keyword">10</span>の検索結果:
|
21
|
-
<span class="total-entries">500</span>件中
|
22
|
-
<span class="display-range">10 - 20</span>件(0.00893秒)
|
23
|
-
</div>
|
24
|
-
EOS
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_match_strong
|
28
|
-
assert_equal(@rendeler.match_strong("This is line.", [nil, nil]), "This is line.")
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_search_box
|
32
|
-
assert_equal(@rendeler.search_box('test must'), <<-EOF)
|
33
|
-
<form method="post" action="/::search">
|
34
|
-
<p>
|
35
|
-
<input name="query" type="text" size="60" value="test must" />
|
36
|
-
<input type="submit" value="検索" />
|
37
|
-
</p>
|
38
|
-
</form>
|
39
|
-
EOF
|
40
|
-
end
|
41
|
-
end
|
data/test/test_grenweb_query.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2010/10/21
|
7
|
-
|
8
|
-
require 'test_helper'
|
9
|
-
require 'cdweb/query'
|
10
|
-
|
11
|
-
class TestGrenWebQuery < Test::Unit::TestCase
|
12
|
-
include CodeStock
|
13
|
-
include Rack::Utils
|
14
|
-
|
15
|
-
def test_query
|
16
|
-
q = create_query("test fire beam")
|
17
|
-
assert_equal q.keywords, ['test', 'fire', 'beam']
|
18
|
-
assert_equal q.packages, []
|
19
|
-
assert_equal q.fpaths, []
|
20
|
-
assert_equal q.suffixs, []
|
21
|
-
assert_equal q.escape_html, 'test fire beam'
|
22
|
-
|
23
|
-
q = create_query("test fire beam f:testfile1")
|
24
|
-
assert_equal q.keywords, ['test', 'fire', 'beam']
|
25
|
-
assert_equal q.packages, []
|
26
|
-
assert_equal q.fpaths, ['testfile1']
|
27
|
-
assert_equal q.suffixs, []
|
28
|
-
|
29
|
-
q = create_query("test fire beam f:testfile1 filepath:dir32")
|
30
|
-
assert_equal q.keywords, ['test', 'fire', 'beam']
|
31
|
-
assert_equal q.packages, []
|
32
|
-
assert_equal q.fpaths, ['dir32', 'testfile1']
|
33
|
-
assert_equal q.suffixs, []
|
34
|
-
|
35
|
-
q = create_query("package:gren test fire beam f:testfile1 filepath:dir32 s:rb p:test suffix:pl")
|
36
|
-
assert_equal q.keywords, ['test', 'fire', 'beam']
|
37
|
-
assert_equal q.packages, ['gren', 'test']
|
38
|
-
assert_equal q.fpaths, ['dir32', 'testfile1']
|
39
|
-
assert_equal q.suffixs, ['pl', 'rb']
|
40
|
-
|
41
|
-
q = create_query("&p")
|
42
|
-
assert_equal q.escape_html, '&p'
|
43
|
-
|
44
|
-
q = create_query("int &p")
|
45
|
-
assert_equal q.escape_html, 'int &p'
|
46
|
-
|
47
|
-
q = create_query('"def update"')
|
48
|
-
assert_equal q.keywords, ['def update']
|
49
|
-
end
|
50
|
-
|
51
|
-
def create_query(query)
|
52
|
-
Query.new(Rack::Request.new({"PATH_INFO"=>"/#{escape(query)}/"}))
|
53
|
-
end
|
54
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# @file
|
4
|
-
# @brief
|
5
|
-
# @author ongaeshi
|
6
|
-
# @date 2010/10/21
|
7
|
-
|
8
|
-
require 'test_helper'
|
9
|
-
require 'cdweb/searcher.rb'
|
10
|
-
require 'rack/mock'
|
11
|
-
|
12
|
-
class TestGrenwebSearcher < Test::Unit::TestCase
|
13
|
-
def setup
|
14
|
-
@app = CodeStock::Searcher.new
|
15
|
-
@mr = Rack::MockRequest.new(@app)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_get
|
19
|
-
res = nil
|
20
|
-
assert_nothing_raised('なんか失敗した') { res = @mr.get('/', :lint => true) }
|
21
|
-
assert_not_nil res, 'レスポンス来てない'
|
22
|
-
assert_equal 200, res.status, 'ステータスコードが変'
|
23
|
-
assert_equal 'text/html; charset=UTF-8', res['Content-Type'], 'Content-Typeが変'
|
24
|
-
#puts res.body
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_post
|
28
|
-
res = nil
|
29
|
-
assert_nothing_raised('なんか失敗した') { res = @mr.post('/', :lint => true) }
|
30
|
-
assert_not_nil res, 'レスポンス来てない'
|
31
|
-
assert_equal 302, res.status, 'ステータスコードが変'
|
32
|
-
assert_equal 'text/html; charset=UTF-8', res['Content-Type'], 'Content-Typeが変'
|
33
|
-
#puts res.body
|
34
|
-
end
|
35
|
-
end
|
File without changes
|
File without changes
|
File without changes
|