diff options
-rw-r--r-- | data/doc/sisu/CHANGELOG_v5 | 1 | ||||
-rw-r--r-- | data/doc/sisu/CHANGELOG_v6 | 1 | ||||
-rw-r--r-- | lib/sisu/v5/ao_misc_arrange.rb | 37 | ||||
-rw-r--r-- | lib/sisu/v6/ao_misc_arrange.rb | 37 |
4 files changed, 56 insertions, 20 deletions
diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5 index 010b9189..74dd197e 100644 --- a/data/doc/sisu/CHANGELOG_v5 +++ b/data/doc/sisu/CHANGELOG_v5 @@ -41,6 +41,7 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.4.1.orig.tar.xz * ao, * regex match for tics "```" followed by space tweaked * Symbol to match grouped text open & close (instead of String) + * introduce way of removing unrecognized tic markers * turn id numbers (for tags) into a hash * code blocks, clean trailing newlines * misc, minorish diff --git a/data/doc/sisu/CHANGELOG_v6 b/data/doc/sisu/CHANGELOG_v6 index ed9bac41..ce7b2e89 100644 --- a/data/doc/sisu/CHANGELOG_v6 +++ b/data/doc/sisu/CHANGELOG_v6 @@ -31,6 +31,7 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_6.0.8.orig.tar.xz * ao, * regex match for tics "```" followed by space tweaked * Symbol to match grouped text open & close (instead of String) + * introduce way of removing unrecognized tic markers * turn id numbers (for tags) into a hash * code blocks, clean trailing newlines * misc, minorish diff --git a/lib/sisu/v5/ao_misc_arrange.rb b/lib/sisu/v5/ao_misc_arrange.rb index 03d1e735..419241e1 100644 --- a/lib/sisu/v5/ao_misc_arrange.rb +++ b/lib/sisu/v5/ao_misc_arrange.rb @@ -74,24 +74,28 @@ module SiSU_AO_MiscArrangeText end para end - def code_blocks(para) + def markup_blocks(para) def ticks(para) block_open,block_close,text=nil,nil,nil - if para =~/\A```[ ]+.+?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m - block_open,text,block_close=/\A(```[ ]+.+?)\n(.+?)\n(```(\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1..3] + if para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m + @flag=:close + block_open,text,block_close=/\A(```[ ]+(?:code|poem|alt|group|block|table).*?)\n(.+?)\n(```([ ]+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1..3] ((para=~/^```[ ]+table(?:~h)?\s+/) \ and (para !~/^```[ ]+table(?:~h)?\s+c\d+/)) \ ? para : (para=[]; para << block_open << text << block_close) - elsif para =~/\A```[ ]+.+?\n.*?\Z/m #look at, study - block_open,text=/\A(```(?:\s+.+?))\n(.*?)\Z/m.match(para)[1,2] + elsif para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.*?\Z/m #look at, study + @flag=:open + block_open,text=/\A(```(?:[ ]+.+?))\n(.*?)\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? para << block_open << text else para << block_open end - elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m + elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m \ + and @flag==:open + @flag=:close text,block_close=/\A(.+?)\n(```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? @@ -103,6 +107,14 @@ module SiSU_AO_MiscArrangeText end para end + def ticks_remove(para) + unless @md.opt.act[:quiet][:set] ==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("ticks not recognized, ticks removed from pargraph\n#{para}") + end + para=para.gsub(/```[ ]+\S+[ ]*/m,''). + gsub(/```\s*/m,''). + strip + end def curly_braces(para) block_open,block_close,text=nil,nil,nil para=if para =~/\A(?:code|poem|alt|group|block|table)\{ .+?\n.+?\n\}(?:code|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m @@ -129,9 +141,14 @@ module SiSU_AO_MiscArrangeText end para end - para=para =~/^```/m \ - ? ticks(para) - : para + para=if para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.*?\Z/m \ + or @flag==:open + ticks(para) + elsif para =~/```/m + ticks_remove(para) + else + para + end para=(para =~/^(?:code|poem|alt|group|block|table)\{|^\}(?:code|poem|alt|group|block|table)/m) \ ? curly_braces(para) : para @@ -149,7 +166,7 @@ module SiSU_AO_MiscArrangeText end data.each do |para| para=conditional_headings(para) - data_new << code_blocks(para) + data_new << markup_blocks(para) end data_new=data_new.flatten end diff --git a/lib/sisu/v6/ao_misc_arrange.rb b/lib/sisu/v6/ao_misc_arrange.rb index d30176bf..e58ce72a 100644 --- a/lib/sisu/v6/ao_misc_arrange.rb +++ b/lib/sisu/v6/ao_misc_arrange.rb @@ -74,24 +74,28 @@ module SiSU_AO_MiscArrangeText end para end - def code_blocks(para) + def markup_blocks(para) def ticks(para) block_open,block_close,text=nil,nil,nil - if para =~/\A```[ ]+.+?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m - block_open,text,block_close=/\A(```[ ]+.+?)\n(.+?)\n(```(\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1..3] + if para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m + @flag=:close + block_open,text,block_close=/\A(```[ ]+(?:code|poem|alt|group|block|table).*?)\n(.+?)\n(```([ ]+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1..3] ((para=~/^```[ ]+table(?:~h)?\s+/) \ and (para !~/^```[ ]+table(?:~h)?\s+c\d+/)) \ ? para : (para=[]; para << block_open << text << block_close) - elsif para =~/\A```[ ]+.+?\n.*?\Z/m #look at, study - block_open,text=/\A(```(?:\s+.+?))\n(.*?)\Z/m.match(para)[1,2] + elsif para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.*?\Z/m #look at, study + @flag=:open + block_open,text=/\A(```(?:[ ]+.+?))\n(.*?)\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? para << block_open << text else para << block_open end - elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m + elsif para =~/\A.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m \ + and @flag==:open + @flag=:close text,block_close=/\A(.+?)\n(```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.match(para)[1,2] para=[] if not text.to_s.empty? @@ -103,6 +107,14 @@ module SiSU_AO_MiscArrangeText end para end + def ticks_remove(para) + unless @md.opt.act[:quiet][:set] ==:on + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("ticks not recognized, ticks removed from pargraph\n#{para}") + end + para=para.gsub(/```[ ]+\S+[ ]*/m,''). + gsub(/```\s*/m,''). + strip + end def curly_braces(para) block_open,block_close,text=nil,nil,nil para=if para =~/\A(?:code|poem|alt|group|block|table)\{ .+?\n.+?\n\}(?:code|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m @@ -129,9 +141,14 @@ module SiSU_AO_MiscArrangeText end para end - para=para =~/^```/m \ - ? ticks(para) - : para + para=if para =~/\A```[ ]+(?:code|poem|alt|group|block|table).*?\n.*?\Z/m \ + or @flag==:open + ticks(para) + elsif para =~/```/m + ticks_remove(para) + else + para + end para=(para =~/^(?:code|poem|alt|group|block|table)\{|^\}(?:code|poem|alt|group|block|table)/m) \ ? curly_braces(para) : para @@ -149,7 +166,7 @@ module SiSU_AO_MiscArrangeText end data.each do |para| para=conditional_headings(para) - data_new << code_blocks(para) + data_new << markup_blocks(para) end data_new=data_new.flatten end |