epub_validator 0.1.0 → 0.1.1
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/README.md +8 -8
- data/bin/epub_validator +2 -2
- data/epub_validator.gemspec +6 -10
- data/lib/epub_validator.rb +4 -3
- data/lib/epub_validator/format_message.rb +18 -0
- data/lib/epub_validator/process_epub.rb +13 -0
- data/lib/epub_validator/version.rb +1 -1
- data/spec/epub_validator/format_message_spec.rb +29 -0
- data/spec/epub_validator/process_epub_spec.rb +20 -0
- data/spec/epub_validator_spec.rb +1 -1
- metadata +19 -18
- data/lib/epub_validator/check_epub.rb +0 -30
- data/spec/epub_validator/check_epub_spec.rb +0 -29
data/README.md
CHANGED
@@ -15,26 +15,26 @@ gem install epub_validator
|
|
15
15
|
|
16
16
|
## Basic Usage
|
17
17
|
|
18
|
-
Sample usage and output
|
18
|
+
Sample usage and output:
|
19
19
|
|
20
20
|
``` ruby
|
21
21
|
require 'epub_validator'
|
22
22
|
|
23
|
-
ev = EpubValidator.
|
23
|
+
ev = EpubValidator.check('/path/to/sample.epub')
|
24
24
|
ev.message.each do |m|
|
25
25
|
puts m
|
26
26
|
end
|
27
27
|
=> # FAILED!
|
28
|
-
=> # ERROR: /
|
28
|
+
=> # ERROR: OPS/toc.ncx(21): 'OPS/': referenced resource exists, but not declared in the OPF file
|
29
29
|
```
|
30
30
|
|
31
31
|
Now from the command line:
|
32
32
|
|
33
33
|
``` terminal
|
34
|
-
$ epub_validator /path/to/
|
34
|
+
$ bin/epub_validator /path/to/sample.epub
|
35
35
|
Checking....
|
36
36
|
FAILED!
|
37
|
-
ERROR: /
|
37
|
+
ERROR: OPS/toc.ncx(21): 'OPS/': referenced resource exists, but not declared in the OPF file
|
38
38
|
```
|
39
39
|
|
40
40
|
|
@@ -44,6 +44,6 @@ Java must be installed and set in your PATH.
|
|
44
44
|
|
45
45
|
## Future Features
|
46
46
|
|
47
|
-
* Accept directory containing many .epub files for processing.
|
48
|
-
*
|
49
|
-
* Format "
|
47
|
+
* Accept a directory containing many .epub files for processing.
|
48
|
+
* When using the command line, have option to write results to a log file
|
49
|
+
* Format "ERROR" and "WARNING" output for more intuitive instructions.
|
data/bin/epub_validator
CHANGED
data/epub_validator.gemspec
CHANGED
@@ -7,12 +7,12 @@ Gem::Specification.new do |s|
|
|
7
7
|
|
8
8
|
s.name = "epub_validator"
|
9
9
|
s.version = EpubValidator::VERSION
|
10
|
-
s.summary = %q{
|
11
|
-
s.description = %q{EPUB Validator
|
10
|
+
s.summary = %q{Check that your EPUB book is a valid IDPF document.}
|
11
|
+
s.description = %q{EPUB Validator lets you check that your EPUB 2 files are valid IDPF documents with the help of the epubcheck tool.}
|
12
12
|
|
13
13
|
s.authors = ["Mike Cook"]
|
14
14
|
s.email = ["m@mikecook.co.uk"]
|
15
|
-
s.homepage = "
|
15
|
+
s.homepage = "https://github.com/mrcook/"
|
16
16
|
|
17
17
|
s.required_ruby_version = ">= 1.9.2"
|
18
18
|
s.required_rubygems_version = ">= 1.3.6"
|
@@ -22,11 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
23
23
|
s.require_paths = ["lib"]
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
s.add_dependency "rspec"
|
30
|
-
s.add_dependency "ZenTest"
|
31
|
-
s.add_dependency "autotest-growl"
|
25
|
+
s.add_development_dependency "rspec"
|
26
|
+
s.add_development_dependency "ZenTest"
|
27
|
+
s.add_development_dependency "autotest-growl"
|
32
28
|
end
|
data/lib/epub_validator.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
Dir["#{File.dirname(__FILE__)}/epub_validator/**/*"].each {|file| require(file)}
|
2
2
|
|
3
|
-
require 'epub_validator/
|
3
|
+
require 'epub_validator/process_epub'
|
4
4
|
|
5
5
|
module EpubValidator
|
6
|
-
def self.
|
7
|
-
|
6
|
+
def self.check(filename)
|
7
|
+
validation = ProcessEpub.new
|
8
|
+
validation.epubcheck(filename)
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module EpubValidator
|
2
|
+
class FormatMessage
|
3
|
+
def process_message(message)
|
4
|
+
return ['Passed.'] if message.match('No errors or warnings detected')
|
5
|
+
|
6
|
+
m_array = message.split(/\n/)
|
7
|
+
|
8
|
+
# clean up all useless info
|
9
|
+
m_array.delete_if do |s|
|
10
|
+
s.empty? or
|
11
|
+
s.match('^Epubcheck Version.*') or
|
12
|
+
s.match('^Check finished.*')
|
13
|
+
end
|
14
|
+
|
15
|
+
m_array.unshift('FAILED!')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module EpubValidator
|
2
|
+
class ProcessEpub
|
3
|
+
def epubcheck(filename)
|
4
|
+
epubcheck_jar = File.expand_path(File.dirname(__FILE__) + '/../epubcheck-1-2/epubcheck-1.2.jar')
|
5
|
+
format_epubcheck_output(`java -jar #{epubcheck_jar} "#{filename}" 2>&1`)
|
6
|
+
end
|
7
|
+
|
8
|
+
def format_epubcheck_output(message)
|
9
|
+
errm = FormatMessage.new
|
10
|
+
errm.process_message(message)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module EpubValidator
|
4
|
+
describe FormatMessage do
|
5
|
+
context "when it recieves a missing file message" do
|
6
|
+
it "should return a 'FAILED!' message as an array" do
|
7
|
+
message = "ERROR: test.epub: I/O error: test.epub (No such file or directory)"
|
8
|
+
formatted_message = ["FAILED!", "ERROR: test.epub: I/O error: test.epub (No such file or directory)"]
|
9
|
+
errm = FormatMessage.new
|
10
|
+
errm.process_message(message).should eq(formatted_message)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
context "when it recieves a valid file message" do
|
14
|
+
it "should return 'Passed.' message as an array" do
|
15
|
+
message = "Epubcheck Version 1.2\n\nNo errors or warnings detected\n"
|
16
|
+
errm = FormatMessage.new
|
17
|
+
errm.process_message(message).should eq(['Passed.'])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
context "when it recieves an invalid file message" do
|
21
|
+
it "should return error message as an array" do
|
22
|
+
message = "Epubcheck Version 1.2\n\nERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing\n\nCheck finished with warnings or errors!"
|
23
|
+
formatted_message = ["FAILED!", "ERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing"]
|
24
|
+
errm = FormatMessage.new
|
25
|
+
errm.process_message(message).should eq(formatted_message)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module EpubValidator
|
4
|
+
describe ProcessEpub do
|
5
|
+
context "when it processes a file" do
|
6
|
+
it "should return a message" do
|
7
|
+
message = "Epubcheck Version 1.2\n\nERROR: rspec-test.epub: resource OEBPS/stylesheets/handbookish.css is missing\n\nCheck finished with warnings or errors!"
|
8
|
+
ec = ProcessEpub.new
|
9
|
+
ec.stub(:epubcheck).and_return(message)
|
10
|
+
ec.epubcheck("test.epub").should eq(message)
|
11
|
+
end
|
12
|
+
it "should return the output message formatted" do
|
13
|
+
message = "Epubcheck Version 1.2\n\nERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing\n\nCheck finished with warnings or errors!"
|
14
|
+
formatted_message = ["FAILED!", "ERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing"]
|
15
|
+
ec = ProcessEpub.new
|
16
|
+
ec.format_epubcheck_output(message).should eq(formatted_message)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/spec/epub_validator_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epub_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,44 +9,43 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-20 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &11670320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
-
type: :
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11670320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ZenTest
|
27
|
-
requirement: &
|
27
|
+
requirement: &11669320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '0'
|
33
|
-
type: :
|
33
|
+
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11669320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: autotest-growl
|
38
|
-
requirement: &
|
38
|
+
requirement: &11668720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '0'
|
44
|
-
type: :
|
44
|
+
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
description: EPUB Validator
|
48
|
-
|
49
|
-
directories full of EPUB files and then output any errors to a log file.
|
46
|
+
version_requirements: *11668720
|
47
|
+
description: EPUB Validator lets you check that your EPUB 2 files are valid IDPF documents
|
48
|
+
with the help of the epubcheck tool.
|
50
49
|
email:
|
51
50
|
- m@mikecook.co.uk
|
52
51
|
executables:
|
@@ -63,7 +62,8 @@ files:
|
|
63
62
|
- bin/epub_validator
|
64
63
|
- epub_validator.gemspec
|
65
64
|
- lib/epub_validator.rb
|
66
|
-
- lib/epub_validator/
|
65
|
+
- lib/epub_validator/format_message.rb
|
66
|
+
- lib/epub_validator/process_epub.rb
|
67
67
|
- lib/epub_validator/version.rb
|
68
68
|
- lib/epubcheck-1-2/COPYING.txt
|
69
69
|
- lib/epubcheck-1-2/README.txt
|
@@ -71,10 +71,11 @@ files:
|
|
71
71
|
- lib/epubcheck-1-2/jing_license.txt
|
72
72
|
- lib/epubcheck-1-2/lib/jing.jar
|
73
73
|
- lib/epubcheck-1-2/lib/saxon.jar
|
74
|
-
- spec/epub_validator/
|
74
|
+
- spec/epub_validator/format_message_spec.rb
|
75
|
+
- spec/epub_validator/process_epub_spec.rb
|
75
76
|
- spec/epub_validator_spec.rb
|
76
77
|
- spec/spec_helper.rb
|
77
|
-
homepage:
|
78
|
+
homepage: https://github.com/mrcook/
|
78
79
|
licenses: []
|
79
80
|
post_install_message:
|
80
81
|
rdoc_options: []
|
@@ -97,5 +98,5 @@ rubyforge_project:
|
|
97
98
|
rubygems_version: 1.8.10
|
98
99
|
signing_key:
|
99
100
|
specification_version: 3
|
100
|
-
summary:
|
101
|
+
summary: Check that your EPUB book is a valid IDPF document.
|
101
102
|
test_files: []
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module EpubValidator
|
2
|
-
class CheckEpub
|
3
|
-
attr_accessor :message
|
4
|
-
|
5
|
-
def initialize(filename)
|
6
|
-
@filename = filename
|
7
|
-
@message = format_epubcheck_message(process_epub)
|
8
|
-
end
|
9
|
-
|
10
|
-
def process_epub
|
11
|
-
epubcheck_jar = File.expand_path(File.dirname(__FILE__) + '/../epubcheck-1-2/epubcheck-1.2.jar')
|
12
|
-
epubcheck = `java -jar #{epubcheck_jar} "#{@filename}" 2>&1`
|
13
|
-
end
|
14
|
-
|
15
|
-
def format_epubcheck_message(message)
|
16
|
-
return ['Passed.'] if message.match('No errors or warnings detected')
|
17
|
-
|
18
|
-
m_array = message.split(/\n/)
|
19
|
-
|
20
|
-
# clean up all useless info
|
21
|
-
m_array.delete_if do |s|
|
22
|
-
s.empty? or
|
23
|
-
s.match('^Epubcheck Version.*') or
|
24
|
-
s.match('^Check finished.*')
|
25
|
-
end
|
26
|
-
|
27
|
-
m_array.unshift('FAILED!')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module EpubValidator
|
4
|
-
describe CheckEpub do
|
5
|
-
context "when it tries to process a missing file" do
|
6
|
-
it "should return missing file error message" do
|
7
|
-
failed_message = 'FAILED!\n\nNo .epub file to check was specified in arguments!\n\nThe tool will EXIT!'
|
8
|
-
ce = CheckEpub.new('test.epub')
|
9
|
-
CheckEpub.any_instance.stub(:process_epub).and_return(failed_message)
|
10
|
-
ce.process_epub.should eq(failed_message)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
context "when it processes a valid file" do
|
14
|
-
it "should return 'Passed.' message as an array" do
|
15
|
-
success_message = "Epubcheck Version 1.2\n\nNo errors or warnings detected\n"
|
16
|
-
ce = CheckEpub.new('test.epub')
|
17
|
-
ce.format_epubcheck_message(success_message).should eq(['Passed.'])
|
18
|
-
end
|
19
|
-
end
|
20
|
-
context "when it processes an invalid file" do
|
21
|
-
it "should return error message as an array" do
|
22
|
-
failed_message = "Epubcheck Version 1.2\n\nERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing\n\nCheck finished with warnings or errors!"
|
23
|
-
formatted_failed_message = ["FAILED!", "ERROR: book.epub: resource OEBPS/stylesheets/handbookish.css is missing"]
|
24
|
-
ce = CheckEpub.new('test.epub')
|
25
|
-
ce.format_epubcheck_message(failed_message).should eq(formatted_failed_message)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|