gepub 0.2.2 → 0.3.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
data/bin/gepuber ADDED
@@ -0,0 +1,50 @@
1
+ require 'gepub'
2
+ require 'optparse'
3
+
4
+ def usage
5
+ STDERR.print "gepuber [-d destination ] <source-directory>\r\n"
6
+ exit 1
7
+ end
8
+
9
+ def srccheck(srcdir)
10
+ if !File.exist?(srcdir) || !File.directory?(srcdir)
11
+ STDERR.print "#{srcdir} is not a directory"
12
+ exit 1
13
+ end
14
+ if !File.exist?(File.join(srcdir, 'gepuber.conf'))
15
+ STDERR.print "gepuber.conf does not exists in#{srcdir}."
16
+ exit 1
17
+ end
18
+ end
19
+
20
+ def destcheck(destdir)
21
+ if (File.exist?(destdir) && !File.directory?(destdir))
22
+ STDERR.print "#{destdir} is not a directory\n"
23
+ exit 1
24
+ end
25
+ end
26
+
27
+ destbasedir = "."
28
+
29
+ opt = OptionParser.new
30
+
31
+ usage if ARGV.length < 1
32
+
33
+ opt.on('-d [directory]') { |dir|
34
+ destbasedir = dir
35
+ }
36
+
37
+ destbasedir = File.expand_path(destbasedir)
38
+
39
+ srcdir = opt.parse(ARGV)[0]
40
+ srccheck(srcdir)
41
+
42
+ Dir.chdir(srcdir)
43
+ begin
44
+ File.open('gepuber.conf', 'rb') {
45
+ |io|
46
+ gepuber = GEPUB::Gepuber.new(io.read)
47
+ gepuber.create destbasedir
48
+ }
49
+ end
50
+
data/gepub.gemspec CHANGED
@@ -5,13 +5,15 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gepub}
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["KOJIMA Satoshi"]
12
- s.date = %q{2011-01-12}
12
+ s.date = %q{2011-04-15}
13
+ s.default_executable = %q{gepuber}
13
14
  s.description = %q{an easy-to-use (and easy-to-implement) EPUB generator.}
14
15
  s.email = %q{skoji@skoji.jp}
16
+ s.executables = ["gepuber"]
15
17
  s.extra_rdoc_files = [
16
18
  "README.rdoc"
17
19
  ]
@@ -21,18 +23,20 @@ Gem::Specification.new do |s|
21
23
  "README.rdoc",
22
24
  "Rakefile",
23
25
  "VERSION",
26
+ "bin/gepuber",
24
27
  "examples/example.rb",
25
28
  "gepub.gemspec",
26
29
  "lib/gepub.rb",
27
30
  "lib/gepub/book.rb",
28
31
  "lib/gepub/generator.rb",
32
+ "lib/gepub/gepuber.rb",
29
33
  "lib/gepub/item.rb",
30
34
  "spec/gepub_spec.rb",
31
35
  "spec/spec_helper.rb"
32
36
  ]
33
37
  s.homepage = %q{http://github.com/skoji/gepub}
34
38
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.7}
39
+ s.rubygems_version = %q{1.5.2}
36
40
  s.summary = %q{a good-enough EPUB generator.}
37
41
  s.test_files = [
38
42
  "examples/example.rb",
@@ -41,7 +45,6 @@ Gem::Specification.new do |s|
41
45
  ]
42
46
 
43
47
  if s.respond_to? :specification_version then
44
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
45
48
  s.specification_version = 3
46
49
 
47
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
data/lib/gepub/book.rb CHANGED
@@ -7,8 +7,19 @@ require 'fileutils'
7
7
 
8
8
  module GEPUB
9
9
  class Book
10
- attr_accessor :spine
10
+ attr_accessor :spine, :locale
11
11
 
