review 3.0.0.preview1 → 3.0.0.preview2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS.ja.md +61 -1
- data/NEWS.md +61 -1
- data/bin/review-epub2html +19 -0
- data/doc/config.yml.sample +24 -3
- data/doc/quickstart.md +1 -1
- data/lib/epubmaker/producer.rb +6 -1
- data/lib/review/book/base.rb +2 -2
- data/lib/review/book/index.rb +5 -1
- data/lib/review/book/volume.rb +1 -1
- data/lib/review/builder.rb +1 -1
- data/lib/review/compiler.rb +14 -6
- data/lib/review/configure.rb +1 -1
- data/lib/review/epub2html.rb +133 -0
- data/lib/review/epubmaker.rb +11 -4
- data/lib/review/extentions/string.rb +0 -1
- data/lib/review/htmlbuilder.rb +2 -2
- data/lib/review/i18n.rb +6 -0
- data/lib/review/i18n.yml +15 -3
- data/lib/review/idgxmlbuilder.rb +2 -2
- data/lib/review/init.rb +3 -3
- data/lib/review/latexbuilder.rb +13 -5
- data/lib/review/pdfmaker.rb +31 -25
- data/lib/review/plaintextbuilder.rb +2 -2
- data/lib/review/version.rb +1 -1
- data/review.gemspec +1 -1
- data/samples/LICENSE +20 -0
- data/{test → samples}/sample-book/README.md +0 -0
- data/{test → samples}/sample-book/src/Rakefile +0 -0
- data/{test → samples}/sample-book/src/_cover.html +0 -0
- data/{test → samples}/sample-book/src/catalog.yml +0 -0
- data/{test → samples}/sample-book/src/ch01.re +0 -0
- data/{test → samples}/sample-book/src/ch02.re +0 -0
- data/{test → samples}/sample-book/src/config-epub2.yml +0 -0
- data/{test → samples}/sample-book/src/config.yml +1 -1
- data/{test → samples}/sample-book/src/images/ch01-imgsample.jpg +0 -0
- data/{test → samples}/sample-book/src/images/cover.jpg +0 -0
- data/{test → samples}/sample-book/src/preface.re +0 -0
- data/{test → samples}/sample-book/src/sty/jumoline.sty +0 -0
- data/{test → samples}/sample-book/src/sty/reviewmacro.sty +0 -0
- data/{test → samples}/sample-book/src/style-web.css +0 -0
- data/{test/syntax-book → samples/sample-book/src}/style.css +1 -1
- data/{test → samples}/syntax-book/Gemfile +0 -0
- data/{test → samples}/syntax-book/Rakefile +0 -0
- data/{test → samples}/syntax-book/appA.re +0 -0
- data/{test → samples}/syntax-book/bib.re +0 -0
- data/{test → samples}/syntax-book/catalog.yml +0 -0
- data/{test → samples}/syntax-book/ch01.re +0 -0
- data/{test → samples}/syntax-book/ch02.re +0 -0
- data/{test → samples}/syntax-book/ch03.re +0 -0
- data/{test → samples}/syntax-book/config.yml +1 -1
- data/{test → samples}/syntax-book/images/ball.png +0 -0
- data/{test → samples}/syntax-book/images/cover.jpg +0 -0
- data/{test → samples}/syntax-book/images/fractal.png +0 -0
- data/{test → samples}/syntax-book/images/img3-1.png +0 -0
- data/{test → samples}/syntax-book/images/inlineicon.jpg +0 -0
- data/{test → samples}/syntax-book/images/logic.png +0 -0
- data/{test → samples}/syntax-book/images/logic2.png +0 -0
- data/{test → samples}/syntax-book/images/puzzle.jpg +0 -0
- data/{test → samples}/syntax-book/images/table.jpg +0 -0
- data/{test → samples}/syntax-book/part2.re +0 -0
- data/{test → samples}/syntax-book/pre01.re +0 -0
- data/{test → samples}/syntax-book/review-ext.rb +0 -0
- data/{test → samples}/syntax-book/sty/jumoline.sty +0 -0
- data/{test → samples}/syntax-book/sty/reviewmacro.sty +0 -0
- data/{test/sample-book/src → samples/syntax-book}/style.css +1 -1
- data/{test → samples}/syntax-book/syntax.dic +0 -0
- data/templates/latex/review-jlreq/review-style.sty +6 -2
- data/templates/latex/review-jsbook/review-base.sty +2 -7
- data/templates/latex/review-jsbook/review-style.sty +9 -1
- data/test/assets/test_template.tex +1 -1
- data/test/assets/test_template_backmatter.tex +1 -1
- data/test/test_compiler.rb +1 -3
- data/test/test_helper.rb +1 -1
- data/test/test_latexbuilder.rb +4 -2
- data/test/test_plaintextbuilder.rb +1 -1
- data/test/test_rstbuilder.rb +1 -1
- data/test/test_topbuilder.rb +6 -1
- metadata +46 -82
data/lib/review/epubmaker.rb
CHANGED
@@ -45,10 +45,8 @@ module ReVIEW
|
|
45
45
|
@logger.warn "#{File.basename($PROGRAM_NAME, '.*')}: #{msg}"
|
46
46
|
end
|
47
47
|
|
48
|
-
def log(
|
49
|
-
|
50
|
-
puts s
|
51
|
-
end
|
48
|
+
def log(msg)
|
49
|
+
@logger.debug(msg)
|
52
50
|
end
|
53
51
|
|
54
52
|
def load_yaml(yamlfile)
|
@@ -64,6 +62,15 @@ module ReVIEW
|
|
64
62
|
@producer.load(yamlfile)
|
65
63
|
@config = @producer.config
|
66
64
|
@config.maker = 'epubmaker'
|
65
|
+
update_log_level
|
66
|
+
end
|
67
|
+
|
68
|
+
def update_log_level
|
69
|
+
if @config['debug']
|
70
|
+
@logger.level = Logger::DEBUG
|
71
|
+
else
|
72
|
+
@logger.level = Logger::INFO
|
73
|
+
end
|
67
74
|
end
|
68
75
|
|
69
76
|
def build_path
|
data/lib/review/htmlbuilder.rb
CHANGED
@@ -965,9 +965,9 @@ module ReVIEW
|
|
965
965
|
def inline_hd_chap(chap, id)
|
966
966
|
n = chap.headline_index.number(id)
|
967
967
|
if chap.number and @book.config['secnolevel'] >= n.split('.').size
|
968
|
-
str = I18n.t('
|
968
|
+
str = I18n.t('hd_quote', [n, compile_inline(chap.headline(id).caption)])
|
969
969
|
else
|
970
|
-
str = I18n.t('
|
970
|
+
str = I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption))
|
971
971
|
end
|
972
972
|
if @book.config['chapterlink']
|
973
973
|
anchor = 'h' + n.gsub('.', '-')
|
data/lib/review/i18n.rb
CHANGED
@@ -90,6 +90,12 @@ module ReVIEW
|
|
90
90
|
@store[key].merge!(values)
|
91
91
|
end
|
92
92
|
end
|
93
|
+
|
94
|
+
# check obsolete locale parameter
|
95
|
+
s = t('chapter_quote', ['__!@!NUMBER!@!__', '__!@!TITLE!@!__'])
|
96
|
+
if s !~ /__!@!NUMBER!@!__/ || s !~ /__!@!TITLE!@!__/
|
97
|
+
ReVIEW.logger.warn %Q('chapter_quote' should take 2 '%s' (number and title).)
|
98
|
+
end
|
93
99
|
end
|
94
100
|
|
95
101
|
def update(user_i18n, locale = nil)
|
data/lib/review/i18n.yml
CHANGED
@@ -10,7 +10,10 @@ ja:
|
|
10
10
|
chapter: 第%d章
|
11
11
|
chapter_short: "%d"
|
12
12
|
chapter_postfix: " "
|
13
|
-
chapter_quote: "「%s」"
|
13
|
+
chapter_quote: "%s「%s」"
|
14
|
+
chapter_quote_without_number: "「%s」"
|
15
|
+
hd_quote: "「%s %s」"
|
16
|
+
hd_quote_without_number: "「%s」"
|
14
17
|
appendix: 付録%pA
|
15
18
|
numberless_image: "図:"
|
16
19
|
memo_head: ■メモ
|
@@ -72,7 +75,10 @@ en:
|
|
72
75
|
chapter: Chapter %d
|
73
76
|
chapter_short: "%d"
|
74
77
|
chapter_postfix: ". "
|
75
|
-
chapter_quote: '"%s"'
|
78
|
+
chapter_quote: '%s "%s"'
|
79
|
+
chapter_quote_without_number: '"%s"'
|
80
|
+
hd_quote: '"%s %s"'
|
81
|
+
hd_quote_without_number: '"%s"'
|
76
82
|
appendix: Appendix %s
|
77
83
|
numberless_image: "Figure:"
|
78
84
|
memo_head: Note
|
@@ -126,12 +132,18 @@ zh-TW:
|
|
126
132
|
image: 圖
|
127
133
|
table: 表
|
128
134
|
list: List
|
135
|
+
column: "Column %s"
|
136
|
+
columnname: "Column"
|
137
|
+
column_head: "Column"
|
129
138
|
part: 第%pR部份
|
130
139
|
part_short: "%pR"
|
131
140
|
chapter: 第%d章
|
132
141
|
chapter_short: "%d"
|
133
142
|
chapter_postfix: " "
|
134
|
-
chapter_quote: "「%s」"
|
143
|
+
chapter_quote: "%s「%s」"
|
144
|
+
chapter_quote_without_number: "「%s」"
|
145
|
+
hd_quote: "「%s %s」"
|
146
|
+
hd_quote_without_number: "「%s」"
|
135
147
|
appendix: 附錄%s
|
136
148
|
numberless_image: "圖:"
|
137
149
|
format_number: "%s.%d"
|
data/lib/review/idgxmlbuilder.rb
CHANGED
@@ -1143,10 +1143,10 @@ module ReVIEW
|
|
1143
1143
|
if chap.number
|
1144
1144
|
n = chap.headline_index.number(id)
|
1145
1145
|
if @book.config['secnolevel'] >= n.split('.').size
|
1146
|
-
return I18n.t('
|
1146
|
+
return I18n.t('hd_quote', [n, compile_inline(chap.headline(id).caption)])
|
1147
1147
|
end
|
1148
1148
|
end
|
1149
|
-
I18n.t('
|
1149
|
+
I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption))
|
1150
1150
|
rescue KeyError
|
1151
1151
|
error "unknown headline: #{id}"
|
1152
1152
|
end
|
data/lib/review/init.rb
CHANGED
@@ -123,7 +123,7 @@ EOS
|
|
123
123
|
end
|
124
124
|
|
125
125
|
def generate_cover_image(dir)
|
126
|
-
FileUtils.cp(@review_dir + '/
|
126
|
+
FileUtils.cp(@review_dir + '/samples/sample-book/src/images/cover.jpg',
|
127
127
|
dir + '/images/')
|
128
128
|
end
|
129
129
|
|
@@ -143,7 +143,7 @@ EOS
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def generate_style(dir)
|
146
|
-
FileUtils.cp @review_dir + '/
|
146
|
+
FileUtils.cp @review_dir + '/samples/sample-book/src/style.css', dir
|
147
147
|
end
|
148
148
|
|
149
149
|
def generate_texmacro(dir)
|
@@ -165,7 +165,7 @@ end
|
|
165
165
|
EOS
|
166
166
|
end
|
167
167
|
|
168
|
-
FileUtils.cp(@review_dir + '/
|
168
|
+
FileUtils.cp(@review_dir + '/samples/sample-book/src/Rakefile',
|
169
169
|
dir + '/lib/tasks/review.rake')
|
170
170
|
end
|
171
171
|
|
data/lib/review/latexbuilder.rb
CHANGED
@@ -601,7 +601,11 @@ module ReVIEW
|
|
601
601
|
if caption.present?
|
602
602
|
@table_caption = true
|
603
603
|
@doc_status[:caption] = true
|
604
|
-
|
604
|
+
if @book.config.check_version('2', exception: false)
|
605
|
+
puts "\\begin{table}[h]%%#{id}"
|
606
|
+
else
|
607
|
+
puts "\\begin{table}%%#{id}"
|
608
|
+
end
|
605
609
|
puts macro('reviewtablecaption*', compile_inline(caption))
|
606
610
|
@doc_status[:caption] = nil
|
607
611
|
end
|
@@ -609,7 +613,11 @@ module ReVIEW
|
|
609
613
|
if caption.present?
|
610
614
|
@table_caption = true
|
611
615
|
@doc_status[:caption] = true
|
612
|
-
|
616
|
+
if @book.config.check_version('2', exception: false)
|
617
|
+
puts "\\begin{table}[h]%%#{id}"
|
618
|
+
else
|
619
|
+
puts "\\begin{table}%%#{id}"
|
620
|
+
end
|
613
621
|
puts macro('reviewtablecaption', compile_inline(caption))
|
614
622
|
@doc_status[:caption] = nil
|
615
623
|
end
|
@@ -984,9 +992,9 @@ module ReVIEW
|
|
984
992
|
def inline_hd_chap(chap, id)
|
985
993
|
n = chap.headline_index.number(id)
|
986
994
|
if chap.number and @book.config['secnolevel'] >= n.split('.').size
|
987
|
-
str = I18n.t('
|
995
|
+
str = I18n.t('hd_quote', [chap.headline_index.number(id), compile_inline(chap.headline(id).caption)])
|
988
996
|
else
|
989
|
-
str = I18n.t('
|
997
|
+
str = I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption))
|
990
998
|
end
|
991
999
|
if @book.config['chapterlink']
|
992
1000
|
anchor = n.gsub(/\./, '-')
|
@@ -998,7 +1006,7 @@ module ReVIEW
|
|
998
1006
|
|
999
1007
|
def inline_column_chap(chapter, id)
|
1000
1008
|
macro('reviewcolumnref',
|
1001
|
-
I18n.t('
|
1009
|
+
I18n.t('column', compile_inline(chapter.column(id).caption)),
|
1002
1010
|
column_label(id, chapter))
|
1003
1011
|
rescue KeyError
|
1004
1012
|
error "unknown column: #{id}"
|
data/lib/review/pdfmaker.rb
CHANGED
@@ -11,6 +11,7 @@ require 'fileutils'
|
|
11
11
|
require 'erb'
|
12
12
|
require 'tmpdir'
|
13
13
|
require 'open3'
|
14
|
+
require 'shellwords'
|
14
15
|
|
15
16
|
require 'review/i18n'
|
16
17
|
require 'review/book'
|
@@ -27,13 +28,13 @@ module ReVIEW
|
|
27
28
|
include FileUtils
|
28
29
|
include ReVIEW::LaTeXUtils
|
29
30
|
|
30
|
-
attr_accessor :config, :basedir
|
31
|
+
attr_accessor :config, :basedir
|
31
32
|
|
32
33
|
def initialize
|
33
34
|
@basedir = nil
|
34
|
-
@basehookdir = nil
|
35
35
|
@logger = ReVIEW.logger
|
36
36
|
@input_files = Hash.new { |h, key| h[key] = '' }
|
37
|
+
@mastertex = '__REVIEW_BOOK__'
|
37
38
|
end
|
38
39
|
|
39
40
|
def system_with_info(*args)
|
@@ -133,8 +134,7 @@ module ReVIEW
|
|
133
134
|
# YAML configs will be overridden by command line options.
|
134
135
|
@config.deep_merge!(cmd_config)
|
135
136
|
I18n.setup(@config['language'])
|
136
|
-
@basedir = File.dirname(yamlfile)
|
137
|
-
@basehookdir = File.absolute_path(File.dirname(yamlfile))
|
137
|
+
@basedir = File.absolute_path(File.dirname(yamlfile))
|
138
138
|
|
139
139
|
begin
|
140
140
|
@config.check_version(ReVIEW::VERSION)
|
@@ -178,7 +178,7 @@ module ReVIEW
|
|
178
178
|
def build_pdf
|
179
179
|
template = template_content
|
180
180
|
Dir.chdir(@path) do
|
181
|
-
File.open(
|
181
|
+
File.open("./#{@mastertex}.tex", 'wb') { |f| f.write(template) }
|
182
182
|
|
183
183
|
call_hook('hook_beforetexcompile')
|
184
184
|
|
@@ -187,47 +187,53 @@ module ReVIEW
|
|
187
187
|
warn 'command configuration is prohibited in safe mode. ignored.'
|
188
188
|
texcommand = ReVIEW::Configure.values['texcommand']
|
189
189
|
dvicommand = ReVIEW::Configure.values['dvicommand']
|
190
|
-
dvioptions = ReVIEW::Configure.values['dvioptions']
|
191
|
-
texoptions = ReVIEW::Configure.values['texoptions']
|
190
|
+
dvioptions = ReVIEW::Configure.values['dvioptions'].shellsplit
|
191
|
+
texoptions = ReVIEW::Configure.values['texoptions'].shellsplit
|
192
192
|
makeindex_command = ReVIEW::Configure.values['pdfmaker']['makeindex_command']
|
193
|
-
makeindex_options = ReVIEW::Configure.values['pdfmaker']['makeindex_options']
|
193
|
+
makeindex_options = ReVIEW::Configure.values['pdfmaker']['makeindex_options'].shellsplit
|
194
194
|
makeindex_sty = ReVIEW::Configure.values['pdfmaker']['makeindex_sty']
|
195
195
|
makeindex_dic = ReVIEW::Configure.values['pdfmaker']['makeindex_dic']
|
196
196
|
else
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
197
|
+
unless @config['texcommand'].present?
|
198
|
+
error "texcommand isn't defined."
|
199
|
+
end
|
200
|
+
texcommand = @config['texcommand']
|
201
|
+
dvicommand = @config['dvicommand']
|
202
|
+
@config['dvioptions'] = '' unless @config['dvioptions']
|
203
|
+
dvioptions = @config['dvioptions'].shellsplit
|
204
|
+
@config['texoptions'] = '' unless @config['texoptions']
|
205
|
+
texoptions = @config['texoptions'].shellsplit
|
201
206
|
makeindex_command = @config['pdfmaker']['makeindex_command']
|
202
|
-
makeindex_options = @config['pdfmaker']['makeindex_options']
|
207
|
+
@config['pdfmaker']['makeindex_options'] = '' unless @config['pdfmaker']['makeindex_options']
|
208
|
+
makeindex_options = @config['pdfmaker']['makeindex_options'].shellsplit
|
203
209
|
makeindex_sty = @config['pdfmaker']['makeindex_sty']
|
204
210
|
makeindex_dic = @config['pdfmaker']['makeindex_dic']
|
205
211
|
end
|
206
212
|
|
207
213
|
if makeindex_sty.present?
|
208
214
|
makeindex_sty = File.absolute_path(makeindex_sty, @basedir)
|
209
|
-
makeindex_options +=
|
215
|
+
makeindex_options += ['-s', makeindex_sty] if File.exist?(makeindex_sty)
|
210
216
|
end
|
211
217
|
if makeindex_dic.present?
|
212
218
|
makeindex_dic = File.absolute_path(makeindex_dic, @basedir)
|
213
|
-
makeindex_options +=
|
219
|
+
makeindex_options += ['-d', makeindex_dic] if File.exist?(makeindex_dic)
|
214
220
|
end
|
215
221
|
|
216
222
|
2.times do
|
217
|
-
system_or_raise(
|
223
|
+
system_or_raise(*[texcommand, texoptions, "#{@mastertex}.tex"].flatten.compact)
|
218
224
|
end
|
219
225
|
|
220
226
|
call_hook('hook_beforemakeindex')
|
221
|
-
if @config['pdfmaker']['makeindex'] && File.exist?(
|
222
|
-
system_or_raise(
|
227
|
+
if @config['pdfmaker']['makeindex'] && File.exist?("#{@mastertex}.idx")
|
228
|
+
system_or_raise(*[makeindex_command, makeindex_options, @mastertex].flatten.compact)
|
223
229
|
end
|
224
230
|
call_hook('hook_aftermakeindex')
|
225
231
|
|
226
|
-
system_or_raise(
|
232
|
+
system_or_raise(*[texcommand, texoptions, "#{@mastertex}.tex"].flatten.compact)
|
227
233
|
call_hook('hook_aftertexcompile')
|
228
234
|
|
229
|
-
if File.exist?(
|
230
|
-
system_or_raise(
|
235
|
+
if File.exist?("#{@mastertex}.dvi") && dvicommand.present?
|
236
|
+
system_or_raise(*[dvicommand, dvioptions, "#{@mastertex}.dvi"].flatten.compact)
|
231
237
|
call_hook('hook_afterdvipdf')
|
232
238
|
end
|
233
239
|
end
|
@@ -240,7 +246,7 @@ module ReVIEW
|
|
240
246
|
begin
|
241
247
|
@compile_errors = nil
|
242
248
|
|
243
|
-
book = ReVIEW::Book.load(
|
249
|
+
book = ReVIEW::Book.load(File.dirname(yamlfile))
|
244
250
|
book.config = @config
|
245
251
|
@converter = ReVIEW::Converter.new(book, ReVIEW::LATEXBuilder.new)
|
246
252
|
|
@@ -262,7 +268,7 @@ module ReVIEW
|
|
262
268
|
|
263
269
|
build_pdf
|
264
270
|
|
265
|
-
FileUtils.cp(File.join(@path,
|
271
|
+
FileUtils.cp(File.join(@path, "#{@mastertex}.pdf"), pdf_filepath)
|
266
272
|
ensure
|
267
273
|
remove_entry_secure @path unless @config['debug']
|
268
274
|
end
|
@@ -471,11 +477,11 @@ module ReVIEW
|
|
471
477
|
|
472
478
|
def call_hook(hookname)
|
473
479
|
return if !@config['pdfmaker'].is_a?(Hash) || @config['pdfmaker'][hookname].nil?
|
474
|
-
hook = File.absolute_path(@config['pdfmaker'][hookname], @
|
480
|
+
hook = File.absolute_path(@config['pdfmaker'][hookname], @basedir)
|
475
481
|
if ENV['REVIEW_SAFE_MODE'].to_i & 1 > 0
|
476
482
|
warn 'hook configuration is prohibited in safe mode. ignored.'
|
477
483
|
else
|
478
|
-
system_or_raise(
|
484
|
+
system_or_raise(hook, Dir.pwd, @basedir)
|
479
485
|
end
|
480
486
|
end
|
481
487
|
end
|
@@ -391,10 +391,10 @@ module ReVIEW
|
|
391
391
|
if chap.number
|
392
392
|
n = chap.headline_index.number(id)
|
393
393
|
if @book.config['secnolevel'] >= n.split('.').size
|
394
|
-
return I18n.t('
|
394
|
+
return I18n.t('hd_quote', [n, compile_inline(chap.headline(id).caption)])
|
395
395
|
end
|
396
396
|
end
|
397
|
-
I18n.t('
|
397
|
+
I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption))
|
398
398
|
rescue KeyError
|
399
399
|
error "unknown headline: #{id}"
|
400
400
|
end
|
data/lib/review/version.rb
CHANGED
data/review.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = 'Re:VIEW: a easy-to-use digital publishing system'
|
13
13
|
gem.description = 'Re:VIEW is a digital publishing system for books and ebooks. It supports InDesign, EPUB and LaTeX.'
|
14
14
|
gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to? :required_rubygems_version=
|
15
|
-
gem.date = '2018-
|
15
|
+
gem.date = '2018-09-03'
|
16
16
|
|
17
17
|
gem.files = `git ls-files`.split("\n")
|
18
18
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/samples/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2006-2018 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
20
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|