aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2007-09-23 05:16:21 +0100
committerRalph Amissah <ralph@amissah.com>2007-09-23 05:16:21 +0100
commit50d45c6deb0afd2e4222d2e33a45487a9d1fa676 (patch)
tree100c62d678f009139999bf77c26c81653a721eeb /lib
parentsisu-0.58.3 + md5s (diff)
primarily todo with sisu documentation, changelog reproduced below:
* start documenting sisu using sisu * sisu markup source files in data/doc/sisu/sisu_markup_samples/sisu_manual/ /usr/share/doc/sisu/sisu_markup_samples/sisu_manual/ * default output [sisu -3] in data/doc/manuals_generated/sisu_manual/ /usr/share/doc/manuals_generated/sisu_manual/ (adds substantially to the size of sisu package!) * help related edits * manpage, work on ability to generate manpages, improved * param, exclude footnote mark count when occurs within code block * plaintext changes made * shared_txt, line wrap visited * file:// link option introduced (in addition to existing https?:// and ftp://) a bit arbitrarily, diff here, [double check changes in sysenv and hub] * minor adjustments * html url match refinement * css added tiny_center * plaintext * endnotes fix * footnote adjustment to make more easily distinguishable from substantive text * flag -a only [flags -A -e -E dropped] controlled by modifiers --unix/msdos --footnote/endnote * defaults, homepage * renamed homepage (instead of index) implications for modifying skins, which need likewise to have any homepage entry renamed * added link to sisu_manual in homepage * css the css for the default homepage is renamed homepage.css (instead of index.css) [consider removing this and relying on html.css] * ruby version < ruby1.9 * place stop on installation and working with for now [ruby String.strip broken in ruby 1.9.0 (2007-09-10 patchlevel 0) [i486-linux], 2007-09-18:38/2] * debian/control restrict use to ruby > 1.8.4 and ruby < 1.9 * debian * debian/control restrict use to ruby > 1.8.4 and ruby < 1.9 * sisu-doc new sub-package for sisu documentation debian/control and sisu-doc.install
Diffstat (limited to 'lib')
-rw-r--r--lib/sisu/v0/composite.rb6
-rw-r--r--lib/sisu/v0/concordance.rb4
-rw-r--r--lib/sisu/v0/css.rb9
-rw-r--r--lib/sisu/v0/dal.rb11
-rw-r--r--lib/sisu/v0/dal_doc_str_code.rb2
-rw-r--r--lib/sisu/v0/dal_syntax.rb8
-rw-r--r--lib/sisu/v0/db_import.rb4
-rw-r--r--lib/sisu/v0/defaults.rb12
-rw-r--r--lib/sisu/v0/digests.rb4
-rw-r--r--lib/sisu/v0/help.rb69
-rw-r--r--lib/sisu/v0/html_tune.rb22
-rw-r--r--lib/sisu/v0/hub.rb25
-rw-r--r--lib/sisu/v0/manpage.rb519
-rw-r--r--lib/sisu/v0/manpage_format.rb108
-rw-r--r--lib/sisu/v0/odf.rb16
-rw-r--r--lib/sisu/v0/options.rb4
-rw-r--r--lib/sisu/v0/param.rb26
-rw-r--r--lib/sisu/v0/plaintext.rb142
-rw-r--r--lib/sisu/v0/shared_html_lite.rb22
-rw-r--r--lib/sisu/v0/shared_txt.rb31
-rw-r--r--lib/sisu/v0/shared_xml.rb8
-rw-r--r--lib/sisu/v0/sisupod_make.rb21
-rw-r--r--lib/sisu/v0/spell.rb2
-rw-r--r--lib/sisu/v0/sst_do_inline_footnotes.rb2
-rw-r--r--lib/sisu/v0/sst_to_s_xml_dom.rb2
-rw-r--r--lib/sisu/v0/sysenv.rb70
-rw-r--r--lib/sisu/v0/texinfo.rb2
-rw-r--r--lib/sisu/v0/texinfo_format.rb12
-rw-r--r--lib/sisu/v0/texpdf.rb2
-rw-r--r--lib/sisu/v0/texpdf_format.rb40
-rw-r--r--lib/sisu/v0/urls.rb15
-rw-r--r--lib/sisu/v0/wikispeak.rb6
32 files changed, 972 insertions, 254 deletions
diff --git a/lib/sisu/v0/composite.rb b/lib/sisu/v0/composite.rb
index 6223743c..557a0519 100644
--- a/lib/sisu/v0/composite.rb
+++ b/lib/sisu/v0/composite.rb
@@ -158,7 +158,7 @@ module SiSU_Assemble
else @code_flag
end
unless @code_flag
- i.gsub!(/^([12]|:?[AB])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
+ i.gsub!(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
if i =~/^0~|^@\S+?:/
i.gsub!(/\n/m,"\n% ")
i.gsub!(/\n%\s+$/m,'')
@@ -189,8 +189,8 @@ module SiSU_Assemble
loadfile=$1.strip
tell=SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile)
tell.txt_grey if @opt.cmd =~/[MVv]/
- tuned_file << if loadfile =~ /http:\/\/\S+?\.ss[ti]$/ # and NetTest
- imagedir = /(http:\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
+ tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest
+ imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
require 'uri'
image_uri=URI.parse(imagedir)
require 'open-uri'
diff --git a/lib/sisu/v0/concordance.rb b/lib/sisu/v0/concordance.rb
index 111741ab..9e114f80 100644
--- a/lib/sisu/v0/concordance.rb
+++ b/lib/sisu/v0/concordance.rb
@@ -196,9 +196,9 @@ WOK
@rxp_t1=Regexp.new('^T1')
@rxp_t2=Regexp.new('^T2')
@rxp_t3=Regexp.new('^T3')
- @rxp_excluded1=/(?:https?|ftp):\/\/\S+/mi
+ @rxp_excluded1=/(?:https?|file|ftp):\/\/\S+/mi
@rxp_excluded0=/^(?:to\d+|\d+|&nbsp;|EOF|thumb_\S+|snap_\S+|_+|-+|ii+|iv|vi+|ix|xi+|xiv|xv|xvi+|xix|xx|\S+?_\S+|[\d_]+\w\S+|[\w\d]{1,2}|\d{1,3}\w?|#@dp|[0-9a-f]{16,64}|\d{2,3}x\d{2,3}|\S{0,2}sha\d|\S{0,3}\d{4}w\d\d|\b\w\d+|\d_all\b|e\.?g\.?)$/mi #this regex causes and cures a stack dump in ruby 1.9 !!!
- @rgx_scanlist=%r{(?:<i>(?:[a-zA-Z0-9"\s]){2,7}</i>|<b>(?:[a-zA-Z0-9"\s]){2,7}</b>|http://\S+)|code\{.+?\}code|<\S+?>|\w+}mi
+ @rgx_scanlist=%r{(?:<i>(?:[a-zA-Z0-9"\s]){2,7}</i>|<b>(?:[a-zA-Z0-9"\s]){2,7}</b>|(?:https?|file)://\S+)|code\{.+?\}code|<\S+?>|\w+}mi
rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error
end
end
diff --git a/lib/sisu/v0/css.rb b/lib/sisu/v0/css.rb
index f5aabf7f..f4cf5228 100644
--- a/lib/sisu/v0/css.rb
+++ b/lib/sisu/v0/css.rb
@@ -306,6 +306,15 @@ WOK
margin-right: 5mm;
text-align: right;
}
+ p.tiny_center {
+ font-size: 10px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ color: #777777;
+ margin-left: 0px;
+ margin-right: 0px;
+ text-align: center;
+ }
p.pane {
font-size: 80%;
margin-top: 0px;
diff --git a/lib/sisu/v0/dal.rb b/lib/sisu/v0/dal.rb
index c2c92485..f5da8b05 100644
--- a/lib/sisu/v0/dal.rb
+++ b/lib/sisu/v0/dal.rb
@@ -264,7 +264,7 @@ module SiSU_DAL
end
data.each do |para|
para.strip!
- if para =~/\{\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?\}(?:(?:https?|ftp):\S+|image)/
+ if para =~/\{\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?\}(?:(?:https?|file|ftp):\S+|image)/
if para !~/\{\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+\s+/
m=/\{\s*(\S+\.(?:png|jpg|gif))/
if @rmgk
@@ -295,7 +295,7 @@ module SiSU_DAL
end
end
para.gsub!(/(#{image})/,"#{image} #{img_col}x#{img_row}")
- else para.gsub!(/\{\s*(\S+)\.(png|jpg|gif).+?\}((?:https?|ftp):\S+|image)/,'[ \1 (\2 missing) ]')
+ else para.gsub!(/\{\s*(\S+)\.(png|jpg|gif).+?\}((?:https?|file|ftp):\S+|image)/,'[ \1 (\2 missing) ]')
end
end
else
@@ -306,7 +306,7 @@ module SiSU_DAL
end
end
end
- para.gsub!(/\{\s+(\S+\.(?:png|jpg|gif))\s+/i,'{\1 ') if para =~/\{\s+\S+\.(?:png|jpg|gif).+?\}(?:(?:https?|ftp):\S+|image)/
+ para.gsub!(/\{\s+(\S+\.(?:png|jpg|gif))\s+/i,'{\1 ') if para =~/\{\s+\S+\.(?:png|jpg|gif).+?\}(?:(?:https?|file|ftp):\S+|image)/
tuned_file << para unless para.nil?
end
tuned_file
@@ -329,6 +329,8 @@ module SiSU_DAL
end
file_type_names <<= if cmd_list =~ /p/; ['landscape.pdf', 'portrait.pdf']
end
+ #file_type_names <<= if cmd_list =~ /i/; 'manpage.1'
+ #end
file_type_names <<= if cmd_list =~ /o/; 'opendocument.odt'
end
file_type_names <<= if cmd_list =~ /b/; 'scroll.xhtml'
@@ -406,6 +408,7 @@ module SiSU_DAL
when /sax.xml/; ' xml, sax'
when /dom.xml/; ' xml, dom'
when /plain.txt/; ' plain text utf-8'
+ #when /manpage.1/; ' man, 1'
when /wiki.txt/; ' wiki text'
when /concordance.html/; ' concordance'
when /digest.txt/; ' dcc, document content certificate (digests)'
@@ -1069,7 +1072,7 @@ module SiSU_DAL
#s=s.gsub(/¡¡\d+¡/,' ') # tables
#s=s.gsub(/¡/,' ') # tables tidy later
#s=s.gsub(/<.+?>/,'')
- s=s.gsub(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|ftp)\\\:\S+ /,' [image] ') # else image names found in search
+ s=s.gsub(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search
s=s.gsub(/\s\s+/,' ')
s=s.strip
end
diff --git a/lib/sisu/v0/dal_doc_str_code.rb b/lib/sisu/v0/dal_doc_str_code.rb
index 52aa4a40..c45d95f1 100644
--- a/lib/sisu/v0/dal_doc_str_code.rb
+++ b/lib/sisu/v0/dal_doc_str_code.rb
@@ -153,7 +153,7 @@ module SiSU_document_structure_code
if line =~/\S/ and line !~/^code\{|^\}code|<:code.+/
line.gsub!(/\s\s/,'&nbsp;&nbsp;')
line.gsub!(/^/,'<:codeline>') if type=='code' # try sort for texpdf special case
- if line =~/https?:\/\/\S+$/
+ if line =~/(?:https?|file|ftp):\/\/\S+$/
line.gsub!(/$/,' <:br>')
else line.gsub!(/$/,'<:br>') #unless type=='code'
end
diff --git a/lib/sisu/v0/dal_syntax.rb b/lib/sisu/v0/dal_syntax.rb
index 36ea3b04..bf83c8ef 100644
--- a/lib/sisu/v0/dal_syntax.rb
+++ b/lib/sisu/v0/dal_syntax.rb
@@ -65,7 +65,7 @@ module Syntax
@data,@md=data,md
@vz=SiSU_Env::Get_init.instance.skin
@data_new=[]
- @http_m='\{.+?\}https?://\S+|https?:\S+|\.\.\/\S+|\S+?\.png\b|[*]~\S+|^0~.+|<:(?:code|group|alt|verse)(?:-end)?>|<:br>'
+ @http_m='\{.+?\}(?:https?|file)://\S+|(?:https?|file):\S+|\.\.\/\S+|\S+?\.png\b|[*]~\S+|^0~.+|<:(?:code|group|alt|verse)(?:-end)?>|<:br>'
@manmkp_ital='[i/]\\{.+?\\}[i/]'
tail_m_ital=%q{(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$)}
tail_m_bold=%q{(?:(?:<\/i>)?(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$))?}
@@ -212,7 +212,7 @@ module Syntax
line.gsub!(/^(1~\??) @title\s+(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1 #{@md.title} - #{@md.subtitle},<br />\\2#{@md.dc_creator}")
line.gsub!(/^(1~\??) @title\s*$/,"\\1 #{@md.title} - #{@md.subtitle}") #
line.gsub!(/^([23]~\??) (?:(by\s+)?(?:@creator|@author))\s*$/,"\\1 \\2#{@md.dc_creator}") #
- line.gsub!(/<(https?:\/\/\S+?)>/,'< \1 >') #catch problem markup
+ line.gsub!(/<((?:https?|file):\/\/\S+?)>/,'< \1 >') #catch problem markup
line.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }http://www.jus.uio.no/sisu') #adjustment 2005w30
line.gsub!(/<!(\S+)!>/,'<:\1>') #escaped special character
line.gsub!(/\\~/,'&#126;') #escaped special character
@@ -239,8 +239,8 @@ module Syntax
line.gsub!(/\\\!/,'&#033;') #escaped special character
line.gsub!(/(?:^| )\*~([a-z0-9._-]+)/i,' <:name#\1>') #html name marker <a name="\\1"></a>
line.gsub!(/^([56]~)(\S+)(.+)/,'\1\2 \3 <:name#\2>') #html name marker <a name="\\1"></a>, however at present takes you to correct position within sub-toc, will nneed to clean from sub-toc leaving in main body only
- line.gsub!(/(^| )\{~\^ (.+?)\s*\}((?:https?|ftp):\S+?)([;,.]?(?=\s[^~]|$))/,'\1{ \2 }\3\4 ~{ \3 }~ ') #text url endnote url shortcut {~^ [text] }http://url is { [text] }http://url ~{ http://url }~ [plus adjustment for commas] #means for this class, non-object, un-numbered ~# will not work # shortcut should not be used in conjunction with rebgular matches #reversed order, and addition of no-tilde..
- line.gsub!(/(^| )\{~\^ (.+?)\s*\}((?:https?|ftp):\S+)\s+~\{(.+?)\}~/,'\1{ \2 }\3 ~{ \3 \4 }~') # watch
+ line.gsub!(/(^| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+?)([;,.]?(?=\s[^~]|$))/,'\1{ \2 }\3\4 ~{ \3 }~ ') #text url endnote url shortcut {~^ [text] }http://url is { [text] }http://url ~{ http://url }~ [plus adjustment for commas] #means for this class, non-object, un-numbered ~# will not work # shortcut should not be used in conjunction with rebgular matches #reversed order, and addition of no-tilde..
+ line.gsub!(/(^| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+)\s+~\{(.+?)\}~/,'\1{ \2 }\3 ~{ \3 \4 }~') # watch
line.gsub!(/<:?br>/,'<br />') #xml requires
# depreciated -->
line.gsub!(/(^|\s+|['"]|&nbsp;|[\(\[\{]|\>)e\{(.+?)\}e/,'\1<b>\2</b>') #emphasis
diff --git a/lib/sisu/v0/db_import.rb b/lib/sisu/v0/db_import.rb
index 5ef26466..91729e3a 100644
--- a/lib/sisu/v0/db_import.rb
+++ b/lib/sisu/v0/db_import.rb
@@ -125,7 +125,7 @@ module SiSU_DB_import
string.gsub!(/<:(?:code|alt|group|verse)(?:-end)?>/,'')
string.gsub!(/<:name#\S+?>/,'')
string.gsub!(/\{\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)\}\S+/,'[image: \1] \2')
- string.gsub!(/\{\s*(.+?)\s*\}https?:\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2')
+ string.gsub!(/\{\s*(.+?)\s*\}(?:https?|file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2')
end
def unicode_special_character_escape(string)
#string.gsub!(/(["';:,])/, %{\\\\\\1})
@@ -139,7 +139,7 @@ module SiSU_DB_import
string.gsub!(/¡¡\d+¡/,' ') #tables
string.gsub!(/¡/,' ') #tables tidy later
string.gsub!(/<.+?>/,'')
- string.gsub!(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|ftp)\\\:\S+ /,' [image] ') # else image names found in search
+ string.gsub!(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search
string.gsub!(/\s\s+/,' ')
string.strip!
end
diff --git a/lib/sisu/v0/defaults.rb b/lib/sisu/v0/defaults.rb
index c46860c3..4d97aed1 100644
--- a/lib/sisu/v0/defaults.rb
+++ b/lib/sisu/v0/defaults.rb
@@ -149,7 +149,7 @@ module SiSU_Viz
end
#% path
def path_stylesheet_home
- %{ <link rel="stylesheet" href="./#{@dir.path.style}/index.css" type="text/css" />}
+ %{ <link rel="stylesheet" href="./#{@dir.path.style}/homepage.css" type="text/css" />}
end
#% text #changed from txt to avoid naming conflicts #FOLLOW
def txt_generator
@@ -1482,7 +1482,7 @@ If your browser supports redirection, you will be escorted there shortly.
</html>
WOK
end
- def index
+ def homepage
<<WOK
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
@@ -1551,6 +1551,14 @@ outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQ
---
</p>
<p class="small">
+ <a href="http://www.jus.uio.no/sisu/sisu_manual/" target="_top" >
+ SiSU Manual
+ </a>
+</p>
+<p class="tiny">
+ ---
+</p>
+<p class="small">
<a href="http://www.jus.uio.no/sisu/SiSU/1.html#summary" target="_top" >
What does SiSU do? Summary
</a>
diff --git a/lib/sisu/v0/digests.rb b/lib/sisu/v0/digests.rb
index 1e4e3c6a..7324b93b 100644
--- a/lib/sisu/v0/digests.rb
+++ b/lib/sisu/v0/digests.rb
@@ -158,8 +158,8 @@ module SiSU_Digest_view
para_endnotes << para.scan(/~[{\[]([\d*+]+).+?<([0-9a-f]{#@dl})>[}\]]~/)
end
ima=[]
- if para =~/\{(\S+\.(png|jpg|gif))\s.+?\}(?:(?:https?|ftp):\/\/\S+|image)/
- images=para.scan(/\{(\S+\.(?:png|jpg|gif))\s.+?\}(?:(?:https?|ftp):\/\/\S+|image)/).flatten
+ 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
else image=nil
end
x=case para
diff --git a/lib/sisu/v0/help.rb b/lib/sisu/v0/help.rb
index e22808d1..4805f6ad 100644
--- a/lib/sisu/v0/help.rb
+++ b/lib/sisu/v0/help.rb
@@ -238,9 +238,7 @@ WOK
def commands
print <<WOK
- #{@cX.ruby}-A#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with dos linefeeds. Without markup, (object numbers are omitted), has footnotes at end of each para‐ graph that contains them [ -a for equivalent Unix (ascii) output file] [see -E for endnotes]
-
- #{@cX.ruby}-a#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with Unix linefeeds. Without markup, (object numbers are omitted), has footnotes at end of each para‐ graph that contains them [ -A for equivalent dos (ascii) output file] [see -e for endnotes]
+ #{@cX.ruby}-a#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with Unix linefeeds. Without markup, (object numbers are omitted), has footnotes at end of each para‐ graph that contains them. Modifier options available: --footnotes (default) or --endnotes and for linefeeds --unix (default) or --msdos
#{@cX.ruby}-b#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces xhtml/XML output for browser viewing (sax parsing)
@@ -252,10 +250,6 @@ WOK
#{@cX.ruby}-d#{@cX.off} #{@cX.green}[instruction]#{@cX.off} #{@cX.green}[filename]#{@cX.off} database instruction, see database section below [only -D currently available]
- #{@cX.ruby}-E#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with dos linefeeds, and without markup, endnotes follow the main text (in -a endnotes follow the paragraphs that contain them). There are no object numbers [see -e for Unix (ascii) output file] [see -A for footnotes]
-
- #{@cX.ruby}-e#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces plaintext with Unix linefeeds, and without markup, endnotes follow the main text. Object numbers are omitted. [ -E for equivalent dos (ascii) output file] [ -a for footnotes]
-
#{@cX.ruby}-F#{@cX.off} generate examples of (naive) cgi search form for sqlite and pgsql depends on your already having used sisu to populate an sqlite and/or pgsql database, (the sqlite version scans the output directories for existing sisu_sqlite databases, so it is first necessary to create them, before generating the search form) see -d -D and the database section below. If the optional parameter webrick is passed, the cgi examples created will be set up to use the default port set for use by the webrick server, (otherwise the port is left blank and the system setting used, usually 80). The samples are dumped in the present work directory which must be writable, (with screen instructions given that they be copied to the cgi-bin directory).
#{@cX.ruby}-H#{@cX.off} #{@cX.green}[filename/wildcard]#{@cX.off} produces html (css version) (creates html (using css)), with url link suffixes (.html .pdf etc.) omitted ("Hide"). For web servers that are confireud so as not to require file extensions to locate and serve files. [behaviour switched see -h]
@@ -456,19 +450,19 @@ sisu
Note: page breaks are usually introduced to pdfs either as header instructions, indicating that pages should break at given levels
------------------------------------------
#{@cX.cyan}Composite documents#{@cX.off}
- It is possible to build a document by requiring other documents. The documents required may complete documents that could be generated independently, or they could be markup snippets, prepared so as to be easily available to be placed within another text. If the calling document is a master document (built mainly from other documents), by convention it should be named with the suffix .ssc or .ssm The documents called if complete documents would have the suffix .sst, [.ssf, or .ssd], and if markup snippets .ssi. A temporary file of the composite document is built prior to processing with the same prefix and the suffix ._sst There are a number of alternative syntaxes for requiring external documents in order to permit use of ascii hypertext linking available in the vim editor. They are as follows (place at start of line):
+ It is possible to build a document by creating a master document that requires other documents. The documents required may complete documents that could be generated independently, or they could be markup snippets, prepared so as to be easily available to be placed within another text. If the calling document is a master document (built mainly from other documents), it should be named with the suffix #{@cX.blue}.ssm#{@cX.off} Within this document you would provide information on the other documents that should be included within the text. These may be other documents that would be processed in a regular way, or markup bits prepared only for inclusion within a master document #{@cX.blue}.sst#{@cX.off} regular markup file, or #{@cX.blue}.ssi#{@cX.off} (insert/information) A secondary file of the composite document is built prior to processing with the same prefix and the suffix #{@cX.blue}._sst#{@cX.off}
#{@cX.cyan}#basic sisu markup alternatives#{@cX.off}
- #{@cX.green}{#{@cX.off}filename.si#{@cX.green}}require#{@cX.off}
- #{@cX.green}<< {#{@cX.off}filename.si#{@cX.green}}#{@cX.off}
+ #{@cX.green}{#{@cX.off}filename.ssi#{@cX.green}}require#{@cX.off}
+ #{@cX.green}<< {#{@cX.off}filename.ssi#{@cX.green}}#{@cX.off}
#{@cX.cyan}#using textlink alternatives#{@cX.off}
- #{@cX.green}|#{@cX.off}filename.si#{@cX.green}|@|^|require#{@cX.off}
- #{@cX.green}<< |#{@cX.off}filename.si#{@cX.green}|@|^|#{@cX.off}
+ #{@cX.green}|#{@cX.off}filename.ssi#{@cX.green}|@|^|require#{@cX.off}
+ #{@cX.green}<< |#{@cX.off}filename.ssi#{@cX.green}|@|^|#{@cX.off}
#{@cX.cyan}#using thlnk alternatives#{@cX.off}
- #{@cX.green}<url:#{@cX.off}filename.si#{@cX.green}>require#{@cX.off}
- #{@cX.green}<< <url:#{@cX.off}filename.si#{@cX.green}>#{@cX.off}
+ #{@cX.green}<url:#{@cX.off}filename.ssi#{@cX.green}>require#{@cX.off}
+ #{@cX.green}<< <url:#{@cX.off}filename.ssi#{@cX.green}>#{@cX.off}
#{@cX.cyan}Composite documents - remote parts#{@cX.off}
Composite documents may be built from remote parts, by using the composite document syntax with a url. This makes sense using either sisu regular syntax (which is just a convenient way of marking up), or thlnk syntax, which also recognises remote urls, and permits hyperlinking ascii to the url location.
@@ -598,7 +592,7 @@ This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.c
#{@cX.cyan}@subtitle:#{@cX.off} The Subtitle if any
-#{@cX.fuschia}@creator:#{@cX.off} [or ~author] Ralph Amissah
+#{@cX.fuschia}@creator:#{@cX.off} [or @author:] Name of Author
#{@cX.fuschia}@subject:#{@cX.off} (whatever your subject)
@@ -608,11 +602,11 @@ This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.c
#{@cX.fuschia}@contributor:#{@cX.off}
-#{@cX.fuschia}@translator:#{@cX.off} [or ~translated_by]
+#{@cX.fuschia}@translator:#{@cX.off} [or @translated_by:]
-#{@cX.fuschia}@illustrator:#{@cX.off} [or ~illustrated_by]
+#{@cX.fuschia}@illustrator:#{@cX.off} [or @illustrated_by:]
-#{@cX.fuschia}@prepared_by:#{@cX.off} [or ~digitized_by]
+#{@cX.fuschia}@prepared_by:#{@cX.off} [or @digitized_by:]
#{@cX.fuschia}@date:#{@cX.off} 2000-08-27
\t[ also #{@cX.fuschia}@date.created:#{@cX.off} #{@cX.fuschia}@date.issued:#{@cX.off} #{@cX.fuschia}@date.available:#{@cX.off} #{@cX.fuschia}@date.valid:#{@cX.off} #{@cX.fuschia}@date.modified:#{@cX.off} ]
@@ -625,7 +619,13 @@ This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.c
#{@cX.fuschia}@source:#{@cX.off}
-#{@cX.fuschia}@language:#{@cX.off} [country code for language if available, or language, English, en is the default setting] (en - English, fr - French, de - German, it - Italian, es - Spanish, pt - Portuguese, sv - Swedish, da - Danish, fi - Finnish, no - Norwegian, is - Icelandic, nl - Dutch, et - Estonian, hu - Hungarian, pl - Polish, ro - Romanian, ru - Russian, el - Greek, uk - Ukranian, tr - Turkish, sk - Slovak, sl - Slovenian, hr - Croatian, cs - Czech, bg - Bul garian ) [however, encodings are not available for all of the languages listed.]
+#{@cX.fuschia}@language:#{@cX.off} [or @language.document:] [country code for language if available, or language, English, en is the default setting] (en - English, fr - French, de - German, it - Italian, es - Spanish, pt - Portuguese, sv - Swedish, da - Danish, fi - Finnish, no - Norwegian, is - Icelandic, nl - Dutch, et - Estonian, hu - Hungarian, pl - Polish, ro - Romanian, ru - Russian, el - Greek, uk - Ukranian, tr - Turkish, sk - Slovak, sl - Slovenian, hr - Croatian, cs - Czech, bg - Bul garian ) [however, encodings are not available for all of the languages listed.]
+
+#{@cX.fuschia}@language.original:#{@cX.off}
+original language in which the work was published
+
+#{@cX.fuschia}@papersize:#{@cX.off}
+(A4|US_letter|book_B5|book_A5|US_legal)
#{@cX.fuschia}@relation:#{@cX.off}
@@ -658,24 +658,23 @@ This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.c
#{@cX.cyan}@rcs:#{@cX.off} $Id$ [used by rcs or cvs to embed version (revision control) information into document, rcs or cvs can usefully provide a history of updates to a document ]
#{@cX.ruby}@structure:#{@cX.off} PART; CHAPTER; SECTION; ARTICLE; none; none;
- structure can be defined by a match words or regular expression (the regular expression is assumed to start at the beginning of a line of text i.e. ^)
- can be used within text instead, without this header tag, and may be used to suppliment the instructions provided in this header tag if provided
+optional, document structure can be defined by words to match or regular expression (the regular expression is assumed to start at the beginning of a line of text i.e. ^) default markers :A~ to :C~ and 1~ to 6~ can be used within text instead, without this header tag, and may be used to supplement the instructions provided in this header tag if provided (@structure: is a synonym for @toc:)
#{@cX.ruby}@level:#{@cX.off} newpage=3; breakpage=4 [paragraph level, used by latex to breakpages, the page is optional eg. in newpage]
#{@cX.ruby}@markup:#{@cX.off} num_top=4 [various markup instructions, eg: num_top=4 headings tobe numbered, starting at heading level 4... the default is to provide 3 levels, as in 1 level 4, 1.1 level 5, 1.1.1 level 6, markup to be merged within level]
-#{@cX.ruby}@bold:#{@cX.off} [list of words to make bold with semi colon separator]
+#{@cX.ruby}@bold:#{@cX.off} [regular expression of words/phrases to be made bold]
-#{@cX.ruby}@italics:#{@cX.off} [list of words to italize with semi colon separator]
+#{@cX.ruby}@italics:#{@cX.off} [regular expression of words/phrases to italize]
#{@cX.ruby}@vocabulary:#{@cX.off} name of taxonomy/vocabulary/wordlist to use against document
#{@cX.ruby}@skin:#{@cX.off} skin_doc_[name_of_desired_document_skin]
-#{@cX.ruby}@links:#{@cX.off} http://google.com; Google;
+#{@cX.ruby}@links:#{@cX.off} { SiSU }http://www.jus.uio.no/sisu/; { FSF }http://www.fsf.org
-#{@cX.ruby}@@promo:#{@cX.off} sisu, ruby, search_libre_docs, open_society [places content in right pane in html, makes use of list.yml and promo.yml, commented out sample in document sample: free_as_in_freedom.richard_stallman_cru‐ sade_for_free_software.sam_williams.sst]
+#{@cX.ruby}@@promo:#{@cX.off} sisu, ruby, search_libre_docs, open_society [places content in right pane in html, makes use of list.yml and promo.yml, commented out sample in document sample: free_as_in_freedom.richard_stallman_crusade_for_free_software.sam_williams.sst]
#{@cX.grey}% header ends here, NB only @title: is mandatory [this would be a comment]#{@cX.off}
#{@cX.grey}% NOTE: headings/levels below refer to 0.38 expermental markup
@@ -770,7 +769,7 @@ This is a sample header (#{@cX.fuschia}Dublin Core in fuschia,#{@cX.off} #{@cX.c
#{@cX.green}0~#{@cX.off}#{@cX.ruby}toc#{@cX.off} PART; CHAPTER; SECTION; ARTICLE; none; none;
optional, where document structure can be defined by a match words or regular expression (the regular expression is assumed to start at the beginning of a line of text i.e. ^)
-default markers 1~ to 6~ can be used within text instead, without this header tag, and may be used to suppliment the instructions provided in this header tag if provided
+default markers 1~ to 6~ can be used within text instead, without this header tag, and may be used to supplement the instructions provided in this header tag if provided
#{@cX.green}0~#{@cX.off}#{@cX.ruby}level#{@cX.off} newpage=3; breakpage=4 [paragraph level, used by latex to breakpages, the page is optional eg. in newpage]
@@ -784,7 +783,7 @@ default markers 1~ to 6~ can be used within text instead, without this header ta
#{@cX.green}0~#{@cX.off}#{@cX.ruby}skin#{@cX.off} skin_doc_[name_of_desired_document_skin]
-#{@cX.green}0~#{@cX.off}#{@cX.ruby}links#{@cX.off} http://google.com; Google;
+#{@cX.green}0~#{@cX.off}#{@cX.ruby}links#{@cX.off} { Google }http://google.com;
#{@cX.grey}% header ends here, NB only 0~title is mandatory [this would be a comment]#{@cX.off}
@@ -1733,6 +1732,18 @@ WOK
#{@cX.off} #{@cX.orange}
man estcmd
#{@cX.off}
+
+ on sisu_hyperestraier:
+
+ #{@cX.blue}
+ man sisu_hyperestraier
+
+ /usr/share/doc/sisu/sisu_markup/sisu_hyperestraier/index.html
+ #{@cX.off}
+
+ NOTE: The examples that follow assume that sisu output is placed in the directory
+ /home/ralph/sisu_www
+
(A) to generate the index
within the webserver directory to be indexed:
#{@cX.orange}estcmd gather -sd [index name] [directory path to index]#{@cX.off}
@@ -1754,13 +1765,13 @@ WOK
as sisu duplicates output in multiple file formats,
it it is probably preferable to limit the estraier index
- to html output, and as it may also be desireable to
+ to html output, and as it may also be desirable to
exclude files 'doc.html' and 'concordance.html', as these
duplicate information held in other html output e.g. #{@cX.green}
find /home/ralph/sisu_www -type f | egrep '/sisu_www/(sisu|bookmarks)/.+?\.html$' | egrep -v '(doc|concordance)\.html$' |estcmd gather -sd casket - #{@cX.off}
- from your current document preperation/markup directory, you would construct a rune along the following lines: #{@cX.green}
+ from your current document preparation/markup directory, you would construct a rune along the following lines: #{@cX.green}
find /home/ralph/sisu_www -type f | egrep '#{@env.path.webserv}/([specify first directory for inclusion]|[specify second directory for inclusion]|[another directory for inclusion? ...])/.+?\.html$' | egrep -v '(doc|concordance)\.html$' |estcmd gather -sd #{@env.path.webserv}/casket - #{@cX.off}
diff --git a/lib/sisu/v0/html_tune.rb b/lib/sisu/v0/html_tune.rb
index 639ecd26..0b861526 100644
--- a/lib/sisu/v0/html_tune.rb
+++ b/lib/sisu/v0/html_tune.rb
@@ -244,10 +244,10 @@ module SiSU_Tune
def urls(data)
@words=[]
data.each do |word|
- @words << if word=~/\{(.+?)\}((?:https?|ftp)\S+|image)/
- if word =~/\{(.+?)\}((?:https?|ftp)\S+|image)([;.,]?(?:\s|$))/
- m,u,d=/\{(.+?)\}((?:https?|ftp)\S+|image)([;.,]?(?:\s|$))/.match(word).captures
- else m,u=/\{(.+?)\}((?:https?|ftp)\S+|image)/.match(word).captures
+ @words << if word=~/\{(.+?)\}((?:https?|file|ftp)\S+|image)/
+ if word =~/\{.+?\}(?:(?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?|image)[;.,]?(?:\s|$)/
+ m,u,d=/\{(.+?)\}((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?|image)([;.,]?(?:\s|$))/.match(word).captures
+ else m,u=/\{(.+?)\}((?:https?|file|ftp)\S+|image)/.match(word).captures
d=''
end
case m
@@ -265,13 +265,13 @@ module SiSU_Tune
%{<a href="#{u}"><img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0"></a>#{caption}}
else %{<img src="#{image_path}/#{png}" #{w} #{h} naturalsizeflag="0" align="bottom" border="0">#{caption}}
end
- word.gsub!(/\{.+?\}((?:https?|ftp)\S+|image)/,ins)
+ word.gsub!(/\{.+?\}((?:https?|file|ftp)\S+|image)/,ins)
else
link=m[/(.+)/m]
png=m.scan(/\S+/)[0].strip
link=link.strip
ins=%{<a href="#{u}">#{link}</a>#{d}}
- word.gsub!(/\{.+?\}(?:https?|ftp)\S+/,ins)
+ word.gsub!(/\{.+?\}(?:https?|file|ftp)\S+/,ins)
end
word
else word
@@ -304,8 +304,8 @@ module SiSU_Tune
para.gsub!(/<:image\s+(\S+)\s+>/,
%{<img src="#{@env.url.images_local}/\\1" naturalsizeflag="0" align="bottom" border="0">})
end
- if para =~/\{.+?\}((?:http|ftp)\S+|image)/
- @word_mode=para.scan(/\{.+?\}(?:(?:https?|ftp)\S+|image)|\S+/)
+ if para =~/\{.+?\}((?:https?|file|ftp)\S+|image)/
+ @word_mode=para.scan(/\{.+?\}(?:(?:https?|file|ftp)\S+|image)|\S+/)
word_mode=urls(@word_mode)
words=word_mode.join(' ')
para.gsub!(/.+/,words)
@@ -326,9 +326,9 @@ module SiSU_Tune
if (para =~/\b\S+\@\S+?\.\S+/ and para !~/(\"\S+\@\S+?\.\S+\"|>\S+\@\S+?\.\S+?<)/)
para.gsub!(/\b(\S+\@\S+?\.\S+)(\s)/,'&lt;<a href="mailto:\1">\1</a>&gt;\2')
end
- para.gsub!(/\b[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
- para.gsub!(/((?:^|\s)[}])((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
- para.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
+ para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
+ para.gsub!(/((?:^|\s)[}])((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
if (para =~/..\/\S+/ and para !~/(\"..\/\S+?\"|>\s*..\/\S+<)/)
para.gsub!(/(\.\.\/\S+)/,'<a href="\1">\1</a>')
end
diff --git a/lib/sisu/v0/hub.rb b/lib/sisu/v0/hub.rb
index 12e477c0..52937b8e 100644
--- a/lib/sisu/v0/hub.rb
+++ b/lib/sisu/v0/hub.rb
@@ -152,7 +152,10 @@ module SiSU
when /^odf$/; SiSU_ODF::Source.new(@opt).read # -o
when /^xml_md_oai_pmh_dc$/; SiSU_XML_metadata::OAI_PMH.new(@opt).read # -O
when /^texpdf$/; SiSU_TeX::Source.new(@opt).read # -p
+ when /^manpage$/; SiSU_manpage::Source.new(@opt).read # -i
when /^texinfo$/; SiSU_TexInfo::Source.new(@opt).read # -I
+ #when /^plaintext_exp$/; SiSU_Plaintext_exp::Source.new(@opt).read # -j
+ #when /^manpage_exp$/; SiSU_manpage_exp::Source.new(@opt).read # -J
#when /^docbook$/; SiSU_Docbook::Source.new(@opt).read # -B
when /^html$/; SiSU_HTML::Source.new(@opt).read # -h -H
when /^xml$/; SiSU_XML_SAX::Source.new(@opt).read # -x
@@ -287,7 +290,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
def actions
if @opt.mod.inspect =~/--convert|--to|--from/; require "#{SiSU_lib}/sst_convert_markup"
end
- if @opt.cmd =~/([AabCcDdEeFfgGHhIiLMmNnOoprRSsTtQqUuVvwWXxYyZ_0-9])/ and
+ if @opt.cmd =~/([AabCcDdEeFfgGHhIiJjLMmNnOopQqrRSsTtUuVvwWXxYyZ_0-9])/ and
@opt.cmd =~/^-/ and
@opt.mod.inspect !~/--(?:sitemaps|query|identify)/ or
@opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/ #and
@@ -296,7 +299,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
flag=SiSU_Env::Info_processing_flag.new
extra=''
if @opt.cmd !~/[mn]/
- extra+=if @opt.cmd =~/[abeghHhINOoptTwXxz]/ and @opt.cmd !~/[mn]/; 'm' #% add dal
+ extra+=if @opt.cmd =~/[abeghHhIiJjNOoptTwXxz]/ and @opt.cmd !~/[mn]/; 'm' #% add dal
elsif ((@opt.cmd =~/[Dd]/ or (@opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/)) \
and @opt.mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \
and @opt.cmd !~/[mn]/
@@ -305,7 +308,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
end
end
if @opt.cmd !~/y/
- extra+=if @opt.cmd =~/[abehHhINopsSstwXxz]/ and @opt.cmd !~/y/; 'y' #% add manifest
+ extra+=if @opt.cmd =~/[abehHhIiJjNopsSstwXxz]/ and @opt.cmd !~/y/; 'y' #% add manifest
elsif (@opt.cmd =~/[Dd]/ or @opt.mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/) and @opt.files[0] !~/^remove$/ and @opt.cmd !~/y/; 'y' #% add manifest
else ''
end
@@ -375,8 +378,8 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
path_image='./_sisu/processing/external_document/image'
path_skin='./_sisu/processing/external_document/skin/doc'
@get_s,@get_p=[],[]
- re_s=/(http:\/\/\S+?\.sst)/
- re_p=/(http:\/\/\S+?(?:\/sisupod(?:\.zip)?|\.ssp))/
+ re_s=/((?:https?|file):\/\/\S+?\.sst)/
+ re_p=/((?:https?|file):\/\/\S+?(?:\/sisupod(?:\.zip)?|\.ssp))/
@opt.files.each do |fns|
if fns =~re_s
@get_s << re_s.match(fns)[1] if re_s
@@ -396,10 +399,10 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
threads << Thread.new(requested_page) do |url|
open(url) do |f|
raise "#{url} not found" unless f
- re_fnb=/(http:\/\/[^\/ ]+?\/[^\/ ]+?)\/\S+?\/([^\/]+?)\.ss(t)/ #revisit and remove DO
+ 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_local' #check on
- doc_skin_dir = /(http:\/\/\S+?)\/[^\/]+?\.sst$/.match(url).captures.join + '/_sisu/skin/doc'
+ 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)
@@ -445,7 +448,7 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
retry unless @retry_count > 1
ensure
end
- @opt.files=@opt.files.collect {|x| x=x.gsub(/http:\/\/\S+\/(\S+)\.sst/,'\1.-sst') }
+ @opt.files=@opt.files.collect {|x| x=x.gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst/,'\1.-sst') }
end
if @opt.cmd=~/m/; op('dal','dal') #% -m dal
end
@@ -496,8 +499,14 @@ p "here #{__FILE__} #{__LINE__}" if @opt =~/M/
end
if @opt.cmd =~/p/; op('texpdf','LaTeX pdf') #% -p latex/ texpdf
end
+ if @opt.cmd =~/i/; op('manpage','manpage') #% -i manpage
+ end
if @opt.cmd =~/I/; op('texinfo','TeX Info') #% -I texinfo (i taken by db import)
end
+ #if @opt.cmd =~/j/; op('plaintext_exp','plaintext exp') #% -j plaintext
+ #end
+ #if @opt.cmd =~/J/; op('manpage_exp','manpage exp') #% -J manpage
+ #end
if @opt.cmd =~/D/ or @opt.mod.inspect =~/--pgsql/; op('dbi','postgresql') #% -D DB postgresql
end
if @opt.cmd =~/d/ or @opt.mod.inspect =~/--sqlite/; op('dbi','sqlite') #% -d DB sqlite
diff --git a/lib/sisu/v0/manpage.rb b/lib/sisu/v0/manpage.rb
new file mode 100644
index 00000000..dfc1ebf8
--- /dev/null
+++ b/lib/sisu/v0/manpage.rb
@@ -0,0 +1,519 @@
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Ralph Amissah All Rights Reserved.
+
+ * License: GPL 3 or later:
+
+ SiSU, a framework for document structuring, publishing and search
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Ralph Amissah
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program. If not, see <http://www.gnu.org/licenses/>.
+
+ If you have Internet connection, the latest version of the GPL should be
+ available at these locations:
+ <http://www.fsf.org/licenses/gpl.html>
+ <http://www.gnu.org/copyleft/gpl.html>
+ <http://www.jus.uio.no/sisu/gpl.fsf>
+
+ * SiSU uses:
+ * Standard SiSU markup syntax,
+ * Standard SiSU meta-markup syntax, and the
+ * Standard SiSU object citation numbering and system
+
+ * Hompages:
+ <http://www.jus.uio.no/sisu>
+ <http://www.sisudoc.org>
+
+ * Download:
+ <http://www.jus.uio.no/sisu/SiSU/download.html>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: manpage text generation, stripped manpage output (unix,
+ linefeed)
+
+=end
+module SiSU_manpage
+ require "#{SiSU_lib}/dal"
+ require "#{SiSU_lib}/sysenv"
+ include SiSU_Env
+ include SiSU_Param
+ include SiSU_Viz
+ require "#{SiSU_lib}/manpage_format"
+ include Format
+ require "#{SiSU_lib}/shared_txt"
+ pwd=Dir.pwd
+ @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0
+ @@tablefoot=''
+ class Source
+ def initialize(opt)
+ @opt=opt
+ if @opt.fns =~/(.+?)\.[_-]?sst$/
+ @@dostype='unix endnotes'
+ else puts "#{sf} not a processed file type"
+ end
+ end
+ def read
+ begin
+ @md=SiSU_Param::Parameters.new(@opt).get
+ @env=SiSU_Env::Info_env.new(@opt.fns)
+ path=@env.path.output_tell
+ tool=if @opt.cmd =~/[MVv]/; "#{@env.program.text_editor} #{path}/man/#{@md.fn[:manpage]}"
+ else ''
+ end
+ tell=SiSU_Screen::Ansi.new(@opt.cmd,'Manpage',tool)
+ tell.green_hi_blue unless @opt.cmd =~/q/
+ tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/man/#{@md.fn[:manpage]}")
+ tell.flow if @opt.cmd =~/[MV]/
+ my_make=SiSU_Env::Create_file.new(@opt.cmd,@opt.fns)
+ @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
+ SiSU_manpage::Source::Scroll.new(@dal_array,@md).songsheet
+ SiSU_Env::Info_skin.new(@md).select #watch
+ rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error
+ ensure
+ end
+ end
+ private
+ class Split_text_object <Source
+ require "#{SiSU_lib}/manpage_format"
+ include SiSU_Viz
+ include Format
+ @@alt_id_count=0
+ @@dp=nil
+ attr_reader :format,:lev,:text,:ocn,:lev_para_ocn
+ def initialize(para)
+ @para=para
+ @format,@ocn='null','null'
+ @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ end
+ def lev_segname_para_ocn
+ @text=nil
+ if @para =~/^(\d~|<:.+?>).+?<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
+ if /^(([1-6])~(\S+))\s+(\S.+?)<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m.match(@para)
+ @format,@lev,segname,@text,@ocn=$1,$2,$3,$4,$5
+ elsif /^(([1-6])~)\s+(\S.+?)<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m.match(@para)
+ @format,@lev,@text,@ocn=$1,$2,$3,$4
+ elsif /<:(.+?)>\s*(\S.+?)<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m.match(@para)
+ @format,@text,@ocn=$1,$2,$3
+ elsif /^(([1-6])~(\S+))\s+(\S.+?)<~(\d+);(?:\w|[0-6]:)\d+;[um]\d+><#@dp:#@dp>$/m.match(@para)
+ @@alt_id_count+=1
+ @format,@lev,segname,@text,@ocn=$1,$2,$3,$4,"x#{@@alt_id_count}"
+ elsif /^(([1-6])~)\s+(\S.+?)<~(\d+);[um]\d+;\w\d+><#@dp:#@dp>$/m.match(@para)
+ @@alt_id_count+=1
+ @format,@lev,@text,@ocn=$1,$2,$3,"x#{@@alt_id_count}"
+ end
+ else
+ if /(.+?)<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m.match(@para)
+ @text,@ocn=$1,$2
+ end
+ if @para !~/<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$|^$/ #added 2002w06
+ @text=/(.+?)/m.match(@para)[1]
+ end
+ if /^((\d)~(?:~\S+)?)\s+(.+)/m.match(@para)
+ @format,@lev,@text=$1,$2,$3
+ end
+ end
+ format=@format.dup
+ @lev_para_ocn=if @para =~/.+<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
+ Format::Format_text_object.new(format,@text,@ocn)
+ else
+ Format::Format_text_object.new(format,@text,"<~(\d+);[um]\d+;\w\d+><#@dp:#@dp>")
+ end
+ self
+ end
+ end
+ class Scroll <Source
+ require "#{SiSU_lib}/defaults"
+ require "#{SiSU_lib}/shared_txt"
+ include SiSU_text_utils
+ @@endnotes={ :para=>[],:end=>[] }
+ @@dp=nil
+ def initialize(data,md)
+ @data,@md=data,md
+ @url_brace=SiSU_Viz::Skin.new.url_decoration
+ @vz=SiSU_Env::Get_init.instance.skin
+ @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ @regx=/^(?:(?:<:p[bn]>\s*)?\d~(?:(\S+))?\s+)?(.+?)\s*<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m # 2004w18 pb pn removal added
+ @tab="\t"
+ @br="\n"
+ @@dostype='unix endnotes'
+ @manpage={ :body=>[],:open=>[],:close=>[],:head=>[],:metadata=>[],:tail=>[],:endnotes=>[] }
+ end
+ def songsheet
+ manpage=markup(@data)
+ publish(manpage)
+ end
+ # Used for extraction of endnotes from paragraphs
+ def extract_endnotes(para='')
+ notes=para.scan(/~[{\[]([\d*+]+\s+.+?)\s*<#@dp>[}\]]~/)
+ @n=[]
+ notes.each do |n| #high cost to deal with <br> appropriately within manpage, consider
+ n=n.dup.to_s
+ if n =~/<br(?: \/)?>/
+ fix = n.split(/<br(?: \/)?>/) #watch #added
+ fix.each do |x|
+ unless x.empty?; @n << x
+ end
+ end
+ else @n << n
+ end
+ end
+ notes=@n.flatten
+ notes.each do |e|
+ util=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_text_utils::Wrap.new(e.to_s,78,4,1)
+ else SiSU_text_utils::Wrap.new(e.to_s,78,0,1)
+ end
+ wrap=util.line_wrap
+ if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
+ wrap.gsub!(/(["''])/,"\\\\\\1") # quotation marks need escape
+ wrap.gsub!(/^\s*([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
+.TP
+.BI \\1.
+\\2
+GSUB
+ )
+ else
+ wrap.gsub!(/^(.+)\Z/m, <<GSUB
+\\1
+GSUB
+ )
+ end
+ @@endnotes[:para] << wrap
+ @@endnotes[:end] << wrap
+ @@endnotes
+ end
+ end
+ def manpage_metadata(meta)
+ util=SiSU_text_utils::Wrap.new(meta.text,78,15,1)
+ txt=util.line_wrap
+ @manpage[:metadata] <<= if meta.type == 'meta'
+ <<WOK
+
+#{@tab}#{meta.el}: #{txt}
+WOK
+ else ''
+ end
+ end
+ def manpage_tail
+ SiSU_Env::Info_skin.new(@md).select
+ vz=SiSU_Env::Get_init.instance.skin
+ generator="Generated by: #{@md.sisu_version[:project]} #{@md.sisu_version[:version]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" if @md.sisu_version[:version]
+ lastdone="Last Generated on: #{Time.now}"
+ rubyv="Ruby version: #{@md.ruby_version}"
+ sc=if @md.sc_info
+ "Source file: #{@md.sc_filename}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}"
+ else ''
+ end
+ @manpage[:tail] <<<<WOK
+#@br
+.TP
+Other versions of this document:
+.TP
+manifest: <#{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:manifest]}>
+.TP
+html: <#{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:toc]}>
+.TP
+pdf: <#{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:pdf_p]}>
+.TP
+pdf: <#{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:pdf_l]}>
+.\" .TP
+.\" manpage: #{vz.url_root_http}/#{@md.fnb}/#{@md.fn[:manpage]}
+.TP
+at: <#{vz.url_site}>
+.TP
+#{sc}
+.TP
+* #{generator}
+.TP
+* #{rubyv}
+.TP
+* #{lastdone}
+.TP
+* SiSU #{vz.url_sisu}
+WOK
+ end
+ def manpage_structure(para='',lv='',ocn='',hname='') #% Used to extract the structure of a document
+ lv=lv.to_i
+ n=lv - 1
+ n3=lv + 2
+ lv=nil if lv == 0
+ wrapped=if para[@regx]
+ paragraph=para[@regx,2]
+ if paragraph =~/<:i([1-9])>/
+ m=$1.to_i
+ paragraph.gsub!(/<:i#{m}>/,'')
+ util=SiSU_text_utils::Wrap.new(paragraph,78,m*2)
+ else util=SiSU_text_utils::Wrap.new(paragraph,78,0)
+ end
+ util.line_wrap
+ end
+ if lv
+ times=wrapped.length
+ times=78 if times > 78
+ @manpage[:body] << case lv
+ when 1; '.SH ' << @br << wrapped.upcase << @br << '.BR'
+ when 2..3; '.SH ' << @br << wrapped.upcase << @br << '.BR'
+ when 4; '.SH ' << @br << wrapped.upcase << @br << '.BR'
+ when 5..6; '.SH ' << @br << wrapped.upcase << @br
+ #when 1; '.SH ' + wrapped.upcase << @br << '.BR'
+ #when 2..3; '.SH ' + wrapped.upcase << @br << '.BR'
+ #when 4; '.SH ' + wrapped.upcase << @br << '.BR'
+ #when 5..6; '.SH ' + wrapped.upcase << @br
+ ##when 1; '.SH ' + wrapped.upcase << @br << '.TP' << @br # << '*'*times << @br
+ ##when 2..3; '.SH ' + wrapped.upcase << @br << '.TP' << @br # << '='*times << @br
+ ##when 4; '.SH ' + wrapped.upcase << @br << '.TP' << @br # << '-'*times << @br
+ ##when 5..6; '.SH ' + wrapped.upcase << @br << '.TP' << @br # << '.'*times << @br
+ end
+ else
+ ##@manpage[:body] << wrapped << '.TP' # main text, contents, body KEEP
+ #@manpage[:body] << '.BR' << wrapped # main text, contents, body KEEP [consider s/.BR/.PP/]
+
+ @manpage[:body] << if wrapped =~/^\.BI\s/ # main text, contents, body KEEP
+ '.TP' << @br << wrapped.gsub!(/^\.BI\s/,'.B ') # sleight ... simpler output
+ else
+ '.BR' << @br << wrapped # [consider s/.BR/.PP/]
+ end
+ end
+ if @@endnotes[:para] and @@dostype =~/footnote/ #edit out to switch off endnotes following paragraph to which they belong
+ @manpage[:body] << @br
+ @@endnotes[:para].each { |e| @manpage[:body] << e << @br }
+ elsif @@endnotes[:para] and @@dostype =~/endnote/
+ @manpage[:body] << @br*2
+ end
+ @@endnotes[:para]=[]
+ end
+ def markup(data) # Used for major markup instructions
+ dir=SiSU_Env::Info_env.new(@md.fns)
+ @data_mod,@endnotes,@level,@cont,@copen,@manpage_contents_close=Array.new(6){[]}
+ (0..6).each { |x| @cont[x]=@level[x]=false }
+ (4..6).each { |x| @manpage_contents_close[x]='' }
+ manpage_tail #($1,$2)
+ table_message='[table omitted, see other document formats]'
+ fix=[]
+ data.each do |para|
+ para.gsub!(/<!Th?¡.+/m,"#@br#{table_message}")
+ para.gsub!(/.+?<-#>/,'') # remove dummy headings (used by html) #check
+ para.gsub!(/_\*\s+/,'* ') # bullet markup, marked down
+ para.gsub!(/<sup>(.+?)<\/sup>/,'^\1^')
+ para.gsub!(/<sub>(.+?)<\/sub>/,'[\1]')
+ para.gsub!(/<i>(.+?)<\/i>/,'<:br>.I \1<:br>')
+ para.gsub!(/\A<b>(.+?)<\/b><br \/>/m,'<:br>.BI \1<:br>')
+ para.gsub!(/<b>(.+?)<\/b>/,'<:br>.B \1<:br>')
+ para.gsub!(/<u>(.+?)<\/u>/,'<:br>.I \1<:br>')
+ unless para =~/<:code>/
+ para.gsub!(/(?:^|\s)\{(.+?)\}((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,"\\1 #{@url_brace.txt_open}\\2#{@url_brace.txt_close}\\3")
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,"\\1#{@url_brace.txt_open}\\2#{@url_brace.txt_close}\\3")
+ @manpage[:endnotes]=extract_endnotes(para)
+ para.gsub!(/~[{\[]([\d*+]+)\s+(?:.+?)[}\]]~/,'[^\1]') # endnote marker marked up
+ para.gsub!(/&amp;/,'&')
+ para.gsub!(/&#033;/,'!')
+ para.gsub!(/&#035;/,'#')
+ para.gsub!(/&#042;/,'*')
+ para.gsub!(/&#045;/,'-')
+ para.gsub!(/&#047;/,'/')
+ para.gsub!(/&#095;/,'_')
+ para.gsub!(/&#123;/,'{')
+ para.gsub!(/&#125;/,'}')
+ para.gsub!(/&#126;/,'~')
+ para.gsub!(/&#169;/,'©')
+ end
+ para.gsub!(/-/,'\-') #manpages use this
+ para.gsub!(/&#126;/,'~') if para #manpages use this
+ if para =~/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/
+ if para =~/<:code>/
+ para.gsub!(/_</,'<'); para.gsub!(/_>/m,'>') #code-block: angle brackets special characters
+ end
+ para.gsub!(/<br(?: \/)?>/,"\n\n.P\n\n") # watch
+ para.gsub!(/<:(?:group|verse|alt)(?:\\-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,'')
+ para.gsub!(/<:code>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,"\n\n.nf\n\n")
+ para.gsub!(/<:code\\-end>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,"\n\n.fi\n\n")
+ else
+ para.gsub!(/<br(?: \/)?>/,"\n\n") #watch introduces a bug
+ end
+ blit=para.scan(/\[[^\]]+\]|[^\[]+/)
+ blit_array=[]
+ blit.each do |x|
+ if x =~/^\[/
+ x.gsub!(/\s+/,' \ ') #manpages use this
+ elsif x =~/\.(?:TP|BI)\s/
+ x.gsub!(/\s+/,' \ ') #manpages use this
+ else x
+ end
+ blit_array << x
+ end
+ para = blit_array.join
+ para.gsub!(/\s\\\s+(<:br>|<br(?: \/)?>)/,'\1') #a messy solution
+ para.gsub!(/\s(\[)/,' \ \1') #manpages use this
+ para.gsub!(/<:p[bn]>/,'') # remove page breaks
+ para.gsub!(/^\s*<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/,'') # remove empty lines - check
+ para.gsub!(/(^|\s)[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,'\1\2\3')
+ para.gsub!(/<a href=".+?">(.+?)<\/a>/m,'\1')
+ para.gsub!(/<:name#\S+?>/,'') # remove name links
+ para.gsub!(/&nbsp;/,' ') # decide on
+ para.gsub!(/(["''])/,"\\\\\\1") # quotation marks need escape
+ #para.gsub!(/(["''])/,"\\\\\\1") # 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"]')
+ wordlist=para.scan(/\S+/)
+ if para =~/^0~(\S+)\s+(.+?)\Z/m # for headers
+ d_meta=SiSU_text_utils::Header_scan.new(@md,para).meta
+ if d_meta; manpage_metadata(d_meta)
+ end
+ end
+ if para !~/(^0~|<ENDNOTES>|<EOF>)/
+ if para =~@regx #/.+?<~\d+;\w\d+;\w\d+>.*/ #watch change
+ paranum=para[@regx,3]
+ @p_num=Format::Paragraph_number.new(paranum)
+ end
+ @sto=Split_text_object.new(para).lev_segname_para_ocn
+ ### problem in scroll, it appears tables are getting paragraph numbers
+ m=/<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
+ if para =~m and para=~/\S+/
+ para=case @sto.format
+ when /^(1)~(?:(\S+))?/
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body1
+ when /^(2)~(?:(\S+))?/
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body2
+ when /^(3)~(?:(\S+))?/
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body3
+ when /^(4)~(\S+)/ # work on see SiSU_text_parts::Split_text_object
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body4
+ when /^(5)~(?:(\S+))?/
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body5
+ when /^(6)~(?:(\S+))?/
+ manpage_structure(para,$1,@sto.ocn,$2)
+ @sto.lev_para_ocn.heading_body6
+ #when /^(i1)$/
+ # #formatMono.gsubBody
+ # #para=@sto[:lev_para_ocn].scrIndent1
+ #when /^(i2)$/
+ # formatMono.gsubBody
+ # para=@sto[:lev_para_ocn].scrIndent2
+ #when /^(center)$/
+ # para.gsub!(/(.+)/,
+ # %{<center>(\\1)</center>})
+ # para=@sto[:lev_para_ocn].scrPara
+ #when /^(b|bold)$/
+ # para.gsub!(/(.+)/,
+ # %{<b>(\\1)</b>})
+ # para=@sto[:lev_para_ocn].scrPara
+ #when /null/ # see whether u can improve
+ # if (para !~/#{@margin.txt_0}|#{@margin.txt_1}|#{@margin.txt_2}/)
+ # #formatMono.gsubBody
+ # #para=@sto[:lev_para_ocn].scrPara
+ # end
+ else
+ manpage_structure(para,nil,nil,nil) #watch may be problematic
+ para
+ end
+ elsif para =~/#{table_message}/
+ @manpage[:body] << para << @br
+ elsif para =~/(Note|Endnotes?)/ and para !~/<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
+ elsif para =~/(MetaData)/ and para =~/<~(\d+);[um]\d+;\w\d+><#@dp:#@dp>$/ #debug 2003w46 add rc info ####suspect visit
+ #formatMono=MonoSiSU.new('<br /><a name="metadata">MetaData</a>')
+ #para=formatMono.bold_para
+ elsif para.include? 'Owner Details' and para !~/<~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
+ #formatMono=MonoSiSU.new('<br /><a name="owner.details">Owner Details</a>')
+ #@@manpage[:owner_details]=formatMono.bold_para
+ #para=''
+ elsif para =~/(¡|<!Th?)/ #tables !
+ elsif para =~/(.*)<!#!>(.*)/
+ one,two=$1,$2
+ format_text=Format_text_object.new(one,two)
+ para=format_text.seg_no_paranum
+ end
+ para='' if (para =~/<a name="n\d+">/ and para =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
+ case para
+ when /<:i[1-9]>/
+ if para =~/.*<:#>.*$/m
+ format_text=Format_text_object.new(para,'')
+ para=format_text.scr_indent_one_no_paranum
+ end
+ end
+ if para !~/#{@vz.margin_txt_0}|#{@vz.margin_txt_1}|#{@vz.margin_txt_2}/
+ # i don't get the condition for no paranum
+ end
+ if para =~/<:center>/
+ one,two=/(.*)<:center>(.*)/.match(para)[1,2]
+ format_text=Format_text_object.new(one,two)
+ para=format_text.center
+ end
+ para.gsub!(/&#126;/,'~') if para #manpages use this
+ para.gsub!(/&#123;/,'{') if para #manpages use this
+ para.gsub!(/<!.+!>/,' ') if para ## Clean Prepared Text
+ para.gsub!(/<:\S+>/,' ') if para ## Clean Prepared Text
+ end
+ end
+ @manpage
+ end
+ def publish(manpage)
+ divider='='
+ content=[]
+ date=if @md.dc_date; @md.dc_date
+ else '2007' #date missing decide on action
+ end
+ proj=SiSU_Env::Info_version.new.get_version
+ manpage[:open] = %{.TH "#{@md.fnb}" "1" "#{date}" "#{proj[:version]}" "#{@md.title}"}
+ content << manpage[:open]
+ content << manpage[:head]
+ content << manpage[:body]
+ content << @@endnotes[:end] if @@dostype =~/endnotes/
+ #content << manpage[:metadata]
+ #content << manpage[:owner_details] if @md.stmp =~/\w+/ #not used?
+ content << manpage[:tail]
+ Output.new(content,@md).manpage
+ @@endnotes[:para],@@endnotes[:end]=[],[]
+ end
+ end
+ class Output <Source
+ include SiSU_Param
+ include SiSU_Env
+ def initialize(content,md)
+ @content,@md=content,md
+ end
+ def manpage #%manpage output
+ SiSU_Env::SiSU_file.new(@md).mkdir
+ filename_manpage=SiSU_Env::SiSU_file.new(@md,@md.fn[:manpage]).mkfile_man
+ @sisu=[]
+ @content.each do |para| # this is a hack
+ if para.class == Array and para.length > 0
+ para.each do |line|
+ line.gsub!(/\s+$/m,'')
+ filename_manpage.puts line #unix manpage
+ end
+ else filename_manpage.puts para #unix manpage # /^([*=-]|\.){5}/
+ end
+ end
+ filename_manpage.close
+ end
+ end
+ end
+end
+__END__
diff --git a/lib/sisu/v0/manpage_format.rb b/lib/sisu/v0/manpage_format.rb
new file mode 100644
index 00000000..20f62fb3
--- /dev/null
+++ b/lib/sisu/v0/manpage_format.rb
@@ -0,0 +1,108 @@
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Ralph Amissah All Rights Reserved.
+
+ * License: GPL 3 or later:
+
+ SiSU, a framework for document structuring, publishing and search
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Ralph Amissah
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program. If not, see <http://www.gnu.org/licenses/>.
+
+ If you have Internet connection, the latest version of the GPL should be
+ available at these locations:
+ <http://www.fsf.org/licenses/gpl.html>
+ <http://www.gnu.org/copyleft/gpl.html>
+ <http://www.jus.uio.no/sisu/gpl.fsf>
+
+ * SiSU uses:
+ * Standard SiSU markup syntax,
+ * Standard SiSU meta-markup syntax, and the
+ * Standard SiSU object citation numbering and system
+
+ * Hompages:
+ <http://www.jus.uio.no/sisu>
+ <http://www.sisudoc.org>
+
+ * Download:
+ <http://www.jus.uio.no/sisu/SiSU/download.html>
+
+ * Ralph Amissah
+ <ralph@amissah.com>
+ <ralph.amissah@gmail.com>
+
+ ** Description: manpage formatting template
+
+=end
+module Format
+ require "#{SiSU_lib}/param"
+ include SiSU_Param
+ include SiSU_Viz
+ class Paragraph_number
+ def initialize(paranum)
+ @paranum=/(\d+)/m.match(paranum)[1]
+ end
+ def display
+ @paranum.gsub(/(\d+)/,'<font size="1" color="#777777">&nbsp;&nbsp;\1</font>')
+ end
+ def name
+ @paranum.gsub(/(\d+)/,'<a name="\1"></a>')
+ end
+ def goto
+ @paranum.gsub(/(\d+)/,'<a href="#\1">')
+ end
+ end
+ class Format_text_object
+ @@dp=nil
+ def initialize(one,two,three)
+ one.gsub!(/\.(html|pdf|php)/,'') if one =~/\.\.\/\S+/
+ @one,@two,@three=one,two,three
+ rgx=/^[1-6-]~/
+ @one.gsub!(rgx,'') if @one =~rgx
+ @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
+ rgx=/~\{[\d*+]+\s+(.+?)<#@dp>\}~/
+ @one.gsub!(rgx,'\1') if @one =~rgx
+ @link,@linkname=one,two
+ @vz=SiSU_Env::Get_init.instance.skin
+ end
+ def scr_endnote_body
+ "<endnote>#@one</endnote> "
+ end
+ def heading_body1
+ end
+ def heading_body2
+ end
+ def heading_body3
+ end
+ def heading_body4
+ end
+ def heading_body5
+ end
+ def heading_body6
+ end
+ end
+ class XML
+ end
+end
+__END__
+
diff --git a/lib/sisu/v0/odf.rb b/lib/sisu/v0/odf.rb
index 93a5be52..15b95a3c 100644
--- a/lib/sisu/v0/odf.rb
+++ b/lib/sisu/v0/odf.rb
@@ -259,7 +259,7 @@ module SiSU_ODF
end
def image(para)
para.gsub!(@serial,'')
- m=para.scan(/(\{\s*(.+?)\}((?:https?|ftp)\S+|image))/)
+ m=para.scan(/(\{\s*(.+?)\}((?:https?|file|ftp)\S+|image))/)
if m; m.each do |i|
cont,url=i[1],i[2]
cont.gsub!(/([)(\]\[])/,"\\\\\\1")
@@ -279,7 +279,7 @@ module SiSU_ODF
end
def text_link(para)
para.gsub!(@serial,'')
- m=para.scan(/(\{([^}]+?)\}((?:https?|ftp)\S+?))([;.,]?(?=\s|$))/) #sort
+ m=para.scan(/(\{([^}]+?)\}((?:https?|file|ftp)\S+?))([;.,]?(?=\s|$))/) #sort
if m
m.each do |i|
txt,url,trail=i[1],i[2]
@@ -295,11 +295,11 @@ module SiSU_ODF
end
def normal(para) #P1 - P3
para.gsub!(@serial,'')
- para.gsub!(/\b[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,
+ para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,
%{<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>\\2}) #http ftp matches escaped, no decoration
- para.gsub!(/((?:^|\s)[}])((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
+ para.gsub!(/((?:^|\s)[}])((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
'\1<text:a xlink:type="simple" xlink:href="\2">\2</text:a>\3') #special case \{ e.g. \}http://url
- para.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
%{\\1#{@url_brace.xml_open}<text:a xlink:type="simple" xlink:href="\\2">\\2</text:a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
#para.gsub!(/\b((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/, also works
#%{#{@url_brace.xml_open}<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>#{@url_brace.xml_close}\\2}) #http ftp matches with decoration
@@ -379,7 +379,7 @@ module SiSU_ODF
para.split(/<:?br(?: \/)?>/).each do |parablock|
parablock=group_clean(parablock)
parablock.gsub!(/^\s*$/,'<br />')
- parablock.gsub!(/\b[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,
+ parablock.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,
%{<text:a xlink:type="simple" xlink:href="\\1">\\1</text:a>\\2}) #http ftp matches escaped, no decoration
parray << %{<text:p text:style-name="P5">#{parablock}</text:p>} if parablock =~/\S+/
end
@@ -400,8 +400,8 @@ module SiSU_ODF
#extract_endnotes(para)
#para=fontface(para)
para=unless para=~/^<:code>/
- para=if para =~/\{\s*\S+?\.(?:png|jpg|gif)\s.+?\}(?:(?:https?|ftp):\S+|image)/; image(para)
- elsif para =~/\{.+?\}(?:(?:https?|ftp):\S+|image)/; text_link(para)
+ para=if para =~/\{\s*\S+?\.(?:png|jpg|gif)\s.+?\}(?:(?:https?|file|ftp):\S+|image)/; image(para)
+ elsif para =~/\{.+?\}(?:(?:https?|file|ftp):\S+|image)/; text_link(para)
else para
end
else para
diff --git a/lib/sisu/v0/options.rb b/lib/sisu/v0/options.rb
index 1ca771ff..8b014c04 100644
--- a/lib/sisu/v0/options.rb
+++ b/lib/sisu/v0/options.rb
@@ -94,7 +94,7 @@ module SiSU_commandline
end
s << " #{y}" unless y.empty?
end
- s.strip!
+ s.strip! # String.strip is broken in ruby 1.9.0 (2007-09-10 patchlevel 0) [i486-linux], 2007-09-18:38/2
a=s.split(/\s+/)
a.each do |x|
if x =~/^-[a-z0-5]+/i or x =~/^--\S+/
@@ -103,7 +103,7 @@ module SiSU_commandline
if x =~/^--\S+/; m << x
end
elsif x =~ /(?:\.(?:[_-]?sst(?:\.xml)?|ssm|ssi|sx[sdn]\.xml|s[1-3]|kdi|ssp)|sisupod(?:\.zip)?)$/
- if x =~/^http:\/\/\S+/; f << x
+ if x =~/^(?:https?|file):\/\/\S+/; f << x
elsif FileTest.file?(x); f << x
else puts "file not found: #{x}"
end
diff --git a/lib/sisu/v0/param.rb b/lib/sisu/v0/param.rb
index f4bf6a3f..446c2d46 100644
--- a/lib/sisu/v0/param.rb
+++ b/lib/sisu/v0/param.rb
@@ -459,12 +459,12 @@ module SiSU_Param
when /^(?:0~links|@links:)\s+(.+?)$/m #% processing
doc_links_str=$1
@lnk=[]
- if doc_links_str=~/\{.+?\}(?:(?:https?|ftp):\/|\.\.)\/\S+(?:\s|$)/
- doc_links=doc_links_str.scan(/\{.+?\}(?:(?:https?|ftp):\/|\.\.)\/\S+/)
+ if doc_links_str=~/\{.+?\}(?:(?:https?|file|ftp):\/|\.\.)\/\S+(?:\s|$)/
+ doc_links=doc_links_str.scan(/\{.+?\}(?:(?:https?|file|ftp):\/|\.\.)\/\S+/)
count=1
doc_links.each do |x|
@lnk[count]={}
- @lnk[count][:say],@lnk[count][:url]=/\{\s*(.+?)\s*\}((?:(?:https?|ftp):\/|\.\.)\/\S+)/im.match(x)[1,2]
+ @lnk[count][:say],@lnk[count][:url]=/\{\s*(.+?)\s*\}((?:(?:https?|file|ftp):\/|\.\.)\/\S+)/im.match(x)[1,2]
count +=1
end
else
@@ -473,7 +473,7 @@ module SiSU_Param
count=1
lnks.each do |x|
@lnk[count]={}
- if x =~/^\s*(?:(?:https?|ftp):\/\/|\.\.\/)/; @lnk[count][:url]=x
+ if x =~/^\s*(?:(?:https?|file|ftp):\/\/|\.\.\/)/; @lnk[count][:url]=x
else
@lnk[count][:say]=x
count +=1
@@ -536,14 +536,16 @@ module SiSU_Param
end
end
end
- case para
- when /~\{\s+.+?\}~/ #% processing
- en=para.scan(/~\{.+?\}~/)
- en.each { |e| @en[:sum] +=1 }
- when /~\^(?:\s|$)/ #% processing
- mk=para.scan(/~\^(?:\s|$)/)
- mk.each { |e| @en[:mark] +=1 }
- when /^\^~\s+\S/; @en[:note] +=1 #% processing
+ unless @code_flag
+ case para
+ when /~\{\s+.+?\}~/ #% processing
+ en=para.scan(/~\{.+?\}~/)
+ en.each { |e| @en[:sum] +=1 }
+ when /~\^(?:\s|$)/ #% processing
+ mk=para.scan(/~\^(?:\s|$)/)
+ mk.each { |e| @en[:mark] +=1 }
+ when /^\^~\s+\S/; @en[:note] +=1 #% processing
+ end
end
if para =~/~\{|\^~ |~\^|<:ee>/; @flag_auto_endnotes,@flag_endnotes=true,true
end
diff --git a/lib/sisu/v0/plaintext.rb b/lib/sisu/v0/plaintext.rb
index ddcf3a42..886e50a2 100644
--- a/lib/sisu/v0/plaintext.rb
+++ b/lib/sisu/v0/plaintext.rb
@@ -70,12 +70,12 @@ module SiSU_Plaintext
class Source
def initialize(opt)
@opt=opt
- if @opt.fns =~/(.+?)\.[_-]?sst$/
- case @opt.cmd
- when /[af]/; @@dostype='unix footnotes'
- when /e/; @@dostype='unix endnotes'
- when /[AF]/; @@dostype='msdos footnotes'
- when /E/; @@dostype='msdos endnotes'
+ @@dostype=if @opt.fns =~/(.+?)\.[_-]?sst$/
+ if @opt.mod.inspect =~ /--footnote/ and @opt.mod.inspect =~ /--dos/; 'msdos footnotes'
+ elsif @opt.mod.inspect =~ /--endnote/ and @opt.mod.inspect =~ /--dos/; 'msdos endnotes'
+ elsif @opt.mod.inspect =~ /--footnote/; 'unix footnotes'
+ elsif @opt.mod.inspect =~ /--endnote/; 'unix endnotes'
+ else 'unix footnotes'
end
else puts "#{sf} not a processed file type"
end
@@ -153,36 +153,36 @@ module SiSU_Plaintext
require "#{SiSU_lib}/defaults"
require "#{SiSU_lib}/shared_txt"
include SiSU_text_utils
- @@endnotes_para=[]
- @@plaintext={ :body=>[],:open=>[],:close=>[],:head=>[],:metadata=>[],:tail=>[],:endnotes=>[] }
+ @@endnotes={ :para=>[],:end=>[] }
@@dp=nil
def initialize(data,md)
@data,@md=data,md
@url_brace=SiSU_Viz::Skin.new.url_decoration
@vz=SiSU_Env::Get_init.instance.skin
@dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern
- @regx=/^(?:(?:<:p[bn]>\s*)?\d~(?:(\S+))?\s+)?(.+?)\s*<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/ #m # 2004w18 pb pn removal added
+ @regx=/^(?:(?:<:p[bn]>\s*)?\d~(?:(\S+))?\s+)?(.+?)\s*<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/m # 2004w18 pb pn removal added
@tab="\t"
- @br=case md.cmd
- when /[af]/
- @@dostype='unix footnotes'
- "\n"
- when /e/
- @@dostype='unix endnotes'
- "\n"
- when /[AF]/
+ @br=if md.mod.inspect =~ /--footnote/ and md.mod.inspect =~ /--dos/
@@dostype='msdos footnotes'
"\r\n"
- when /E/
+ elsif md.mod.inspect =~ /--endnote/ and md.mod.inspect =~ /--dos/
@@dostype='msdos endnotes'
"\r\n"
- else "\n"
+ elsif md.mod.inspect =~ /--footnote/
+ @@dostype='unix footnotes'
+ "\n"
+ elsif md.mod.inspect =~ /--endnote/
+ @@dostype='unix endnotes'
+ "\n"
+ else
+ @@dostype='unix footnotes'
+ "\n"
end
+ @plaintext={ :body=>[],:open=>[],:close=>[],:head=>[],:metadata=>[],:tail=>[] }
end
def songsheet
- @data=markup(@data)
- publish
- #@data.each { |x| puts x.inspect if x =~/\[table/ }
+ plaintext=markup(@data)
+ publish(plaintext)
end
# Used for extraction of endnotes from paragraphs
def extract_endnotes(para='')
@@ -201,13 +201,12 @@ module SiSU_Plaintext
end
notes=@n.flatten
notes.each do |e|
- util=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_text_utils::Wrap.new(e.to_s,70,4,1)
- else SiSU_text_utils::Wrap.new(e.to_s,70,1,1)
+ util=if e.to_s =~/^\[[\d*+]+\]:/; SiSU_text_utils::Wrap.new(e.to_s,78,4,1)
+ else SiSU_text_utils::Wrap.new(e.to_s,78,1,1)
end
wrap=util.line_wrap
if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
wrap.gsub!(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
-
\\1[\\2]: \\3
GSUB
)
@@ -217,14 +216,15 @@ GSUB
GSUB
)
end
- @@plaintext[:endnotes] << wrap
- @@endnotes_para << wrap
+ @@endnotes[:para] << "-#{wrap}"
+ @@endnotes[:end] << wrap
end
+ @@endnotes
end
def plaintext_metadata(meta)
- util=SiSU_text_utils::Wrap.new(meta.text,70,15,1)
+ util=SiSU_text_utils::Wrap.new(meta.text,78,15,1)
txt=util.line_wrap
- @@plaintext[:metadata] <<= if meta.type == 'meta'
+ @plaintext[:metadata] <<= if meta.type == 'meta'
<<WOK
#{@tab}#{meta.el}: #{txt}
@@ -242,7 +242,7 @@ WOK
"Source file: #{@md.sc_filename}#{@br}Version number: #{@md.sc_number}#{@br}Version date: #{@md.sc_date}#{@br}"
else ''
end
- @@plaintext[:tail] <<<<WOK
+ @plaintext[:tail] <<<<WOK
#@br
Other versions of this document: #@br
manifest:
@@ -269,37 +269,35 @@ WOK
n=lv - 1
n3=lv + 2
lv=nil if lv == 0
- extract_endnotes(para)
- para.gsub!(/~[{\[]([\d*+]+)\s+(?:.+?)[}\]]~/,'[^\1]') # endnote marker marked up
wrapped=if para[@regx]
paragraph=para[@regx,2]
if paragraph =~/<:i([1-9])>/
m=$1.to_i
paragraph.gsub!(/<:i#{m}>/,'')
- util=SiSU_text_utils::Wrap.new(paragraph,70,m*2)
- else util=SiSU_text_utils::Wrap.new(paragraph,70,0)
+ util=SiSU_text_utils::Wrap.new(paragraph,78,m*2)
+ else util=SiSU_text_utils::Wrap.new(paragraph,78,0)
end
util.line_wrap
end
if lv
times=wrapped.length
- times=70 if times > 70
- @@plaintext[:body] << case lv
+ times=78 if times > 78
+ @plaintext[:body] << case lv
when 1; wrapped.upcase << @br << '*'*times << @br
when 2..3; wrapped.upcase << @br << '='*times << @br
when 4; wrapped.upcase << @br << '-'*times << @br
when 5..6; wrapped.upcase << @br << '.'*times << @br
end
else
- @@plaintext[:body] << wrapped << @br # main text, contents, body KEEP
+ @plaintext[:body] << wrapped << @br # main text, contents, body KEEP
end
- if @@endnotes_para and @@dostype =~/footnote/ #edit out to switch off endnotes following paragraph to which they belong
- @@plaintext[:body] << @br
- @@endnotes_para.each {|e| @@plaintext[:body] << e << @br}
- elsif @@endnotes_para and @@dostype =~/endnote/
- @@plaintext[:body] << @br*2
+ if @@endnotes[:para] and @@dostype =~/footnote/ #edit out to switch off endnotes following paragraph to which they belong
+ @plaintext[:body] << @br
+ @@endnotes[:para].each {|e| @plaintext[:body] << e << @br}
+ elsif @@endnotes[:para] and @@dostype =~/endnote/
+ @plaintext[:body] << @br*2
end
- @@endnotes_para=[]
+ @@endnotes[:para]=[]
end
def markup(data) # Used for major markup instructions
dir=SiSU_Env::Info_env.new(@md.fns)
@@ -313,29 +311,44 @@ WOK
para.gsub!(/<!Th?¡.+/m,"#@br#{table_message}")
para.gsub!(/.+?<-#>/,'') # remove dummy headings (used by html) #check
para.gsub!(/_\*\s+/,'* ') # bullet markup, marked down
- #para.gsub!(/<br(?: \/)?>/,"\n") # introduces a bug
- para.gsub!(/&#169;/,'©') # bullet markup, marked down
- para.gsub!(/&amp;/,'&') # bullet markup, marked down
para.gsub!(/<sup>(.+?)<\/sup>/,'^\1^')
para.gsub!(/<sub>(.+?)<\/sub>/,'[\1]')
para.gsub!(/<i>(.+?)<\/i>/,'/\1/')
para.gsub!(/<b>(.+?)<\/b>/,'*\1*')
para.gsub!(/<u>(.+?)<\/u>/,'_\1_')
+ unless para =~/<:code>/
+ para.gsub!(/\{(.+?)\}((?:https?|file|ftp):\/\/\S+|image)/,'\1 [link:] \2')
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,"\\1#{@url_brace.txt_open}\\2#{@url_brace.txt_close}\\3")
+ para.gsub!(/_((?:https?|file|ftp):\/\/\S+)/,'\1')
+ extract_endnotes(para)
+ para.gsub!(/~[{\[]([\d*+]+)\s+(?:.+?)[}\]]~/,'[^\1]') # endnote marker marked up
+ para.gsub!(/&amp;/,'&')
+ para.gsub!(/&#033;/,'!')
+ para.gsub!(/&#035;/,'#')
+ para.gsub!(/&#042;/,'*')
+ para.gsub!(/&#045;/,'-')
+ para.gsub!(/&#047;/,'/')
+ para.gsub!(/&#095;/,'_')
+ para.gsub!(/&#123;/,'{')
+ para.gsub!(/&#125;/,'}')
+ para.gsub!(/&#126;/,'~')
+ para.gsub!(/&#169;/,'©')
+ end
if para =~/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/
if para =~/<:code>/
para.gsub!(/_</,'<'); para.gsub!(/_>/m,'>') #code-block: angle brackets special characters
end
para.gsub!(/<br(?: \/)?>/,"\n") # watch
para.gsub!(/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,'')
+ else para.gsub!(/<br(?: \/)?>/,"\n\n") # watch introduces a bug
end
para.gsub!(/<:p[bn]>/,'') # remove page breaks
para.gsub!(/^\s*<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/,'') # remove empty lines - check
- para.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,"\\1#{@url_brace.txt_open}\\2#{@url_brace.txt_close}\\3")
- para.gsub!(/(^|\s)[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,'\1\2\3')
+ para.gsub!(/(^|\s)[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,'\1\2\3')
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?|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\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
@@ -395,14 +408,14 @@ WOK
para
end
elsif para =~/#{table_message}/
- @@plaintext[:body] << para << @br
+ @plaintext[:body] << para << @br
elsif para =~/(Note|Endnotes?)/ and para !~/<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
elsif para =~/(MetaData)/ and para =~/<~(\d+);[um]\d+;\w\d+><#@dp:#@dp>$/ #debug 2003w46 add rc info ####suspect visit
#formatMono=MonoSiSU.new('<br /><a name="metadata">MetaData</a>')
#para=formatMono.bold_para
elsif para.include? 'Owner Details' and para !~/<~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/
#formatMono=MonoSiSU.new('<br /><a name="owner.details">Owner Details</a>')
- #@@plaintext[:owner_details]=formatMono.bold_para
+ #@plaintext[:owner_details]=formatMono.bold_para
#para=''
elsif para =~/(¡|<!Th?)/ #tables !
elsif para =~/(.*)<!#!>(.*)/
@@ -430,21 +443,22 @@ WOK
para.gsub!(/<:\S+>/,' ') if para ## Clean Prepared Text
end
end
+ @plaintext
end
- def publish
- divider="="
+ def publish(plaintext)
+ divider='='
content=[]
- content << @@plaintext[:open]
- content << @@plaintext[:head]
- content << @@plaintext[:body]
- content << @@plaintext[:endnotes] if @@dostype =~/endnotes/
- content << "#@br#{divider*70}#@br"
- content << @@plaintext[:metadata]
- content << "#@br#{divider*70}#@br" if @md.stmp =~/\w+/ #not used?
- content << @@plaintext[:owner_details] if @md.stmp =~/\w+/ #not used?
- content << @@plaintext[:tail]
+ content << plaintext[:open]
+ content << plaintext[:head]
+ content << plaintext[:body]
+ content << @@endnotes[:end] if @@dostype =~/endnotes/
+ content << "#@br#{divider*78}#@br"
+ content << plaintext[:metadata]
+ content << "#@br#{divider*78}#@br" if @md.stmp =~/\w+/ #not used?
+ content << plaintext[:owner_details] if @md.stmp =~/\w+/ #not used?
+ content << plaintext[:tail]
Output.new(content,@md).plaintext
- @@plaintext[:head],@@plaintext[:body],@@plaintext[:tail],@@plaintext[:metadata]=[],[],[],[]
+ @@endnotes[:para],@@endnotes[:end]=[],[]
end
end
class Output <Source
@@ -466,8 +480,10 @@ WOK
else filename_plaintext.puts para #unix plaintext # /^([*=-]|\.){5}/
end
end
+ filename_plaintext.close
end
end
end
end
__END__
+&#033;\|&#035;\|&&#042;\|&#045;\|&#047;\|&#095;\|&#123;\|&#125;\|&#126;\|&#
diff --git a/lib/sisu/v0/shared_html_lite.rb b/lib/sisu/v0/shared_html_lite.rb
index df6b0bcb..f258f0a9 100644
--- a/lib/sisu/v0/shared_html_lite.rb
+++ b/lib/sisu/v0/shared_html_lite.rb
@@ -87,10 +87,10 @@ module SiSU_Format_Shared
def urls(data)
@words=[]
data.each do |word|
- @words << if word=~/\{(.+?)\}((?:https?|ftp)\S+|image)/
- if word =~/\{(.+?)\}((?:https?|ftp)\S+|image)([;.,](?:\s|$))/
- m,u,d=/\{(.+?)\}((?:https?|ftp)\S+|image)([;.,](?:\s|$))/.match(word).captures
- else m,u=/\{(.+?)\}((?:https?|ftp)\S+|image)/.match(word).captures
+ @words << if word=~/\{(.+?)\}((?:https?|file|ftp)\S+|image)/
+ if word =~/\{(.+?)\}((?:https?|file|ftp)\S+|image)([;.,](?:\s|$))/
+ m,u,d=/\{(.+?)\}((?:https?|file|ftp)\S+|image)([;.,](?:\s|$))/.match(word).captures
+ else m,u=/\{(.+?)\}((?:https?|file|ftp)\S+|image)/.match(word).captures
d=''
end
case m
@@ -108,14 +108,14 @@ module SiSU_Format_Shared
%{<a href="#{u}">[#{png}]</a>#{caption}}
else %{[#{png}] #{caption}}
end
- word.gsub!(/\{.+?\}((?:https?|ftp)\S+|image)/,ins)
+ word.gsub!(/\{.+?\}((?:https?|file|ftp)\S+|image)/,ins)
else
link=m[/(.+)/m]
png=m.scan(/\S+/)[0].strip
link=link.strip
ins=%{<a href="#{u}">#{link}</a>#{d}}
#ins=%{#{link} <a href="#{u}">[link]</a>#{d}}
- word.gsub!(/\{.+?\}(?:https?|ftp)\S+/,ins)
+ word.gsub!(/\{.+?\}(?:https?|file|ftp)\S+/,ins)
end
word
else word
@@ -126,15 +126,15 @@ module SiSU_Format_Shared
end
def markup(para)
if para !~/^<:code>/
- if para =~/\{.+?\}((?:http|ftp)\S+|image)/
- wm=para.scan(/\{.+?\}(?:(?:https?|ftp)\S+|image)|\S+/)
+ if para =~/\{.+?\}((?:https?|file|ftp)\S+|image)/
+ wm=para.scan(/\{.+?\}(?:(?:https?|file|ftp)\S+|image)|\S+/)
word_mode=urls(wm)
words=word_mode.join(' ')
para.gsub!(/.+/,words)
end
- para.gsub!(/\b[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
- para.gsub!(/((?:^|\s)[}])((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
- para.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
+ para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
+ para.gsub!(/((?:^|\s)[}])((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
else para.gsub!(/_</m,'&lt;'); para.gsub!(/_>/m,'&gt;') #code-block: angle brackets special characters
end
para
diff --git a/lib/sisu/v0/shared_txt.rb b/lib/sisu/v0/shared_txt.rb
index ceeaa4ce..6af436b0 100644
--- a/lib/sisu/v0/shared_txt.rb
+++ b/lib/sisu/v0/shared_txt.rb
@@ -58,6 +58,7 @@ module SiSU_text_utils
class Wrap
def initialize(para='',n_char_max=76,n_indent=0,n_hang=nil)
@para,@n_char_max,@n_indent=para,n_char_max,n_indent
+ @n_char_max_extend = n_char_max
@br="\n"
@n_hang=unless n_hang; @n_hang=@n_indent
else n_hang
@@ -69,21 +70,33 @@ module SiSU_text_utils
line=0
out=[]
out[line]=''
- #line=0,out,out[line]=0,[],''
- #@para.gsub!(/<br(?: \/)?>/,"\n") #watch #added
- words=@para.scan(/\S+/)
+ @para.gsub!(/<:br>/,"\n\n")
+ words=@para.scan(/\n\n|\S+/m)
while words != ''
word=words.shift
if not word
- out[line].strip!.squeeze!(' ') unless out[line].empty? #check
+ out[line] unless out[line].empty? #check
break
- elsif (out[line].length + word.length) > (@n_char_max - @n_indent) and out[line] =~/\S+/
- out[line].strip!.squeeze!(' ')
+ elsif word =~/\n\n/
+ word="\n"
+ @n_char_max_extend = @n_char_max + out[line].length
+ line=line
+ elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) and out[line] =~/\S+/
+ @n_char_max_extend = @n_char_max
+ out[line].squeeze!(' ')
line += 1
end
- out[line]="#{out[line]} #{word}" if word
+ if word
+ out[line]=if out[line] and out[line] !~/\S+$/m
+ "#{out[line]}#{word}"
+ elsif out[line] and out[line] =~/\S+/
+ "#{out[line]} #{word}"
+ else "#{word.strip}"
+ end
+ end
+ @oldword=word if word =~/\S+/
end
- out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
+ x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
end
def line_wrap_indent1
@n_indent,@n_hang=2,2
@@ -94,8 +107,6 @@ module SiSU_text_utils
line_wrap
end
end
-#end
-#module SiSU_scan
class Header_scan
def initialize(md,para)
@regxcl=/<~\d+;\w\d+;\w\d+><(?:[0-9a-f]{32}|[0-9a-f]{64}):(?:[0-9a-f]{32}|[0-9a-f]{64})>/
diff --git a/lib/sisu/v0/shared_xml.rb b/lib/sisu/v0/shared_xml.rb
index 0d9c0476..866939ea 100644
--- a/lib/sisu/v0/shared_xml.rb
+++ b/lib/sisu/v0/shared_xml.rb
@@ -363,11 +363,11 @@ module SiSU_XML_munge
'\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!(/\B\{([^}]+)\}(https?:\/\/[^"><]+?)([,.:;"><]?(?:\s|$))/,
# '<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\1</link>\3') #watch, compare html_tune
- para.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
+ para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,
%{\\1#{@url_brace.xml_open}<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\\2">\\2</link>#{@url_brace.xml_close}\\3})
- #para.gsub!(/\b((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/, #also works
+ #para.gsub!(/\b((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/, #also works
#%{#{@url_brace.xml_open}<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\\1">\\1</link>#{@url_brace.xml_close}\\2})
- para.gsub!(/\b[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\1">\1</link>\2') #escaped urls not linked, deal with later
+ para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\1">\1</link>\2') #escaped urls not linked, deal with later
#para.gsub!(/(^|\s)[_\\]((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([.,]?(?:\s|$))/,'\1<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="\2">\2</link>\3') #escaped urls not linked, deal with later
para.gsub!(/&nbsp;/,' ') #clean
else para.gsub!(/_</m,'&lt;'); para.gsub!(/_>/m,'&gt;') #code-block: angle brackets special characters
@@ -384,7 +384,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?|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;/,' ')
wordlist=para.scan(/\S+|\n/) #\n needed for tables, check though added 2005w17
diff --git a/lib/sisu/v0/sisupod_make.rb b/lib/sisu/v0/sisupod_make.rb
index 340371c4..32811f0f 100644
--- a/lib/sisu/v0/sisupod_make.rb
+++ b/lib/sisu/v0/sisupod_make.rb
@@ -182,17 +182,16 @@ module SiSU_Doc
docskin=[docskin_with_path.gsub(/.+?\/(skin_\S+?)\.rb/,'\1')]
docskin='skin_sisupod'
end
- if skin_source and docskin
- cp_r(skin_source[:name],"#{docskin_place}/#{docskin}.rb")
- #if skin_source[:type] =~/dir/
- # File.symlink("#{docskin_place}/#{docskin}.rb","#{docskin_place}/skin_#{@env.stub_pwd}.rb")
- #end
- skinfile_array=IO.readlines(skin_source[:name],'')
- para_images=[]
- skinfile_array.each do |f| #% work area
- unless f =~/^%+ / #hmmm
- images << f.scan(@rgx_rb_image).uniq if f =~@rgx_rb_image #and FileTest.file?(f.scan(@rgx_rb_image).uniq)
- #does not really discriminate, may duplicate images in sisu file, and may take images from default image pool
+ if skin_source and docskin #imperfect, revisit
+ unless skin_source[:name].nil? or skin_source[:name].empty?
+ cp_r(skin_source[:name],"#{docskin_place}/#{docskin}.rb")
+ skinfile_array=IO.readlines(skin_source[:name],'')
+ para_images=[]
+ skinfile_array.each do |f| #% work area
+ unless f =~/^%+ / #hmmm
+ images << f.scan(@rgx_rb_image).uniq if f =~@rgx_rb_image #and FileTest.file?(f.scan(@rgx_rb_image).uniq)
+ #does not really discriminate, may duplicate images in sisu file, and may take images from default image pool
+ end
end
end
end
diff --git a/lib/sisu/v0/spell.rb b/lib/sisu/v0/spell.rb
index 6ddddb5d..cc9e99e7 100644
--- a/lib/sisu/v0/spell.rb
+++ b/lib/sisu/v0/spell.rb
@@ -68,7 +68,7 @@ module Utility
end
def check
@input.each do |data|
- data.gsub!(/(http|www|ftp|gopher|png|jpg|gif|html|htm|&nbsp;)\S+/i,' ')
+ data.gsub!(/(https?|www|ftp|gopher|png|jpg|gif|html|htm|&nbsp;)\S+/i,' ')
data.gsub!(/<\/?(table|tr|td|b|p|href).*?>/i,' ')
data.gsub!(/(<==.+|<:\S+>|<!.+?!>|^0~.+|\{\{\{|~)/,' ')
data.gsub!(/(["|<>)(\n'`'.;&_-]|\=)/,' ')
diff --git a/lib/sisu/v0/sst_do_inline_footnotes.rb b/lib/sisu/v0/sst_do_inline_footnotes.rb
index 3a6282c4..0bbaa131 100644
--- a/lib/sisu/v0/sst_do_inline_footnotes.rb
+++ b/lib/sisu/v0/sst_do_inline_footnotes.rb
@@ -461,7 +461,7 @@ module SiSU_Convert_footnotes
s=s.gsub(/<del>(.+?)<\/del>/,'DELETED(\1)') # deletions
s=s.gsub(/<sup>(\d+)<\/sup>/,'[\1]')
s=s.gsub(/(?:&nbsp\\;)+/,' ')
- s=s.gsub(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|ftp)\\\:\S+ /,' [image] ') # else image names found in search
+ s=s.gsub(/\{.+?\.(?:png|jpg|gif).+?\}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search
s=s.gsub(/\s\s+/,' ')
s=s.strip
end
diff --git a/lib/sisu/v0/sst_to_s_xml_dom.rb b/lib/sisu/v0/sst_to_s_xml_dom.rb
index 84f72037..46c2d366 100644
--- a/lib/sisu/v0/sst_to_s_xml_dom.rb
+++ b/lib/sisu/v0/sst_to_s_xml_dom.rb
@@ -346,7 +346,7 @@ WOK
para.gsub!(/<[-~]#>/,'')
para.gsub!(/<br\/?>/,'<br />')
para.gsub!(/<:pb>\s*/,'')
- para.gsub!(/\{(\S+?\.(?:png|jpg|gif)) .+?\}(?:(?:https?|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;/,' ')
para=SiSU_document_structure::Structure.new(@md,para).structure
diff --git a/lib/sisu/v0/sysenv.rb b/lib/sisu/v0/sysenv.rb
index 0f6652b8..15dbeba5 100644
--- a/lib/sisu/v0/sysenv.rb
+++ b/lib/sisu/v0/sysenv.rb
@@ -450,6 +450,7 @@ module SiSU_Env
:index => filename(code,'index','.html'),
:odf => filename(code,'opendocument','.odt'),
:plain => filename(code,'plain','.txt'),
+ :manpage => filename(code,@fnb,'.1'),
:wiki => filename(code,'wiki','.txt'),
:digest => filename(code,'digest','.txt'),
:metadata => filename(code,'metadata','.html'), #chk
@@ -835,7 +836,7 @@ module SiSU_Env
flag=if defined? @rc['search'][type] and
defined? @rc['search'][type]['action'] and
@rc['search'][type]['flag']==true and
- @rc['search'][type]['action'] =~/http:\/\// #and
+ @rc['search'][type]['action'] =~/https?:\/\// #and
#defined? @rc['search'][type]['db'] and @rc['search'][type]['db'] =~/\S+/ # and
flag=if promo?[:ad]
false
@@ -858,7 +859,7 @@ module SiSU_Env
flag=if defined? @rc['search']
searches.each do |type|
if defined? @rc['search'][type] and
- defined? @rc['search'][type]['action'] and @rc['search'][type]['action'] =~/http:\/\// and
+ defined? @rc['search'][type]['action'] and @rc['search'][type]['action'] =~/https?:\/\// and
defined? @rc['search'][type]['db'] and @rc['search'][type]['db'] =~/\S+/ # and
flag=if promo?[:ad]
false
@@ -878,10 +879,10 @@ module SiSU_Env
rc=SiSU_Env::Get_init.instance.yamlrc
create_form_hyperestraier=if defined? rc['search']['sisu']['flag'] and
rc['search']['sisu']['flag']==true and
- action and action =~/http:\/\//; true
+ action and action =~/https?:\/\//; true
else false
end
- create_form_sisu=if action and db and action =~/http:\/\// and db =~/\S+/
+ create_form_sisu=if action and db and action =~/https?:\/\// and db =~/\S+/
true
elsif widget.search?
db=if rc['search']['sisu']['flag']==true and
@@ -946,7 +947,7 @@ WOK
def search_form_static(action=nil,db=nil)
rc=SiSU_Env::Get_init.instance.yamlrc
create_form=if rc['search']['sisu']['flag']==true and
- action and db and action =~/http:\/\// and db =~/\S+/
+ action and db and action =~/https?:\/\// and db =~/\S+/
true
elsif widget.search_fixed?
db=if rc['search']['sisu']['flag']==true and rc['search']['sisu']['db']=~/\S+/
@@ -993,7 +994,7 @@ WOK
def search?
flag=if defined? @rc['search'] and
defined? @rc['search']['sisu'] and
- defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/http:\/\// and
+ defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/https?:\/\// and
defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
flag=if defined? @vz.widget_search and @vz.widget_search == true
@@ -1010,7 +1011,7 @@ WOK
def search_fixed?
flag=if defined? @rc['search'] and
defined? @rc['search']['sisu'] and
- defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/http:\/\// and
+ defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/https?:\/\// and
defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
flag=if defined? @vz.widget_search and @vz.widget_search == true
@@ -1028,7 +1029,7 @@ WOK
rc=SiSU_Env::Get_init.instance.yamlrc
create_form=if defined? rc['search']['sisu']['flag'] and
rc['search']['sisu']['flag']==true and
- action and db and action =~/http:\/\// and db =~/\S+/
+ action and db and action =~/https?:\/\// and db =~/\S+/
true
elsif widget_static.search? and rc['search']['sisu']['flag']==true
db=if rc['search']['sisu']['db']=~/\S+/
@@ -1081,7 +1082,6 @@ WOK
def path #dir
def home
@sys.home
- #@home
end
def pwd
@sys.pwd
@@ -1132,7 +1132,7 @@ WOK
end
@yamlrc_dir
end
- def man
+ def man #check use
if defined? @rc['webserv']['man']; "#{webserv}/#{@rc['webserv']['man']}"
else defaults[:webserv_man]
end
@@ -1178,6 +1178,9 @@ WOK
def output #web/webserv output directory... subdirectory into which further subdirectories are made based on file names
"#{path.webserv}/#@stub_pwd"
end
+ def manpage
+ "#{path.output}/man"
+ end
def sitemaps
"#{path.output}/sitemaps"
end
@@ -1324,7 +1327,7 @@ WOK
"http://#{hostname}/#@stub_pwd"
end
def root
- if defined? @rc['webserv']['url_root'] and @rc['webserv']['url_root'] =~/http:\/\//; "#{@rc['webserv']['url_root']}/#@stub_pwd"
+ if defined? @rc['webserv']['url_root'] and @rc['webserv']['url_root'] =~/https?:\/\//; "#{@rc['webserv']['url_root']}/#@stub_pwd"
elsif defined? @rc['webserv']['url_root'] and @rc['webserv']['url_root'] =~/localhost/; "http://localhost/#@stub_pwd"
else "file://#{path.output}"
end
@@ -1335,8 +1338,8 @@ WOK
def webserv_host_base
if defined? @rc['webserv']['host']
case @rc['webserv']['host']
- when /http:\/\//; @rc['webserv']['host']
- when /\S+/; "http://#{@rc['webserv']['host']}"
+ when /https?:\/\//; @rc['webserv']['host']
+ when /\S+/; "http://#{@rc['webserv']['host']}"
else defaults[:webserv_host_cgi]
end
else defaults[:webserv_host_cgi]
@@ -1374,13 +1377,13 @@ WOK
end
def webserv_cgi #web url for local webserv (localhost, or hostname)
if defined? @rc['webserv_cgi']['host'] and not @rc['webserv_cgi']['host'].nil?
- http=@rc['webserv_cgi']['host'] =~ /http:\/\// ? '' : 'http://'
+ http=@rc['webserv_cgi']['host'] =~ /https?:\/\// ? '' : 'http://' #check https? missing
if webserv_port_cgi
"#{http}#{@rc['webserv_cgi']['host']}:#{webserv_port_cgi}/#@stub_pwd"
else "#{http}#{@rc['webserv_cgi']['host']}/#@stub_pwd"
end
else
- http=webserv_host_base=~/http:\/\// ? '' : 'http://'
+ http=webserv_host_base=~/https?:\/\// ? '' : 'http://'
if webserv_port_cgi
"#{http}#{webserv_host_base}:#{webserv_port_cgi}/#@stub_pwd"
else "#{http}#{webserv_host_base}/#@stub_pwd"
@@ -1389,13 +1392,13 @@ WOK
end
def webserv_base_cgi #web url for local webserv (localhost, or hostname)
if defined? @rc['webserv_cgi']['host'] and not @rc['webserv_cgi']['host'].nil?
- http=@rc['webserv_cgi']['host'] =~ /http:\/\// ? '' : 'http://'
+ http=@rc['webserv_cgi']['host'] =~ /https?:\/\// ? '' : 'http://'
if webserv_port_cgi
"#{http}#{@rc['webserv_cgi']['host']}:#{webserv_port_cgi}"
else "#{http}#{@rc['webserv_cgi']['host']}"
end
else
- http=webserv_host_base=~/http:\/\// ? '' : 'http://'
+ http=webserv_host_base=~/https?:\/\// ? '' : 'http://'
if webserv_port_cgi
"#{http}#{webserv_host_base}:#{webserv_port_cgi}"
else "#{http}#{webserv_host_base}"
@@ -1407,13 +1410,14 @@ WOK
if defined? @rc['webserv_cgi']['host'] and not @rc['webserv_cgi']['host'].nil?
http=if @rc['webserv_cgi']['host'] =~/http:\/\//
'http://'
+ elsif @rc['webserv_cgi']['host'] =~/https:\/\//
+ 'https://'
else defaults
end
"#{http}#{@rc['webserv_cgi']['host']}"
elsif webserv_host_base and not webserv_host_base.nil?
"#{http}#{webserv_host_base}"
- else "#{http}localhost"
- end
+ else "#{http}localhost" end
end
def webserv #web url for local webserv (localhost, or hostname)
if path.webserv_dir and path.webserv =~ /#{path.webserv_dir}/ #revisit
@@ -1438,7 +1442,7 @@ WOK
case @rc['webserv_cgi']['file_links']
when /webserv_cgi/; url.webserv_base_cgi
when /webserv/; @rc['webserv']['url_root']
- when /http:\/\//; @rc['webserv_cgi']['file_links']
+ when /https?:\/\//; @rc['webserv_cgi']['file_links']
when /\S+/; "http://#{@rc['webserv_cgi']['file_links']}"
else webserv_base_cgi
end
@@ -1811,7 +1815,7 @@ WOK
if @opt.cmd =~/m/; @md=SiSU_Param::Parameters.new(@opt).get
end
ft=[]
- if @md and defined? @md.fn and @md.fn # used for multilingual
+ if @md and defined? @md.fn and @md.fn # used for multilingual
if @md.cmd =~ /[hH]/; ft << @md.fn[:html]
end
if @md.cmd =~ /w/ and @md.cmd !~ /[hH]/; ft << @md.fn[:concordance]
@@ -1826,7 +1830,9 @@ WOK
end
if @md.cmd =~ /b/; ft << @md.fn[:xhtml]
end
- if @md.cmd =~ /[aAeE]/; ft << @md.fn[:plain]
+ if @md.cmd =~ /a/; ft << @md.fn[:plain]
+ end
+ if @md.cmd =~ /i/; ft << @md.fn[:manpage]
end
if @md.cmd =~ /[g]/; ft << @md.fn[:wiki]
end
@@ -1856,7 +1862,9 @@ WOK
end
if @opt.cmd =~ /b/; ft << 'scroll.xhtml' << '??.scroll.xhtml' << 'scroll.??.xhtml'
end
- if @opt.cmd =~ /[aAeE]/; ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
+ if @opt.cmd =~ /i/; ft << '.1' << '??.man.1' << 'man.??.1'
+ end
+ if @opt.cmd =~ /a/; ft << 'plain.txt' << '??.plain.txt' << 'plain.??.txt'
end
if @opt.cmd =~ /[g]/; ft << 'wiki.txt' << '??.wiki.txt' << 'wiki.??.txt'
end
@@ -1960,14 +1968,13 @@ WOK
remote=remote_host_base_general
#host_ip=IPSocket.getaddress(remote[:host]) unless remote[:host].empty?
@@flag_remote=true if remote[:name] =~/\S+@\S+/ #and host_ip =~/\d+\.\d+\.\d+\.\d+/ #very naive check should be enough /[0-255]+\.[0-255]+\.[0-255]+\.[0-255]+/
- #remote[:name]
remote_host_base_general[:name]
end
def scp #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built
input=@local_sisu_source
output=case @opt.cmd
when /u/; "#{self.remote_host_base}/#{@env.path.stub_pwd}/." #creates remote directory tree, this is not the usual function of u
- when /[aAbeEhHNopwxXy]/; "#{self.remote_host_base}/#{@env.path.stub_pwd}/#{@fnb}/."
+ when /[abhHNopwxXy]/; "#{self.remote_host_base}/#{@env.path.stub_pwd}/#{@fnb}/."
else "#{self.remote_host_base}/#{@env.path.stub_pwd}/."
end
if (input =~/\S/ and input !~/\/\//) and (output =~/\S/ and output !~/\/\//) and @@flag_remote==true and @opt.cmd !~/U/
@@ -2251,7 +2258,7 @@ WOK
'docbook.css'
end
def homepage
- 'index.css'
+ 'homepage.css'
end
end
class CSS_select < Info_env
@@ -2377,6 +2384,12 @@ WOK
filename=@fno
file=make_file(path,filename)
end
+ def mkfile_man
+ path="#{@env.path.output}/man"
+ make_path(path)
+ filename=@fno
+ file=make_file(path,filename)
+ end
def mkfile_pwd
path=Dir.pwd
filename=@fno
@@ -2505,8 +2518,8 @@ WOK
end
filename_homepage=File.new("#{@env.path.webserv}/#{@env.path.stub_pwd}/index.html",'w')
filename_homepage_toc=File.new("#{@env.path.webserv}/#{@env.path.stub_pwd}/toc.html",'w')
- filename_homepage << @vz_home.index
- filename_homepage_toc << @vz_home.index
+ filename_homepage << @vz_home.homepage
+ filename_homepage_toc << @vz_home.homepage
end
end
def cp_images(src_path,dest_path)
@@ -2595,3 +2608,4 @@ module SiSU_Errors
require "#{SiSU_lib}/errors"
end
__END__
+https? intro check 2007-09-22
diff --git a/lib/sisu/v0/texinfo.rb b/lib/sisu/v0/texinfo.rb
index 6c47ae4c..18415c47 100644
--- a/lib/sisu/v0/texinfo.rb
+++ b/lib/sisu/v0/texinfo.rb
@@ -164,7 +164,7 @@ module SiSU_TexInfo
@@flag['tables']='y' # KLUDGE get from param
end
para.gsub!(/<:p[bn]>/,'')
- para.gsub!(/(^|\s)\{(.+?)\}(http:\/\/\S+)/,'\1(\2 [linked to:] \3)')
+ para.gsub!(/(^|\s)\{(.+?)\}((?:https?|file):\/\/\S+)/,'\1(\2 [linked to:] \3)')
do_mono=TexInfoFormat::Texinfo.new(para,@md)
@tex_file << do_mono.spec_char
end
diff --git a/lib/sisu/v0/texinfo_format.rb b/lib/sisu/v0/texinfo_format.rb
index e4803d87..57bca409 100644
--- a/lib/sisu/v0/texinfo_format.rb
+++ b/lib/sisu/v0/texinfo_format.rb
@@ -330,7 +330,7 @@ WOK
#if @para !~ /^\s*<:image|\}:image\s/
# @para.gsub!(/_/,'\_')
#end
- @para.gsub!(/_(http:\/\/)/,'\1')
+ @para.gsub!(/_(https?:\/\/)/,'\1')
@para.gsub!(/§/i,'\S')
@para.gsub!(/£/i,'\pounds')
@para.gsub!(/å/i,'\aa')
@@ -464,7 +464,7 @@ WOK
width="100"
width=@para[/<:image.+?width=``(\d+)''.+?>/im,1]
width=width.to_i*0.4
- @para.gsub!(/<:image\s+((?:https?|ftp)\S+)\s+(\S+)\s+.+\s+?>/i,
+ @para.gsub!(/<:image\s+((?:https?|file|ftp)\S+)\s+(\S+)\s+.+\s+?>/i,
"\\href{\\1}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_tex}/\\2}}")
@para.gsub!(/<:image\s+(\S+)\s+.+\s+?>/i,
"\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_tex}/\\1}")
@@ -478,8 +478,8 @@ WOK
end
def http
# very messy clean up ! - work area, testing
- z=@para[/\\\{(.+?)\}(?:https?|ftp):\/\//,1] # match operator for z \\ fragile !
- url=@para[/((?:https?|ftp):\S+)/im,1]
+ z=@para[/\\\{(.+?)\}(?:https?|file|ftp):\/\//,1] # match operator for z \\ fragile !
+ url=@para[/((?:https?|file|ftp):\S+)/im,1]
if @para =~/\.(png|jpg|gif)/
image,w,x,y=z.scan(/\S+/)
image.gsub!(/\\/,'')
@@ -492,11 +492,11 @@ WOK
end
if image
dir=SiSU_Env::Info_env.new(@md.fns)
- @para.gsub!(/\{\S+\.(png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+/, # fragile match operator\\ fragile !
+ @para.gsub!(/\{\S+\.(png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+/, # fragile match operator\\ fragile !
"\n\\href{#{url}}{\\includegraphics*[width=#{width}pt]{#{dir.path.image_source_tex}/#{image}}}#{caption}")
else
link=z[/(.+?)\\/im,1]
- @para.gsub!(/\{.+?\}(?:https?|ftp):\/\/\S+/,"\n\\noindent\\href{#{url}}{#{link}}") # fragile match operator\\ fragile !
+ @para.gsub!(/\{.+?\}(?:https?|file|ftp):\/\/\S+/,"\n\\noindent\\href{#{url}}{#{link}}") # fragile match operator\\ fragile !
end
end
end
diff --git a/lib/sisu/v0/texpdf.rb b/lib/sisu/v0/texpdf.rb
index ccde6687..31447aae 100644
--- a/lib/sisu/v0/texpdf.rb
+++ b/lib/sisu/v0/texpdf.rb
@@ -487,7 +487,7 @@ WOK
@tex_file << insert.flatten
end
else
- if para =~ /\}(?:https?|ftp)/
+ if para =~ /\}(?:https?|file|ftp)/
para=mono.http(@orientation)
end
case para
diff --git a/lib/sisu/v0/texpdf_format.rb b/lib/sisu/v0/texpdf_format.rb
index d86c053a..83fd90a1 100644
--- a/lib/sisu/v0/texpdf_format.rb
+++ b/lib/sisu/v0/texpdf_format.rb
@@ -498,11 +498,11 @@ WOK
@string.gsub!(/&\S+?;/,' ')
@string.gsub!(/<a href=".+?">/,' ')
@string.gsub!(/<\/a>/,' ')
- @string.gsub!(/[^\}>_]((?:https?|ftp):\/\/\S+?)(<\/\S>)/,' \begin{scriptsize}\href{\1}{\1} \end{scriptsize}\2') #special case
- @string.gsub!(/((?:^|\s)[}])((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1\begin{scriptsize}\\href{\2}{\2}\end{scriptsize}\3') #special case \{ e.g. \}http://url
- @string.gsub!(/\B(?:\\_|\\)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\begin{scriptsize}\\href{\1}{\1}\end{scriptsize}\2') #specially escaped url no decoration
+ @string.gsub!(/[^\}>_]((?:https?|file|ftp):\/\/\S+?)(<\/\S>)/,' \begin{scriptsize}\href{\1}{\1} \end{scriptsize}\2') #special case
+ @string.gsub!(/((?:^|\s)[}])((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1\begin{scriptsize}\\href{\2}{\2}\end{scriptsize}\3') #special case \{ e.g. \}http://url
+ @string.gsub!(/\B(?:\\_|\\)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\begin{scriptsize}\\href{\1}{\1}\end{scriptsize}\2') #specially escaped url no decoration
unless @@flag_code
- @string.gsub!(/(^|\s)((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,"\\1#{@url_brace.tex_open}\\begin{scriptsize}\\href{\\2}{\\2}\\end{scriptsize}#{@url_brace.tex_close}\\3") #url matching with decoration <url> positive lookahead, sequence issue with { linked }http://url cannot use \b at start
+ @string.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,"\\1#{@url_brace.tex_open}\\begin{scriptsize}\\href{\\2}{\\2}\\end{scriptsize}#{@url_brace.tex_close}\\3") #url matching with decoration <url> positive lookahead, sequence issue with { linked }http://url cannot use \b at start
else #code-block: angle brackets special characters, note _ already escaped
@string.gsub!(/\\_</,'{\UseTextSymbol{OML}{<}}')
@string.gsub!(/\\_>/,'{\UseTextSymbol{OML}{>}}')
@@ -724,7 +724,7 @@ WOK
else
tell=SiSU_Screen::Ansi.new(@md.cmd,"ERROR - image:",%{"#{image}" missing},"search path: #{dir.path.image_source_tex}")
tell.error2 unless @md.cmd =~/q/
- @string.gsub!(/\{\S+\.(png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+/,'') # fragile match operator\\ fragile !
+ @string.gsub!(/\{\S+\.(png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+/,'') # fragile match operator\\ fragile !
end
end
def image
@@ -744,7 +744,7 @@ WOK
nil
end
if image_source
- @string.gsub!(/<:image\s+((?:https?|ftp)\S+)\s+(\S+)\s+.+\s+?>/,
+ @string.gsub!(/<:image\s+((?:https?|file|ftp)\S+)\s+(\S+)\s+.+\s+?>/,
@center_begin + "\\href{\\1}{\\includegraphics*[width=#{width}pt]{#{image_source}/\\2}}" + @center_end )
@string.gsub!(/<:image\s+(\S+)\s+.+\s+?>/,
@center_begin + "\\includegraphics*[width=#{width}pt]{#{image_source}/\\1}" + @center_end )
@@ -794,15 +794,15 @@ WOK
dir=SiSU_Env::Info_env.new(@md.fns)
@words=[]
@string.each do |word|
- @words << if word=~/\\\{.+?\\\}(?:https?|ftp):\S+/
- if word =~/\\\{(.+?)\\\}((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/
- r=%r/\\\{(.+?)\\?\}((?:https?|ftp):\/\/\S+?\.[^'"><\s]+?)(?:[;.,]?(?:\s|$)|(?:\s|$))/
- d=/\\\{.+?\\?\}(?:https?|ftp):\/\/\S+?\.[^'"><\s]+?([;.,]?(?:\s|$))/.match(word).captures.to_s
-# if word =~/\\\{(.+?)\\\}((?:https?|ftp)\S+?)([;.,]?(?:\s|$))/
-# r=%r/\\\{(.+?)\\?\}((?:https?|ftp):\S+?)(?:[;.,]?(?:\s|$)|(?:\s|$))/
-# d=/\\\{.+?\\?\}(?:https?|ftp):\S+?([;.,]?(?:\s|$))/.match(word).captures.to_s
+ @words << if word=~/\\\{.+?\\\}(?:https?|file|ftp):\S+/
+ if word =~/\\\{(.+?)\\\}((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/
+ r=%r/\\\{(.+?)\\?\}((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)(?:[;.,]?(?:\s|$)|(?:\s|$))/
+ d=/\\\{.+?\\?\}(?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?([;.,]?(?:\s|$))/.match(word).captures.to_s
+# if word =~/\\\{(.+?)\\\}((?:https?|file|ftp)\S+?)([;.,]?(?:\s|$))/
+# r=%r/\\\{(.+?)\\?\}((?:https?|file|ftp):\S+?)(?:[;.,]?(?:\s|$)|(?:\s|$))/
+# d=/\\\{.+?\\?\}(?:https?|file|ftp):\S+?([;.,]?(?:\s|$))/.match(word).captures.to_s
else
- r=%r/\\\{(.+?)\\?\}((?:https?|ftp):\S+)/
+ r=%r/\\\{(.+?)\\?\}((?:https?|file|ftp):\S+)/
d=''
end
z,url=r.match(word).captures if word =~r
@@ -845,29 +845,29 @@ WOK
"{\\includegraphics*[width=#{width}pt]" +
"{#{dir.path.image_source_local_tex}/#{image}}}" +
"#{caption}" +
- @center_end if word =~ /(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+)/
+ @center_end if word =~ /(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+)/
elsif @md.fns =~/\.-ss[tm]$/ and FileTest.file?("#{dir.path.image_source_remote_tex}/#{image}")
@center_begin +
"\\\n\\href{#{url}}" + #not satisfactory: \\ added to ^line to mimic reference file output
"{\\includegraphics*[width=#{width}pt]" +
"{#{dir.path.image_source_remote_tex}/#{image}}}" +
"#{caption}" +
- @center_end if word =~ /(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+)/
+ @center_end if word =~ /(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+)/
elsif FileTest.file?("#{dir.path.image_source_tex}/#{image}")
@center_begin +
"\\\n\\href{#{url}}\n" + #not satisfactory: \\ added to ^line to mimic reference file output, mirror above ... not tested
"{\\includegraphics*[width=#{width}pt]" +
"{#{dir.path.image_source_tex}/#{image}}}" +
"#{caption}" +
- @center_end if word =~/(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+)/
+ @center_end if word =~/(\{[a-zA-Z0-9_\\]+\.(?:png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+)/
else
tell=SiSU_Screen::Ansi.new(@md.cmd,"ERROR - image:",%{"#{image}" missing},"search locations: #{dir.path.image_source_local_tex},#{dir.path.image_source_remote_tex} and #{dir.path.image_source_tex}")
tell.error2 unless @md.cmd =~/q/
- '' if word =~ /\{\S+\.(png|jpg|gif).+?\}(?:https?|ftp):\/\/\S+/
+ '' if word =~ /\{\S+\.(png|jpg|gif).+?\}(?:https?|file|ftp):\/\/\S+/
end
else
link=z.strip #[/(.+?)\\/m,1]
- word="\\href{#{url}}{#{link}}#{d}" if word =~/\\\{.+?\\\}(?:https?|ftp):\/\/\S+/
+ word="\\href{#{url}}{#{link}}#{d}" if word =~/\\\{.+?\\\}(?:https?|file|ftp):\/\/\S+/
end
else word
end
@@ -875,7 +875,7 @@ WOK
@words.join
end
def http(orientation)
- wm=@string.dup.scan(/\\\{.+?\\\}(?:(?:https?|ftp):\S+|image)|\w+\s*|./m) #first match of interest others passed through
+ wm=@string.dup.scan(/\\\{.+?\\\}(?:(?:https?|file|ftp):\S+|image)|\w+\s*|./m) #first match of interest others passed through
@string=SiSU_TeX_Pdf::Format_text_object.new(@md,wm).http_word_mode(orientation)
end
def language
diff --git a/lib/sisu/v0/urls.rb b/lib/sisu/v0/urls.rb
index 09b15f2d..2a69040a 100644
--- a/lib/sisu/v0/urls.rb
+++ b/lib/sisu/v0/urls.rb
@@ -113,6 +113,7 @@ module SiSU_urls
'h (HTML scroll)'=>@fn[:doc],
'H (HTML scroll)'=>@fn[:doc],
'I (Info file)'=>'info',
+ 'i (manpage)'=>'manpage',
'm (Document Abstraction)'=>'dal',
'N (Digests md5/sha256)'=>@fn[:digest],
'o (ODF:ODT - Open Document)'=>@fn[:odf],
@@ -137,7 +138,7 @@ module SiSU_urls
end
end
def urls_maintenance(opt,x,y)
- if x=~/^([aAbceEhHmNopwxXy])/ and opt.cmd =~/[aAbceEhHmNopwxXy]/ and x=~/^[#{opt.cmd}]/
+ if x=~/^([abchHmNopwxXy])/ and opt.cmd =~/[abchHmNopwxXy]/ and x=~/^[#{opt.cmd}]/
m=$1
f=y
tool=@editor
@@ -164,6 +165,9 @@ module SiSU_urls
if x=~/^o/ and @opt.cmd=~/o/ and x=~/^[#{@opt.cmd}]/
tool=@odf_viewer
end
+ #if x=~/^i/ and @opt.cmd=~/i/ and x=~/^[#{@opt.cmd}]/
+ #
+ #end
if x !~/^m/
tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{tool} #{@env.path.output}/#@fnb/#{y}")
tell.maintenance unless @opt.cmd =~/q/
@@ -180,7 +184,7 @@ module SiSU_urls
@pwd_stub="#@webserv_url"[m,1]
@u.each do |x,y|
if @opt.fns =~ @m_regular
- if x=~/^([aAbceEhHNopsSwxXyY])/ and @opt.cmd=~/[aAbceEhHNopsSwxXyY]/ and x=~/^[#{@opt.cmd}]/
+ if x=~/^([abchHNopsSwxXyY])/ and @opt.cmd=~/[abchHNopsSwxXyY]/ and x=~/^[#{@opt.cmd}]/
m=$1
tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/#@fnb/#{y}")
tell.result unless @opt.cmd =~/q/
@@ -201,6 +205,11 @@ module SiSU_urls
tell.result unless @opt.cmd =~/q/
@opt.cmd.gsub!(/d[iu]/,'')
end
+ if x=~/^i/ and @opt.cmd =~/i/
+ tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","nroff -man #{@path.path.manpage}/#@fnb.1 |most")
+ tell.result unless @opt.cmd =~/q/
+ @opt.cmd.gsub!(/I/,'')
+ end
if x=~/^P/ and @opt.cmd =~/P/
tell=SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} Psql","#@pwd_stub::#{@opt.fns}",y)
tell.result unless @opt.cmd =~/q/
@@ -219,7 +228,7 @@ module SiSU_urls
tell=case x
when /^m/
SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#{@env.program.text_editor} ~#{y}/#@fnb.#{y}")
- when /^[aAbBcdeEhHNopswxXy]/
+ when /^[abBcdhHNopswxXy]/
tellx=SiSU_Screen::Ansi.new(@opt.cmd,"-p (LaTeX)","#{@env.program.text_editor} ~work/tex_rz/#@fnb.tex") if y=~/landscape/
SiSU_Screen::Ansi.new(@opt.cmd,"-#{x}","#@browser #@webserv_url/#@fnb/#{y}")
when /^Y/
diff --git a/lib/sisu/v0/wikispeak.rb b/lib/sisu/v0/wikispeak.rb
index bcc2da04..a0ca2cd5 100644
--- a/lib/sisu/v0/wikispeak.rb
+++ b/lib/sisu/v0/wikispeak.rb
@@ -249,15 +249,15 @@ WOK
para.gsub!(/<i>(.+?)<\/i>/,"''\\1''")
para.gsub!(/<b>(.+?)<\/b>/,"'''\\1'''")
para.gsub!(/<u>(.+?)<\/u>/,'_\1_')
- para.gsub!(/\{(.+?)\}(http:\/\/\S+)/,'[\2 \1]')
- para.gsub!(/(http:\/\/\S+)/,'[\1]')
+ para.gsub!(/\{(.+?)\}(https?:\/\/\S+)/,'[\2 \1]')
+ para.gsub!(/(https?:\/\/\S+)/,'[\1]')
para.gsub!(/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,'')
para.gsub!(/<:p[bn]>/,'') # remove page breaks
para.gsub!(/^\s*<~\d+;(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>$/,'') # remove empty lines - check
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?|ftp):\/\/\S+|image)/,' [ \1 ]') #"[ #{dir.url.images_local}\/\\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