sisu 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/sisu +367 -0
- data/bin/sisugem +367 -0
- data/data/sisu/image/arrow_next_red.png +0 -0
- data/data/sisu/image/arrow_prev_red.png +0 -0
- data/data/sisu/image/arrow_up_red.png +0 -0
- data/data/sisu/image/b_bluebell.png +0 -0
- data/data/sisu/image/b_doc.png +0 -0
- data/data/sisu/image/b_epub.png +0 -0
- data/data/sisu/image/b_home.png +0 -0
- data/data/sisu/image/b_info.png +0 -0
- data/data/sisu/image/b_odf.png +0 -0
- data/data/sisu/image/b_pdf.png +0 -0
- data/data/sisu/image/b_search.png +0 -0
- data/data/sisu/image/b_toc.png +0 -0
- data/data/sisu/image/bullet_08.png +0 -0
- data/data/sisu/image/bullet_09.png +0 -0
- data/data/sisu/image/bullet_10.png +0 -0
- data/data/sisu/image/bullet_11.png +0 -0
- data/data/sisu/image/bullet_12.png +0 -0
- data/data/sisu/image/bullet_doc.png +0 -0
- data/data/sisu/image/bullet_red.png +0 -0
- data/data/sisu/image/dot_clear.png +0 -0
- data/data/sisu/image/dot_white.png +0 -0
- data/data/sisu/image/gplv3.png +0 -0
- data/data/sisu/image/gplv3_free_software.png +0 -0
- data/data/sisu/image/next.png +0 -0
- data/data/sisu/image/previous.png +0 -0
- data/data/sisu/image/rb7.ico +0 -0
- data/data/sisu/image/sisu.png +0 -0
- data/data/sisu/image/toctoc.png +0 -0
- data/data/sisu/version.yml +5 -0
- data/lib/sisu.rb +94 -0
- data/lib/sisu/air.rb +80 -0
- data/lib/sisu/ao.rb +590 -0
- data/lib/sisu/ao_character_check.rb +102 -0
- data/lib/sisu/ao_composite.rb +286 -0
- data/lib/sisu/ao_doc_objects.rb +565 -0
- data/lib/sisu/ao_doc_str.rb +2269 -0
- data/lib/sisu/ao_endnotes.rb +136 -0
- data/lib/sisu/ao_expand_insertions.rb +514 -0
- data/lib/sisu/ao_hash_digest.rb +174 -0
- data/lib/sisu/ao_idx.rb +422 -0
- data/lib/sisu/ao_images.rb +187 -0
- data/lib/sisu/ao_metadata.rb +86 -0
- data/lib/sisu/ao_misc_arrange.rb +207 -0
- data/lib/sisu/ao_numbering.rb +720 -0
- data/lib/sisu/ao_persist.rb +194 -0
- data/lib/sisu/ao_references.rb +502 -0
- data/lib/sisu/ao_syntax.rb +640 -0
- data/lib/sisu/cgi.rb +84 -0
- data/lib/sisu/cgi_pgsql.rb +270 -0
- data/lib/sisu/cgi_sql_common.rb +986 -0
- data/lib/sisu/cgi_sqlite.rb +244 -0
- data/lib/sisu/conf.rb +287 -0
- data/lib/sisu/constants.rb +388 -0
- data/lib/sisu/css.rb +3484 -0
- data/lib/sisu/db_columns.rb +1997 -0
- data/lib/sisu/db_create.rb +689 -0
- data/lib/sisu/db_dbi.rb +90 -0
- data/lib/sisu/db_drop.rb +207 -0
- data/lib/sisu/db_import.rb +877 -0
- data/lib/sisu/db_indexes.rb +146 -0
- data/lib/sisu/db_load_tuple.rb +323 -0
- data/lib/sisu/db_remove.rb +182 -0
- data/lib/sisu/db_select.rb +230 -0
- data/lib/sisu/db_sqltxt.rb +173 -0
- data/lib/sisu/db_tests.rb +114 -0
- data/lib/sisu/dbi.rb +166 -0
- data/lib/sisu/dbi_discrete.rb +206 -0
- data/lib/sisu/digests.rb +306 -0
- data/lib/sisu/dp.rb +1606 -0
- data/lib/sisu/dp_identify_markup.rb +161 -0
- data/lib/sisu/dp_make.rb +668 -0
- data/lib/sisu/embedded.rb +149 -0
- data/lib/sisu/errors.rb +84 -0
- data/lib/sisu/generic_parts.rb +131 -0
- data/lib/sisu/git.rb +277 -0
- data/lib/sisu/html.rb +775 -0
- data/lib/sisu/html_concordance.rb +391 -0
- data/lib/sisu/html_format.rb +1348 -0
- data/lib/sisu/html_harvest.rb +109 -0
- data/lib/sisu/html_harvest_author_format.rb +111 -0
- data/lib/sisu/html_harvest_authors.rb +466 -0
- data/lib/sisu/html_harvest_topics.rb +893 -0
- data/lib/sisu/html_lite_shared.rb +324 -0
- data/lib/sisu/html_manifest.rb +1032 -0
- data/lib/sisu/html_minitoc.rb +230 -0
- data/lib/sisu/html_parts.rb +437 -0
- data/lib/sisu/html_persist.rb +237 -0
- data/lib/sisu/html_promo.rb +440 -0
- data/lib/sisu/html_scroll.rb +235 -0
- data/lib/sisu/html_segments.rb +716 -0
- data/lib/sisu/html_shared.rb +62 -0
- data/lib/sisu/html_table.rb +64 -0
- data/lib/sisu/html_tune.rb +301 -0
- data/lib/sisu/hub.rb +277 -0
- data/lib/sisu/hub_actions.rb +1122 -0
- data/lib/sisu/hub_loop_markup_files.rb +170 -0
- data/lib/sisu/hub_options.rb +1695 -0
- data/lib/sisu/i18n.rb +702 -0
- data/lib/sisu/manpage.rb +377 -0
- data/lib/sisu/manpage_format.rb +85 -0
- data/lib/sisu/object_munge.rb +307 -0
- data/lib/sisu/prog_text_translation.rb +1702 -0
- data/lib/sisu/qrcode.rb +754 -0
- data/lib/sisu/relaxng.rb +1153 -0
- data/lib/sisu/remote.rb +246 -0
- data/lib/sisu/rexml.rb +148 -0
- data/lib/sisu/se.rb +158 -0
- data/lib/sisu/se_cleanoutput.rb +145 -0
- data/lib/sisu/se_clear.rb +105 -0
- data/lib/sisu/se_createsite.rb +273 -0
- data/lib/sisu/se_css.rb +221 -0
- data/lib/sisu/se_date.rb +92 -0
- data/lib/sisu/se_db.rb +214 -0
- data/lib/sisu/se_envcall.rb +326 -0
- data/lib/sisu/se_file_op.rb +2758 -0
- data/lib/sisu/se_filemap.rb +247 -0
- data/lib/sisu/se_get_init.rb +238 -0
- data/lib/sisu/se_hub_particulars.rb +234 -0
- data/lib/sisu/se_info_env.rb +2179 -0
- data/lib/sisu/se_info_port.rb +70 -0
- data/lib/sisu/se_info_system.rb +202 -0
- data/lib/sisu/se_load.rb +108 -0
- data/lib/sisu/se_processing.rb +659 -0
- data/lib/sisu/se_programs.rb +394 -0
- data/lib/sisu/se_remotes.rb +553 -0
- data/lib/sisu/se_standardise_lang.rb +176 -0
- data/lib/sisu/se_version.rb +174 -0
- data/lib/sisu/shared_images.rb +137 -0
- data/lib/sisu/shared_markup_alt.rb +336 -0
- data/lib/sisu/shared_metadata.rb +1361 -0
- data/lib/sisu/shared_sem.rb +156 -0
- data/lib/sisu/sisu_thor_lib.rb +407 -0
- data/lib/sisu/sitemaps.rb +224 -0
- data/lib/sisu/src_kdissert_share.rb +102 -0
- data/lib/sisu/src_po4a_share.rb +309 -0
- data/lib/sisu/src_po4a_shelf.rb +1217 -0
- data/lib/sisu/src_po4a_shelf_set.rb +297 -0
- data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
- data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
- data/lib/sisu/src_po4a_sstm.rb +135 -0
- data/lib/sisu/src_shared.rb +347 -0
- data/lib/sisu/src_sisupod_make.rb +171 -0
- data/lib/sisu/src_sisupod_sstm.rb +109 -0
- data/lib/sisu/sst_convert_markup.rb +323 -0
- data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
- data/lib/sisu/sst_from_xml.rb +178 -0
- data/lib/sisu/sst_identify_markup.rb +482 -0
- data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
- data/lib/sisu/termsheet.rb +163 -0
- data/lib/sisu/texinfo.rb +430 -0
- data/lib/sisu/texinfo_format.rb +541 -0
- data/lib/sisu/texpdf.rb +1162 -0
- data/lib/sisu/texpdf_format.rb +1689 -0
- data/lib/sisu/texpdf_parts.rb +235 -0
- data/lib/sisu/txt_asciidoc.rb +354 -0
- data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
- data/lib/sisu/txt_markdown.rb +389 -0
- data/lib/sisu/txt_markdown_decorate.rb +207 -0
- data/lib/sisu/txt_orgmode.rb +376 -0
- data/lib/sisu/txt_orgmode_decorate.rb +186 -0
- data/lib/sisu/txt_output.rb +86 -0
- data/lib/sisu/txt_plain.rb +410 -0
- data/lib/sisu/txt_plain_decorate.rb +189 -0
- data/lib/sisu/txt_read.rb +109 -0
- data/lib/sisu/txt_rst.rb +371 -0
- data/lib/sisu/txt_rst_decorate.rb +186 -0
- data/lib/sisu/txt_shared.rb +241 -0
- data/lib/sisu/txt_textile.rb +367 -0
- data/lib/sisu/txt_textile_decorate.rb +186 -0
- data/lib/sisu/update.rb +141 -0
- data/lib/sisu/urls.rb +696 -0
- data/lib/sisu/utils.rb +232 -0
- data/lib/sisu/utils_composite.rb +115 -0
- data/lib/sisu/utils_response.rb +114 -0
- data/lib/sisu/utils_screen_text_color.rb +472 -0
- data/lib/sisu/utils_spell.rb +99 -0
- data/lib/sisu/webrick.rb +191 -0
- data/lib/sisu/wikispeak.rb +375 -0
- data/lib/sisu/xhtml.rb +472 -0
- data/lib/sisu/xhtml_epub2.rb +890 -0
- data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
- data/lib/sisu/xhtml_epub2_format.rb +2272 -0
- data/lib/sisu/xhtml_epub2_persist.rb +278 -0
- data/lib/sisu/xhtml_epub2_segments.rb +599 -0
- data/lib/sisu/xhtml_epub2_tune.rb +330 -0
- data/lib/sisu/xhtml_parts.rb +183 -0
- data/lib/sisu/xhtml_shared.rb +62 -0
- data/lib/sisu/xhtml_table.rb +97 -0
- data/lib/sisu/xml_docbook5.rb +376 -0
- data/lib/sisu/xml_dom.rb +624 -0
- data/lib/sisu/xml_fictionbook2.rb +389 -0
- data/lib/sisu/xml_format.rb +865 -0
- data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
- data/lib/sisu/xml_odf_odt.rb +887 -0
- data/lib/sisu/xml_odf_odt_format.rb +674 -0
- data/lib/sisu/xml_parts.rb +191 -0
- data/lib/sisu/xml_persist.rb +126 -0
- data/lib/sisu/xml_sax.rb +521 -0
- data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
- data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
- data/lib/sisu/xml_shared.rb +665 -0
- data/lib/sisu/xml_tables.rb +261 -0
- data/lib/sisu/zap.rb +90 -0
- metadata +251 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** system environment, resource control and configuration details
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/ao_images.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_AO_Images
|
|
58
|
+
class Images
|
|
59
|
+
begin
|
|
60
|
+
require 'RMagick'
|
|
61
|
+
include Magick
|
|
62
|
+
rescue LoadError
|
|
63
|
+
#SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('RMagic NOT FOUND')
|
|
64
|
+
end
|
|
65
|
+
def initialize(md,data)
|
|
66
|
+
@md,@data=md,data
|
|
67
|
+
end
|
|
68
|
+
def images
|
|
69
|
+
data=@data
|
|
70
|
+
@rmgk=false
|
|
71
|
+
imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick')
|
|
72
|
+
if imagemagick_
|
|
73
|
+
begin
|
|
74
|
+
@rmgk=SiSU_Env::Load.new('RMagick').prog
|
|
75
|
+
rescue
|
|
76
|
+
@rmgk=false
|
|
77
|
+
end
|
|
78
|
+
else
|
|
79
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
80
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
81
|
+
SiSU_Screen::Ansi.new(
|
|
82
|
+
@md.opt.act[:color_state][:set],
|
|
83
|
+
'*WARN* use of RMagick is not enabled in sisurc.yml'
|
|
84
|
+
).warn
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
data.select do |dob|
|
|
88
|
+
unless dob.is ==:table
|
|
89
|
+
dob.obj=dob.obj.strip
|
|
90
|
+
if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
|
|
91
|
+
if dob.obj !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+/
|
|
92
|
+
m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/
|
|
93
|
+
if imagemagick_
|
|
94
|
+
imgs=dob.obj.scan(m).flatten
|
|
95
|
+
img_col=img_row=nil
|
|
96
|
+
images=imgs.each do |image|
|
|
97
|
+
dir=SiSU_Env::InfoEnv.new(@md.fns)
|
|
98
|
+
path_image=[
|
|
99
|
+
dir.path.image_source_include_local,
|
|
100
|
+
dir.path.image_source_include_remote,
|
|
101
|
+
dir.path.image_source_include
|
|
102
|
+
]
|
|
103
|
+
image_path=nil
|
|
104
|
+
path_image.each do |img_pth|
|
|
105
|
+
image_path=img_pth
|
|
106
|
+
break if FileTest.exist?("#{img_pth}/#{image}")
|
|
107
|
+
end
|
|
108
|
+
if FileTest.exist?("#{image_path}/#{image}")
|
|
109
|
+
if @rmgk
|
|
110
|
+
img=Magick::ImageList.new("#{image_path}/#{image}")
|
|
111
|
+
img_col,img_row=img.columns,img.rows
|
|
112
|
+
else
|
|
113
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
114
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
115
|
+
SiSU_Screen::Ansi.new(
|
|
116
|
+
@md.opt.act[:color_state][:set],
|
|
117
|
+
'*WARN* RMagick not present, will attempt to use imagemagick (identify) directly'
|
|
118
|
+
).warn
|
|
119
|
+
end
|
|
120
|
+
imgk=SiSU_Env::SystemCall.new.imagemagick
|
|
121
|
+
gmgk=SiSU_Env::SystemCall.new.graphicsmagick
|
|
122
|
+
if imgk or gmgk
|
|
123
|
+
if imgk
|
|
124
|
+
imgsys=`identify #{image_path}/#{image}`.strip #system call
|
|
125
|
+
elsif gmgk
|
|
126
|
+
imgsys=`gm identify #{image_path}/#{image}`.strip #system call
|
|
127
|
+
end
|
|
128
|
+
img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2]
|
|
129
|
+
img_col,img_row=img_col.to_i,img_row.to_i
|
|
130
|
+
else
|
|
131
|
+
errmsg='imagemagick or graphicsmagick are required to process images'
|
|
132
|
+
if @md.opt.act[:no_stop][:set]==:on
|
|
133
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
134
|
+
error("#{errmsg}, proceeding (as requested) without image processing")
|
|
135
|
+
break
|
|
136
|
+
else
|
|
137
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
138
|
+
error("#{errmsg}, STOPPING")
|
|
139
|
+
exit
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
row=((img && defined? img.rows) ? img.rows : img_row)
|
|
144
|
+
col=((img && defined? img.columns) ? img.columns : img_col)
|
|
145
|
+
if img_col > img_row #landscape
|
|
146
|
+
if img_col> 640
|
|
147
|
+
img_col=640
|
|
148
|
+
img_row=((1.00*img_col/col)*row).round
|
|
149
|
+
end
|
|
150
|
+
else #portrait
|
|
151
|
+
if img_col> 640
|
|
152
|
+
img_col=640
|
|
153
|
+
img_row=((1.00*img_col/col)*row).round
|
|
154
|
+
end
|
|
155
|
+
if img_row > 640
|
|
156
|
+
img_row=640
|
|
157
|
+
img_col=((1.00*img_row/row)*col).round
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
dob.obj=dob.obj.gsub(/(#{image})/,"#{image} #{img_col}x#{img_row}")
|
|
161
|
+
else
|
|
162
|
+
dob.obj=dob.obj.
|
|
163
|
+
gsub(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,
|
|
164
|
+
'[ \1 (\2 missing) ]')
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
else
|
|
168
|
+
images=dob.obj.scan(m) do |image|
|
|
169
|
+
SiSU_Screen::Ansi.new(
|
|
170
|
+
@md.opt.act[:color_state][:set],
|
|
171
|
+
'*WARN* where image dimensions have not been provided RMagick or imagemagick is required',image
|
|
172
|
+
).warn unless @md.opt.act[:quiet][:set]==:on
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
|
|
178
|
+
dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ')
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
dob unless dob.nil?
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
__END__
|
|
187
|
+
imgsys=`identify #{image_path}/#{image}`.strip
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** system environment, resource control and configuration details
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/ao_metadata.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_AO_Metadata
|
|
58
|
+
class Metadata
|
|
59
|
+
def initialize(md,metad)
|
|
60
|
+
@md,@metadata=md,metad
|
|
61
|
+
l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
|
|
62
|
+
language=l[:n]
|
|
63
|
+
@tr=SiSU_Translate::Source.new(md,language)
|
|
64
|
+
end
|
|
65
|
+
def make_para(obj,ocn)
|
|
66
|
+
h={
|
|
67
|
+
obj: obj,
|
|
68
|
+
ocn: 0
|
|
69
|
+
}
|
|
70
|
+
SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
|
|
71
|
+
end
|
|
72
|
+
def make_heading(obj,ocn,name,lv,ln)
|
|
73
|
+
h={
|
|
74
|
+
lv: lv,
|
|
75
|
+
ln: ln,
|
|
76
|
+
name: name,
|
|
77
|
+
obj: obj,
|
|
78
|
+
ocn: 0
|
|
79
|
+
}
|
|
80
|
+
SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
|
|
81
|
+
end
|
|
82
|
+
def metadata
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
__END__
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** system environment, resource control and configuration details
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/ao_misc_arrange.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_AO_MiscArrangeText
|
|
58
|
+
class SI
|
|
59
|
+
def initialize(md,data)
|
|
60
|
+
@md,@data=md,data
|
|
61
|
+
end
|
|
62
|
+
def conditional_headings(para)
|
|
63
|
+
para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
|
|
64
|
+
gsub(/^((?:[1-9]|:?[A-D])~\S*)\s*$/,
|
|
65
|
+
'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
|
|
66
|
+
if para =~/^@\S+?:/
|
|
67
|
+
para=para.gsub(/^@(\S+?):(\s+|$)/,
|
|
68
|
+
"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2").
|
|
69
|
+
gsub(/^@(\S+?):([+-])(\s+|$)/,
|
|
70
|
+
"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
|
|
71
|
+
end
|
|
72
|
+
para
|
|
73
|
+
end
|
|
74
|
+
def markup_blocks(para)
|
|
75
|
+
def ticks(para)
|
|
76
|
+
block_open,block_close,text=nil,nil,nil
|
|
77
|
+
if para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m
|
|
78
|
+
@flag=:close
|
|
79
|
+
block_open,text,block_close=
|
|
80
|
+
/\A(```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?)\n(.+?)\n(```([ ]+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.
|
|
81
|
+
match(para)[1..3]
|
|
82
|
+
((para=~/^```[ ]+table(?:~h)?\s+/) \
|
|
83
|
+
and (para !~/^```[ ]+table(?:~h)?\s+c\d+/)) \
|
|
84
|
+
? para
|
|
85
|
+
: (para=[]; para << block_open << text << block_close)
|
|
86
|
+
elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m #look at, study
|
|
87
|
+
@flag=:open
|
|
88
|
+
block_open,text=/\A(```(?:[ ]+.+?))\n(.*?)\Z/m.match(para)[1,2]
|
|
89
|
+
para=[]
|
|
90
|
+
if not text.to_s.empty?
|
|
91
|
+
para << block_open << text
|
|
92
|
+
else
|
|
93
|
+
para << block_open
|
|
94
|
+
end
|
|
95
|
+
elsif para =~/\A.+?\n```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(\s*=\{.+?\})?\s*\Z/m \
|
|
96
|
+
and @flag==:open
|
|
97
|
+
@flag=:close
|
|
98
|
+
text,block_close=
|
|
99
|
+
/\A(.+?)\n(```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(?:\s+=\{.+?\})?)\s*\Z/m.match(para)[1,2]
|
|
100
|
+
para=[]
|
|
101
|
+
if not text.to_s.empty?
|
|
102
|
+
para << text.to_s << block_close
|
|
103
|
+
else
|
|
104
|
+
para << block_close
|
|
105
|
+
end
|
|
106
|
+
else para
|
|
107
|
+
end
|
|
108
|
+
para
|
|
109
|
+
end
|
|
110
|
+
def ticks_remove(para)
|
|
111
|
+
unless @md.opt.act[:quiet][:set] ==:on
|
|
112
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
113
|
+
mark("ticks not recognized, ticks removed from pargraph\n#{para}")
|
|
114
|
+
end
|
|
115
|
+
para=para.gsub(/```[ ]+\S+[ ]*/m,'').
|
|
116
|
+
gsub(/```\s*/m,'').
|
|
117
|
+
strip
|
|
118
|
+
end
|
|
119
|
+
def ticks_quote(para)
|
|
120
|
+
@flag=:quote_open
|
|
121
|
+
text=para
|
|
122
|
+
para=[]
|
|
123
|
+
if text =~ /```[ ]+quote/m
|
|
124
|
+
para << '`:quote_open`'
|
|
125
|
+
text=text.gsub(/```[ ]+quote/m,'')
|
|
126
|
+
end
|
|
127
|
+
text=if text =~/(?:\n|\A)=\{.+?\}/m #exclude book index from indent markup
|
|
128
|
+
txt,bkidx,tail=/(.+?)((?:\n|\A)=\{.+?\}$)(.*)/m.match(text).captures
|
|
129
|
+
txt=txt.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
|
|
130
|
+
txt + bkidx + tail
|
|
131
|
+
else text.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
|
|
132
|
+
end
|
|
133
|
+
para << text.gsub(/```/m,'')
|
|
134
|
+
if text =~/```/m
|
|
135
|
+
@flag=:quote_close
|
|
136
|
+
para << '`:quote_close`'
|
|
137
|
+
end
|
|
138
|
+
para
|
|
139
|
+
end
|
|
140
|
+
def curly_braces(para)
|
|
141
|
+
block_open,block_close,text=nil,nil,nil
|
|
142
|
+
para=if para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
|
|
143
|
+
block_open,text,block_close=
|
|
144
|
+
/\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
|
|
145
|
+
match(para)[1..3]
|
|
146
|
+
para=[]
|
|
147
|
+
para << block_open << text << block_close
|
|
148
|
+
elsif para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\Z/m
|
|
149
|
+
block_open,text=
|
|
150
|
+
/\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\Z/m.
|
|
151
|
+
match(para)[1,2]
|
|
152
|
+
para=[]
|
|
153
|
+
if not text.to_s.empty?
|
|
154
|
+
para << block_open << text
|
|
155
|
+
else
|
|
156
|
+
para << block_open
|
|
157
|
+
end
|
|
158
|
+
elsif para =~/\A.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
|
|
159
|
+
text,block_close=
|
|
160
|
+
/\A(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
|
|
161
|
+
match(para)[1,2]
|
|
162
|
+
para=[]
|
|
163
|
+
if not text.to_s.empty?
|
|
164
|
+
para << text.to_s << block_close
|
|
165
|
+
else
|
|
166
|
+
para << block_close
|
|
167
|
+
end
|
|
168
|
+
else para
|
|
169
|
+
end
|
|
170
|
+
para
|
|
171
|
+
end
|
|
172
|
+
para=if (para =~/\A```[ ]+quote/m \
|
|
173
|
+
and @flag !=:open) \
|
|
174
|
+
or @flag==:quote_open
|
|
175
|
+
ticks_quote(para)
|
|
176
|
+
elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m \
|
|
177
|
+
or @flag==:open
|
|
178
|
+
ticks(para)
|
|
179
|
+
elsif para =~/```/m
|
|
180
|
+
ticks_remove(para)
|
|
181
|
+
else
|
|
182
|
+
para
|
|
183
|
+
end
|
|
184
|
+
para=if para =~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{|^\}(?:code|box|poem|alt|group|block|table)/m
|
|
185
|
+
curly_braces(para)
|
|
186
|
+
else
|
|
187
|
+
para
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
def prepare_text
|
|
191
|
+
data=@data
|
|
192
|
+
if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it)
|
|
193
|
+
data[0]=data[0].gsub(/^#!\s*\/usr\/bin\/sisu/,'').
|
|
194
|
+
gsub(/^#!\s*\/usr\/bin\/env sisu/,'')
|
|
195
|
+
end
|
|
196
|
+
if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier
|
|
197
|
+
data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1').
|
|
198
|
+
gsub(/^(sisu-[\d.]+)$/,'% \1')
|
|
199
|
+
end
|
|
200
|
+
data.each.map do |para|
|
|
201
|
+
para=conditional_headings(para)
|
|
202
|
+
markup_blocks(para)
|
|
203
|
+
end.flatten
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
__END__
|