epubinfo_with_toc 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGIwMDJiYTZmNmM5ZWY1MmYwNjk4YWY4ZmM3NzZkZTI3MTY2NTg1YQ==
4
+ YzRhZWZjNDMwYzM0ZGI0MTY3YTk2ZjFlZjNjYjIzMmZhNGVlZGVmNA==
5
5
  data.tar.gz: !binary |-
6
- MTcyNGFjODNlNWUzM2Q1MjY2NDQyM2FjMGViODVlNzYzNjM5YzFjZg==
6
+ ODllZDgzNGVhNDVlNTAxNjhjNWQyMjllNzViMmQ4ODBlODVkYmRlNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YmE4Nzc2NGM2YzkwNjJjMmI0NWEwNGYxMzc0ZTc2NjhiNGIyYTVhYjhlM2Jk
10
- ZWEzN2FlYjUyYzliMzcwNTljNjM4YzE4NjFkMzhhZDMzNDEwOTU1OWU4YmI5
11
- YWU4MTZlOTFlMDNmOGE5MzIzYWQ1MTRhYzc4MjBjYzg1MjllZDU=
9
+ YTdmODFlMmUwODJkNDJkYjg0MWJhNmYwODA1ZjFiOTMzYWE5MDYzZTVlNjMx
10
+ ZjFlYzM2YjkzZTc0OGE1ODU0MTgxZjU5YWQ0YWE2OGZmMDdlZDIwMTlkNjJm
11
+ Y2I0MzVhMzk5NGE5OWJmYmQ0OWZlOTI4MGMzNTkzZGZmYjFlYzY=
12
12
  data.tar.gz: !binary |-
13
- YTM0NDBhMjQzYmRjODQ3MWE2ZTgxYTIwOGFkOTc4MDdjODg5M2Q1NmE5NjAz
14
- OGFlNGVhMmQzOWEwOGM5NDI4YTE1NDAyZjcyNGMzMWNkYmNlZGYwZGU3Mzhm
15
- OWUwZTAyMjRjN2MwNWMzM2I5OGM0ZTU1YWZkMGY5Nzg2NTY5ZGQ=
13
+ NTU4MzMyNDY2NmYyZWFhYzY3Y2NiYzBhYWI2MGIzZGExNjZkYjVmMjc0OWFl
14
+ MTVlM2FiNmI3NjBkNTE4YWI2ODI1OTYzODQyODNhYzZmMmFjMDdkODZlZDNj
15
+ NmZmMGRhZTNkOTYyOWI2Yzk3ZWVkNmQzOTFmNTE4NzZkZTE4ZGY=
data/README.md CHANGED
@@ -50,16 +50,16 @@ pages1_4 = book.table_of_contents.resources[0..3]
50
50
 
51
51
  ### Querying for a list of specific resources
52
52
  ```ruby
53
- images = book.table_of_contents.images
54
- fonts = book.table_of_contents.fonts
55
- videos = book.table_of_contents.videos
56
- js = book.table_of_contents.javascripts
57
- css = book.table_of_contents.css
53
+ images = book.table_of_contents.resources.images
54
+ fonts = book.table_of_contents.resources.fonts
55
+ videos = book.table_of_contents.resources.videos
56
+ js = book.table_of_contents.resources.javascripts
57
+ css = book.table_of_contents.resources.css
58
58
  ```
59
59
 
60
60
  ### Get a list of all the different mime-types used
61
61
  ```ruby
62
- types = book.table_of_contents.types
62
+ types = book.table_of_contents.resources.types
63
63
  ```
64
64
 
65
65
  ### print SPINE text
