aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2007-10-16 01:14:51 +0100
committerRalph Amissah <ralph@amissah.com>2007-10-16 01:14:51 +0100
commit68c7e79f3873607339a2b199e5e85c1c21b4255b (patch)
tree3dbd08fec3f6d9259950c6ef49e4f635de1f2597
parentMerge branch 'upstream' into debian/sid (diff)
parentimage list, extracting conditions and regex visited (diff)
Merge branch 'upstream' into debian/sid
-rw-r--r--CHANGELOG3
-rw-r--r--lib/sisu/v0/composite.rb15
-rw-r--r--lib/sisu/v0/digests.rb5
-rw-r--r--lib/sisu/v0/manpage.rb4
-rw-r--r--lib/sisu/v0/param.rb14
-rw-r--r--lib/sisu/v0/plaintext.rb5
-rw-r--r--lib/sisu/v0/remote.rb18
-rw-r--r--lib/sisu/v0/shared_xml.rb6
-rw-r--r--lib/sisu/v0/sisupod_make.rb12
-rw-r--r--lib/sisu/v0/wikispeak.rb5
10 files changed, 61 insertions, 26 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 06e22317..19750853 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -36,6 +36,9 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_0.62.0.orig.tar.gz
content associated with document to desired output locations, [decide how
audio, video/multimedia are to be handled, initially just links to content]
+ * image conditions and regex for matching and extracting list of images used
+ by a document visited
+
* copy images associated with document along with document, does not take
care of skins though, for all images still need to use -CC
diff --git a/lib/sisu/v0/composite.rb b/lib/sisu/v0/composite.rb
index ebad049e..4366b3ef 100644
--- a/lib/sisu/v0/composite.rb
+++ b/lib/sisu/v0/composite.rb
@@ -157,7 +157,8 @@ module SiSU_Assemble
elsif i =~/^\}code/; false
else @code_flag
end
- unless @code_flag
+ if not @code_flag \
+ and i !~/^%+\s/
i.gsub!(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
if i =~/^0~|^@\S+?:/
i.gsub!(/\n/m,"\n% ")
@@ -166,11 +167,17 @@ module SiSU_Assemble
end
end
file[:prepared] << i
- file[:images] << i.scan(rgx_image).uniq if i =~rgx_image #flag
+ if i !~/^%+\s/ \
+ and i =~rgx_image
+ file[:images] << i.scan(rgx_image).uniq
+ end
end
file[:prepared] << "\n% end import" << "\n\n"
- file[:images].uniq! if file[:images].length > 0
- file[:images].flatten! if file[:images].length > 0
+ if file[:images].length > 0
+ file[:images].flatten!
+ file[:images].uniq!
+ file[:images].delete_if {|x| x =~/http:\/\// }
+ end
file
end
def insertions?
diff --git a/lib/sisu/v0/digests.rb b/lib/sisu/v0/digests.rb
index 1adc8582..d75ad7f1 100644
--- a/lib/sisu/v0/digests.rb
+++ b/lib/sisu/v0/digests.rb
@@ -158,8 +158,9 @@ module SiSU_Digest_view
para_endnotes << para.scan(/~[{\[]([\d*+]+).+?<([0-9a-f]{#@dl})>[}\]]~/)
end
ima=[]
- if para =~/\{(\S+\.(png|jpg|gif))\s.+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/
- images=para.scan(/\{(\S+\.(?:png|jpg|gif))\s.+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/).flatten
+ if para !~/^%+\s/ \
+ and para =~/(?:^|[^_\\])\{(\S+\.(png|jpg|gif))\s.+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/
+ images=para.scan(/(?:^|[^_\\])\{(\S+\.(?:png|jpg|gif))\s.+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/).flatten
else image=nil
end
x=case para
diff --git a/lib/sisu/v0/manpage.rb b/lib/sisu/v0/manpage.rb
index e747e22a..20dd0450 100644
--- a/lib/sisu/v0/manpage.rb
+++ b/lib/sisu/v0/manpage.rb
@@ -373,8 +373,8 @@ WOK
para.gsub!(/<:name#\S+?>/,'') # remove name links
para.gsub!(/&nbsp;/,' ') # decide on
para.gsub!(/(["''])/,"\\\\\\1") # quotation marks need escape
- para.gsub!(/\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- para.gsub!(/^\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ para.gsub!(/(?:^|[^_\\])\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
+ para.gsub!(/^(?:^|[^_\\])\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
wordlist=para.scan(/\S+/)
if para =~/^0~(\S+)\s+(.+?)\Z/m # for headers
d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta
diff --git a/lib/sisu/v0/param.rb b/lib/sisu/v0/param.rb
index 8a95942a..1147cd80 100644
--- a/lib/sisu/v0/param.rb
+++ b/lib/sisu/v0/param.rb
@@ -253,7 +253,7 @@ module SiSU_Param
end
@code_flag=false
fns_array.each do |para| #% Scan document
- if para !~/^\%+\s/ \
+ if para !~/^%+\s/ \
and para =~/<![abcdeghijklmnopqrstuvwxyz]/i # <!f not included
raise "Old markup style in file #@fns, current version #{@sisu_version[:project]} #{@sisu_version[:version]} #{@sisu_version[:date_stamp]} #{@sisu_version[:date]}:\n\t\t#{para}\n\n"
end
@@ -629,11 +629,19 @@ module SiSU_Param
end
end
end
- @ec[:image] << para.scan(@rgx_image).uniq if para =~@rgx_image #embedded content
+ if para !~/^%+\s/ \
+ and para =~@rgx_image
+ @ec[:image] << para.scan(@rgx_image).uniq
+ end
@ec[:audio] << para.scan(@rgx_audio).uniq if para =~@rgx_audio #embedded content
@ec[:multimedia] << para.scan(@rgx_mm).uniq if para =~@rgx_mm #embedded content
end #% here endeth the document loop
- @ec[:image].uniq!; @ec[:image].flatten!; @ec[:image].sort!
+ if @ec[:image].length > 0
+ @ec[:image].flatten!
+ @ec[:image].uniq!
+ @ec[:image].delete_if {|x| x =~/http:\/\// }
+ @ec[:image].sort!
+ end
@ec[:audio].uniq!; @ec[:audio].flatten!; @ec[:audio].sort!
@ec[:multimedia].uniq!; @ec[:multimedia].flatten!; @ec[:multimedia].sort!
@man_name.gsub!(/(-)/,"\\\\\\1")
diff --git a/lib/sisu/v0/plaintext.rb b/lib/sisu/v0/plaintext.rb
index 18486803..1a0303cd 100644
--- a/lib/sisu/v0/plaintext.rb
+++ b/lib/sisu/v0/plaintext.rb
@@ -359,8 +359,9 @@ WOK
para.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
para.gsub!(/<:name#\S+?>/,'') # remove name links
para.gsub!(/&nbsp;/,' ') # decide on
- para.gsub!(/\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- para.gsub!(/^\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ para.gsub!(/(?:^|[^_\\])\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
+ para.gsub!(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ #para.gsub!(/^\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
wordlist=para.scan(/\S+/)
if para =~/^0~(\S+)\s+(.+?)\Z/m # for headers
d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta
diff --git a/lib/sisu/v0/remote.rb b/lib/sisu/v0/remote.rb
index efa49dc0..c65c619f 100644
--- a/lib/sisu/v0/remote.rb
+++ b/lib/sisu/v0/remote.rb
@@ -117,20 +117,25 @@ module SiSU_Remote
@rgx_skin=/(?:0~|@)skin:?\s+(\S+)/ #@rgx_skin=/^0~skin\s+(\S+)/
threads=[]
for requested_page in @get_s
+ re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO
threads << Thread.new(requested_page) do |url|
open(url) do |f|
raise "#{url} not found" unless f
- re_fnb=/((?:https?|file):\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO
base_uri,fnb,instr=re_fnb.match(url)[1..3] if re_fnb
- imagedir= base_uri + '/_sisu/image' #check on
+ imagedir=base_uri + '/_sisu/image' #check on
doc_skin_dir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc'
#"Got file, and ready to process: #{fnb}.t#{instr}"
downloaded_file=File.new("#{fnb}.-sst",'w+')
images=SiSU_Assemble::Remote_image.new.image(imagedir)
skin=SiSU_Assemble::Remote_image.new.image(doc_skin_dir)
f.collect.each do |r| # work area
- skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin
- images << r.scan(@rgx_image).uniq if r =~@rgx_image
+ unless r =~/^%+\s/
+ skin << r.scan(@rgx_skin).uniq if r =~@rgx_skin
+ if r !~/^%+\s/ \
+ and r =~@rgx_image
+ images << r.scan(@rgx_image).uniq
+ end
+ end
downloaded_file << r
end
if skin \
@@ -139,7 +144,10 @@ module SiSU_Remote
end
if images \
and images.length > 1
- images.flatten!.uniq!
+ images.flatten!
+ images.uniq!
+ images.delete_if {|x| x =~/http:\/\// }
+ images.sort!
@msg,@msgs='downloading images:', [ images.join(',') ]
@tell.call.warn unless @opt.cmd =~/q/
SiSU_Assemble::Remote_image.new.download_images(images)
diff --git a/lib/sisu/v0/shared_xml.rb b/lib/sisu/v0/shared_xml.rb
index 11dead2d..d2897a1f 100644
--- a/lib/sisu/v0/shared_xml.rb
+++ b/lib/sisu/v0/shared_xml.rb
@@ -355,8 +355,8 @@ module SiSU_XML_munge
para.gsub!(/<0;\w\d+;[um]\d+><#@dp:#@dp>/,'')
if para !~/^<:code>/
#embeds a red-bullet image -->
- para.gsub!(/(^|\s)\{\s*(\S+?\.(?:jpg|png|gif))\s+(\d+)x(\d+)(\s+[^}]+)?\}(https?:\/\/\S+)/,%{\\1<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\2" width="\\3" height="\\4" />[\\2] \\5})
- para.gsub!(/(^|\s)\{\s*(\S+?\.(?:jpg|png|gif))(\s+[^}]+)?\}(https?:\/\/\S+)/,%{\\1<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\2"/>\\2})
+ para.gsub!(/(?:^|[^_\\])\{\s*(\S+?\.(?:jpg|png|gif))\s+(\d+)x(\d+)(\s+[^}]+)?\}(https?:\/\/\S+)/,%{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1" width="\\2" height="\\3" />[\\1] \\4})
+ para.gsub!(/(?:^|[^_\\])\{\s*(\S+?\.(?:jpg|png|gif))(\s+[^}]+)?\}(https?:\/\/\S+)/,%{<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:actuate="onLoad" xlink:show="embed" xlink:href="#{@dir.url.images_local}/\\1"/>\\1})
para.gsub!(/(^|\s)\{([^}]+)\}(https?:\/\/[^"><]+?)([,.:;"><]?(?=\s|$))/,
'\1<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\3">\2</link>\4') #watch, compare html_tune
para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
@@ -381,7 +381,7 @@ module SiSU_XML_munge
para.gsub!(/<[-~]#>/,'')
para.gsub!(/(^|\s)&\s+/,'\1&amp; ') #sort
para.gsub!(/&([^;]{1,5})/,'&amp;\1') #sort, rough estimate, revisit #WATCH found in node not sax
- para.gsub!(/\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,
+ para.gsub!(/(?:^|[^_\\])\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,
"<image.path>#{@dir.url.images_local}\/\\1</image.path>")
para.gsub!(/&nbsp;/,'&#160;')
#para.gsub!(/&nbsp;/,' ') #clean
diff --git a/lib/sisu/v0/sisupod_make.rb b/lib/sisu/v0/sisupod_make.rb
index 277358c4..af60cf4e 100644
--- a/lib/sisu/v0/sisupod_make.rb
+++ b/lib/sisu/v0/sisupod_make.rb
@@ -167,9 +167,12 @@ module SiSU_Doc
file_array=IO.readlines(use_file,'')
skin,images,doc_import=[],[],[]
file_array.each do |f| #% work area
- if f !~/^%\s/
+ if f !~/^%+\s/
skin << f.scan(@rgx_skin).uniq.flatten if f =~@rgx_skin
- images << f.scan(@rgx_image).uniq if f =~@rgx_image
+ if f !~/^%+\s/ \
+ and f =~@rgx_image
+ images << f.scan(@rgx_image).uniq
+ end
elsif f =~/^%\s/ \
and @opt.fns =~/\.ssm\.sst$/
doc_import << f.scan(@rgx_doc_import).uniq if f =~@rgx_doc_import
@@ -208,7 +211,10 @@ module SiSU_Doc
#2. need images used by skin, scan skin??
if images \
and images.length > 1
- images.flatten!.uniq!
+ images.flatten!
+ images.uniq!
+ images.delete_if {|x| x =~/http:\/\// }
+ #images.sort!
image_path_pwd='_sisu/image'
path_pod_conf="#{@env.path.processing}/sisupod/_sisu"
images_path_pod="#{path_pod_conf}/image"
diff --git a/lib/sisu/v0/wikispeak.rb b/lib/sisu/v0/wikispeak.rb
index 7fe7ac89..0dda6ce0 100644
--- a/lib/sisu/v0/wikispeak.rb
+++ b/lib/sisu/v0/wikispeak.rb
@@ -257,8 +257,9 @@ WOK
para.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
para.gsub!(/<:name#\S+?>/,'') # remove name links
para.gsub!(/&nbsp;/,' ') # decide on
- para.gsub!(/\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
- para.gsub!(/^\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ para.gsub!(/(?:^|[^_\\])\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|file|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\1 ]")
+ para.gsub!(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
+ #para.gsub!(/^\{\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
wordlist=para.scan(/\S+/)
if para =~/^0~(\S+)\s+(.+?)\Z/m # for headers
d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta