aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2012-04-15 00:26:26 -0400
committerRalph Amissah <ralph@amissah.com>2012-04-15 00:32:15 -0400
commit0013ec9d66de5341a419585909d722009fc33381 (patch)
tree2c2802282f2733f0912e59379e107c2fc7bfd8d4
parentv3: 3.2.3 version & changelog "opened" (diff)
v3: param, dal_syntax, document header (simple regex) substitution list
* $ and curly braces are escaped (within sisu) to allow the following: @make:\n :substitute: /${linux-distro}/,'Debian' /${stable}/,'Squeeze' \ /${testing}/,'Wheezy' * changes are not made within text object types: code-blocks, tables or metadata (document headers). Marked up document remains self-referential. * Note: the substitution list must be written on a single line, without line-breaks. * [Substitutions possibility requested by Debian-live, live-manual (Ben Armstrong & Daniel Baumann)]
-rw-r--r--data/doc/sisu/CHANGELOG_v311
-rw-r--r--lib/sisu/v3/dal_syntax.rb65
-rw-r--r--lib/sisu/v3/hub.rb2
-rw-r--r--lib/sisu/v3/param.rb20
4 files changed, 87 insertions, 11 deletions
diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3
index c328ee3e..7c1dccca 100644
--- a/data/doc/sisu/CHANGELOG_v3
+++ b/data/doc/sisu/CHANGELOG_v3
@@ -21,6 +21,17 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.2.3.orig.tar.xz
sisu_3.2.3-1.dsc
sisu_3.2.3-1.debian.tar.gz
+* v3: param, dal_syntax, document header (simple regex) substitution list
+ added, note $ and curly braces are escaped to allow the following:
+ @make:\n :substitute: /${linux-distro}/,'Debian' /${stable}/,'Squeeze' \
+ /${testing}/,'Wheezy'
+ changes are not made within text object types: code-blocks, tables or
+ metadata (document headers). Marked up document remains self-referential.
+ Note: the substitution list must be written on a single line, without
+ line-breaks.
+ [Substitutions possibility requested by Debian-live, live-manual (Ben
+ Armstrong & Daniel Baumann)]
+
%% 3.2.2.orig.tar.xz (2012-04-05:14/4)
http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/sisu_3.2.2
http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_3.2.2-1
diff --git a/lib/sisu/v3/dal_syntax.rb b/lib/sisu/v3/dal_syntax.rb
index 73bb6a64..102e44cd 100644
--- a/lib/sisu/v3/dal_syntax.rb
+++ b/lib/sisu/v3/dal_syntax.rb
@@ -124,6 +124,9 @@ module SiSU_DAL_Syntax
@data.each do |dob|
dob=breaks(dob)
dob=if @md.sem_tag then sem(dob) else dob end #revisit
+ dob=line_actions(dob)
+ dob=paragraph_set(dob)
+ dob=substitutions(dob)
dob=wordlist_italics(dob)
dob=wordlist_bold(dob)
dob=bodymarkup(dob)
@@ -203,6 +206,57 @@ module SiSU_DAL_Syntax
gsub(/^\/_\s+(.*)?\s*$/,
"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
end
+ def line_actions(dob)
+ dob.obj=if (dob.is !=:heading \
+ && dob.is !=:heading_insert \
+ && dob.is !=:comment \
+ && dob.is !=:meta) \
+ and dob.obj =~ /^!_\s+/
+ embolden(dob.obj)
+ elsif dob.obj =~ /^\/_\s+/
+ italicise(dob.obj)
+ else dob.obj
+ end
+ dob
+ end
+ def paragraph_set(dob)
+ dob.obj=if dob.is !=:meta \
+ && dob.is !=:heading \
+ && dob.is !=:heading_insert \
+ && dob.is !=:code \
+ && dob.is !=:comment \
+ && dob.is !=:table
+ dob.obj.gsub(/\n/m,' ').
+ gsub(/ \s+/m,' ')
+ else dob.obj
+ end
+ dob
+ end
+ def substitutions(dob)
+ dob=dob.dup
+ dob=if defined? @md.make.substitute[:match_and_replace] \
+ and @md.make.substitute[:match_and_replace].class == Array
+ dob=if dob.is !=:meta \
+ && dob.is !=:heading_insert \
+ && dob.is !=:code \
+ && dob.is !=:comment \
+ && dob.is !=:table
+ if dob.obj =~/#{@md.make.substitute[:matches]}/
+ @md.make.substitute[:match_and_replace].each do |x|
+ dob.obj=if x[:case_s]==:i
+ dob.obj.gsub(/#{x[:match]}/mi,x[:replace])
+ else
+ dob.obj.gsub(/#{x[:match]}/m,x[:replace])
+ end
+ end
+ end
+ dob
+ else dob
+ end
+ dob
+ else dob
+ end
+ end
def wordlist_bold(dob)
dob=dob.dup
if (defined? @md.make.bold[:str] \
@@ -239,20 +293,11 @@ module SiSU_DAL_Syntax
else dob.obj
end
else
- dob.obj=if (dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:comment \
- && dob.is !=:meta) \
- and dob.obj =~ /^!_\s+/
- embolden(dob.obj)
- elsif dob.is==:heading \
+ dob.obj=if dob.is==:heading \
and dob.ln.to_s =~/[7-9]/
embolden(dob.obj)
else dob.obj
end
- if dob.obj =~ /\/_\s+/
- dob.obj=italicise(dob.obj)
- end
end
dob
end
diff --git a/lib/sisu/v3/hub.rb b/lib/sisu/v3/hub.rb
index 5f256314..7466efde 100644
--- a/lib/sisu/v3/hub.rb
+++ b/lib/sisu/v3/hub.rb
@@ -173,7 +173,7 @@ module SiSU
Dir.chdir(@opt.pth) #watch
env=SiSU_Env::InfoEnv.new(fns)
if @req !~/(?:urls|remote)$/
- if @opt.cmd.inspect =~/-P/\
+ if @opt.cmd.inspect =~/-P/ \
and @req =~ /^po4a$/
require_relative 'composite' # composite.rb #pre-processing
SiSU_Po4a::Source.new(@opt).read # -P po4a.rb
diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb
index 5563f780..60f5345b 100644
--- a/lib/sisu/v3/param.rb
+++ b/lib/sisu/v3/param.rb
@@ -803,6 +803,26 @@ module SiSU_Param
else nil
end
end
+ def substitute
+ m=@h['substitute']
+ z=if m
+ w=m.scan(/\/(.+?)\/(i?,)\s*'(.+?)'(?:\s+|\s*;\s*|$)/)
+ arr_hash=[]
+ matches=''
+ w.each do |x|
+ c=(x[1] =~/[i],/) ? :i : :s
+ matches=matches + x[0].gsub(/([${}])/,'\\\\\1') + '|'
+ arr_hash << {
+ match: x[0].gsub(/([${}])/,'\\\\\1'),
+ replace: x[2],
+ case_s: c
+ }
+ end
+ matches.chop!
+ { match_and_replace: arr_hash, matches: matches }
+ else nil
+ end
+ end
def plaintext_wrap
if @h['plaintext_wrap'].to_s =~/\d\d+/ \
and @h['plaintext_wrap'].to_i > 19 \