epub-search 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +13 -0
- data/README.markdown +11 -2
- data/Rakefile +3 -1
- data/app/add.rb +2 -2
- data/app/init.rb +2 -2
- data/app/list.rb +2 -2
- data/app/remove.rb +2 -2
- data/app/search.rb +2 -2
- data/app/server.rb +2 -2
- data/app/watch.rb +52 -5
- data/bin/epub-search +14 -11
- data/epub-search.gemspec +3 -2
- data/lib/epub/search.rb +4 -5
- data/lib/epub/search/database.rb +9 -7
- data/lib/epub/search/version.rb +1 -1
- data/test/helper.rb +5 -0
- data/test/rails_guides.epub +0 -0
- data/test/test_database.rb +79 -3
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 536544d7de71e3a8248d0dfde581b2cf23a32cc1
|
4
|
+
data.tar.gz: dea71df17f48c5d10fa7b767904259db9021a057
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d77aeba6dfcaff267d8e15577ad0fc5438039cabbb1badee432456906b4b3be780fcca4ea8be15235286205e34efa929bfa85526a1b0c49a927a49292aad345
|
7
|
+
data.tar.gz: 42f255473c9386d092b1d1d6b15cbfd081b729abf4a694321302c845e3778e14c807a65e108343c2f0a4cdb63d1718aeece69c0b3be3a6787a1d85d16565d7f3
|
data/CHANGELOG.markdown
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Change Log
|
2
|
+
==========
|
3
|
+
|
4
|
+
0.0.2
|
5
|
+
-----
|
6
|
+
* Ruby vertion limited to 2.0
|
7
|
+
* Database directory changed
|
8
|
+
* Exec `epub-search init` again
|
9
|
+
* Pid file is used to avoid multiple processes are running at once for epub-search watch
|
10
|
+
|
11
|
+
0.0.1
|
12
|
+
-----
|
13
|
+
* First release
|
data/README.markdown
CHANGED
@@ -15,7 +15,7 @@ Usage
|
|
15
15
|
Commands:
|
16
16
|
epub-search add FILE # Add FILE to database
|
17
17
|
epub-search help [COMMAND] # Describe available commands or one specific command
|
18
|
-
epub-search init [
|
18
|
+
epub-search init [DIR] # Setup database
|
19
19
|
epub-search list # Show list of book titles in database
|
20
20
|
epub-search remove FILE # Remove FILE from database
|
21
21
|
epub-search search WORD [BOOK] # Search WORD in book whose title is like BOOK from database
|
@@ -40,9 +40,18 @@ EPUB Search(`epub-search` command) detectes configuration file following by this
|
|
40
40
|
|
41
41
|
Configuration file should be written as YAML and you can set properties below:
|
42
42
|
|
43
|
-
* :
|
43
|
+
* :dir: String. Directory for Groonga database and other files, defaults to $HOME/.epub-search/db
|
44
44
|
* :directories: Array of String. Directories `watch` subcommand watches.
|
45
45
|
|
46
|
+
ChangeLog
|
47
|
+
---------
|
48
|
+
|
49
|
+
### 0.0.2
|
50
|
+
* Ruby vertion limited to 2.0
|
51
|
+
* Database directory changed
|
52
|
+
* Exec `epub-search init` again
|
53
|
+
* Pid file is used to avoid multiple processes are running at once for epub-search watch
|
54
|
+
|
46
55
|
Contributing
|
47
56
|
------------
|
48
57
|
|
data/Rakefile
CHANGED
data/app/add.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class Add
|
2
|
-
def initialize(
|
2
|
+
def initialize(dir, file_path)
|
3
3
|
@file_path = Pathname.new(file_path)
|
4
4
|
raise "File not readable: #{@file_path}" unless @file_path.readable?
|
5
|
-
@db = EPUB::Search::Database.new(
|
5
|
+
@db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
|
6
6
|
end
|
7
7
|
|
8
8
|
def run(update=true)
|
data/app/init.rb
CHANGED
data/app/list.rb
CHANGED
data/app/remove.rb
CHANGED
data/app/search.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Search
|
2
|
-
def initialize(
|
2
|
+
def initialize(dir, search_word, book=nil)
|
3
3
|
@word, @book = search_word, book
|
4
|
-
@db = EPUB::Search::Database.new(
|
4
|
+
@db = EPUB::Search::Database.new(File.join(dir, EPUB::Search::Database::DIR_NAME))
|
5
5
|
end
|
6
6
|
|
7
7
|
def run(color=$stdout.tty?)
|
data/app/server.rb
CHANGED
data/app/watch.rb
CHANGED
@@ -2,19 +2,30 @@ require 'notify'
|
|
2
2
|
|
3
3
|
class Watch
|
4
4
|
EPUB_RE = /\.epub\Z/io
|
5
|
+
PID_FILE_NAME = 'epub-search.pid'
|
5
6
|
|
6
|
-
def initialize(
|
7
|
+
def initialize(work_dir, directories)
|
7
8
|
raise ArgumentError, 'specify at least one directory' if directories.empty?
|
8
|
-
@
|
9
|
-
@
|
9
|
+
@work_dir = Pathname === work_dir ? work_dir : Pathname.new(work_dir)
|
10
|
+
@directories = directories.map {|dir| File.expand_path(dir)}
|
11
|
+
@db = EPUB::Search::Database.new(File.join(@work_dir.to_path, EPUB::Search::Database::DIR_NAME))
|
10
12
|
end
|
11
13
|
|
12
|
-
def run
|
14
|
+
def run(notify_on_change: true, daemonize: false, debug: false)
|
15
|
+
@notify, @daemonize, @debug = notify_on_change, daemonize, debug
|
16
|
+
if @debug
|
17
|
+
$stderr.puts "notify_on_change: #{@notify}"
|
18
|
+
$stderr.puts "daemonize: #{@daemonize}"
|
19
|
+
$stderr.puts "debug: #{@debug}"
|
20
|
+
end
|
21
|
+
|
13
22
|
$PROGRAM_NAME = File.basename($PROGRAM_NAME)
|
14
23
|
$stderr.puts 'start to watch:'
|
15
24
|
@directories.each do |dir|
|
16
25
|
$stderr.puts " * #{dir}"
|
17
26
|
end
|
27
|
+
Process.daemon if @daemonize
|
28
|
+
write_pid_file
|
18
29
|
catch_up
|
19
30
|
begin
|
20
31
|
Listen.to *@directories, :filter => EPUB_RE do |modified, added, removed|
|
@@ -22,12 +33,16 @@ class Watch
|
|
22
33
|
next unless file_path =~ EPUB_RE
|
23
34
|
file_path.force_encoding 'UTF-8'
|
24
35
|
begin
|
36
|
+
$stderr.puts "remove #{file_path}"
|
25
37
|
@db.remove file_path
|
38
|
+
$stderr.puts "add #{file_path}"
|
26
39
|
@db.add file_path
|
27
40
|
title = EPUB::Parser.parse(file_path).title
|
28
41
|
notify %Q|UPDATED: #{title}\n#{file_path}|
|
42
|
+
FileUtils.touch exit_time_file
|
29
43
|
rescue => error
|
30
44
|
$stderr.puts error
|
45
|
+
$stderr.puts error.backtrace if @debug
|
31
46
|
end
|
32
47
|
end
|
33
48
|
added.each do |file_path|
|
@@ -37,8 +52,10 @@ class Watch
|
|
37
52
|
@db.add file_path
|
38
53
|
title = EPUB::Parser.parse(file_path).title
|
39
54
|
notify %Q|ADDED: #{title}\n#{file_path}|
|
55
|
+
FileUtils.touch exit_time_file
|
40
56
|
rescue => error
|
41
57
|
$stderr.puts error
|
58
|
+
$stderr.puts error.backtrace if @debug
|
42
59
|
end
|
43
60
|
end
|
44
61
|
removed.each do |file_path|
|
@@ -47,18 +64,25 @@ class Watch
|
|
47
64
|
begin
|
48
65
|
@db.remove file_path
|
49
66
|
notify %Q|REMOVED:\n#{file_path}|
|
67
|
+
FileUtils.touch exit_time_file
|
50
68
|
rescue => error
|
51
69
|
$stderr.puts error
|
70
|
+
$stderr.puts error.backtrace if @debug
|
52
71
|
end
|
53
72
|
end
|
54
73
|
end
|
55
74
|
ensure
|
75
|
+
pid_file.delete
|
56
76
|
FileUtils.touch exit_time_file
|
57
77
|
end
|
58
78
|
end
|
59
79
|
|
60
80
|
private
|
61
81
|
|
82
|
+
def notify?
|
83
|
+
@notify
|
84
|
+
end
|
85
|
+
|
62
86
|
def exit_time
|
63
87
|
@exittime ||= File.mtime(exit_time_file)
|
64
88
|
end
|
@@ -67,6 +91,10 @@ class Watch
|
|
67
91
|
@db.db_dir.join('../exittime').to_path
|
68
92
|
end
|
69
93
|
|
94
|
+
def pid_file
|
95
|
+
@work_dir + PID_FILE_NAME
|
96
|
+
end
|
97
|
+
|
70
98
|
def catch_up
|
71
99
|
@directories.each do |dir|
|
72
100
|
Dir["#{dir}/**/*.epub"].each do |file_path|
|
@@ -77,15 +105,34 @@ class Watch
|
|
77
105
|
operation = removed.zero? ? 'ADDED' : 'UPDATED'
|
78
106
|
title = EPUB::Parser.parse(file_path).title
|
79
107
|
notify "#{operation}: #{title}\n#{file_path}"
|
108
|
+
FileUtils.touch exit_time_file
|
80
109
|
rescue => error
|
81
110
|
$stderr.puts error
|
111
|
+
$stderr.puts error.backtrace if @debug
|
82
112
|
end
|
83
113
|
end
|
84
114
|
end
|
115
|
+
rescue
|
116
|
+
pid_file.unlink
|
117
|
+
end
|
118
|
+
|
119
|
+
def write_pid_file
|
120
|
+
if pid_file.exist?
|
121
|
+
pid = pid_file.read.to_i
|
122
|
+
begin
|
123
|
+
Process.kill 0, pid
|
124
|
+
raise "#{$PROGRAM_NAME}(pid: #{pid}) is running"
|
125
|
+
rescue Errno::ESRCH
|
126
|
+
end
|
127
|
+
end
|
128
|
+
$stderr.puts "pid: #{Process.pid}" if @debug
|
129
|
+
pid_file.open 'wb' do |file|
|
130
|
+
file.write Process.pid
|
131
|
+
end
|
85
132
|
end
|
86
133
|
|
87
134
|
def notify(message)
|
88
135
|
$stderr.puts message
|
89
|
-
Notify.notify $PROGRAM_NAME, message
|
136
|
+
Notify.notify $PROGRAM_NAME, message if notify?
|
90
137
|
end
|
91
138
|
end
|
data/bin/epub-search
CHANGED
@@ -4,7 +4,7 @@ require 'thor'
|
|
4
4
|
require 'epub/search'
|
5
5
|
|
6
6
|
Class.new(Thor) {
|
7
|
-
APP_DIR = File.expand_path('
|
7
|
+
APP_DIR = File.expand_path('../app', __dir__)
|
8
8
|
Dir["#{APP_DIR}/*.rb"].each do |path|
|
9
9
|
require path
|
10
10
|
end
|
@@ -18,44 +18,47 @@ Class.new(Thor) {
|
|
18
18
|
class_option :config, :type => :string, :aliases => '-c', :default => nil, :desc => 'Path to config file'
|
19
19
|
|
20
20
|
method_option :force, :type => :boolean, :aliases => '-f', :default => false, :desc => 'Remove existing database before init'
|
21
|
-
desc 'init [
|
22
|
-
def init(
|
23
|
-
Init.new(
|
21
|
+
desc 'init [DIR]', 'Setup database'
|
22
|
+
def init(dir=config[:dir])
|
23
|
+
Init.new(dir).run(options[:force])
|
24
24
|
end
|
25
25
|
|
26
26
|
method_option :update, :type => :boolean, :default => true, :desc => 'Remove existing indices of given book before adding'
|
27
27
|
desc 'add FILE', 'Add FILE to database'
|
28
28
|
def add(file)
|
29
|
-
Add.new(config[:
|
29
|
+
Add.new(config[:dir], file).run(options[:update])
|
30
30
|
end
|
31
31
|
|
32
32
|
method_option :color, :type => :string, :aliasis => :colour, :default => 'auto', :desc => 'Color search word in search result. auto, always and never is available. --no-color also is available as never', :banner => 'WHEN'
|
33
33
|
desc 'search WORD [BOOK]', 'Search WORD in book whose title is like BOOK from database'
|
34
34
|
def search(word, book=nil)
|
35
35
|
raise 'Invalid argument for color option' unless [nil, 'auto', 'always', 'never'].include? options[:color]
|
36
|
-
Search.new(config[:
|
36
|
+
Search.new(config[:dir], word, book).run(options[:color])
|
37
37
|
end
|
38
38
|
|
39
|
+
method_option :daemonize, :type => :boolean, :default => false, :desc => 'Watch in background'
|
40
|
+
method_option :notify, :type => :boolean, :default => true, :desc => 'Notify on adding/updating/removing files'
|
41
|
+
method_option :debug, :type => :boolean, :default => false, :desc => 'Set debugging flags'
|
39
42
|
desc 'watch [DIRECTORY [DIRECTORY ...]]', 'Index all of EPUB files in DIRECTORY'
|
40
43
|
def watch(*directories)
|
41
44
|
directories = config[:directories] if directories.empty?
|
42
|
-
Watch.new(config[:
|
45
|
+
Watch.new(config[:dir], directories).run(notify_on_change: options[:notify], daemonize: options[:daemonize], debug: options[:debug])
|
43
46
|
end
|
44
47
|
|
45
48
|
desc 'remove FILE', 'Remove FILE from database'
|
46
49
|
def remove(file)
|
47
|
-
Remove.new(config[:
|
50
|
+
Remove.new(config[:dir], file).run
|
48
51
|
end
|
49
52
|
|
50
53
|
desc 'server', 'Run server'
|
51
54
|
def server
|
52
|
-
Server.new(config[:
|
55
|
+
Server.new(config[:dir]).run
|
53
56
|
end
|
54
57
|
|
55
|
-
method_option :path, :
|
58
|
+
method_option :path, :type => :boolean, :aliases => '-p', :default => false, :desc => 'Swho book paths'
|
56
59
|
desc 'list', 'Show list of book titles in database'
|
57
60
|
def list
|
58
|
-
List.new(config[:
|
61
|
+
List.new(config[:dir]).run(options[:path])
|
59
62
|
end
|
60
63
|
|
61
64
|
private
|
data/epub-search.gemspec
CHANGED
@@ -10,8 +10,9 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["KitaitiMakoto@gmail.com"]
|
11
11
|
gem.description = %q{Provides tool and library of full text search for EPUB books}
|
12
12
|
gem.summary = %q{Full text search for EPUB books}
|
13
|
-
|
13
|
+
gem.homepage = "https://github.com/KitaitiMakoto/epub-search"
|
14
14
|
|
15
|
+
gem.required_ruby_version = '>= 2.0.0'
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
@@ -24,7 +25,7 @@ Gem::Specification.new do |gem|
|
|
24
25
|
gem.add_runtime_dependency 'rb-inotify'
|
25
26
|
gem.add_runtime_dependency 'listen'
|
26
27
|
gem.add_runtime_dependency 'highline'
|
27
|
-
gem.add_runtime_dependency 'notify'
|
28
|
+
gem.add_runtime_dependency 'notify', '0.5.0'
|
28
29
|
gem.add_runtime_dependency 'rack'
|
29
30
|
gem.add_runtime_dependency 'tilt'
|
30
31
|
|
data/lib/epub/search.rb
CHANGED
@@ -4,12 +4,15 @@ require 'epub/parser'
|
|
4
4
|
require 'groonga'
|
5
5
|
require 'listen'
|
6
6
|
require 'highline'
|
7
|
+
require 'epub/search/database'
|
8
|
+
require 'epub/search/formatter'
|
9
|
+
require 'epub/search/server'
|
7
10
|
|
8
11
|
module EPUB
|
9
12
|
module Search
|
10
13
|
DEFAULT_CONFIG = {
|
11
14
|
:config_path => File.join(Dir.home, '.epub-search/config.yaml'),
|
12
|
-
:
|
15
|
+
:dir => File.join(Dir.home, '.epub-search')
|
13
16
|
}
|
14
17
|
|
15
18
|
class << self
|
@@ -23,7 +26,3 @@ module EPUB
|
|
23
26
|
end
|
24
27
|
end
|
25
28
|
end
|
26
|
-
|
27
|
-
require 'epub/search/database'
|
28
|
-
require 'epub/search/formatter'
|
29
|
-
require 'epub/search/server'
|
data/lib/epub/search/database.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module EPUB
|
2
2
|
module Search
|
3
3
|
class Database
|
4
|
+
DIR_NAME = 'db'
|
4
5
|
FILE_NAME = 'epub-search.db'
|
5
6
|
|
6
7
|
attr_reader :db_dir
|
@@ -19,7 +20,7 @@ module EPUB
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def init(force=false)
|
22
|
-
@db_dir.rmtree if force
|
23
|
+
@db_dir.rmtree if force && @db_dir.exist?
|
23
24
|
@db_dir.mkpath
|
24
25
|
Groonga::Database.create :path => db_file.to_path
|
25
26
|
Groonga::Schema.create_table 'Pages', :type => :array
|
@@ -32,9 +33,9 @@ module EPUB
|
|
32
33
|
table.text 'content'
|
33
34
|
end
|
34
35
|
Groonga::Schema.create_table 'Terms',
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
:type => :patricia_trie,
|
37
|
+
:normalizer => :NormalizerAuto,
|
38
|
+
:default_tokenizer => 'TokenBigram'
|
38
39
|
Groonga::Schema.change_table 'Terms' do |table|
|
39
40
|
table.index 'Pages.book_title'
|
40
41
|
table.index 'Pages.metadata'
|
@@ -70,11 +71,11 @@ module EPUB
|
|
70
71
|
# @return [Integer] the number of removed recoreds
|
71
72
|
def remove(file_path)
|
72
73
|
file_path = Pathname.new(file_path) unless file_path.kind_of? Pathname
|
73
|
-
location = file_path.expand_path
|
74
|
+
location = file_path.expand_path
|
74
75
|
record_count = 0
|
75
76
|
open do
|
76
77
|
records = pages.select {|record|
|
77
|
-
record.location == location
|
78
|
+
record.location == location.to_path
|
78
79
|
}
|
79
80
|
records.each do |record|
|
80
81
|
record.key.delete
|
@@ -102,8 +103,9 @@ module EPUB
|
|
102
103
|
def books(path=false)
|
103
104
|
open do
|
104
105
|
pages.group_by(&:location).collect {|location, records|
|
105
|
-
result
|
106
|
+
result = records.first.book_title
|
106
107
|
result << " - #{location}" if path
|
108
|
+
result
|
107
109
|
}
|
108
110
|
end
|
109
111
|
end
|
data/lib/epub/search/version.rb
CHANGED
data/test/helper.rb
CHANGED
Binary file
|
data/test/test_database.rb
CHANGED
@@ -1,7 +1,83 @@
|
|
1
1
|
require_relative 'helper'
|
2
2
|
|
3
|
-
class TestDatabase <
|
4
|
-
def
|
5
|
-
|
3
|
+
class TestDatabase < EPUB::Search::TestCase
|
4
|
+
def setup
|
5
|
+
@dir = Dir.mktmpdir 'epub-search'
|
6
|
+
@db = Database.new(@dir)
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
FileUtils.remove_entry_secure @dir if File.directory? @dir
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_paths
|
14
|
+
assert_equal Pathname.new(@dir), @db.db_dir
|
15
|
+
assert_equal Pathname.new(@dir).join('epub-search.db'), @db.db_file
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_init_make_db_paths
|
19
|
+
dir = File.join(@dir, 'init')
|
20
|
+
db = Database.new(dir)
|
21
|
+
db.init
|
22
|
+
assert_path_exist db.db_dir
|
23
|
+
assert_path_exist db.db_file
|
24
|
+
end
|
25
|
+
|
26
|
+
class TestAfterInit < TestDatabase
|
27
|
+
def setup
|
28
|
+
super
|
29
|
+
@db.init
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_init_make_Pages_table
|
33
|
+
open_db do
|
34
|
+
assert_not_nil Groonga['Pages']
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_init_make_Terms_table
|
39
|
+
open_db do
|
40
|
+
assert_not_nil Groonga['Terms']
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class TestAdd < TestAfterInit
|
45
|
+
class TestWhenNonEpubFilePassed < TestAdd
|
46
|
+
def setup
|
47
|
+
super
|
48
|
+
@epub_path = __FILE__
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_add_raise_error
|
52
|
+
assert_raise Zip::Error do
|
53
|
+
@db.add @epub_path
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class TestWhenEpubFilePassed < TestAdd
|
59
|
+
def setup
|
60
|
+
super
|
61
|
+
@epub_path = File.join(__dir__, 'rails_guides.epub')
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_add_insert_records_same_to_xhtml_in_epub
|
65
|
+
@db.add @epub_path
|
66
|
+
epub = EPUB::Parser.parse(@epub_path)
|
67
|
+
xhtmls = epub.each_content.select {|content| content.media_type == 'application/xhtml+xml'}.length
|
68
|
+
open_db do
|
69
|
+
assert_equal xhtmls, Groonga['Pages'].size
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def open_db
|
79
|
+
Groonga::Database.open @db.db_file.to_path do |database|
|
80
|
+
yield database
|
81
|
+
end
|
6
82
|
end
|
7
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epub-search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KITAITI Makoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: epub-parser
|
@@ -98,16 +98,16 @@ dependencies:
|
|
98
98
|
name: notify
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - '
|
101
|
+
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.5.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
|
-
version:
|
110
|
+
version: 0.5.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rack
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,6 +230,7 @@ extra_rdoc_files: []
|
|
230
230
|
files:
|
231
231
|
- .gitignore
|
232
232
|
- .yardopts
|
233
|
+
- CHANGELOG.markdown
|
233
234
|
- Gemfile
|
234
235
|
- LICENSE.txt
|
235
236
|
- README.markdown
|
@@ -252,8 +253,9 @@ files:
|
|
252
253
|
- template/index.html.erb
|
253
254
|
- template/result.html.erb
|
254
255
|
- test/helper.rb
|
256
|
+
- test/rails_guides.epub
|
255
257
|
- test/test_database.rb
|
256
|
-
homepage:
|
258
|
+
homepage: https://github.com/KitaitiMakoto/epub-search
|
257
259
|
licenses: []
|
258
260
|
metadata: {}
|
259
261
|
post_install_message:
|
@@ -264,7 +266,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
264
266
|
requirements:
|
265
267
|
- - '>='
|
266
268
|
- !ruby/object:Gem::Version
|
267
|
-
version:
|
269
|
+
version: 2.0.0
|
268
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
271
|
requirements:
|
270
272
|
- - '>='
|
@@ -278,5 +280,6 @@ specification_version: 4
|
|
278
280
|
summary: Full text search for EPUB books
|
279
281
|
test_files:
|
280
282
|
- test/helper.rb
|
283
|
+
- test/rails_guides.epub
|
281
284
|
- test/test_database.rb
|
282
285
|
has_rdoc: yard
|