review-retrovert 0.9.8 → 0.9.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6300e07afd5a8a952ed11706cb35595a83fa7cb90b381af357fb3387fb22624
4
- data.tar.gz: 649de1a4923bf1f045684af4d14afcf65724dd021f274bea881adf83b5aa38c1
3
+ metadata.gz: 53d9d91f7b09b23b82d592e511474884b0fa179c39c0ee008a7aad2c69435ddb
4
+ data.tar.gz: 2f72ede1612ddcc17733fbffa6cab7e9acd1479de4d74f04f6e91af3b0de67bd
5
5
  SHA512:
6
- metadata.gz: 64661293c30051b5a66ab5cb2c9c4c3a2787508e8659ae26fda67f428594e06870739a9ec7e84a416920e50729f4cf28e5d4da16af496cffd22868e2f0b7b447
7
- data.tar.gz: b3dc096f12c61c9ed66456e5a24da4822f3279af9ea4ff83057d8b42e70de8b31ef8cdcd5778c289191b0ceea0e6580fa6e2ebaae644de52061e78128ea91d39
6
+ metadata.gz: 4e37f04cfa04cdaf146ec9b4db1ac784c2f94f372d43ea43adb2ce451ea01191cb90ad3c2307d6acd405b75178bd5d996e29d292cef6f34235a6e682c7b04fad
7
+ data.tar.gz: 86f95748aaf68ff476af88c72dd2ab7ac095c92a0f96c2c66ae280b56b5438b20840c01e45d89a1d14bdb8e4ccc43ea21d3dad208c14dc876b5474c825deff05
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- review-retrovert (0.9.8)
4
+ review-retrovert (0.9.9)
5
5
  review (>= 3.0.0)
6
6
  thor
7
7
 
@@ -127,15 +127,17 @@ module ReVIEW
127
127
 
128
128
  # words
129
129
  words_files = @config['words_file']
130
- if words_files.is_a?(Array)
131
- new_words_files = []
132
- words_files.each do |words_file|
133
- new_words_files.push copy_wards(outdir, words_file)
130
+ if words_files
131
+ if words_files.is_a?(Array)
132
+ new_words_files = []
133
+ words_files.each do |words_file|
134
+ new_words_files.push copy_wards(outdir, words_file)
135
+ end
136
+ @configs.rewrite_yml('words_file', "[#{new_words_files.join(',')}]")
137
+ else
138
+ new_words_file = copy_wards(outdir, words_files)
139
+ @configs.rewrite_yml('words_file', new_words_file)
134
140
  end
135
- @configs.rewrite_yml('words_file', "[#{new_words_files.join(',')}]")
136
- else
137
- new_words_file = copy_wards(outdir, words_files)
138
- @configs.rewrite_yml('words_file', new_words_file)
139
141
  end
140
142
 
141
143
  # makeindex_dic
@@ -173,6 +175,12 @@ module ReVIEW
173
175
  replace_compatible_block_command_outline(content, cmd, cmd, max_option_num)
174
176
  end
175
177
 
178
+ def exclude_exta_options(content, commands, max_option_num)
179
+ commands.each do |cmd|
180
+ exclude_exta_option(content, cmd, max_option_num)
181
+ end
182
+ end
183
+
176
184
  def starter_caption_to_text(content, command, n)
