honyomi 0.2.0 → 1.0.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.
@@ -0,0 +1,65 @@
1
+ !!!
2
+
3
+ .container
4
+ #help
5
+ %h1 Help
6
+
7
+ %ol
8
+ %li <a href="#search">Search</a>
9
+ %li <a href="#filter-options">Filter options</a>
10
+ %li <a href="#bookmark">Bookmark</a>
11
+
12
+ %h2#search Search
13
+
14
+ %h3 Keyword
15
+ %pre
16
+ :preserve
17
+ hello
18
+
19
+ %h3 Phrase Search
20
+ %pre
21
+ :preserve
22
+ "hello world"
23
+
24
+ %h3 Jump to 32 page
25
+ %pre
26
+ :preserve
27
+ 32
28
+
29
+ %h2#filter-options Filter options
30
+
31
+ %h3 Book Id
32
+ %pre
33
+ :preserve
34
+ b:11 hello
35
+
36
+ %h3 Book Id (NOT)
37
+ %pre
38
+ :preserve
39
+ -b:11 hello
40
+
41
+ %h3 Book Title
42
+ %pre
43
+ :preserve
44
+ t:hello world
45
+
46
+ %h3 Page Number
47
+ %pre
48
+ :preserve
49
+ p:>100 p:<200 world
50
+
51
+ %h2#bookmark Bookmark
52
+ %ol
53
+ %li
54
+ If you click a star, you can bookmark the page
55
+ %br
56
+ %img(src="/image/bookmark-01.png")
57
+ %br
58
+ %img(src="/image/bookmark-02.png")
59
+ (Bookmarked)
60
+
61
+ %li
62
+ When you click the star again, you can write a memo
63
+ %br
64
+ %img(src="/image/bookmark-03.png")
65
+
@@ -6,12 +6,54 @@
6
6
  .header
7
7
  .title
8
8
  = @header_title
9
+
10
+ .title-form.hide
11
+ %form.form-horizontal(role="form")
12
+ .form-group
13
+ %label.col-sm-1.control-label(for="title-form-title")
14
+ Title
15
+ .col-sm-11
16
+ %input#title-form-title.form-control(type="text" placeholder="Title of book (required)")
17
+ .form-group
18
+ %label.col-sm-1.control-label(for="title-form-author")
19
+ Author
20
+ .col-sm-11
21
+ %input#title-form-author.form-control(type="text" placeholder="Author of book (optional)")
22
+ .form-group
23
+ %label.col-sm-1.control-label(for="title-form-url")
24
+ URL
25
+ .col-sm-11
26
+ %input#title-form-url.form-control(type="text" placeholder="Website for this book (optional)")
27
+ .form-group
28
+ .pull-right
29
+ %input(type="submit" value="Save" id="title-form-save" class="btn btn-default")
30
+ or
31
+ %a(href="#" id="title-form-cancel")
32
+ Cancel
33
+
9
34
  %form(class="form-inline" method="post" action="/search")
10
35
  .form-group
11
36
  %input(class="form-control" type="text" size=40 name="query" value="#{@params[:query]}")
12
37
  %input(type="hidden" name="book_id" value="#{@book_id}")
13
- %input(class="btn btn-primary" type="submit" value="Search")
38
+ %input(type="submit" value="Search" class="btn btn-primary")
39
+ %input#clear(type="button" value="Clear" class="btn btn-default" onclick="click_clear_button()")
14
40
  .info
15
41
  = @header_info
42
+
43
+ #modal-bookmark-edit.modal.fade{"aria-hidden" => "true", "aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1"}
44
+ .modal-dialog
45
+ .modal-content
46
+ .modal-header
47
+ %button.close{"data-dismiss" => "modal", :type => "button"}
48
+ %span{"aria-hidden" => "true"} &times;
49
+ %span.sr-only Cancel
50
+ %h4#modal-bookmark-label.modal-title Modal title
51
+ .modal-body
52
+ %textarea{"rows" => 20, "cols" => 60, "placeholder" => "Ctrl+Enter: Update MEMO. The MEMO is included to the search result."}
53
+ .modal-footer
54
+ %button.btn.btn-danger.pull-left{"data-dismiss" => "modal", :type => "button"} Delete
55
+ %button.btn.btn-default{"data-dismiss" => "modal", :type => "button"} Cancel
56
+ %button.btn.btn-primary{"data-dismiss" => "modal", :type => "button"} Update
57
+
16
58
  .content
