ruby-epub 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/ruby-epub.rb +25 -22
  2. metadata +6 -6
data/lib/ruby-epub.rb CHANGED
@@ -2,7 +2,6 @@ require 'zip/zip'
2
2
  require 'nokogiri'
3
3
 
4
4
  class Epub
5
- attr_accessor :title, :language, :publisher, :date, :rights, :creator, :description
6
5
 
7
6
  def initialize(filename)
8
7
  @zip = Zip::ZipFile.open(filename)
@@ -10,6 +9,17 @@ class Epub
10
9
  get_metadata()
11
10
  end
12
11
 
12
+ def my_metadata(name)
13
+ # getter
14
+ define_singleton_method("#{name}=") do |val|
15
+ instance_variable_set("@#{name}", val)
16
+ end
17
+ # setter
18
+ define_singleton_method("#{name}") do
19
+ instance_variable_get("@#{name}")
20
+ end
21
+ end
22
+
13
23
  def get_opf(zipfile)
14
24
  container_file = zipfile.get_input_stream("META-INF/container.xml")
15
25
  container = Nokogiri::XML container_file
@@ -25,26 +35,19 @@ class Epub
25
35
  end
26
36
 
27
37
  def get_metadata()
28
- if @opf.search("//metadata/title")
29
- @title = @opf.search("//metadata/title").first.content
30
- end
31
- if @opf.search("//metadata/language") && @opf.search("//metadata/language").first
32
- @language = @opf.search("//metadata/language").first.content
33
- end
34
- if @opf.search("//metadata/publisher") && @opf.search("//metadata/publisher").first
35
- @publisher = @opf.search("//metadata/publisher").first.content
36
- end
37
- if @opf.search("//metadata/date") && @opf.search("//metadata/date").first
38
- @date = @opf.search("//metadata/date").first.content
39
- end
40
- if @opf.search("//metadata/rights") && @opf.search("//metadata/rights").first
41
- @rights = @opf.search("//metadata/rights").first.content
42
- end
43
- if @opf.search("//metadata/creator") && @opf.search("//metadata/creator").first
44
- @creator = @opf.search("//metadata/creator").first.content
45
- end
46
- if @opf.search("//metadata/description") && @opf.search("//metadata/description").first
47
- @description = @opf.search("//metadata/description").first.content
38
+ @opf.at_xpath("//metadata").children.each do |elem|
39
+ #puts elem.inspect
40
+ if elem.name != 'text'
41
+ if elem.name == "meta"
42
+ name_elem = elem['name'].tr(' ', '_')
43
+ content_elem = elem['content']
44
+ else
45
+ name_elem = elem.name
46
+ content_elem = elem.content
47
+ end
48
+ my_metadata name_elem
49
+ send(name_elem + '=', content_elem)
50
+ end
48
51
  end
49
52
  end
50
53
 
@@ -59,7 +62,7 @@ class Epub
59
62
  if content
60
63
  temp = Tempfile.new(['book_cover', File.extname(img_name)])
61
64
  temp.binmode
62
- temp.write(content.to_blob)
65
+ temp.write(content)
63
66
  temp.flush
64
67
  if(temp.size > 0)
65
68
  return File.new(temp.path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-epub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-04 00:00:00.000000000Z
12
+ date: 2012-04-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip2
16
- requirement: &80688510 !ruby/object:Gem::Requirement
16
+ requirement: &82323690 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *80688510
24
+ version_requirements: *82323690
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &80687310 !ruby/object:Gem::Requirement
27
+ requirement: &82323350 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *80687310
35
+ version_requirements: *82323350
36
36
  description: Extract epub metada
37
37
  email: banux@helheim.net
38
38
  executables: []