xpub 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/xpub +11 -1
- data/lib/xpub/dsl/book.rb +36 -159
- data/lib/xpub/dsl/builder.rb +30 -84
- data/lib/xpub/dsl/checker.rb +69 -0
- data/lib/xpub/dsl/page.rb +8 -33
- data/lib/xpub/version.rb +1 -1
- data/xpub.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 340f22ebfe3786f4c573a588ed8b06a387878963
|
4
|
+
data.tar.gz: 1f13447525369f0263468cc8f77f25b81c2d3892
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31a0c70456c76295b43f1d8935fcda4c7d55af8d060a11c1b713558f98f32f9548bdd099d903b84406ed312ee4cb6ecd96c72c9e5cddf9cb93898dec4cec7cb8
|
7
|
+
data.tar.gz: 9014abe8a5e25cf605aa057007b6b61bcfd0af1412309e29a91b8179041c7e7c571c4d88472d9e3088e0da5ce72dede5861dd1aa007955662fac7c40bcb11ea0
|
data/bin/xpub
CHANGED
@@ -10,6 +10,9 @@ require 'pathname'
|
|
10
10
|
require 'shellwords'
|
11
11
|
require 'erb'
|
12
12
|
require 'time'
|
13
|
+
require 'singleton'
|
14
|
+
require 'dsl_accessor'
|
15
|
+
require 'levenshtein'
|
13
16
|
|
14
17
|
require 'xpub/version.rb'
|
15
18
|
|
@@ -21,10 +24,13 @@ opt = OptionParser.new do |opt|
|
|
21
24
|
opt.on_head('[cmd]',
|
22
25
|
' init Xpubファイルの生成',
|
23
26
|
' build ビルド',
|
24
|
-
' clean テンポラリフォルダと出力フォルダをクリア'
|
27
|
+
' clean テンポラリフォルダと出力フォルダをクリア',
|
28
|
+
' check ソースコードを検証'
|
29
|
+
)
|
25
30
|
opt.on('-v', '出力を詳細にする') { |v| option[:v] = v }
|
26
31
|
opt.on('--book=VALUE', 'ビルドするbookを指定する') { |v| option[:book] = v }
|
27
32
|
opt.on('--builder=VALUE', 'ビルドするbuilderを指定する') { |v| option[:builder] = v }
|
33
|
+
opt.on('--checker=VALUE', 'チェックするcheckerを指定する') { |v| option[:checker] = v }
|
28
34
|
opt.on('--pandoc-json-output', 'ビルド時にpandocのjsonを出力') { |v| option['pandoc-json-output'] = v }
|
29
35
|
opt.permute!(ARGV)
|
30
36
|
end
|
@@ -43,6 +49,7 @@ require "xpub/dsl/book"
|
|
43
49
|
require "xpub/dsl/src_file"
|
44
50
|
require "xpub/dsl/builder"
|
45
51
|
require "xpub/dsl/page"
|
52
|
+
require "xpub/dsl/checker"
|
46
53
|
|
47
54
|
if File.file?("#{curDir}/Xpub") && ARGV[0] != "init"
|
48
55
|
load "#{curDir}/Xpub"
|
@@ -67,6 +74,9 @@ elsif ARGV[0] == "init"
|
|
67
74
|
end
|
68
75
|
puts "init...".color :green
|
69
76
|
FileUtils.cp_r(Dir.glob(File.dirname(__FILE__) + "/../skel/*"),"./")
|
77
|
+
elsif ARGV[0] == "check"
|
78
|
+
puts "check...".color :green
|
79
|
+
Xpub::BookManager.instance.check option
|
70
80
|
else
|
71
81
|
puts opt.help
|
72
82
|
exit
|
data/lib/xpub/dsl/book.rb
CHANGED
@@ -1,138 +1,34 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
1
|
module Xpub
|
4
2
|
class CallBook
|
5
3
|
attr_reader :name, :src_files, :resource_files, :creators, :contributors, :identifiers
|
6
4
|
|
5
|
+
dsl_accessor :title, :instance=>true, :default => "UNTITLED"
|
6
|
+
dsl_accessor :subtitle, :instance=>true
|
7
|
+
dsl_accessor :short, :instance=>true
|
8
|
+
dsl_accessor :collection, :instance=>true
|
9
|
+
dsl_accessor :edition, :instance=>true
|
10
|
+
dsl_accessor :extended, :instance=>true
|
11
|
+
dsl_accessor :publisher, :instance=>true
|
12
|
+
dsl_accessor :rights, :instance=>true
|
13
|
+
dsl_accessor :publication, :instance=>true
|
14
|
+
dsl_accessor :modification, :instance=>true
|
15
|
+
dsl_accessor :lang, :instance=>true, :default => "ja"
|
16
|
+
dsl_accessor :description, :instance=>true
|
17
|
+
|
7
18
|
def initialize name
|
8
19
|
@name = name
|
9
|
-
@title = "UNTITLED"
|
10
|
-
@subtitle = nil
|
11
|
-
@short = nil
|
12
|
-
@collection = nil
|
13
|
-
@edition = nil
|
14
|
-
@extended = nil
|
15
|
-
@publisher = nil
|
16
|
-
@rights = nil
|
17
|
-
@publication = nil
|
18
|
-
@modification = nil
|
19
|
-
@lang = "ja"
|
20
20
|
@creators = []
|
21
21
|
@contributors = []
|
22
22
|
@identifiers = []
|
23
|
-
@description = nil
|
24
|
-
|
25
23
|
@src_files = []
|
26
24
|
@resource_files = []
|
27
25
|
@builders = []
|
26
|
+
@checkers = []
|
28
27
|
end
|
29
28
|
|
30
|
-
|
31
29
|
def validate
|
32
30
|
end
|
33
31
|
|
34
|
-
def _set_or_get values
|
35
|
-
# 引数が 2 つ以上ならエラー
|
36
|
-
raise ArgumentError, "wrong number of arguments (#{ values.length} for 0..1)" if values.length > 1
|
37
|
-
values.empty?
|
38
|
-
end
|
39
|
-
|
40
|
-
def title *values
|
41
|
-
if _set_or_get values
|
42
|
-
@title
|
43
|
-
else
|
44
|
-
@title = values[0]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def subtitle *values
|
49
|
-
if _set_or_get values
|
50
|
-
@subtitle
|
51
|
-
else
|
52
|
-
@subtitle = values[0]
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def short *values
|
57
|
-
if _set_or_get values
|
58
|
-
@short
|
59
|
-
else
|
60
|
-
@short = values[0]
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def collection *values
|
65
|
-
if _set_or_get values
|
66
|
-
@collection
|
67
|
-
else
|
68
|
-
@collection = values[0]
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def edition *values
|
73
|
-
if _set_or_get values
|
74
|
-
@edition
|
75
|
-
else
|
76
|
-
@edition = values[0]
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def extended *values
|
81
|
-
if _set_or_get values
|
82
|
-
@extended
|
83
|
-
else
|
84
|
-
@extended = values[0]
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def publisher *values
|
89
|
-
if _set_or_get values
|
90
|
-
@publisher
|
91
|
-
else
|
92
|
-
@publisher = values[0]
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def rights *values
|
97
|
-
if _set_or_get values
|
98
|
-
@rights
|
99
|
-
else
|
100
|
-
@rights = values[0]
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def publication *values
|
105
|
-
if _set_or_get values
|
106
|
-
@publication
|
107
|
-
else
|
108
|
-
@publication = values[0]
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def modification *values
|
113
|
-
if _set_or_get values
|
114
|
-
@modification
|
115
|
-
else
|
116
|
-
@modification = values[0]
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def lang *values
|
121
|
-
if _set_or_get values
|
122
|
-
@lang
|
123
|
-
else
|
124
|
-
@lang = values[0]
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def description *values
|
129
|
-
if _set_or_get values
|
130
|
-
@description
|
131
|
-
else
|
132
|
-
@description = values[0]
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
32
|
def build option
|
137
33
|
puts "build #{@name} book.".color :green
|
138
34
|
@builders.each { |b|
|
@@ -142,30 +38,25 @@ module Xpub
|
|
142
38
|
}
|
143
39
|
end
|
144
40
|
|
41
|
+
def check option
|
42
|
+
puts "check #{@name} book.".color :green
|
43
|
+
@checkers.each { |c|
|
44
|
+
if !option[:checker] || option[:checker] == c.name
|
45
|
+
c.check option
|
46
|
+
end
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
145
50
|
class CallAuthor
|
146
51
|
attr_reader :name
|
52
|
+
dsl_accessor :role, :instance=>true
|
147
53
|
|
148
54
|
def initialize name
|
149
55
|
@name = name
|
150
|
-
@role = nil
|
151
56
|
end
|
152
57
|
|
153
58
|
def validate
|
154
59
|
end
|
155
|
-
|
156
|
-
def _set_or_get values
|
157
|
-
# 引数が 2 つ以上ならエラー
|
158
|
-
raise ArgumentError, "wrong number of arguments (#{ values.length} for 0..1)" if values.length > 1
|
159
|
-
values.empty?
|
160
|
-
end
|
161
|
-
|
162
|
-
def role *values
|
163
|
-
if _set_or_get values
|
164
|
-
@role
|
165
|
-
else
|
166
|
-
@role = values[0]
|
167
|
-
end
|
168
|
-
end
|
169
60
|
end
|
170
61
|
|
171
62
|
def creator name, &block
|
@@ -188,37 +79,15 @@ module Xpub
|
|
188
79
|
|
189
80
|
class CallIdentifier
|
190
81
|
attr_reader :identifier
|
82
|
+
dsl_accessor :scheme, :instance=>true
|
83
|
+
dsl_accessor :type_value, :instance=>true
|
191
84
|
|
192
85
|
def initialize identifier
|
193
86
|
@identifier = identifier
|
194
|
-
@scheme = nil
|
195
|
-
@type_value = nil
|
196
87
|
end
|
197
88
|
|
198
89
|
def validate
|
199
90
|
end
|
200
|
-
|
201
|
-
def _set_or_get values
|
202
|
-
# 引数が 2 つ以上ならエラー
|
203
|
-
raise ArgumentError, "wrong number of arguments (#{ values.length} for 0..1)" if values.length > 1
|
204
|
-
values.empty?
|
205
|
-
end
|
206
|
-
|
207
|
-
def scheme *values
|
208
|
-
if _set_or_get values
|
209
|
-
@scheme
|
210
|
-
else
|
211
|
-
@scheme = values[0]
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
def type_value *values
|
216
|
-
if _set_or_get values
|
217
|
-
@type_value
|
218
|
-
else
|
219
|
-
@type_value = values[0]
|
220
|
-
end
|
221
|
-
end
|
222
91
|
end
|
223
92
|
|
224
93
|
def identifier identifier, &block
|
@@ -246,8 +115,8 @@ module Xpub
|
|
246
115
|
@books = []
|
247
116
|
end
|
248
117
|
|
249
|
-
def add
|
250
|
-
@books <<
|
118
|
+
def add b
|
119
|
+
@books << b
|
251
120
|
end
|
252
121
|
|
253
122
|
def build option
|
@@ -257,5 +126,13 @@ module Xpub
|
|
257
126
|
end
|
258
127
|
}
|
259
128
|
end
|
129
|
+
|
130
|
+
def check option
|
131
|
+
@books.each { |book|
|
132
|
+
if !option[:book] || option[:book] == book.name
|
133
|
+
book.check option
|
134
|
+
end
|
135
|
+
}
|
136
|
+
end
|
260
137
|
end
|
261
138
|
end
|
data/lib/xpub/dsl/builder.rb
CHANGED
@@ -1,20 +1,13 @@
|
|
1
1
|
module Xpub
|
2
2
|
class CallBook
|
3
3
|
class CallBuilder
|
4
|
-
attr_reader :name
|
4
|
+
attr_reader :name
|
5
|
+
dsl_accessor :theme, :instance=>true, :default => "default"
|
6
|
+
dsl_accessor :output, :instance=>true
|
5
7
|
|
6
8
|
def initialize name, book
|
7
9
|
@name = name
|
8
10
|
@book = book
|
9
|
-
@theme = "default"
|
10
|
-
end
|
11
|
-
|
12
|
-
def output output
|
13
|
-
@output = output
|
14
|
-
end
|
15
|
-
|
16
|
-
def theme theme
|
17
|
-
@theme = theme
|
18
11
|
end
|
19
12
|
|
20
13
|
def build
|
@@ -52,7 +45,6 @@ module Xpub
|
|
52
45
|
end
|
53
46
|
|
54
47
|
def cmd_exec cmd, args, option
|
55
|
-
|
56
48
|
cmd_line = cmd + " " + args.map { |arg|
|
57
49
|
Shellwords.shellescape(arg)
|
58
50
|
}.join(" ")
|
@@ -70,49 +62,26 @@ module Xpub
|
|
70
62
|
end
|
71
63
|
|
72
64
|
class CallEpubBuilder < CallBuilder
|
65
|
+
dsl_accessor :template, :instance=>true, :default => "template.html"
|
66
|
+
dsl_accessor :filter, :instance=>true, :default => "pandoc-filter.rb"
|
67
|
+
dsl_accessor :stylesheet, :instance=>true, :default => "epub.css"
|
68
|
+
dsl_accessor :metadata, :instance=>true, :default => "metadata.dat"
|
69
|
+
dsl_accessor :page_progression_direction, :instance=>true, :default => "rtl"
|
70
|
+
dsl_accessor :cover_image, :instance=>true
|
71
|
+
dsl_accessor :pandoc_cmd, :instance=>true, :default => "pandoc"
|
72
|
+
|
73
73
|
def initialize name, book
|
74
74
|
@vars = []
|
75
75
|
@meta = []
|
76
|
-
@template = "template.html"
|
77
|
-
@filter = "pandoc-filter.rb"
|
78
|
-
@stylesheet = "epub.css"
|
79
|
-
@metadata = "metadata.dat"
|
80
|
-
@page_progression_direction = "rtl"
|
81
|
-
@cover_image = nil
|
82
|
-
|
83
76
|
if book.title != ""
|
84
77
|
@vars << ["title", book.title]
|
85
78
|
end
|
86
79
|
super name, book
|
87
80
|
end
|
88
81
|
|
89
|
-
def page_progression_direction param
|
90
|
-
@page_progression_direction = param
|
91
|
-
end
|
92
|
-
|
93
|
-
def template param
|
94
|
-
@template = param
|
95
|
-
end
|
96
|
-
|
97
|
-
def filter param
|
98
|
-
@filter = param
|
99
|
-
end
|
100
|
-
|
101
|
-
def stylesheet param
|
102
|
-
@stylesheet = param
|
103
|
-
end
|
104
|
-
|
105
|
-
def metadata param
|
106
|
-
@metadata = param
|
107
|
-
end
|
108
|
-
|
109
|
-
def cover_image param
|
110
|
-
@cover_image = param
|
111
|
-
end
|
112
|
-
|
113
82
|
def meta_option
|
114
83
|
result = []
|
115
|
-
@meta.concat([["page-progression-direction",
|
84
|
+
@meta.concat([["page-progression-direction", page_progression_direction]]).each { |m|
|
116
85
|
result << "-M"
|
117
86
|
result << "#{m[0]}=#{m[1]}"
|
118
87
|
}
|
@@ -129,15 +98,15 @@ module Xpub
|
|
129
98
|
end
|
130
99
|
|
131
100
|
def template_option
|
132
|
-
"--template=#{Dir::getwd}/theme/#{
|
101
|
+
"--template=#{Dir::getwd}/theme/#{theme}/#{@name}/#{template}"
|
133
102
|
end
|
134
103
|
|
135
104
|
def filter_option
|
136
|
-
"--filter=#{Dir::getwd}/theme/#{
|
105
|
+
"--filter=#{Dir::getwd}/theme/#{theme}/#{@name}/#{filter}"
|
137
106
|
end
|
138
107
|
|
139
108
|
def stylesheet_option
|
140
|
-
"--epub-stylesheet=#{Dir::getwd}/theme/#{
|
109
|
+
"--epub-stylesheet=#{Dir::getwd}/theme/#{theme}/#{@name}/#{stylesheet}"
|
141
110
|
end
|
142
111
|
|
143
112
|
def metadata_option
|
@@ -145,11 +114,11 @@ module Xpub
|
|
145
114
|
end
|
146
115
|
|
147
116
|
def metadata_path
|
148
|
-
tmp_path("#{@book.name}.#{
|
117
|
+
tmp_path("#{@book.name}.#{metadata}")
|
149
118
|
end
|
150
119
|
|
151
120
|
def metadata_template_path
|
152
|
-
"#{Dir::getwd}/theme/#{
|
121
|
+
"#{Dir::getwd}/theme/#{theme}/#{@name}/#{metadata}.erb"
|
153
122
|
end
|
154
123
|
|
155
124
|
def epub_path
|
@@ -164,10 +133,6 @@ module Xpub
|
|
164
133
|
copy_to_tmp files
|
165
134
|
end
|
166
135
|
|
167
|
-
def pandoc_cmd
|
168
|
-
"pandoc"
|
169
|
-
end
|
170
|
-
|
171
136
|
def pandoc_option option
|
172
137
|
option = [
|
173
138
|
"--epub-chapter-level=1",
|
@@ -180,8 +145,8 @@ module Xpub
|
|
180
145
|
stylesheet_option,
|
181
146
|
metadata_option
|
182
147
|
]
|
183
|
-
if
|
184
|
-
option << "--epub-cover-image=" + src_path(
|
148
|
+
if cover_image
|
149
|
+
option << "--epub-cover-image=" + src_path(cover_image)
|
185
150
|
end
|
186
151
|
option
|
187
152
|
end
|
@@ -208,12 +173,15 @@ module Xpub
|
|
208
173
|
end
|
209
174
|
|
210
175
|
class CallLatexBuilder < CallBuilder
|
211
|
-
|
176
|
+
dsl_accessor :template, :instance=>true, :default => "template.tex"
|
177
|
+
dsl_accessor :filter, :instance=>true, :default => "pandoc-filter.rb"
|
178
|
+
dsl_accessor :extractbb_cmd, :instance=>true, :default => "extractbb"
|
179
|
+
dsl_accessor :pandoc_cmd, :instance=>true, :default => "pandoc"
|
180
|
+
dsl_accessor :latex_cmd, :instance=>true, :default => "uplatex"
|
181
|
+
dsl_accessor :dvipdfm_cmd, :instance=>true, :default => "dvipdfmx"
|
212
182
|
|
213
183
|
def initialize name, book
|
214
184
|
@vars = []
|
215
|
-
@template = "template.tex"
|
216
|
-
@filter = "pandoc-filter.rb"
|
217
185
|
@hyoushi = []
|
218
186
|
@urahyoushi = []
|
219
187
|
super name, book
|
@@ -243,13 +211,6 @@ module Xpub
|
|
243
211
|
@vars << [:postchaptername, param]
|
244
212
|
end
|
245
213
|
|
246
|
-
def template param
|
247
|
-
@template = param
|
248
|
-
end
|
249
|
-
|
250
|
-
def filter param
|
251
|
-
@filter = param
|
252
|
-
end
|
253
214
|
|
254
215
|
def vars_option
|
255
216
|
result = []
|
@@ -261,11 +222,11 @@ module Xpub
|
|
261
222
|
end
|
262
223
|
|
263
224
|
def template_option
|
264
|
-
"--template=#{Dir::getwd}/theme/#{
|
225
|
+
"--template=#{Dir::getwd}/theme/#{theme}/#{@name}/#{template}"
|
265
226
|
end
|
266
227
|
|
267
228
|
def filter_option
|
268
|
-
"--filter=#{Dir::getwd}/theme/#{
|
229
|
+
"--filter=#{Dir::getwd}/theme/#{theme}/#{@name}/#{filter}"
|
269
230
|
end
|
270
231
|
|
271
232
|
def tex_path
|
@@ -281,17 +242,13 @@ module Xpub
|
|
281
242
|
end
|
282
243
|
|
283
244
|
def pdf_path
|
284
|
-
if
|
285
|
-
output_path(
|
245
|
+
if output
|
246
|
+
output_path(output) + '.pdf'
|
286
247
|
else
|
287
248
|
output_path(@book.name) + '.pdf'
|
288
249
|
end
|
289
250
|
end
|
290
251
|
|
291
|
-
def extractbb_cmd
|
292
|
-
"extractbb"
|
293
|
-
end
|
294
|
-
|
295
252
|
def _build_resource files, option
|
296
253
|
copy_to_tmp files
|
297
254
|
files.each { |file|
|
@@ -306,10 +263,6 @@ module Xpub
|
|
306
263
|
_build_resource @book.resource_files, option
|
307
264
|
end
|
308
265
|
|
309
|
-
def pandoc_cmd
|
310
|
-
"pandoc"
|
311
|
-
end
|
312
|
-
|
313
266
|
def pandoc_option option
|
314
267
|
[
|
315
268
|
"--chapters",
|
@@ -321,14 +274,6 @@ module Xpub
|
|
321
274
|
]
|
322
275
|
end
|
323
276
|
|
324
|
-
def latex_cmd
|
325
|
-
"uplatex"
|
326
|
-
end
|
327
|
-
|
328
|
-
def dvipdfm_cmd
|
329
|
-
"dvipdfmx"
|
330
|
-
end
|
331
|
-
|
332
277
|
def build option
|
333
278
|
FileUtils.mkdir_p(tmp_path "") unless FileTest.exist?(tmp_path "")
|
334
279
|
if option['pandoc-json-output']
|
@@ -352,6 +297,7 @@ module Xpub
|
|
352
297
|
end
|
353
298
|
end
|
354
299
|
end
|
300
|
+
|
355
301
|
def epub_builder name, &block
|
356
302
|
call = CallEpubBuilder.new name, self
|
357
303
|
if block
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Xpub
|
2
|
+
class CallBook
|
3
|
+
class CallChecker
|
4
|
+
def initialize name, book
|
5
|
+
@name = name
|
6
|
+
@book = book
|
7
|
+
end
|
8
|
+
|
9
|
+
def validate
|
10
|
+
end
|
11
|
+
|
12
|
+
def _check option, pattern
|
13
|
+
words = {}
|
14
|
+
@book.src_files.each do |file|
|
15
|
+
f = open file.full_path
|
16
|
+
f.each_with_index do |line, index|
|
17
|
+
line.match(pattern) do |md|
|
18
|
+
if words[md[1]]
|
19
|
+
words[md[1]] << { :file => file.file, :line => (index + 1) }
|
20
|
+
else
|
21
|
+
words[md[1]] = [{ :file => file.file, :line => (index + 1) }]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
f.close
|
26
|
+
end
|
27
|
+
|
28
|
+
words.sort.each do |word, infos|
|
29
|
+
if word
|
30
|
+
puts word.color :red
|
31
|
+
infos.each { |info|
|
32
|
+
puts " #{info[:file]}(#{info[:line]})"
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class CallNumberChecker < CallChecker
|
40
|
+
def check option
|
41
|
+
_check option, /([0-9一二三四五六七八九十百千万億兆京〇零]+)/
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class CallKanaChecker < CallChecker
|
46
|
+
def check option
|
47
|
+
_check option, /([\p{Katakana}ー-]+)/
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def number_checker name, &block
|
52
|
+
call = CallNumberChecker.new name, self
|
53
|
+
if block
|
54
|
+
call.instance_eval &block
|
55
|
+
end
|
56
|
+
call.validate
|
57
|
+
@checkers << call
|
58
|
+
end
|
59
|
+
|
60
|
+
def kana_checker name, &block
|
61
|
+
call = CallKanaChecker.new name, self
|
62
|
+
if block
|
63
|
+
call.instance_eval &block
|
64
|
+
end
|
65
|
+
call.validate
|
66
|
+
@checkers << call
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/xpub/dsl/page.rb
CHANGED
@@ -24,23 +24,9 @@ module Xpub
|
|
24
24
|
end
|
25
25
|
|
26
26
|
class CallImgPageLatexOp < CallLatexOp
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
super name, book, builder
|
31
|
-
end
|
32
|
-
|
33
|
-
def topoffset param
|
34
|
-
@topoffset = param
|
35
|
-
end
|
36
|
-
|
37
|
-
def leftoffset param
|
38
|
-
@leftoffset = param
|
39
|
-
end
|
40
|
-
|
41
|
-
def file param
|
42
|
-
@file = param
|
43
|
-
end
|
27
|
+
dsl_accessor :topoffset, :instance=>true, :default => "0in"
|
28
|
+
dsl_accessor :leftoffset, :instance=>true, :default => "0in"
|
29
|
+
dsl_accessor :file, :instance=>true
|
44
30
|
|
45
31
|
def latex book, builder
|
46
32
|
<<"EOS"
|
@@ -49,34 +35,23 @@ module Xpub
|
|
49
35
|
\\vspace*{-1truein}
|
50
36
|
\\vspace*{-\\hoffset}
|
51
37
|
\\vspace*{-\\oddsidemargin}
|
52
|
-
\\vspace*{#{
|
53
|
-
\\noindent\\hspace*{-1in}\\hspace*{-\\voffset}\\hspace*{-\\topmargin}\\hspace*{-\\headheight}\\hspace*{-\\headsep}\\hspace*{#{
|
54
|
-
\\includegraphics[width=\\paperheight,height=\\paperwidth]{#{
|
38
|
+
\\vspace*{#{leftoffset}}
|
39
|
+
\\noindent\\hspace*{-1in}\\hspace*{-\\voffset}\\hspace*{-\\topmargin}\\hspace*{-\\headheight}\\hspace*{-\\headsep}\\hspace*{#{topoffset}}
|
40
|
+
\\includegraphics[width=\\paperheight,height=\\paperwidth]{#{file}}
|
55
41
|
\\clearpage\n
|
56
42
|
EOS
|
57
43
|
end
|
58
44
|
end
|
59
45
|
|
60
46
|
class CallEmptyPageLatexOp < CallLatexOp
|
61
|
-
|
62
|
-
@no_page_number = false
|
63
|
-
super name, book, builder
|
64
|
-
end
|
65
|
-
|
66
|
-
def no_page_number
|
67
|
-
@no_page_number = true
|
68
|
-
end
|
47
|
+
dsl_accessor :no_page_number, :instance=>true, :default => false
|
69
48
|
|
70
49
|
def latex book, builder
|
71
|
-
(
|
50
|
+
(no_page_number ? "\\thispagestyle{empty}" : "") + " \\clearpage\n"
|
72
51
|
end
|
73
52
|
end
|
74
53
|
|
75
54
|
class CallInnerTitlePageLatexOp < CallLatexOp
|
76
|
-
def initialize name, book, builder
|
77
|
-
super name, book, builder
|
78
|
-
end
|
79
|
-
|
80
55
|
def latex book, builder
|
81
56
|
<<"EOS"
|
82
57
|
\\makeatletter
|
data/lib/xpub/version.rb
CHANGED
data/xpub.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xpub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshihisa AMAKATA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dsl_accessor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.4.4
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.4.4
|
55
69
|
description: Xpub is EPUB and PDF publisher.
|
56
70
|
email:
|
57
71
|
- amakata@gmail.com
|
@@ -69,6 +83,7 @@ files:
|
|
69
83
|
- lib/xpub.rb
|
70
84
|
- lib/xpub/dsl/book.rb
|
71
85
|
- lib/xpub/dsl/builder.rb
|
86
|
+
- lib/xpub/dsl/checker.rb
|
72
87
|
- lib/xpub/dsl/page.rb
|
73
88
|
- lib/xpub/dsl/src_file.rb
|
74
89
|
- lib/xpub/version.rb
|