gepub 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,29 +1,29 @@
1
- = gepub
2
- {<img src="https://secure.travis-ci.org/skoji/gepub.png" />}[http://travis-ci.org/skoji/gepub]
1
+ # gepub [<img src="https://secure.travis-ci.org/skoji/gepub.png" />](http://travis-ci.org/skoji/gepub)
3
2
 
4
3
  * http://github.com/skoji/gepub
5
4
 
6
- == DESCRIPTION:
5
+ ## DESCRIPTION:
7
6
 
8
7
  a generic EPUB parser/generator library.
9
8
 
10
- == FEATURES/PROBLEMS:
9
+ ## FEATURES/PROBLEMS:
11
10
 
12
11
  * GEPUB::Book provides functionality to create EPUB file, and parsing EPUB file
13
12
  * from version 0.6, GEPUB::Book will be able handle almost every metadata in EPUB2/EPUB3.
14
13
  .. but is still beta version. Please inform me when you find bugs.
15
-
16
14
  * Will provide easy to generate EPUB class, like Nokogiri::XML::Generator.
17
15
 
18
- == SYNOPSIS:
16
+ * See [issues](https://github.com/skoji/gepub/issues/) for known problems.
17
+
18
+ ## SYNOPSIS:
19
19
 
20
20
  see examples directory.
21
21
 
22
- == INSTALL:
22
+ ## INSTALL:
23
23
 
24
24
  * gem install gepub
25
25
 
26
- == LICENSE:
26
+ ## LICENSE:
27
27
 
28
28
  (The New BSD License)
29
29
 
data/lib/gepub/book.rb CHANGED
@@ -31,23 +31,33 @@ module GEPUB
31
31
  files[entry.name] = zis.read
32
32
  case entry.name
33
33
  when MIMETYPE then
34
- files[MIMETYPE] = nil
34
+ if files[MIMETYPE] != MIMETYPE_CONTENTS
35
+ warn "#{MIMETYPE} is not valid: should be #{MIMETYPE_CONTENTS} but was #{files[MIMETYPE]}"
36
+ end
37
+ files.delete(MIMETYPE)
35
38
  when CONTAINER then
36
- package_path = rootfile_from_container(files[entry.name])
37
- files[CONTAINER] = nil
39
+ package_path = rootfile_from_container(files[CONTAINER])
40
+ files.delete(CONTAINER)
38
41
  when ROOTFILE_PATTERN then
39
42
  package = Package.parse_opf(files[entry.name], entry.name)
43
+ files.delete(entry.name)
40
44
  end
41
45
  end
42
46
  end
47
+
48
+ if package.nil?
49
+ raise 'this container do not cotains publication information file'
50
+ end
51
+
43
52
  if package_path != package.path
44
53
  warn 'inconsistend EPUB file: container says opf is #{package_path}, but actually #{package.path}'
45
54
  end
55
+
46
56
  files.each {
47
57
  |k, content|
48
58
  item = package.manifest.item_by_href(k.sub(/^#{package.contents_prefix}/,''))
49
59
  if !item.nil?
50
- files[k] = nil
60
+ files.delete(k)
51
61
  item.add_raw_content(content)
52
62
  end
53
63
  }
@@ -102,13 +112,19 @@ module GEPUB
102
112
  def ordered(&block)
103
113
  @package.ordered(&block)
104
114
  end
115
+
105
116
  def generate_epub(path_to_epub)
106
- if (@toc.size == 0)
107
- @toc << { :item => @package.spine.itemref_list[0] }
108
- end
109
117
 
110
118
  if version.to_f < 3.0 || @package.epub_backward_compat
111
- add_item('toc.ncx', StringIO.new(ncx_xml), 'ncx')
119
+ if @package.manifest.item_list.select {
120
+ |x,item|
121
+ item.media_type == 'application/x-dtbncx+xml'
122
+ }.size == 0
123
+ if (@toc.size == 0)
124
+ @toc << { :item => @package.manifest.item_list[@package.spine.itemref_list[0].idref] }
125
+ end
126
+ add_item('toc.ncx', StringIO.new(ncx_xml), 'ncx')
127
+ end
112
128
  end
113
129
 
114
130
  if version.to_f >=3.0
data/lib/gepub/gepuber.rb CHANGED
@@ -22,11 +22,11 @@ module GEPUB
22
22
  attr_accessor :texts, :resources, :epubname, :coverimg, :table_of_contents, :provider
23
23
 
24
24
  def method_missing(name, *args)
25
- @package.send(name, *args)
25
+ @book.send(name, *args)
26
26
  end
27
27
 
28
28
  def initialize(param)
29
- @package = GEPUB::Package.new()
29
+ @book = GEPUB::Book.new()
30
30
  param.each {
31
31
  |k,v|
32
32
  self.send "#{k}=", v
@@ -42,22 +42,23 @@ module GEPUB
42
42
  def create(destbasedir = ".")
43
43
  @provider.new(@texts).each {
44
44
  |f, fio|
45
- item = add_item(f, fio)
46
- @spine << item
47
- if !@table_of_contents[f].nil?
48
- add_nav(item, @table_of_contents[f])
49
- @table_of_contents.each {
50
- |k,v|
51
- k =~ /^#{f}#(.*)$/
52
- add_nav(item, v, $1) unless $1.nil?
53
- }
54
- end
45
+ @book.ordered {
46
+ item = add_item(f, fio)
47
+ if !@table_of_contents[f].nil?
48
+ item.toc_text table_of_contents[f]
49
+ @table_of_contents.each {
50
+ |k,v|
51
+ k =~ /^#{f}#(.*)$/
52
+ add_nav(item, v, $1) unless $1.nil?
53
+ }
54
+ end
55
+ }
55
56
  }
56
57
 
57
58
  @provider.new(@resources).each {
58
59
  |f, fio|
59
60
  item = add_item(f, fio)
60
- specify_cover_image(item) if File.basename(f) == @coverimg
61
+ item.cover_image if File.basename(f) == @coverimg
61
62
  }
62
63
  generate_epub(File.join(destbasedir, @epubname + '.epub'))
63
64
  end
data/lib/gepub/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GEPUB
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
@@ -17,8 +17,10 @@ module GEPUB
17
17
  |k,v|
18
18
  attributes[k] = v.to_s
19
19
  }
20
- attributes['xml:lang'] = attributes['lang'];
21
- attributes.delete('lang')
20
+ if attributes['lang']
21
+ attributes['xml:lang'] = attributes['lang'];
22
+ attributes.delete('lang')
23
+ end
22
24
  attributes
23
25
  end
24
26
  end
data/spec/example_spec.rb CHANGED
@@ -21,7 +21,7 @@ describe 'GEPUB usage' do
21
21
  'th' => 'GEPUB ตัวอย่าง (ญี่ปุ่น)')
22
22
  }
23
23
  # you can do the same thing using method chain
24
- book.add_title('これはあくまでサンプルです',nil, GEPUB::TITLE_TYPE::SUBTITLE).set_display_seq(1).add_alternates('en' => 'this book is just a sample.')
24
+ book.add_title('これはあくまでサンプルです',nil, GEPUB::TITLE_TYPE::SUBTITLE).set_display_seq(2).add_alternates('en' => 'this book is just a sample.')
25
25
  book.add_creator('小嶋智') {
26
26
  |creator|
27
27
  creator.display_seq = 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gepub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70155015272060 !ruby/object:Gem::Requirement
16
+ requirement: &70172284071640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70155015272060
24
+ version_requirements: *70172284071640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70155015271560 !ruby/object:Gem::Requirement
27
+ requirement: &70172284071140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70155015271560
35
+ version_requirements: *70172284071140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rubyzip
38
- requirement: &70155015271100 !ruby/object:Gem::Requirement
38
+ requirement: &70172284070680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 0.9.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70155015271100
46
+ version_requirements: *70172284070680
47
47
  description: gepub is a EPUB parser/generator. Generates EPUB2 opf. will support EPUB3
48
48
  parse/generation
49
49
  email:
@@ -57,7 +57,7 @@ files:
57
57
  - .gitignore
58
58
  - .travis.yml
59
59
  - Gemfile
60
- - README.rdoc
60
+ - README.md
61
61
  - Rakefile
62
62
  - bin/gepuber
63
63
  - examples/generate_example.rb