12
+ def self.def_meta(name, key = nil)
13
+ key ||= name
14
+ define_method name.to_sym do
15
+ instance_variable_get('@metadata')[key.to_sym]
16
+ end
17
+ define_method ( name.to_s + "=" ).to_sym do
18
+ |v|
19
+ instance_variable_get('@metadata')[key.to_sym] = v
20
+ end
21
+ end
22
+
12
23
  def initialize(title, contents_prefix="")
13
24
  @metadata = {}
14
25
  @metadata[:identifier] = []
@@ -23,45 +34,11 @@ module GEPUB
23
34
  @locale = 'en'
24
35
  end
25
36
 
26
- def title
27
- @metadata[:title]
28
- end
29
-
30
- def title=(title)
31
- @metadata[:title] = title
32
- end
33
-
34
- def author
35
- @metadata[:creator]
36
- end
37
-
38
- def author=(author)
39
- @metadata[:creator] = author
40
- end
41
-
42
- def contributor
43
- @metadata[:contributor]
44
- end
45
-
46
- def contributor=(contributor)
47
- @metadata[:contributor] = contributor
48
- end
49
-
50
- def publisher
51
- @metadata[:publisher]
52
- end
53
-
54
- def publisher=(publisher)
55
- @metadata[:publisher] = publisher
56
- end
57
-
58
- def date
59
- @metadata[:date]
60
- end
61
-
62
- def date=(date)
63
- @metadata[:date] = date
64
- end
37
+ def_meta :title
38
+ def_meta :author, :creator
39
+ def_meta :contributor
40
+ def_meta :publisher
41
+ def_meta :date
65
42
 
66
43
  def identifier
67
44
  @main_identifier
@@ -72,14 +49,6 @@ module GEPUB
72
49
  @main_identifier = id
73
50
  end
74
51
 
75
- def locale
76
- @locale
77
- end
78
-
79
- def locale=(locale)
80
- @locale = locale
81
- end
82
-
83
52
  def setIdentifier(scheme, identfier)
84
53
  @metadata[:identifier] << { :scheme => scheme, :identifier => identifier }
85
54
  end
@@ -0,0 +1,63 @@
1
+ require 'rubygems'
2
+
3
+ module GEPUB
4
+ class Gepuber
5
+
6
+ def self.book_setter(*namelist)
7
+ namelist.each {
8
+ |name|
9
+ define_method (name.to_sym) {
10
+ |arg|
11
+ @book.send(name.to_s + "=" , arg)
12
+ }
13
+ }
14
+ end
15
+
16
+ def self.attr_setter(*namelist)
17
+ namelist.each {
18
+ |name|
19
+ define_method (name.to_sym) {
20
+ |arg|
21
+ instance_variable_set("@" + name.to_s, arg)
22
+ }
23
+ }
24
+ end
25
+
26
+ attr_setter :texts, :resources, :epubname, :coverimg, :book, :toc
27
+ book_setter :title, :author, :publisher, :date, :identifier, :locale
28
+
29
+ def initialize(str)
30
+ @book = GEPUB::Book.new('', 'OEBPS')
31
+ @book.locale = 'ja'
32
+ instance_eval(str)
33
+ @texts ||= Dir.glob('[0-9]*.html')
34
+ @resources ||= Dir.glob('*.css') + Dir.glob(File.join('img', '*'))
35
+ @coverimg ||= 'cover.jpg'
36
+ @toc ||= {}
37
+ @epubname ||= 'gepuber_generated'
38
+ end
39
+
40
+ def create(destbasedir = ".")
41
+
42
+ @texts.each {
43
+ |f|
44
+ File.open(f,'rb') {
45
+ |fio|
46
+ item = @book.add_item(f, fio)
47
+ @book.spine << item
48
+ @book.add_nav(item, @toc[f]) if !@toc[f].nil?
49
+ }
50
+ }
51
+
52
+ @resources.each {
53
+ |f|
54
+ File.open(f,'rb') {
55
+ |fio|
56
+ item = @book.add_item(f, fio)
57
+ @book.specify_cover_image(item) if File.basename(f) == @coverimg
58
+ }
59
+ }
60
+ @book.generate_epub(File.join(destbasedir, @epubname + '.epub'))
61
+ end
62
+ end
63
+ end
data/lib/gepub.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'gepub/item'
2
2
  require 'gepub/book'