@@ -71,6 +71,9 @@ end
71
71
  ```
72
72
 
73
73
  ## Changelog
74
+ **0.5.0** *Januari 11,2014*
75
+
76
+ * A lot of bugfixing
74
77
 
75
78
  **0.4.4** *October 24,2013*
76
79
 
@@ -1,4 +1,5 @@
1
- require 'epubinfo/models/table_of_contents/resource'
1
+ require_relative 'table_of_contents/resource'
2
+ require_relative 'table_of_contents/navigation'
2
3
 
3
4
  module EPUBInfo
4
5
  module Models
@@ -12,6 +13,7 @@ module EPUBInfo
12
13
  metadata = document.css('metadata')
13
14
  self.spine = metadata.xpath('//spine')
14
15
  self.manifest = metadata.xpath('//manifest')
16
+ self.ncx = Navigation.new(self)
15
17
  self.parser = parser
16
18
  end
17
19
 
@@ -44,6 +46,7 @@ module EPUBInfo
44
46
  attr_accessor :manifest
45
47
  attr_accessor :parser
46
48
  attr_accessor :spine
49
+ attr_accessor :ncx
47
50
 
48
51
  private
49
52
  def load_toc_file
@@ -0,0 +1,22 @@
1
+ class Navigation
2
+ def initialize(table_of_contents)
3
+ @table_of_contents = table_of_contents
4
+ end
5
+
6
+ def path
7
+ @table_of_contents.path
8
+ end
9
+
10
+ def nav_map
11
+ ncx_doc = Nokogiri::XML(@table_of_contents.parser.zip_file.read(path))
12
+ ncx_doc.remove_namespaces!
13
+
14
+ if ncx_doc
15
+ map = ncx_doc.xpath('//navMap/navPoint').map do |navpoint|
16
+ {'label' =>(navpoint % 'navLabel/text').content , 'path' => (navpoint % 'content').attr('src')}
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -30,7 +30,7 @@ class Resource
30
30
 
31
31
  if reference.is_a?(String)
32
32
  reference_data = self.to_a.map do |r|
33
- r[:uri] if r[:id].eql?(reference) || r[:uri].eql?(reference)
33
+ r[:uri] if r[:id].eql?(reference) || r[:uri].eql?(reference) || r[:uri_ref].eql?(reference)
34
34
  end.compact
35
35
 
36
36
  if reference_data && !reference_data.empty?
@@ -64,6 +64,19 @@ class Resource
64
64
  end
65
65
  end
66
66
 
67
+ def ncx
68
+ @ncx ||=
69
+ begin
70
+ @table_of_contents.ncx.nav_map.map do |n|
71
+ path = URI.decode(n['path'])
72
+ {:uri_ref => path,
73
+ :text => n['label'],
74
+ :uri => @table_of_contents.parser.zip_file.entries.map { |p| p.name }.select { |s| s.match(path.gsub(/\#.*$/, '')) }.first
75
+ }
76
+ end
77
+ end
78
+ end
79
+
67
80
  def images
68
81
  @images ||= self.to_a.select {|r| r[:type] =~ /image/}
69
82
  end
@@ -105,8 +118,10 @@ class Resource
105
118
  end
106
119
 
107
120
  #TODO:make this an OpenStruct
121
+
122
+ uri = @table_of_contents.parser.zip_file.entries.map { |p| p.name }.select { |s| s.match(uri.gsub(/\#.*$/, '')) }.first
108
123
  resources << {:id => id,
109
- :uri => @table_of_contents.parser.zip_file.entries.map { |p| p.name }.select { |s| s.match(uri) }.first,
124
+ :uri => uri,
110
125
  :uri_ref => uri_ref,
111
126
  :text => label,
112
127
  :type => mime_type,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epubinfo_with_toc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christof Dorner
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-29 00:00:00.000000000 Z
12
+ date: 2014-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - ! '>'
19
19
  - !ruby/object:Gem::Version
20
- version: '1.0'
20
+ version: 1.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - ! '>'
26
26
  - !ruby/object:Gem::Version
27
- version: '1.0'
27
+ version: 1.0.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: nokogiri
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -110,7 +110,7 @@ files:
110
110
  - lib/epubinfo/models/identifier.rb
111
111
  - lib/epubinfo/models/person.rb
112
112
  - lib/epubinfo/models/table_of_contents.rb
113
- - lib/epubinfo/models/table_of_contents/manifest.rb
113
+ - lib/epubinfo/models/table_of_contents/navigation.rb
114
114
  - lib/epubinfo/models/table_of_contents/resource.rb
115
115
  - lib/epubinfo/parser.rb
116
116
  - lib/epubinfo/utils.rb
@@ -141,4 +141,3 @@ signing_key:
141
141
  specification_version: 4
142
142
  summary: Extracts metadata information from EPUB files
143
143
  test_files: []
144
- has_rdoc:
@@ -1,7 +0,0 @@
1
- class Manifest
2
- def initialize(table_of_contents)
3
- @table_of_contents = table_of_contents
4
- end
5
-
6
-
7
- end