xpub 0.0.2 → 0.0.3
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.
- 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
|