3
+ require 'gepub/gepuber'
3
4
  require 'gepub/generator'
4
5
 
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gepub
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 2
8
- - 2
9
- version: 0.2.2
4
+ prerelease:
5
+ version: 0.3.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - KOJIMA Satoshi
@@ -14,8 +10,8 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-01-12 00:00:00 +09:00
18
- default_executable:
13
+ date: 2011-04-15 00:00:00 +09:00
14
+ default_executable: gepuber
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
21
17
  name: libxml-ruby
@@ -24,10 +20,6 @@ dependencies:
24
20
  requirements:
25
21
  - - ">="
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 1
30
- - 4
31
23
  version: 1.1.4
32
24
  type: :runtime
33
25
  prerelease: false
@@ -39,10 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ">="
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- - 9
45
- - 4
46
34
  version: 0.9.4
47
35
  type: :runtime
48
36
  prerelease: false
@@ -54,10 +42,6 @@ dependencies:
54
42
  requirements:
55
43
  - - ">="
56
44
  - !ruby/object:Gem::Version
57
- segments:
58
- - 1
59
- - 0
60
- - 7
61
45
  version: 1.0.7
62
46
  type: :development
63
47
  prerelease: false
@@ -69,8 +53,6 @@ dependencies:
69
53
  requirements:
70
54
  - - ">="
71
55
  - !ruby/object:Gem::Version
72
- segments:
73
- - 2
74
56
  version: "2"
75
57
  type: :development
76
58
  prerelease: false
@@ -82,10 +64,6 @@ dependencies:
82
64
  requirements:
83
65
  - - ">="
84
66
  - !ruby/object:Gem::Version
85
- segments:
86
- - 0
87
- - 1
88
- - 0
89
67
  version: 0.1.0
90
68
  type: :development
91
69
  prerelease: false
@@ -97,18 +75,14 @@ dependencies:
97
75
  requirements:
98
76
  - - ">="
99
77
  - !ruby/object:Gem::Version
100
- segments:
101
- - 1
102
- - 5
103
- - 1
104
78
  version: 1.5.1
105
79
  type: :development
106
80
  prerelease: false
107
81
  version_requirements: *id006
108
82
  description: an easy-to-use (and easy-to-implement) EPUB generator.
109
83
  email: skoji@skoji.jp
110
- executables: []
111
-
84
+ executables:
85
+ - gepuber
112
86
  extensions: []
113
87
 
114
88
  extra_rdoc_files:
@@ -119,11 +93,13 @@ files:
119
93
  - README.rdoc
120
94
  - Rakefile
121
95
  - VERSION
96
+ - bin/gepuber
122
97
  - examples/example.rb
123
98
  - gepub.gemspec
124
99
  - lib/gepub.rb
125
100
  - lib/gepub/book.rb
126
101
  - lib/gepub/generator.rb
102
+ - lib/gepub/gepuber.rb
127
103
  - lib/gepub/item.rb
128
104
  - spec/gepub_spec.rb
129
105
  - spec/spec_helper.rb
@@ -141,21 +117,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
117
  requirements:
142
118
  - - ">="
143
119
  - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
120
  version: "0"
147
121
  required_rubygems_version: !ruby/object:Gem::Requirement
148
122
  none: false
149
123
  requirements:
150
124
  - - ">="
151
125
  - !ruby/object:Gem::Version
152
- segments:
153
- - 0
154
126
  version: "0"
155
127
  requirements: []
156
128
 
157
129
  rubyforge_project:
158
- rubygems_version: 1.3.7
130
+ rubygems_version: 1.5.2
159
131
  signing_key:
160
132
  specification_version: 3
161
133
  summary: a good-enough EPUB generator.