17
59
  = @content
@@ -7,8 +7,8 @@
7
7
  %meta(name="viewport" content="width=device-width, initial-scale=1.0")
8
8
  %link(rel="shortcut icon" href="/image/favicon.ico")
9
9
  %link(rel="stylesheet" href="/css/bootstrap.min.css")
10
- %link(rel="stylesheet" href="/css/honyomi.css")
11
10
  %link(rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css")
11
+ %link(rel="stylesheet" href="/css/honyomi.css")
12
12
 
13
13
  %body
14
14
  .navbar.navbar-default.navbar-static-top
@@ -27,6 +27,7 @@
27
27
  != yield
28
28
  %script(src="https://code.jquery.com/jquery.js")
29
29
  %script(src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js")
30
+ %script(src='/js/honyomi.js')
30
31
 
31
32
 
32
33
 
@@ -113,13 +113,13 @@ class TestDatabase < MiniTest::Test
113
113
  db.add_book("/path/to/book2.pdf", ["2aa", "2bb"])
114
114
  db.add_book("/path/to/book3.pdf", ["3aa", "3bb", "3cc"])
115
115
 
116
- results = db.search("1aa")
116
+ results, _ = db.search(Honyomi::Query.new("1aa"))
117
117
  assert_equal 1, results.size
118
118
 
119
- results = db.search("aa")
119
+ results, _ = db.search(Honyomi::Query.new("aa"))
120
120
  assert_equal 3, results.size
121
121
 
122
- results = db.search("bb OR cc")
122
+ results, _ = db.search(Honyomi::Query.new("bb OR cc"))
123
123
  assert_equal 3, results.size
124
124
  end
125
125
  end
@@ -0,0 +1,79 @@
1
+ require 'minitest_helper'
2
+ require 'honyomi/query'
3
+
4
+ module Honyomi
5
+ class TestQuery < MiniTest::Test
6
+ def test_simple
7
+ q = Query.new("aaa")
8
+ assert_equal "aaa", q.page_query
9
+ assert_equal nil, q.jump_page_no
10
+ end
11
+
12
+ def test_jump_page_no
13
+ q = Query.new("111")
14
+ assert_equal "page_no:111", q.page_query
15
+ assert_equal 111, q.jump_page_no
16
+
17
+ q = Query.new("111 123")
18
+ assert_equal "page_no:111 page_no:123", q.page_query
19
+ assert_equal 123, q.jump_page_no
20
+
21
+ q = Query.new("aaa 222")
22
+ assert_equal "aaa page_no:222", q.page_query
23
+ assert_equal 222, q.jump_page_no
24
+ end
25
+
26
+ def test_phrase
27
+ q = Query.new("aaa \"bbb ccc\" ddd")
28
+ assert_equal "aaa \"bbb ccc\" ddd", q.page_query
29
+ end
30
+
31
+ def test_book
32
+ q = Query.new("b:22 bbb")
33
+ assert_equal "book:22 bbb", q.page_query
34
+ end
35
+
36
+ def test_book_title
37
+ q = Query.new("t:\"aaa bbb\" ccc")
38
+ assert_equal "book.title:@\"aaa bbb\" ccc", q.page_query
39
+ end
40
+
41
+ def test_page_no
42
+ q = Query.new("p:11 t:\"aaa bbb\"")
43
+ assert_equal "page_no:11 book.title:@\"aaa bbb\"", q.page_query
44
+ end
45
+
46
+ def test_and_or
47
+ q = Query.new("aaa + bbb")
48
+ assert_equal "aaa + bbb", q.page_query
49
+
50
+ q = Query.new("aaa OR bbb")
51
+ assert_equal "aaa OR bbb", q.page_query
52
+
53
+ q = Query.new("aaa (\"ddd bbb\" OR t:CCC)")
54
+ assert_equal "aaa (\"ddd bbb\" OR book.title:@CCC)", q.page_query
55
+ end
56
+
57
+ def test_bookmark_query
58
+ q = Query.new("aaa")
59
+ assert_equal "aaa", q.bookmark_query
60
+
61
+ q = Query.new("aaa t:bbb")
62
+ assert_equal "aaa page.book.title:@bbb", q.bookmark_query
63
+
64
+ q = Query.new("aaa b:11")
65
+ assert_equal "aaa page.book:11", q.bookmark_query
66
+
67
+ q = Query.new("aaa p:12")
68
+ assert_equal "aaa page.book.page_no:12", q.bookmark_query
69
+
70
+ q = Query.new("aaa (\"ddd bbb\" OR t:CCC)")
71
+ assert_equal "aaa (\"ddd bbb\" OR page.book.title:@CCC)", q.bookmark_query
72
+ end
73
+
74
+ def test_minus
75
+ q = Query.new("aaa -book:10")
76
+ assert_equal "aaa -page.book:10", q.bookmark_query
77
+ end
78
+ end
79
+ end
data/test/test_util.rb ADDED
@@ -0,0 +1,13 @@
1
+ require 'minitest_helper'
2
+
3
+ class TestUtil < MiniTest::Test
4
+ include Honyomi
5
+
6
+ def test_extract_keywords
7
+ assert_equal [], Util::extract_keywords(nil)
8
+ assert_equal %w(AA BB), Util::extract_keywords("AA BB")
9
+ assert_equal %w(aa bb cc), Util::extract_keywords("aa AND (bb OR cc)")
10
+ assert_equal %w(aa), Util::extract_keywords("aa -bb a:c")
11
+ end
12
+
13
+ end
metadata CHANGED
@@ -1,167 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honyomi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ongaeshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-06 00:00:00.000000000 Z
11
+ date: 2014-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grn_mini
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: haml
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: launchy
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rack
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sinatra
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: thin
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - <
87
+ - - "<"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.7'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - <
94
+ - - "<"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.7'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: thor
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '1.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: minitest
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: sinatra-reloader
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  description: honyomi is a e-book (pdf) search engine. It have command line interface
@@ -173,8 +173,8 @@ executables:
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
- - .gitignore
177
- - .travis.yml
176
+ - ".gitignore"
177
+ - ".travis.yml"
178
178
  - AUTHORS
179
179
  - Gemfile
180
180
  - HISTORY.md
@@ -188,13 +188,20 @@ files:
188
188
  - lib/honyomi/core.rb
189
189
  - lib/honyomi/database.rb
190
190
  - lib/honyomi/pdf.rb
191
+ - lib/honyomi/query.rb
191
192
  - lib/honyomi/util.rb
192
193
  - lib/honyomi/version.rb
193
194
  - lib/honyomi/web/app.rb
194
195
  - lib/honyomi/web/config.ru
195
196
  - lib/honyomi/web/public/css/bootstrap.min.css
196
197
  - lib/honyomi/web/public/css/honyomi.css
198
+ - lib/honyomi/web/public/image/bookmark-01.png
199
+ - lib/honyomi/web/public/image/bookmark-02.png
200
+ - lib/honyomi/web/public/image/bookmark-03.png
197
201
  - lib/honyomi/web/public/image/favicon.ico
202
+ - lib/honyomi/web/public/image/star.png
203
+ - lib/honyomi/web/public/js/honyomi.js
204
+ - lib/honyomi/web/views/help.haml
198
205
  - lib/honyomi/web/views/index.haml
199
206
  - lib/honyomi/web/views/layout.haml
200
207
  - test/minitest_helper.rb
@@ -205,6 +212,8 @@ files:
205
212
  - test/test_database.rb
206
213
  - test/test_honyomi.rb
207
214
  - test/test_pdf.rb
215
+ - test/test_query.rb
216
+ - test/test_util.rb
208
217
  homepage: ''
209
218
  licenses:
210
219
  - MIT
@@ -215,17 +224,17 @@ require_paths:
215
224
  - lib
216
225
  required_ruby_version: !ruby/object:Gem::Requirement
217
226
  requirements:
218
- - - '>='
227
+ - - ">="
219
228
  - !ruby/object:Gem::Version
220
229
  version: '0'
221
230
  required_rubygems_version: !ruby/object:Gem::Requirement
222
231
  requirements:
223
- - - '>='
232
+ - - ">="
224
233
  - !ruby/object:Gem::Version
225
234
  version: '0'
226
235
  requirements: []
227
236
  rubyforge_project:
228
- rubygems_version: 2.3.0
237
+ rubygems_version: 2.2.2
229
238
  signing_key:
230
239
  specification_version: 4
231
240
  summary: e-book (pdf) search engine, command line interface, and web application
@@ -238,3 +247,5 @@ test_files:
238
247
  - test/test_database.rb
239
248
  - test/test_honyomi.rb
240
249
  - test/test_pdf.rb
250
+ - test/test_query.rb
251
+ - test/test_util.rb