177
185
  content.gsub!(/^\/\/#{command}(?<option>(\[[^\r\n]*?\]){0,#{n-1}})\[(?<caption>#{@r_option_inner})\](?<post>.*)$/, "\\k<caption>\n//#{command}\\k<option>\\k<post>")
178
186
  end
@@ -368,7 +376,13 @@ module ReVIEW
368
376
  end
369
377
 
370
378
  def remove_option_param(content, commands, n, param)
371
- content.gsub!(/(?<prev>^\/\/(#{commands.join('|')})(\[.*?\]){#{n-1}}\[.*?)((,|)\s*#{param}=[^,\]]*)(?<post>.*?\])/, '\k<prev>\k<post>')
379
+ content.gsub!(/(^\/\/(#{commands.join('|')})(\[.*?\]){#{n-1}}\[.*?)((,|)\s*#{param}=[^,\]]*)(.*?\])/) {
380
+ prev = $1
381
+ cmd = $2
382
+ opt = $4
383
+ post = $6
384
+ "#{prev}#{post}"
385
+ }
372
386
  end
373
387
 
374
388
  def remove_starter_options(content)
@@ -385,7 +399,7 @@ module ReVIEW
385
399
  # image pos
386
400
  remove_option_param(content, ["image"], 3, "pos")
387
401
  # list lineno
388
- remove_option_param(content, ["list"], 3, "lineno")
402
+ remove_option_param(content, ["list", "listnum"], 3, "lineno")
389
403
  end
390
404
 
391
405
  # talklist to //#{cmd}[]{ //emlist[]{}... }
@@ -429,7 +443,36 @@ module ReVIEW
429
443
  replace_block_command_nested_boxed_article(content, 'emlist')
430
444
  end
431
445
 
432
- def convert_table_option(content)
446
+ def replace_file_option(content, matched, fence_open, option)
447
+ file_param_m = option.match(/\s*file\s*=\s*([^,\]]*)/)
448
+ if file_param_m
449
+ fence_close = ReViewDef::fence_close(fence_open)
450
+ filepath = file_param_m[1]
451
+ if fence_close
452
+ content.gsub!(/#{Regexp.escape(matched)}(.*?)^\/\/#{fence_close}/m) {
453
+ "#{matched}\n\#@mapfile(#{filepath})\n\#@end\n//#{fence_close}"
454
+ }
455
+ end
456
+ end
457
+ end
458
+
459
+ def convert_starter_option(content)
460
+ # file
461
+ r = /^(?<matched>\/\/(list|listnum|table)\[#{@r_option_inner}\]\[#{@r_option_inner}\]\[(?<options>#{@r_option_inner})\](?<open>.))$/
462
+ content.dup.scan(r) { |m|
463
+ matched = m[0]
464
+ options = m[1]
465
+ fence_open = m[2]
466
+ options.split(',').each { |option|
467
+ replace_file_option(content, matched, fence_open, option)
468
+ }
469
+ }
470
+ remove_option_param(content, ["list", "listnum", "table"], 3, "file")
471
+ # csv
472
+ convert_csv_option(content)
473
+ end
474
+
475
+ def convert_csv_option(content)
433
476
  r_table = /^(?<matched>\/\/table\[#{@r_option_inner}\]\[#{@r_option_inner}\]\[(?<options>#{@r_option_inner})\](?<open>.))$/
434
477
  content.dup.scan(r_table) { |m|
435
478
  matched = m[0]
@@ -457,8 +500,16 @@ module ReVIEW
457
500
  end
458
501
  content.gsub!(outer, "#{matched}#{new_header}#{sep}#{new_body}//#{close}")
459
502
  else
503
+ im = inner.match(/^\#@mapfile\((.*?)\)\R^\#@end/m)
504
+ if im
505
+ inner_file = im[1]
506
+ csv_text = "\n"
507
+ csv_text += File.open(File.join(@basedir, inner_file)).read()
508
+ else
509
+ csv_text = inner
510
+ end
460
511
  new_body = ""
461
- CSV.parse(inner) do |c|
512
+ CSV.parse(csv_text) do |c|
462
513
  new_body += Utils::GenerateTsv(c)
463
514
  end
464
515
  content.gsub!(outer, "#{matched}#{new_body}//#{close}")
@@ -479,13 +530,17 @@ module ReVIEW
479
530
  end
480
531
 
481
532
  def copy_embedded_contents(outdir, content)
482
- content.scan(/\#@mapfile\((.*?)\)/).each do |filepath|
533
+ content.scan(/\#@mapfile\((.*?)\)/).each do |filepath_|
534
+ filepath = filepath_[0]
535
+ if filepath.blank?
536
+ next
537
+ end
483
538
  srcpath = File.join(@basedir, filepath)
484
539
  if File.exist?(srcpath)
485
540
  outpath = File.join(File.absolute_path(outdir), filepath)
486
541
  FileUtils.mkdir_p(File.dirname(outpath))
487
542
  FileUtils.cp(srcpath, outpath)
488
- @embeded_contents.push(filepath[0])
543
+ @embeded_contents.push(filepath)
489
544
  update_content(outpath, outpath)
490
545
  end
491
546
  end
@@ -535,13 +590,19 @@ module ReVIEW
535
590
  delete_block_command_outer(content, 'centering')
536
591
 
537
592
  # convert starter option
538
- convert_table_option(content)
593
+ convert_starter_option(content)
539
594
 
540
595
  # delete starter option
541
596
  # exclude_exta_option(content, 'cmd', 0)
542
597
  starter_caption_to_text(content, 'cmd', 1)
543
- exclude_exta_option(content, 'imgtable', 2)
544
- exclude_exta_option(content, 'table', 2)
598
+ exclude_exta_options(content, [
599
+ 'imgtable',
600
+ 'table',
601
+ # list/listnum の第3引数は言語指定だが、Starter の第3引数と全く異なるため 2 引数にしている
602
+ # Starter 側が言語指定対応したら修正
603
+ 'list',
604
+ 'listnum',
605
+ ], 2)
545
606
  # exclude_exta_option(content, 'tsize', 1)
546
607
  replace_tsize(content)
547
608
 
@@ -554,6 +615,8 @@ module ReVIEW
554
615
  content.gsub!(/^\/\/chapterauthor\[(.*?)\]/, "//lead{\n\\1\n//}")
555
616
  # talklist/desclist
556
617
  starter_list_to_nested_contents_list(content)
618
+ # empty caption imaget to indepimage
619
+ content.gsub!(/^\/\/image(\[#{@r_option_inner}\]\[\].*)$/, '//indepimage\1')
557
620
  end
558
621
 
559
622
  def delete_inline_command(content, command)
@@ -718,8 +781,13 @@ module ReVIEW
718
781
 
719
782
  if @ird
720
783
  # br to blankline
721
- content.gsub!(/(.*)@<br>{}$/, "\\1\n\n")
722
- content.gsub!(/(.*)@<br>{}(.*)$/, "\\1\n\n\\2")
784
+ content.gsub!(/(^\/\/footnote\[.*?\]\[.*?)((.*?@<br>({}|\$\$|\|\|)){1,})(.*\])$/) { |m|
785
+ m.gsub(/@<br>({}|\$\$|\|\|)/, '@<fnbr>\1')
786
+ }
787
+
788
+ content.gsub!(/(.*)@<br>({}|\$\$|\|\|)$/, "\\1\n\n")
789
+ content.gsub!(/(.*)@<br>({}|\$\$|\|\|)(.*)$/, "\\1\n\n\\2")
790
+ content.gsub!(/@<fnbr>({}|\$\$|\|\|)/, '@<br>\1')
723
791
  end
724
792
 
725
793
  # nop replace must be last step
@@ -1,5 +1,5 @@
1
1
  module ReVIEW
2
2
  module Retrovert
3
- VERSION = "0.9.8"
3
+ VERSION = "0.9.9"
4
4
  end
5
5
  end
@@ -5,3 +5,12 @@
5
5
  # 上記のようにすることで retrovert 後のプロジェクトでのみ設定を上書きできます
6
6
  retrovert:
7
7
  chapterlink: null
8
+
9
+ # ソースコードハイライトを利用する (rouge,pygmentsには外部gemが必要)
10
+ highlight:
11
+ # html: "rouge"
12
+ # 「×」が Package inputenc Error: Invalid UTF-8 byte sequence. になるので有効にしない
13
+ # latex: "listings"
14
+ # \ などがエスケープされないためエラーになる
15
+ # latex: "rouge"
16
+ # latex: "pygments"
@@ -1,9 +1,31 @@
1
1
  = Retrovert テスト用
2
2
 
3
+ //blankline
4
+
5
+ test@<br>{}
6
+
7
+ == テスト
8
+
9
+ === File
10
+
3
11
  #@mapfile(contents/r0-inner.re)
4
12
  #@end
5
13
 
6
- //blankline
14
+ //list[][][file=contents/test.txt]{
15
+ //}
7
16
 
8
- test@<br>{}
17
+ //table[][][csv=on,file=contents/table.csv]{
18
+ //}
19
+
20
+ === コマンド
21
+
22
+ ===={subsubtest} Secref テスト用
23
+
24
+ secref: @<secref>{subsubtest}
25
+ secref: @<secref>{r0-root|subsubtest}
26
+ secref: @<secref>{01-install|RubyとTeXLiveのインストール}
27
+ #@# secref: @<secref>{01-install|Rubyのインストール}
28
+
29
+ ==== footnote bar
9
30
 
31
+ //footnote[fnbar][test@<br>{}hoge]
@@ -0,0 +1,4 @@
1
+ Name,Val,Val,Val
2
+ AAA,10,10,10
3
+ BBB,100,100,100
4
+ CCC,1000,1000,1000
@@ -0,0 +1 @@
1
+ TestText-250c8d96-1d5d-434c-a43f-7dc3ad5a588b
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: review-retrovert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - srz_zumix
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-18 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -161,6 +161,8 @@ files:
161
161
  - testdata/mybook/contents/99-postface.re
162
162
  - testdata/mybook/contents/r0-inner.re
163
163
  - testdata/mybook/contents/r0-root.re
164
+ - testdata/mybook/contents/table.csv
165
+ - testdata/mybook/contents/test.txt
164
166
  - testdata/mybook/css/normalize.css
165
167
  - testdata/mybook/css/webstyle.css
166
168
  - testdata/mybook/data/terms.txt