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,234 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** particulars, composite information about document being processed
|
|
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/se_hub_particulars.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Particulars
|
|
58
|
+
begin
|
|
59
|
+
require 'singleton'
|
|
60
|
+
rescue LoadError
|
|
61
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
62
|
+
error('singleton NOT FOUND (LoadError)')
|
|
63
|
+
end
|
|
64
|
+
require_relative 'se' # se.rb
|
|
65
|
+
include SiSU_Env
|
|
66
|
+
require_relative 'dp' # dp.rb
|
|
67
|
+
include SiSU_Param
|
|
68
|
+
require_relative 'ao' # ao.rb
|
|
69
|
+
class CombinedSingleton
|
|
70
|
+
include Singleton
|
|
71
|
+
def get_all(opt)
|
|
72
|
+
set_env(opt)
|
|
73
|
+
set_file(opt)
|
|
74
|
+
set_md(opt)
|
|
75
|
+
set_ao(opt) #needs @md
|
|
76
|
+
end
|
|
77
|
+
def get_env(opt)
|
|
78
|
+
set_env(opt)
|
|
79
|
+
end
|
|
80
|
+
def get_file(opt)
|
|
81
|
+
set_file(opt)
|
|
82
|
+
end
|
|
83
|
+
def get_md(opt)
|
|
84
|
+
set_md(opt)
|
|
85
|
+
end
|
|
86
|
+
def get_ao_array(opt)
|
|
87
|
+
set_ao(opt) #needs @md
|
|
88
|
+
end
|
|
89
|
+
def get_env_md(opt)
|
|
90
|
+
set_env(opt)
|
|
91
|
+
set_md(opt)
|
|
92
|
+
end
|
|
93
|
+
def get_idx_sst(opt)
|
|
94
|
+
set_sst_idx(opt)
|
|
95
|
+
end
|
|
96
|
+
def get_idx_raw(opt)
|
|
97
|
+
set_raw_idx(opt)
|
|
98
|
+
end
|
|
99
|
+
def get_idx_html(opt)
|
|
100
|
+
set_html_idx(opt)
|
|
101
|
+
end
|
|
102
|
+
def get_idx_xhtml(opt)
|
|
103
|
+
set_xhtml_idx(opt)
|
|
104
|
+
end
|
|
105
|
+
def get_name_tags(opt)
|
|
106
|
+
set_name_tags(opt)
|
|
107
|
+
end
|
|
108
|
+
def get_maps(opt)
|
|
109
|
+
set_nametags_map(opt)
|
|
110
|
+
set_ocn_htmlseg_map(opt)
|
|
111
|
+
end
|
|
112
|
+
def get_map_nametags(opt)
|
|
113
|
+
set_nametags_map(opt)
|
|
114
|
+
end
|
|
115
|
+
def get_map_ocn_htmlseg(opt)
|
|
116
|
+
set_ocn_htmlseg_map(opt)
|
|
117
|
+
end
|
|
118
|
+
attr_accessor :opt,:md,:sst_idx,:raw_idx,:html_idx,:xhtml_idx
|
|
119
|
+
def set_md(opt)
|
|
120
|
+
begin
|
|
121
|
+
@md=SiSU_Param::Parameters.new(opt).get
|
|
122
|
+
self
|
|
123
|
+
rescue
|
|
124
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
125
|
+
__LINE__.to_s + ':' + __FILE__
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
attr_accessor :opt,:env,:file
|
|
130
|
+
def set_env(opt)
|
|
131
|
+
begin
|
|
132
|
+
@env=SiSU_Env::InfoEnv.new(opt.fns)
|
|
133
|
+
self
|
|
134
|
+
rescue
|
|
135
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
136
|
+
__LINE__.to_s + ':' + __FILE__
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
def set_file(opt)
|
|
141
|
+
begin
|
|
142
|
+
set_md(opt) unless @md
|
|
143
|
+
@file=SiSU_Env::FileOp.new(@md)
|
|
144
|
+
self
|
|
145
|
+
rescue
|
|
146
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
147
|
+
__LINE__.to_s + ':' + __FILE__
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
attr_accessor :opt,:ao_array
|
|
152
|
+
def set_ao(opt)
|
|
153
|
+
begin
|
|
154
|
+
@ao_array=SiSU_AO::Source.new(opt).get
|
|
155
|
+
self
|
|
156
|
+
rescue
|
|
157
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
158
|
+
__LINE__.to_s + ':' + __FILE__
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
def set_sst_idx(opt)
|
|
163
|
+
begin
|
|
164
|
+
@sst_idx=SiSU_AO::Source.new(opt).get_idx_sst
|
|
165
|
+
self
|
|
166
|
+
rescue
|
|
167
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
168
|
+
__LINE__.to_s + ':' + __FILE__
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
def set_raw_idx(opt)
|
|
173
|
+
begin
|
|
174
|
+
@raw_idx=SiSU_AO::Source.new(opt).get_idx_raw
|
|
175
|
+
self
|
|
176
|
+
rescue
|
|
177
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
178
|
+
__LINE__.to_s + ':' + __FILE__
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
def set_html_idx(opt)
|
|
183
|
+
begin
|
|
184
|
+
@html_idx=SiSU_AO::Source.new(opt).get_idx_html
|
|
185
|
+
self
|
|
186
|
+
rescue
|
|
187
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
188
|
+
__LINE__.to_s + ':' + __FILE__
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
def set_xhtml_idx(opt)
|
|
193
|
+
begin
|
|
194
|
+
@xhtml_idx=SiSU_AO::Source.new(opt).get_idx_xhtml
|
|
195
|
+
self
|
|
196
|
+
rescue
|
|
197
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
198
|
+
__LINE__.to_s + ':' + __FILE__
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
attr_accessor :nametags_map
|
|
203
|
+
def set_nametags_map(opt)
|
|
204
|
+
begin
|
|
205
|
+
opt=@md ? @md : opt
|
|
206
|
+
@nametags_map=SiSU_AO::Source.new(opt).get_map_nametags
|
|
207
|
+
self
|
|
208
|
+
rescue
|
|
209
|
+
if @md
|
|
210
|
+
SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.opt.fnl).location do
|
|
211
|
+
__LINE__.to_s + ':' + __FILE__
|
|
212
|
+
end
|
|
213
|
+
else
|
|
214
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
215
|
+
__LINE__.to_s + ':' + __FILE__
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
attr_accessor :ocn_htmlseg_map
|
|
221
|
+
def set_ocn_htmlseg_map(opt)
|
|
222
|
+
begin
|
|
223
|
+
@ocn_htmlseg_map=SiSU_AO::Source.new(@md).get_map_ocn_htmlseg
|
|
224
|
+
self
|
|
225
|
+
rescue
|
|
226
|
+
SiSU_Errors::Rescued.new($!,$@,opt.selections.str,opt.fnl).location do
|
|
227
|
+
__LINE__.to_s + ':' + __FILE__
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
__END__
|
|
234
|
+
consider running as separate objects
|
|
@@ -0,0 +1,2179 @@
|
|
|
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/se_info_env.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
@@current_document=Dir.pwd #nil #''
|
|
58
|
+
module SiSU_Info_Env
|
|
59
|
+
require_relative 'se_envcall' # se_envcall.rb
|
|
60
|
+
require_relative 'html_parts' # html_parts.rb
|
|
61
|
+
begin
|
|
62
|
+
require 'singleton'
|
|
63
|
+
require 'fileutils'
|
|
64
|
+
include FileUtils::Verbose
|
|
65
|
+
rescue LoadError
|
|
66
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
67
|
+
error('singleton or fileutils NOT FOUND (LoadError)')
|
|
68
|
+
end
|
|
69
|
+
class InfoEnv < SiSU_Env_Call::EnvCall # se_envcall.rb
|
|
70
|
+
begin
|
|
71
|
+
require 'pathname'
|
|
72
|
+
require 'fileutils'
|
|
73
|
+
include FileUtils
|
|
74
|
+
rescue LoadError
|
|
75
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
76
|
+
error('pathname or fileutils NOT FOUND (LoadError)')
|
|
77
|
+
end
|
|
78
|
+
attr_accessor :filename,:sys,:home,:hostname,:user,:env,:rc,:www,:fnb,:fnn,:fnt,:flv,:webserv_path,:stub_pwd,:base_markup_dir_stub,:stub_src,:webserv_host_cgi,:webserv_port_cgi,:processing,:processing_git,:etc,:yamlrc_dir
|
|
79
|
+
@@image_flag,@@local_image=true,true #warning on @@image_flag
|
|
80
|
+
@@fb,@@man_path=nil,nil
|
|
81
|
+
def initialize(fns='',md=nil)
|
|
82
|
+
super() #you may not want to re-execute this static info so frequently!
|
|
83
|
+
@init=SiSU_Env::GetInit.new #SiSU_Get_Init::GetInit
|
|
84
|
+
@fns,@md=fns,md
|
|
85
|
+
@env=SiSU_Env::EnvCall.new(fns) if fns #SiSU_Env_Call::EnvCall
|
|
86
|
+
fnb=if @md \
|
|
87
|
+
and defined? @md.fnb
|
|
88
|
+
@md.fnb
|
|
89
|
+
elsif defined? @env.fnb \
|
|
90
|
+
and @env.fnb
|
|
91
|
+
@env.fnb
|
|
92
|
+
elsif @fns.is_a?(String) \
|
|
93
|
+
and not @fns.empty?
|
|
94
|
+
m=/(.+)?\.(?:(?:-|ssm\.)?sst|ssm)$/m
|
|
95
|
+
@fns[m,1] if not @fns.empty?
|
|
96
|
+
end
|
|
97
|
+
if fnb; @@fb ||=fnb
|
|
98
|
+
end
|
|
99
|
+
@sys=SiSU_Info_Sys::InfoSystem.instance
|
|
100
|
+
@fnb ||=@@fb #clean up this... used primarily for zap which is not passed normal parameters
|
|
101
|
+
@fixed_websev_root='' # @home
|
|
102
|
+
@pwd=@@pwd=Dir.pwd
|
|
103
|
+
@base_markup_dir_stub=SiSU_Utils::Path.new.base_markup_stub
|
|
104
|
+
@stub_src= @base_markup_dir_stub + '/src'
|
|
105
|
+
@stub_pod= @base_markup_dir_stub + '/pod'
|
|
106
|
+
@stub_epub= @base_markup_dir_stub + '/epub'
|
|
107
|
+
m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
|
|
108
|
+
@stub_pwd=@@pwd[m,1] || '' #; p __LINE__; #p @pwd; #p m; #p @stub_pwd
|
|
109
|
+
pt=Pathname.new(Dir.pwd)
|
|
110
|
+
stub=if output_dir_structure.by_language_code?
|
|
111
|
+
r=Px[:lng_lst_rgx]
|
|
112
|
+
stub=if Dir.pwd =~/.+?\/([^\/]+)(?:\/(#{r})$)/
|
|
113
|
+
lng=pt.split[-1].to_s
|
|
114
|
+
lng_part='/' + lng
|
|
115
|
+
base=pt.split[0].split[-1].to_s
|
|
116
|
+
else
|
|
117
|
+
lng_part='/' + language_default_set
|
|
118
|
+
base=pt.split[-1].to_s
|
|
119
|
+
end
|
|
120
|
+
base + lng_part
|
|
121
|
+
elsif output_dir_structure.by_filetype?
|
|
122
|
+
pt.split[-1].to_s
|
|
123
|
+
elsif output_dir_structure.by_filename?
|
|
124
|
+
''
|
|
125
|
+
else
|
|
126
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
127
|
+
warn('set output type, by: language, filetype or filename')
|
|
128
|
+
end
|
|
129
|
+
@stub_set_manifest=stub + '/manifest'
|
|
130
|
+
end
|
|
131
|
+
def user
|
|
132
|
+
@sys.user
|
|
133
|
+
end
|
|
134
|
+
def hostname
|
|
135
|
+
@sys.hostname
|
|
136
|
+
end
|
|
137
|
+
def host
|
|
138
|
+
@sys.host
|
|
139
|
+
end
|
|
140
|
+
def arch
|
|
141
|
+
@sys.arch
|
|
142
|
+
end
|
|
143
|
+
def rbver
|
|
144
|
+
@sys.rbver
|
|
145
|
+
end
|
|
146
|
+
def locale
|
|
147
|
+
@sys.locale
|
|
148
|
+
end
|
|
149
|
+
def concord_max
|
|
150
|
+
((defined? @rc['processing']['concord_max']) \
|
|
151
|
+
&& @rc['processing']['concord_max']) \
|
|
152
|
+
? @rc['processing']['concord_max']
|
|
153
|
+
: (defaults[:concord_max])
|
|
154
|
+
end
|
|
155
|
+
def language_default_set #set directory (default) language
|
|
156
|
+
((defined? @rc['default']['language']) \
|
|
157
|
+
&& @rc['default']['language'] =~/\S+/) \
|
|
158
|
+
? @rc['default']['language']
|
|
159
|
+
: 'en'
|
|
160
|
+
end
|
|
161
|
+
def markup_emphasis
|
|
162
|
+
if defined? @rc['default']['emphasis'] \
|
|
163
|
+
and @rc['default']['emphasis'] \
|
|
164
|
+
and @rc['default']['emphasis']=~/bold/
|
|
165
|
+
'bold'
|
|
166
|
+
elsif defined? @rc['default']['emphasis'] \
|
|
167
|
+
and @rc['default']['emphasis'] \
|
|
168
|
+
and @rc['default']['emphasis']=~/italic/
|
|
169
|
+
'italics'
|
|
170
|
+
elsif defined? @rc['default']['emphasis'] \
|
|
171
|
+
and @rc['default']['emphasis'] \
|
|
172
|
+
and @rc['default']['emphasis']=~/underscore/
|
|
173
|
+
'underscore'
|
|
174
|
+
else 'bold'
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
def plaintext_wrap
|
|
178
|
+
((defined? @rc['default']['text_wrap']) \
|
|
179
|
+
&& (@rc['default']['text_wrap']) \
|
|
180
|
+
&& (@rc['default']['text_wrap'].to_s=~/\d\d+/) \
|
|
181
|
+
&& (@rc['default']['text_wrap'].to_i > 19) \
|
|
182
|
+
&& (@rc['default']['text_wrap'].to_i < 201)) \
|
|
183
|
+
? @rc['default']['text_wrap'].to_i
|
|
184
|
+
: 78
|
|
185
|
+
end
|
|
186
|
+
def current_document
|
|
187
|
+
@@current_document||=Dir.pwd
|
|
188
|
+
@@current_document
|
|
189
|
+
end
|
|
190
|
+
def stub_pwd #200412
|
|
191
|
+
@stub_pwd
|
|
192
|
+
end
|
|
193
|
+
def base_markup_dir_stub
|
|
194
|
+
@base_markup_dir_stub
|
|
195
|
+
end
|
|
196
|
+
def stub_md_harvest #watch
|
|
197
|
+
@stub_set_manifest
|
|
198
|
+
end
|
|
199
|
+
def stub_src
|
|
200
|
+
@stub_src
|
|
201
|
+
end
|
|
202
|
+
def stub_pod
|
|
203
|
+
@stub_pod
|
|
204
|
+
end
|
|
205
|
+
def sisupod_v4(opt)
|
|
206
|
+
#processing_path.processing
|
|
207
|
+
# sisupod
|
|
208
|
+
# doc/
|
|
209
|
+
# manifest.txt
|
|
210
|
+
# en/content.sst [file content]
|
|
211
|
+
# fr/content.sst
|
|
212
|
+
# _sisu
|
|
213
|
+
# sisu_document_make
|
|
214
|
+
# image@ (ln -s ../../image)
|
|
215
|
+
# audio@ (ln -s ../../audio)
|
|
216
|
+
# video@ (ln -s ../../video)
|
|
217
|
+
# image/ [all images for specific document gathered here]
|
|
218
|
+
# audio/
|
|
219
|
+
# video/
|
|
220
|
+
spp="#{processing_path.processing}/#{Gt[:sisupod]}"
|
|
221
|
+
sppc="#{spp}/doc/_sisu"
|
|
222
|
+
lng_dirs=[]
|
|
223
|
+
if FileTest.directory?(spp) \
|
|
224
|
+
or FileTest.file?(spp)
|
|
225
|
+
FileUtils::rm_rf(spp)
|
|
226
|
+
end
|
|
227
|
+
paths=[]
|
|
228
|
+
flv=SiSU_Env::EnvCall.new(opt.fns).
|
|
229
|
+
document_language_versions_found
|
|
230
|
+
flv[:f].each {|l| lng_dirs << l[:l] }
|
|
231
|
+
lng_dirs.uniq.each do |lng|
|
|
232
|
+
paths << "#{spp}/doc/#{lng}"
|
|
233
|
+
end
|
|
234
|
+
paths \
|
|
235
|
+
<< "#{spp}/image"
|
|
236
|
+
#<< "#{spp}/audio" \
|
|
237
|
+
#<< "#{spp}/video" \
|
|
238
|
+
paths.each do |x|
|
|
239
|
+
unless FileTest.directory?(x)
|
|
240
|
+
FileUtils::mkdir_p(x)
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
if FileTest.directory?(sppc)
|
|
244
|
+
pwd=Dir.pwd
|
|
245
|
+
Dir.chdir(sppc)
|
|
246
|
+
FileUtils::ln_s('../../image', 'image')
|
|
247
|
+
#FileUtils::ln_s('../../audio', 'audio')
|
|
248
|
+
#FileUtils::ln_s('../../video', 'video')
|
|
249
|
+
Dir.chdir(pwd)
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
def sisupod_v3(opt)
|
|
253
|
+
#processing_path.processing
|
|
254
|
+
# sisupod
|
|
255
|
+
# doc/
|
|
256
|
+
# manifest.txt
|
|
257
|
+
# en/content.sst [file content]
|
|
258
|
+
# fr/content.sst
|
|
259
|
+
# _sisu
|
|
260
|
+
# skin/
|
|
261
|
+
# doc [relevant skin if any other than default]
|
|
262
|
+
# image@ (ln -s ../../image)
|
|
263
|
+
# audio@ (ln -s ../../audio)
|
|
264
|
+
# video@ (ln -s ../../video)
|
|
265
|
+
# image/ [all images for specific document gathered here]
|
|
266
|
+
# audio/
|
|
267
|
+
# video/
|
|
268
|
+
spp="#{processing_path.processing}/#{Gt[:sisupod]}"
|
|
269
|
+
sppc="#{spp}/doc/_sisu"
|
|
270
|
+
lng_dirs=[]
|
|
271
|
+
if FileTest.directory?(spp) \
|
|
272
|
+
or FileTest.file?(spp)
|
|
273
|
+
FileUtils::rm_rf(spp)
|
|
274
|
+
end
|
|
275
|
+
paths=[]
|
|
276
|
+
flv=SiSU_Env::EnvCall.new(opt.fns).
|
|
277
|
+
document_language_versions_found
|
|
278
|
+
flv[:f].each {|l| lng_dirs << l[:l] }
|
|
279
|
+
lng_dirs.uniq.each do |lng|
|
|
280
|
+
paths << "#{spp}/doc/#{lng}"
|
|
281
|
+
end
|
|
282
|
+
paths \
|
|
283
|
+
<< "#{spp}/image" \
|
|
284
|
+
<< "#{sppc}/skin/doc" \
|
|
285
|
+
<< "#{sppc}/skin/dir" \
|
|
286
|
+
<< "#{sppc}/skin/site"
|
|
287
|
+
#<< "#{spp}/audio" \
|
|
288
|
+
#<< "#{spp}/video" \
|
|
289
|
+
paths.each do |x|
|
|
290
|
+
unless FileTest.directory?(x)
|
|
291
|
+
FileUtils::mkdir_p(x)
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
if FileTest.directory?(sppc)
|
|
295
|
+
pwd=Dir.pwd
|
|
296
|
+
Dir.chdir(sppc)
|
|
297
|
+
FileUtils::ln_s('../../image', 'image')
|
|
298
|
+
#FileUtils::ln_s('../../audio', 'audio')
|
|
299
|
+
#FileUtils::ln_s('../../video', 'video')
|
|
300
|
+
Dir.chdir(pwd)
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
def sisupod_v2
|
|
304
|
+
#processing_path.processing
|
|
305
|
+
# sisupod
|
|
306
|
+
# content.sst [file content]
|
|
307
|
+
# filename.sst [link to content.sst]
|
|
308
|
+
# _sisu
|
|
309
|
+
# skin/
|
|
310
|
+
# doc [relevant skin if any other than default]
|
|
311
|
+
# image [all images for specific document gathered here]
|
|
312
|
+
sisupod_processing_path="#{processing_path.processing}/#{Gt[:sisupod]}"
|
|
313
|
+
if FileTest.directory?(sisupod_processing_path) \
|
|
314
|
+
or FileTest.file?(sisupod_processing_path)
|
|
315
|
+
FileUtils::rm_rf(sisupod_processing_path)
|
|
316
|
+
end
|
|
317
|
+
paths=[]
|
|
318
|
+
paths=[
|
|
319
|
+
"#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/doc",
|
|
320
|
+
"#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/dir",
|
|
321
|
+
"#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/skin/site",
|
|
322
|
+
"#{processing_path.processing}/#{Gt[:sisupod]}/_sisu/image"
|
|
323
|
+
]
|
|
324
|
+
paths.each {|x| FileUtils::mkdir_p(x) unless FileTest.directory?(x) }
|
|
325
|
+
end
|
|
326
|
+
def defaults #multiple default directories
|
|
327
|
+
@default_dir ||=@sys.default_dir #DEFAULT_DIR
|
|
328
|
+
end
|
|
329
|
+
def html_seg_title_banner?
|
|
330
|
+
((defined? @rc['html']['seg_title_banner']) \
|
|
331
|
+
&& @rc['html']['seg_title_banner']==true) \
|
|
332
|
+
? @rc['html']['seg_title_banner']
|
|
333
|
+
: false
|
|
334
|
+
end
|
|
335
|
+
def html_quick_ref?
|
|
336
|
+
((defined? @rc['html']['quick_ref']) \
|
|
337
|
+
&& @rc['html']['quick_ref']==true) \
|
|
338
|
+
? @rc['html']['quick_ref']
|
|
339
|
+
: false
|
|
340
|
+
end
|
|
341
|
+
def html_minitoc?
|
|
342
|
+
if defined? @rc['html']['minitoc'] \
|
|
343
|
+
and @rc['html']['minitoc'].is_a?(String)
|
|
344
|
+
@rc['html']['minitoc']
|
|
345
|
+
else false
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
def manifest_minitoc?
|
|
349
|
+
if defined? @rc['manifest']['minitoc'] \
|
|
350
|
+
and @rc['manifest']['minitoc'].is_a?(String)
|
|
351
|
+
@rc['manifest']['minitoc']
|
|
352
|
+
else false
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
def build
|
|
356
|
+
def omit_list
|
|
357
|
+
@off_list ||=if defined? @rc['omit_list'] \
|
|
358
|
+
and @rc['omit_list'].is_a?(String)
|
|
359
|
+
@rc['omit_list']
|
|
360
|
+
elsif defined? @rc['omit']['list'] \
|
|
361
|
+
and @rc['omit']['list'].is_a?(String)
|
|
362
|
+
@rc['omit']['list']
|
|
363
|
+
else
|
|
364
|
+
nil
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
def listed?(test) #fix
|
|
368
|
+
listed=if omit_list
|
|
369
|
+
x=(omit_list.scan(/\b#{test}\b/)).join
|
|
370
|
+
test==x \
|
|
371
|
+
? true
|
|
372
|
+
: false
|
|
373
|
+
else
|
|
374
|
+
false
|
|
375
|
+
end
|
|
376
|
+
listed
|
|
377
|
+
end
|
|
378
|
+
def ocn?
|
|
379
|
+
if (defined? @rc['omit']['ocn'] \
|
|
380
|
+
and not @rc['omit']['ocn'].nil?) \
|
|
381
|
+
or listed?('ocn')
|
|
382
|
+
:off
|
|
383
|
+
else
|
|
384
|
+
:na
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
def toc?
|
|
388
|
+
if (defined? @rc['omit']['toc'] \
|
|
389
|
+
and not @rc['omit']['toc'].nil?) \
|
|
390
|
+
or listed?('toc')
|
|
391
|
+
:off
|
|
392
|
+
else
|
|
393
|
+
:na
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
def manifest?
|
|
397
|
+
if (defined? @rc['omit']['manifest'] \
|
|
398
|
+
and not @rc['omit']['manifest'].nil?) \
|
|
399
|
+
or listed?('manifest')
|
|
400
|
+
:off
|
|
401
|
+
else
|
|
402
|
+
:na
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
def links_to_manifest?
|
|
406
|
+
if (defined? @rc['omit']['links_to_manifest'] \
|
|
407
|
+
and not @rc['omit']['links_to_manifest'].nil?) \
|
|
408
|
+
or (listed?('links_to_manifest') \
|
|
409
|
+
|| listed?('manifest_links'))
|
|
410
|
+
:off
|
|
411
|
+
else
|
|
412
|
+
:na
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
def metadata?
|
|
416
|
+
if (defined? @rc['omit']['metadata'] \
|
|
417
|
+
and not @rc['omit']['metadata'].nil?) \
|
|
418
|
+
or listed?('metadata')
|
|
419
|
+
:off
|
|
420
|
+
else
|
|
421
|
+
:na
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
def minitoc?
|
|
425
|
+
if (defined? @rc['omit']['minitoc'] \
|
|
426
|
+
and not @rc['omit']['minitoc'].nil?) \
|
|
427
|
+
or (listed?('minitoc'))
|
|
428
|
+
:off
|
|
429
|
+
else
|
|
430
|
+
:na
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
def manifest_minitoc?
|
|
434
|
+
if (defined? @rc['omit']['manifest_minitoc'] \
|
|
435
|
+
and not @rc['omit']['manifest_minitoc'].nil?) \
|
|
436
|
+
or listed?('manifest_minitoc')
|
|
437
|
+
:off
|
|
438
|
+
else
|
|
439
|
+
:na
|
|
440
|
+
end
|
|
441
|
+
end
|
|
442
|
+
def html_minitoc?
|
|
443
|
+
if (defined? @rc['omit']['html_minitoc'] \
|
|
444
|
+
and not @rc['omit']['html_minitoc'].nil?) \
|
|
445
|
+
or (listed?('html_minitoc') \
|
|
446
|
+
|| listed?('minitoc'))
|
|
447
|
+
:off
|
|
448
|
+
else
|
|
449
|
+
:na
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
def html_navigation?
|
|
453
|
+
if (defined? @rc['omit']['html_navigation'] \
|
|
454
|
+
and not @rc['omit']['html_navigation'].nil?) \
|
|
455
|
+
or listed?('html_navigation')
|
|
456
|
+
:off
|
|
457
|
+
else
|
|
458
|
+
:na
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
def html_navigation_bar?
|
|
462
|
+
if (defined? @rc['omit']['html_navigation_bar'] \
|
|
463
|
+
and not @rc['omit']['html_navigation_bar'].nil?) \
|
|
464
|
+
or listed?('html_navigation_bar')
|
|
465
|
+
:off
|
|
466
|
+
else
|
|
467
|
+
:na
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
def segsubtoc?
|
|
471
|
+
if (defined? @rc['omit']['segsubtoc'] \
|
|
472
|
+
and not @rc['omit']['segsubtoc'].nil?) \
|
|
473
|
+
or listed?('segsubtoc')
|
|
474
|
+
:off
|
|
475
|
+
else
|
|
476
|
+
:na
|
|
477
|
+
end
|
|
478
|
+
end
|
|
479
|
+
def html_right_pane?
|
|
480
|
+
if (defined? @rc['omit']['html_right_pane'] \
|
|
481
|
+
and not @rc['omit']['html_right_pane'].nil?) \
|
|
482
|
+
or listed?('html_right_pane')
|
|
483
|
+
:off
|
|
484
|
+
else
|
|
485
|
+
:na
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
def html_top_band?
|
|
489
|
+
if (defined? @rc['omit']['html_top_band'] \
|
|
490
|
+
and not @rc['omit']['html_top_band'].nil?) \
|
|
491
|
+
or listed?('html_top_band')
|
|
492
|
+
:off
|
|
493
|
+
else
|
|
494
|
+
:na
|
|
495
|
+
end
|
|
496
|
+
end
|
|
497
|
+
def search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
|
|
498
|
+
if (defined? @rc['omit']['search_form'] \
|
|
499
|
+
and not @rc['omit']['search_form'].nil?) \
|
|
500
|
+
or listed?('search_form')
|
|
501
|
+
:off
|
|
502
|
+
else
|
|
503
|
+
:na
|
|
504
|
+
end
|
|
505
|
+
end
|
|
506
|
+
def html_search_form? #decide later, as is configured here (in sisurc) and can be turned off on command line
|
|
507
|
+
if (defined? @rc['omit']['html_search_form'] \
|
|
508
|
+
and not @rc['omit']['html_search_form'].nil?) \
|
|
509
|
+
or listed?('html_search_form')
|
|
510
|
+
:off
|
|
511
|
+
else
|
|
512
|
+
:na
|
|
513
|
+
end
|
|
514
|
+
end
|
|
515
|
+
self
|
|
516
|
+
end
|
|
517
|
+
def odt_ocn?
|
|
518
|
+
((defined? @rc['odt']['ocn']) \
|
|
519
|
+
&& @rc['odt']['ocn']==false) \
|
|
520
|
+
? @rc['odt']['ocn']
|
|
521
|
+
: true
|
|
522
|
+
end
|
|
523
|
+
def xml_docbook_ocn?
|
|
524
|
+
((defined? @rc['xml_docbook']['ocn']) \
|
|
525
|
+
&& @rc['xml_docbook']['ocn']==false) \
|
|
526
|
+
? @rc['xml_docbook']['ocn']
|
|
527
|
+
: true
|
|
528
|
+
end
|
|
529
|
+
def xml_fictionbook_ocn?
|
|
530
|
+
((defined? @rc['xml_fictionbook']['ocn']) \
|
|
531
|
+
&& @rc['xml_fictionbook']['ocn']==false) \
|
|
532
|
+
? @rc['xml_fictionbook']['ocn']
|
|
533
|
+
: true
|
|
534
|
+
end
|
|
535
|
+
def xml_scaffold_ocn?
|
|
536
|
+
((defined? @rc['xml_scaffold']['ocn']) \
|
|
537
|
+
&& @rc['xml_scaffold']['ocn']==false) \
|
|
538
|
+
? @rc['xml_scaffold']['ocn']
|
|
539
|
+
: true
|
|
540
|
+
end
|
|
541
|
+
def plaintext_ocn?
|
|
542
|
+
((defined? @rc['plaintext']['ocn']) \
|
|
543
|
+
&& @rc['plaintext']['ocn']==false) \
|
|
544
|
+
? @rc['plaintext']['ocn']
|
|
545
|
+
: true
|
|
546
|
+
end
|
|
547
|
+
def textile_ocn?
|
|
548
|
+
((defined? @rc['textile']['ocn']) \
|
|
549
|
+
&& @rc['textile']['ocn']==true) \
|
|
550
|
+
? @rc['textile']['ocn']
|
|
551
|
+
: false
|
|
552
|
+
end
|
|
553
|
+
def asciidoc_ocn?
|
|
554
|
+
((defined? @rc['asciidoc']['ocn']) \
|
|
555
|
+
&& @rc['asciidoc']['ocn']==true) \
|
|
556
|
+
? @rc['asciidoc']['ocn']
|
|
557
|
+
: false
|
|
558
|
+
end
|
|
559
|
+
def markdown_ocn?
|
|
560
|
+
((defined? @rc['markdown']['ocn']) \
|
|
561
|
+
&& @rc['markdown']['ocn']==true) \
|
|
562
|
+
? @rc['markdown']['ocn']
|
|
563
|
+
: false
|
|
564
|
+
end
|
|
565
|
+
def rst_ocn?
|
|
566
|
+
((defined? @rc['rst']['ocn']) \
|
|
567
|
+
&& @rc['rst']['ocn']==true) \
|
|
568
|
+
? @rc['rst']['ocn']
|
|
569
|
+
: false
|
|
570
|
+
end
|
|
571
|
+
def orgmode_ocn?
|
|
572
|
+
((defined? @rc['orgmode']['ocn']) \
|
|
573
|
+
&& @rc['orgmode']['ocn']==true) \
|
|
574
|
+
? @rc['orgmode']['ocn']
|
|
575
|
+
: false
|
|
576
|
+
end
|
|
577
|
+
def widget #needs (md) #move
|
|
578
|
+
@rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
579
|
+
@ad=SiSU_Env::GetInit.new.ads
|
|
580
|
+
@html_bits=SiSU_Proj_HTML::Bits.new
|
|
581
|
+
@flag={
|
|
582
|
+
ad: false,
|
|
583
|
+
md: false,
|
|
584
|
+
sk: false,
|
|
585
|
+
rc: false
|
|
586
|
+
}
|
|
587
|
+
def promo?
|
|
588
|
+
@flag[:ad]=if @md.flag_promo \
|
|
589
|
+
&& @ad[:flag_promo]
|
|
590
|
+
@flag[:md]=true
|
|
591
|
+
true
|
|
592
|
+
elsif defined? @html_bits.widget_promo \
|
|
593
|
+
and not @html_bits.widget_promo.nil? \
|
|
594
|
+
and @html_bits.widget_promo.is_a?(Array) \
|
|
595
|
+
and @html_bits.widget_promo.length > 0
|
|
596
|
+
@flag[:sk]=true
|
|
597
|
+
true
|
|
598
|
+
elsif defined? @rc['html']['promo'] \
|
|
599
|
+
and not @rc['html']['promo'].nil? \
|
|
600
|
+
and @rc['html']['promo'].length > 0
|
|
601
|
+
@flag[:rc]=true
|
|
602
|
+
true
|
|
603
|
+
else false
|
|
604
|
+
end
|
|
605
|
+
@flag
|
|
606
|
+
end
|
|
607
|
+
def search?
|
|
608
|
+
searches=['sisu']
|
|
609
|
+
flag=false
|
|
610
|
+
if defined? @rc['search']
|
|
611
|
+
searches.each do |type|
|
|
612
|
+
flag=if defined? @rc['search'][type] \
|
|
613
|
+
and defined? @rc['search'][type]['action'] \
|
|
614
|
+
and @rc['search'][type]['flag']==true \
|
|
615
|
+
and @rc['search'][type]['action'] =~/https?:\/\//
|
|
616
|
+
flag=if promo?[:ad]
|
|
617
|
+
false
|
|
618
|
+
elsif defined? @html_bits.widget_search \
|
|
619
|
+
and @html_bits.widget_search==true
|
|
620
|
+
true
|
|
621
|
+
elsif defined? @rc['search'][type]['flag'] \
|
|
622
|
+
and @rc['search'][type]['flag']==true
|
|
623
|
+
true
|
|
624
|
+
else false
|
|
625
|
+
end
|
|
626
|
+
else false
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
else false
|
|
630
|
+
end
|
|
631
|
+
flag
|
|
632
|
+
end
|
|
633
|
+
def search_fixed?
|
|
634
|
+
searches=['sisu','hyperestraier']
|
|
635
|
+
flag=if defined? @rc['search']
|
|
636
|
+
searches.each do |type|
|
|
637
|
+
if defined? @rc['search'][type] \
|
|
638
|
+
and defined? @rc['search'][type]['action'] \
|
|
639
|
+
and @rc['search'][type]['action'] =~/https?:\/\// \
|
|
640
|
+
and defined? @rc['search'][type]['db'] \
|
|
641
|
+
and @rc['search'][type]['db'] =~/\S+/
|
|
642
|
+
flag=if promo?[:ad]
|
|
643
|
+
false
|
|
644
|
+
elsif defined? @html_bits.widget_search \
|
|
645
|
+
and @html_bits.widget_search==true
|
|
646
|
+
true
|
|
647
|
+
elsif defined? @rc['search'][type]['flag'] \
|
|
648
|
+
and @rc['search'][type]['flag']==true
|
|
649
|
+
true
|
|
650
|
+
else false
|
|
651
|
+
end
|
|
652
|
+
else false
|
|
653
|
+
end
|
|
654
|
+
end
|
|
655
|
+
else false
|
|
656
|
+
end
|
|
657
|
+
end
|
|
658
|
+
def search_form(type='sisusearch',action=nil,db=nil,table=false)
|
|
659
|
+
rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
660
|
+
create_form_sisu=if action \
|
|
661
|
+
and db \
|
|
662
|
+
and action =~/https?:\/\// \
|
|
663
|
+
and db =~/\S+/
|
|
664
|
+
true
|
|
665
|
+
elsif widget.search?
|
|
666
|
+
db=if rc['search']['sisu']['flag']==true \
|
|
667
|
+
and rc['search']['sisu']['db']=~/\S+/
|
|
668
|
+
(rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
|
|
669
|
+
? rc['search']['sisu']['db']
|
|
670
|
+
: "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
|
|
671
|
+
else nil
|
|
672
|
+
end
|
|
673
|
+
action=rc['search']['sisu']['action']
|
|
674
|
+
true
|
|
675
|
+
elsif defined? rc['search']['sisu']['flag'] \
|
|
676
|
+
and defined? rc['search']['sisu']['action'] \
|
|
677
|
+
and rc['search']['sisu']['flag']==true \
|
|
678
|
+
and rc['search']['sisu']['action'] =~/https?:\/\//
|
|
679
|
+
true
|
|
680
|
+
else false
|
|
681
|
+
end
|
|
682
|
+
if table
|
|
683
|
+
table_open='<td align="center" bgcolor="#ffffff">'
|
|
684
|
+
table_close='</td>'
|
|
685
|
+
else
|
|
686
|
+
table_open=''
|
|
687
|
+
table_close='<br />'
|
|
688
|
+
end
|
|
689
|
+
form=if create_form_sisu \
|
|
690
|
+
and type=~/sisusearch/ \
|
|
691
|
+
and defined? rc['search']['sisu'] \
|
|
692
|
+
and defined? rc['search']['sisu']['action']
|
|
693
|
+
<<WOK
|
|
694
|
+
<!-- SiSU Search -->
|
|
695
|
+
#{table_open}
|
|
696
|
+
<a name="search"></a>
|
|
697
|
+
<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
|
|
698
|
+
<font size="2">
|
|
699
|
+
<input type="text" name="s1" size="24" maxlength="255" />
|
|
700
|
+
<input type="hidden" name="db" value="#{db}" />
|
|
701
|
+
<input type="hidden" name="ltd" value="1000" />
|
|
702
|
+
<input type="hidden" name="off" value="0" />
|
|
703
|
+
<input type="hidden" name="doc" value="#{@md.fnb}" /><br />
|
|
704
|
+
<input type="submit" name="search" value="search doc" />
|
|
705
|
+
<input type="submit" name="search" value="search db" />
|
|
706
|
+
</font></form>
|
|
707
|
+
#{table_close}
|
|
708
|
+
<!-- SiSU Search -->
|
|
709
|
+
WOK
|
|
710
|
+
else ''
|
|
711
|
+
end
|
|
712
|
+
form
|
|
713
|
+
end
|
|
714
|
+
def search_form_static(action=nil,db=nil)
|
|
715
|
+
rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
716
|
+
create_form=if rc['search']['sisu']['flag']==true \
|
|
717
|
+
and action \
|
|
718
|
+
and db \
|
|
719
|
+
and action =~/https?:\/\// \
|
|
720
|
+
and db =~/\S+/
|
|
721
|
+
true
|
|
722
|
+
elsif widget.search_fixed?
|
|
723
|
+
db=if rc['search']['sisu']['flag']==true \
|
|
724
|
+
and rc['search']['sisu']['db']=~/\S+/
|
|
725
|
+
(rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
|
|
726
|
+
? rc['search']['sisu']['db']
|
|
727
|
+
: "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
|
|
728
|
+
else nil
|
|
729
|
+
end
|
|
730
|
+
action=rc['search']['sisu']['action']
|
|
731
|
+
true
|
|
732
|
+
else false
|
|
733
|
+
end
|
|
734
|
+
if create_form
|
|
735
|
+
%{<td align="center" bgcolor="#ffffff">
|
|
736
|
+
<!-- SiSU Search -->
|
|
737
|
+
<a name="search"></a>
|
|
738
|
+
<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
|
|
739
|
+
<font size="2">
|
|
740
|
+
<input type="text" name="s1" size="24" maxlength="255" />
|
|
741
|
+
<br />
|
|
742
|
+
<input type="hidden" name="db" value="#{db}" />
|
|
743
|
+
<input type="hidden" name="ltd" value="1000" />
|
|
744
|
+
<input type="hidden" name="off" value="0" />
|
|
745
|
+
<input type="hidden" name="doc" value="#{@md.fnb}" />
|
|
746
|
+
<input type="submit" name="search" value="search doc" />
|
|
747
|
+
<input type="submit" name="search" value="search db" />
|
|
748
|
+
</font>
|
|
749
|
+
</form>
|
|
750
|
+
<!-- SiSU Search -->
|
|
751
|
+
</td> }
|
|
752
|
+
else ''
|
|
753
|
+
end
|
|
754
|
+
end
|
|
755
|
+
def search_action #check
|
|
756
|
+
if search?
|
|
757
|
+
else ''
|
|
758
|
+
end
|
|
759
|
+
end
|
|
760
|
+
self
|
|
761
|
+
end
|
|
762
|
+
def widget_static
|
|
763
|
+
@rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
764
|
+
@html_bits=SiSU_Proj_HTML::Bits.new
|
|
765
|
+
@flag={ ad: false, md: false, sk: false, rc: false }
|
|
766
|
+
def search?
|
|
767
|
+
flag=if defined? @rc['search'] \
|
|
768
|
+
and defined? @rc['search']['sisu'] \
|
|
769
|
+
and defined? @rc['search']['sisu']['action'] \
|
|
770
|
+
and @rc['search']['sisu']['action'] =~/https?:\/\// \
|
|
771
|
+
and defined? @rc['search']['sisu']['db'] \
|
|
772
|
+
and @rc['search']['sisu']['db'] =~/\S+/
|
|
773
|
+
flag=if defined? @html_bits.widget_search \
|
|
774
|
+
and @html_bits.widget_search==true
|
|
775
|
+
true
|
|
776
|
+
elsif defined? @rc['search']['sisu']['flag'] \
|
|
777
|
+
and @rc['search']['sisu']['flag']==true
|
|
778
|
+
true
|
|
779
|
+
else
|
|
780
|
+
false
|
|
781
|
+
end
|
|
782
|
+
else
|
|
783
|
+
false
|
|
784
|
+
end
|
|
785
|
+
end
|
|
786
|
+
def search_fixed?
|
|
787
|
+
flag=if defined? @rc['search'] \
|
|
788
|
+
and defined? @rc['search']['sisu'] \
|
|
789
|
+
and defined? @rc['search']['sisu']['action'] \
|
|
790
|
+
and @rc['search']['sisu']['action'] =~/https?:\/\// \
|
|
791
|
+
and defined? @rc['search']['sisu']['db'] \
|
|
792
|
+
and @rc['search']['sisu']['db'] =~/\S+/ \
|
|
793
|
+
and defined? @rc['search']['sisu']['db'] \
|
|
794
|
+
and @rc['search']['sisu']['db'] =~/\S+/
|
|
795
|
+
flag=if defined? @html_bits.widget_search \
|
|
796
|
+
and @html_bits.widget_search==true
|
|
797
|
+
true
|
|
798
|
+
elsif defined? @rc['search']['sisu']['flag'] \
|
|
799
|
+
and @rc['search']['sisu']['flag']==true
|
|
800
|
+
true
|
|
801
|
+
else
|
|
802
|
+
false
|
|
803
|
+
end
|
|
804
|
+
else
|
|
805
|
+
false
|
|
806
|
+
end
|
|
807
|
+
end
|
|
808
|
+
def search_form(action=nil,db=nil)
|
|
809
|
+
rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
810
|
+
create_form=if defined? rc['search']['sisu']['flag'] \
|
|
811
|
+
and rc['search']['sisu']['flag']==true \
|
|
812
|
+
and action \
|
|
813
|
+
and db \
|
|
814
|
+
and action =~/https?:\/\// \
|
|
815
|
+
and db =~/\S+/
|
|
816
|
+
true
|
|
817
|
+
elsif widget_static.search? \
|
|
818
|
+
and rc['search']['sisu']['flag']==true
|
|
819
|
+
db=if rc['search']['sisu']['db']=~/\S+/
|
|
820
|
+
(rc['search']['sisu']['db']=~/^#{Db[:name_prefix]}\S+/) \
|
|
821
|
+
? rc['search']['sisu']['db']
|
|
822
|
+
: "#{Db[:name_prefix]}#{rc['search']['sisu']['db']}"
|
|
823
|
+
else nil
|
|
824
|
+
end
|
|
825
|
+
action=rc['search']['sisu']['action']
|
|
826
|
+
true
|
|
827
|
+
else false
|
|
828
|
+
end
|
|
829
|
+
if create_form \
|
|
830
|
+
and @fnb \
|
|
831
|
+
and @fnb=~/\S+/
|
|
832
|
+
%{<!-- SiSU Search -->
|
|
833
|
+
<a name="search"></a>
|
|
834
|
+
<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
|
|
835
|
+
<font size="2">
|
|
836
|
+
<input type="text" name="s1" size="24" maxlength="255" />
|
|
837
|
+
<br />
|
|
838
|
+
<input type="hidden" name="db" value="#{db}" />
|
|
839
|
+
<input type="hidden" name="doc" value="#{@fnb}" />
|
|
840
|
+
<input type="submit" name="search" value="search doc" />
|
|
841
|
+
<input type="submit" name="search" value="search db" />
|
|
842
|
+
</font>
|
|
843
|
+
</form>
|
|
844
|
+
<!-- SiSU Search --> }
|
|
845
|
+
elsif create_form
|
|
846
|
+
%{<!-- SiSU Search -->
|
|
847
|
+
<a name="search"></a>
|
|
848
|
+
<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
|
|
849
|
+
<font size="2">
|
|
850
|
+
<input type="text" name="s1" size="24" maxlength="255" />
|
|
851
|
+
<br />
|
|
852
|
+
<input type="hidden" name="db" value="#{db}" />
|
|
853
|
+
<input type="submit" name="search" value="search db" />
|
|
854
|
+
</font>
|
|
855
|
+
</form>
|
|
856
|
+
<!-- SiSU Search --> }
|
|
857
|
+
else ''
|
|
858
|
+
end
|
|
859
|
+
end
|
|
860
|
+
def search_action #check
|
|
861
|
+
if search?
|
|
862
|
+
else ''
|
|
863
|
+
end
|
|
864
|
+
end
|
|
865
|
+
self
|
|
866
|
+
end
|
|
867
|
+
def source_file_path
|
|
868
|
+
file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
|
|
869
|
+
unless file =~/\.ssm\.sst$/; "#{Dir.pwd}"
|
|
870
|
+
else "#{processing_path.composite_file}"
|
|
871
|
+
end
|
|
872
|
+
end
|
|
873
|
+
def source_file_with_path
|
|
874
|
+
file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst')
|
|
875
|
+
"#{source_file_path}/#{file}"
|
|
876
|
+
end
|
|
877
|
+
def texpdf_hyperlinks(cli)
|
|
878
|
+
@cli=cli
|
|
879
|
+
@hyplnks=if cli != :na
|
|
880
|
+
cli
|
|
881
|
+
elsif (defined? @rc['default']['pdf_hyperlinks']) \
|
|
882
|
+
&& (@rc['default']['pdf_hyperlinks']=~/color/)
|
|
883
|
+
:color
|
|
884
|
+
elsif (defined? @rc['default']['pdf_hyperlinks']) \
|
|
885
|
+
&& (@rc['default']['pdf_hyperlinks'] \
|
|
886
|
+
=~/(?:no-color|color-off|mono(?:chrome)?)/)
|
|
887
|
+
:mono
|
|
888
|
+
else :na
|
|
889
|
+
end
|
|
890
|
+
def landscape
|
|
891
|
+
if @cli != :na
|
|
892
|
+
@cli
|
|
893
|
+
elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
|
|
894
|
+
&& (@rc['default']['pdf_hyperlinks_landscape']=~/color/)
|
|
895
|
+
:color
|
|
896
|
+
elsif (defined? @rc['default']['pdf_hyperlinks_landscape']) \
|
|
897
|
+
&& (@rc['default']['pdf_hyperlinks_landscape'] \
|
|
898
|
+
=~/(?:no-color|color-off|mono(?:chrome)?)/)
|
|
899
|
+
:mono
|
|
900
|
+
elsif @hyplnks != :na
|
|
901
|
+
@hyplnks
|
|
902
|
+
else :na
|
|
903
|
+
end
|
|
904
|
+
end
|
|
905
|
+
def portrait
|
|
906
|
+
if @cli != :na
|
|
907
|
+
@cli
|
|
908
|
+
elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
|
|
909
|
+
&& (@rc['default']['pdf_hyperlinks_portrait']=~/color/)
|
|
910
|
+
:color
|
|
911
|
+
elsif (defined? @rc['default']['pdf_hyperlinks_portrait']) \
|
|
912
|
+
&& (@rc['default']['pdf_hyperlinks_portrait'] \
|
|
913
|
+
=~/(?:no-color|color-off|mono(?:chrome)?)/)
|
|
914
|
+
:mono
|
|
915
|
+
elsif @hyplnks != :na
|
|
916
|
+
@hyprlnks
|
|
917
|
+
else :na
|
|
918
|
+
end
|
|
919
|
+
end
|
|
920
|
+
self
|
|
921
|
+
end
|
|
922
|
+
def font
|
|
923
|
+
def size(pt=nil)
|
|
924
|
+
if pt && pt != :na
|
|
925
|
+
pt
|
|
926
|
+
elsif defined? @rc['default']['fontsize'] \
|
|
927
|
+
&& @rc['default']['fontsize']=~/\d{1,2}/
|
|
928
|
+
@rc['default']['fontsize']
|
|
929
|
+
else :na
|
|
930
|
+
end
|
|
931
|
+
end
|
|
932
|
+
def texpdf
|
|
933
|
+
# you may wish to check selected font against available fonts:
|
|
934
|
+
# fc-list :outline -f "%{family}\n"
|
|
935
|
+
# fc-list :lang=ja
|
|
936
|
+
def main
|
|
937
|
+
(defined? @rc['default']['texpdf_fontface']) \
|
|
938
|
+
&& (@rc['default']['texpdf_fontface']=~/\S{3,}/) \
|
|
939
|
+
? @rc['default']['texpdf_fontface']
|
|
940
|
+
: 'Liberation Sans'
|
|
941
|
+
end
|
|
942
|
+
def sans # not used
|
|
943
|
+
(defined? @rc['default']['texpdf_fontface_sans']) \
|
|
944
|
+
&& (@rc['default']['texpdf_fontface_sans']=~/\S{3,}/) \
|
|
945
|
+
? @rc['default']['texpdf_fontface_sans']
|
|
946
|
+
: 'Liberation Sans'
|
|
947
|
+
end
|
|
948
|
+
def serif # not used
|
|
949
|
+
(defined? @rc['default']['texpdf_fontface_serif']) \
|
|
950
|
+
&& (@rc['default']['texpdf_font_serif']=~/\S{3,}/) \
|
|
951
|
+
? @rc['default']['texpdf_fontface_serif']
|
|
952
|
+
: 'Liberation Serif'
|
|
953
|
+
end
|
|
954
|
+
def mono
|
|
955
|
+
(defined? @rc['default']['texpdf_fontface_mono']) \
|
|
956
|
+
&& (@rc['default']['texpdf_fontface_mono']=~/\S{3,}/) \
|
|
957
|
+
? @rc['default']['texpdf_fontface_mono']
|
|
958
|
+
: 'Liberation Mono'
|
|
959
|
+
end
|
|
960
|
+
def cjk
|
|
961
|
+
(defined? @rc['default']['texpdf_fontface_cjk']) \
|
|
962
|
+
&& (@rc['default']['texpdf_fontface_cjk']=~/\S{3,}/) \
|
|
963
|
+
? @rc['default']['texpdf_fontface_cjk']
|
|
964
|
+
: 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic'
|
|
965
|
+
end
|
|
966
|
+
def cjk_zh
|
|
967
|
+
(defined? @rc['default']['texpdf_fontface_cjk_zh']) \
|
|
968
|
+
&& (@rc['default']['texpdf_fontface_cjk_zh']=~/\S{3,}/) \
|
|
969
|
+
? @rc['default']['texpdf_fontface_cjk_zh']
|
|
970
|
+
: 'IPAGothic'
|
|
971
|
+
end
|
|
972
|
+
def cjk_ja
|
|
973
|
+
(defined? @rc['default']['texpdf_fontface_cjk_ja']) \
|
|
974
|
+
&& (@rc['default']['texpdf_fontface_cjk_ja']=~/\S{3,}/) \
|
|
975
|
+
? @rc['default']['texpdf_fontface_cjk_ja']
|
|
976
|
+
: 'IPAGothic'
|
|
977
|
+
end
|
|
978
|
+
def cjk_ko
|
|
979
|
+
(defined? @rc['default']['texpdf_fontface_cjk_ko']) \
|
|
980
|
+
&& (@rc['default']['texpdf_fontface_cjk_ko']=~/\S{3,}/) \
|
|
981
|
+
? @rc['default']['texpdf_fontface_cjk_ko']
|
|
982
|
+
: 'IPAGothic'
|
|
983
|
+
end
|
|
984
|
+
def size(pt=nil)
|
|
985
|
+
if pt && pt != :na
|
|
986
|
+
pt
|
|
987
|
+
elsif (defined? @rc['default']['texpdf_fontsize']) \
|
|
988
|
+
&& (@rc['default']['texpdf_fontsize']=~/\d{1,2}/)
|
|
989
|
+
@rc['default']['texpdf_fontsize']
|
|
990
|
+
elsif (defined? @rc['default']['fontsize']) \
|
|
991
|
+
&& (@rc['default']['fontsize']=~/\d{1,2}/)
|
|
992
|
+
@rc['default']['fontsize']
|
|
993
|
+
else
|
|
994
|
+
:na
|
|
995
|
+
end
|
|
996
|
+
end
|
|
997
|
+
self
|
|
998
|
+
end
|
|
999
|
+
self
|
|
1000
|
+
end
|
|
1001
|
+
def path_rel_links
|
|
1002
|
+
def html_scroll_2
|
|
1003
|
+
if @env.output_dir_structure.by_language_code?
|
|
1004
|
+
'../../'
|
|
1005
|
+
elsif @env.output_dir_structure.by_filetype?
|
|
1006
|
+
'../'
|
|
1007
|
+
else
|
|
1008
|
+
'../'
|
|
1009
|
+
end
|
|
1010
|
+
end
|
|
1011
|
+
def html_seg_2
|
|
1012
|
+
if @env.output_dir_structure.by_language_code?
|
|
1013
|
+
'../../../'
|
|
1014
|
+
elsif @env.output_dir_structure.by_filetype?
|
|
1015
|
+
'../../'
|
|
1016
|
+
else
|
|
1017
|
+
'../'
|
|
1018
|
+
end
|
|
1019
|
+
end
|
|
1020
|
+
def html_scroll_1
|
|
1021
|
+
if @env.output_dir_structure.by_language_code?
|
|
1022
|
+
'../'
|
|
1023
|
+
elsif @env.output_dir_structure.by_filetype?
|
|
1024
|
+
'../'
|
|
1025
|
+
else
|
|
1026
|
+
'./'
|
|
1027
|
+
end
|
|
1028
|
+
end
|
|
1029
|
+
def html_seg_1
|
|
1030
|
+
if @env.output_dir_structure.by_language_code?
|
|
1031
|
+
'../../'
|
|
1032
|
+
elsif @env.output_dir_structure.by_filetype?
|
|
1033
|
+
'../../'
|
|
1034
|
+
else
|
|
1035
|
+
'./'
|
|
1036
|
+
end
|
|
1037
|
+
end
|
|
1038
|
+
self
|
|
1039
|
+
end
|
|
1040
|
+
def read_source_file_array(fns)
|
|
1041
|
+
(fns !~/\.ssm.sst$/) \
|
|
1042
|
+
? (IO.readlines(fns, mode: 'r:utf-8', cr_newline: true))
|
|
1043
|
+
: (IO.readlines(
|
|
1044
|
+
"#{processing_path.composite_file}/#{fns}",
|
|
1045
|
+
mode: 'r:utf-8',
|
|
1046
|
+
cr_newline: true
|
|
1047
|
+
))
|
|
1048
|
+
end
|
|
1049
|
+
def read_source_file(fns)
|
|
1050
|
+
read_source_file_array(fns)
|
|
1051
|
+
end
|
|
1052
|
+
def read_source_file_string(fns)
|
|
1053
|
+
(fns !~/\.ssm.sst$/) \
|
|
1054
|
+
? (IO.read(fns, mode: 'r:utf-8', cr_newline: true))
|
|
1055
|
+
: (IO.read(
|
|
1056
|
+
"#{processing_path.composite_file}/#{fns}",
|
|
1057
|
+
mode: 'r:utf-8',
|
|
1058
|
+
cr_newline: true
|
|
1059
|
+
))
|
|
1060
|
+
end
|
|
1061
|
+
def source_file_processing_array(fns)
|
|
1062
|
+
read_source_file_string(fns).split(/\s*\n\s*\n/m)
|
|
1063
|
+
end
|
|
1064
|
+
def path #dir
|
|
1065
|
+
def home
|
|
1066
|
+
@sys.home
|
|
1067
|
+
end
|
|
1068
|
+
def sisurc_path
|
|
1069
|
+
SiSU_Get_Init::GetInit.new.sisu_yaml.rc_path
|
|
1070
|
+
end
|
|
1071
|
+
def pwd
|
|
1072
|
+
@sys.pwd
|
|
1073
|
+
end
|
|
1074
|
+
def stub_pwd
|
|
1075
|
+
@stub_pwd
|
|
1076
|
+
end
|
|
1077
|
+
def base_markup_dir_stub
|
|
1078
|
+
@base_markup_dir_stub
|
|
1079
|
+
end
|
|
1080
|
+
def stub_epub
|
|
1081
|
+
@stub_epub
|
|
1082
|
+
end
|
|
1083
|
+
def stub_src
|
|
1084
|
+
@stub_src
|
|
1085
|
+
end
|
|
1086
|
+
def stub_pod
|
|
1087
|
+
@stub_pod
|
|
1088
|
+
end
|
|
1089
|
+
def etc
|
|
1090
|
+
defaults[:sisu_etc] #live/dynamic
|
|
1091
|
+
end
|
|
1092
|
+
def arch
|
|
1093
|
+
@sys.dir_arch
|
|
1094
|
+
end
|
|
1095
|
+
def sitearch
|
|
1096
|
+
@sys.dir_sitearch
|
|
1097
|
+
end
|
|
1098
|
+
def bin
|
|
1099
|
+
@sys.dir_bin
|
|
1100
|
+
end
|
|
1101
|
+
def share #shared data repository source directory
|
|
1102
|
+
#SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
|
|
1103
|
+
# mark(defaults[:sisu_share])
|
|
1104
|
+
defaults[:sisu_share]
|
|
1105
|
+
end
|
|
1106
|
+
def style
|
|
1107
|
+
if @md \
|
|
1108
|
+
&& ((@md.opt.opt_act[:dump][:bool] \
|
|
1109
|
+
&& @md.opt.opt_act[:dump][:inst]) \
|
|
1110
|
+
|| (@md.opt.opt_act[:redirect][:bool] \
|
|
1111
|
+
&& @md.opt.opt_act[:redirect][:inst]))
|
|
1112
|
+
'css'
|
|
1113
|
+
else
|
|
1114
|
+
defaults[:stylesheet_stub]
|
|
1115
|
+
end
|
|
1116
|
+
end
|
|
1117
|
+
def sample_data #sample data repository source directory
|
|
1118
|
+
defaults[:sample_data_path]
|
|
1119
|
+
end
|
|
1120
|
+
def rc
|
|
1121
|
+
@init.rc_path
|
|
1122
|
+
end
|
|
1123
|
+
def yamlrc
|
|
1124
|
+
GetInit.new.sisu_yaml.rc_path
|
|
1125
|
+
end
|
|
1126
|
+
def man #check use
|
|
1127
|
+
(defined? @rc['webserv']['man']) \
|
|
1128
|
+
? "#{webserv}/#{@rc['webserv']['man']}"
|
|
1129
|
+
: defaults[:webserv_man]
|
|
1130
|
+
end
|
|
1131
|
+
def webserv_path #testing, check need, remove
|
|
1132
|
+
webserv
|
|
1133
|
+
end
|
|
1134
|
+
def webserv #separation required for webrick which cannot use path.output (different requirements as no file is passed)
|
|
1135
|
+
man_path=if @@man_path.nil?
|
|
1136
|
+
man_path=if defined? @rc['webserv']['path'] \
|
|
1137
|
+
and @rc['webserv']['path'] =~/\S\S+/
|
|
1138
|
+
pwd=Dir.pwd
|
|
1139
|
+
Dir.chdir(SiSU_Utils::Path.new.base_markup)
|
|
1140
|
+
man_path=@@man_path=File.expand_path(@rc['webserv']['path'])
|
|
1141
|
+
Dir.chdir(pwd)
|
|
1142
|
+
man_path
|
|
1143
|
+
else defaults[:webserv_path]
|
|
1144
|
+
end
|
|
1145
|
+
else @@man_path
|
|
1146
|
+
end
|
|
1147
|
+
man_path_head=man_path.gsub(/(\S+)\/[^\/\s]+$/,'\1')
|
|
1148
|
+
unless FileTest.directory?(man_path)
|
|
1149
|
+
FileUtils::mkdir_p(man_path) if File.writable?("#{man_path_head}/.")
|
|
1150
|
+
end
|
|
1151
|
+
@webserv_path=if defined? man_path \
|
|
1152
|
+
and File.writable?("#{man_path}/.")
|
|
1153
|
+
man_path #web server path as configured in rc file
|
|
1154
|
+
elsif FileTest.directory?(defaults[:webserv_path]) \
|
|
1155
|
+
and File.writable?("#{defaults[:webserv_path]}/.") #web server path default
|
|
1156
|
+
defaults[:webserv_path]
|
|
1157
|
+
else #create default directory under home and place output there
|
|
1158
|
+
unless FileTest.directory?(defaults[:output_local])
|
|
1159
|
+
FileUtils::mkdir_p(defaults[:output_local])
|
|
1160
|
+
end
|
|
1161
|
+
defaults[:output_local]
|
|
1162
|
+
end
|
|
1163
|
+
end
|
|
1164
|
+
def webserv_stub_ensure
|
|
1165
|
+
FileUtils::mkdir_p(path.webserv) unless FileTest.directory?(path.webserv)
|
|
1166
|
+
FileUtils::mkdir_p("#{path.webserv}/#{@base_markup_dir_stub}") \
|
|
1167
|
+
unless FileTest.directory?("#{path.webserv}/#{@base_markup_dir_stub}")
|
|
1168
|
+
end
|
|
1169
|
+
def webserv_map_pwd #dir
|
|
1170
|
+
"#{path.webserv}/#{base_markup_dir_stub}"
|
|
1171
|
+
end
|
|
1172
|
+
def webserv_dir #fixed/hard path to /www web/presentation directory, on Debian /var/www subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
|
|
1173
|
+
defaults[:webserv_dir]
|
|
1174
|
+
end
|
|
1175
|
+
def webserv_image #web/presentation directory, subdirectories are created within it, depending on markup directory stub-name (last segment of markup directory name)
|
|
1176
|
+
images=if defined? @rc['webserv']['images']
|
|
1177
|
+
@rc['webserv']['images']
|
|
1178
|
+
else defaults[:images]
|
|
1179
|
+
end
|
|
1180
|
+
"#{path.webserv}/#{images}"
|
|
1181
|
+
end
|
|
1182
|
+
def output #web/webserv output directory... subdirectory into which further subdirectories are made based on file names
|
|
1183
|
+
r=Px[:lng_lst_rgx]
|
|
1184
|
+
u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
|
|
1185
|
+
base_stub=@sys.pwd.gsub(u,'\1')
|
|
1186
|
+
if Dir.pwd =~/\/#{Gt[:sisupod]}\/[^\/]+\/#{Gt[:pod]}\/#{Gt[:doc]}/
|
|
1187
|
+
"#{path.webserv}/#{Gt[:doc]}"
|
|
1188
|
+
else
|
|
1189
|
+
"#{path.webserv}/#{base_stub}"
|
|
1190
|
+
end
|
|
1191
|
+
end
|
|
1192
|
+
def feed
|
|
1193
|
+
(defined? @rc['webserv']['feed']) \
|
|
1194
|
+
? ("#{public_output}/#{@rc['webserv']['feed']}")
|
|
1195
|
+
: (defaults[:webserv_feed])
|
|
1196
|
+
end
|
|
1197
|
+
def feed_home
|
|
1198
|
+
"#{public_output}/#{@rc['webserv']['feed_home']}"
|
|
1199
|
+
end
|
|
1200
|
+
def scripts #used previously only to include tla version info
|
|
1201
|
+
if defined? @rc['project']['path']
|
|
1202
|
+
"#{home}/#{@rc['project']['path']}"
|
|
1203
|
+
end
|
|
1204
|
+
end
|
|
1205
|
+
def cgi
|
|
1206
|
+
(defined? @rc['webserv']['cgi']) \
|
|
1207
|
+
? "#{@rc['webserv']['cgi']}"
|
|
1208
|
+
: (defaults[:webserv_cgi])
|
|
1209
|
+
end
|
|
1210
|
+
def php
|
|
1211
|
+
(defined? @rc['webserv']['php']) \
|
|
1212
|
+
? "#{public_output}/#{@rc['webserv']['php']}"
|
|
1213
|
+
: (defaults[:webserv_php])
|
|
1214
|
+
end
|
|
1215
|
+
#% programs
|
|
1216
|
+
def output_tell
|
|
1217
|
+
url.webserv_map_pwd
|
|
1218
|
+
end
|
|
1219
|
+
def image_source_sisu_includes(md=nil)
|
|
1220
|
+
if md \
|
|
1221
|
+
and (md.opt.sisu_install_type? == \
|
|
1222
|
+
:full_path_to_sisu_bin_in_sisu_dir_tree) \
|
|
1223
|
+
and FileTest.directory?(
|
|
1224
|
+
"#{md.opt.sisu_data_dir?}/image"
|
|
1225
|
+
)==true
|
|
1226
|
+
"#{md.opt.sisu_data_dir?}/image"
|
|
1227
|
+
else
|
|
1228
|
+
"#{share}/image"
|
|
1229
|
+
end
|
|
1230
|
+
end
|
|
1231
|
+
def image_source(md=nil) #image repository source directory
|
|
1232
|
+
if defined? @rc['image']['path'] \
|
|
1233
|
+
and defined? @rc['image']['public']
|
|
1234
|
+
pth="#{@rc['image']['path']}"
|
|
1235
|
+
"#{pth}/#{@rc['image']['public']}"
|
|
1236
|
+
else
|
|
1237
|
+
image_source_sisu_includes(md)
|
|
1238
|
+
end
|
|
1239
|
+
end
|
|
1240
|
+
def image_source_include(md=nil) #image repository source directory
|
|
1241
|
+
if defined? @rc['image']['path'] \
|
|
1242
|
+
and defined? @rc['image']['public'] \
|
|
1243
|
+
and FileTest.directory?(
|
|
1244
|
+
"#{@rc['image']['path']}/#{@rc['image']['public']}"
|
|
1245
|
+
)==true
|
|
1246
|
+
"#{@rc['image']['path']}/#{@rc['image']['public']}"
|
|
1247
|
+
elsif FileTest.directory?("#{@@pwd}/#{defaults[:image_stub]}")==true
|
|
1248
|
+
"#{@@pwd}/#{defaults[:image_stub]}"
|
|
1249
|
+
elsif FileTest.directory?(
|
|
1250
|
+
"#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
|
|
1251
|
+
)==true
|
|
1252
|
+
"#{SiSU_Utils::Path.new.base_markup}/#{defaults[:image_stub]}"
|
|
1253
|
+
else
|
|
1254
|
+
image_source_sisu_includes(md)
|
|
1255
|
+
end
|
|
1256
|
+
end
|
|
1257
|
+
def image_external
|
|
1258
|
+
"#{processing}/external_document/image"
|
|
1259
|
+
end
|
|
1260
|
+
def image_source_include_local
|
|
1261
|
+
if FileTest.directory?(defaults[:image_local])
|
|
1262
|
+
defaults[:image_local]
|
|
1263
|
+
end
|
|
1264
|
+
end
|
|
1265
|
+
def image_source_include_remote
|
|
1266
|
+
if FileTest.directory?(image_external)
|
|
1267
|
+
image_external
|
|
1268
|
+
end
|
|
1269
|
+
end
|
|
1270
|
+
self
|
|
1271
|
+
end
|
|
1272
|
+
def processing_path
|
|
1273
|
+
def encoding
|
|
1274
|
+
pth="#{processing}/#{defaults[:processing_encoding]}"
|
|
1275
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1276
|
+
pth
|
|
1277
|
+
end
|
|
1278
|
+
def processing_base_tmp
|
|
1279
|
+
defaults[:processing_path_tmp_base]
|
|
1280
|
+
end
|
|
1281
|
+
def tmp_root_dir
|
|
1282
|
+
defaults[:processing_dir_tmp_root]
|
|
1283
|
+
end
|
|
1284
|
+
def root_dir
|
|
1285
|
+
proposed_path_base=if defined? @rc['processing']['path'] \
|
|
1286
|
+
and not @rc['processing']['path'].nil? \
|
|
1287
|
+
and not @rc['processing']['path'].empty?
|
|
1288
|
+
x=if @rc['processing']['path'] =~/^(?:~|home)$/
|
|
1289
|
+
home #fix
|
|
1290
|
+
else @rc['processing']['path']
|
|
1291
|
+
end
|
|
1292
|
+
else nil
|
|
1293
|
+
end
|
|
1294
|
+
proposed_dir=if defined? @rc['processing']['dir'] \
|
|
1295
|
+
and not @rc['processing']['dir'].nil? \
|
|
1296
|
+
and not @rc['processing']['dir'].empty?
|
|
1297
|
+
@rc['processing']['dir']
|
|
1298
|
+
else defaults[:processing_dir]
|
|
1299
|
+
end
|
|
1300
|
+
v=SiSU_Env::InfoVersion.instance.get_version
|
|
1301
|
+
v_dev=(DEVELOPER[:maintenance]==:true) \
|
|
1302
|
+
? "_#{v.version}"
|
|
1303
|
+
: ''
|
|
1304
|
+
path=if proposed_path_base \
|
|
1305
|
+
and FileTest.directory?(proposed_path_base) \
|
|
1306
|
+
and File.writable?("#{proposed_path_base}/.")
|
|
1307
|
+
x=proposed_dir \
|
|
1308
|
+
? "#{proposed_path_base}/#{proposed_dir}"
|
|
1309
|
+
: "#{proposed_path_base}/#{defaults[:processing_dir]}"
|
|
1310
|
+
else defaults[:processing_dir_tmp_root]
|
|
1311
|
+
end
|
|
1312
|
+
path = path + v_dev
|
|
1313
|
+
end
|
|
1314
|
+
def usr_dir?
|
|
1315
|
+
case root_dir
|
|
1316
|
+
when /^\/home/ then false
|
|
1317
|
+
else true
|
|
1318
|
+
end
|
|
1319
|
+
end
|
|
1320
|
+
def stub_dir
|
|
1321
|
+
(usr_dir?) \
|
|
1322
|
+
? ("#{root_dir}/#{user}/#{stub_pwd}")
|
|
1323
|
+
: ("#{root_dir}/#{stub_pwd}") # see defaults[:processing_path]
|
|
1324
|
+
end
|
|
1325
|
+
def stub_dir_orig # ends up with lang, if lang dir
|
|
1326
|
+
(usr_dir?) \
|
|
1327
|
+
? ("#{root_dir}/#{user}/#{stub_pwd}")
|
|
1328
|
+
: ("#{root_dir}/#{stub_pwd}") # see defaults[:processing_path]
|
|
1329
|
+
end
|
|
1330
|
+
def processing_sisupod(opt=nil) #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
|
|
1331
|
+
@opt=opt
|
|
1332
|
+
def paths
|
|
1333
|
+
processing_path_usr="#{root_dir}/#{user}"
|
|
1334
|
+
processing_path_fnb=processing_path_usr \
|
|
1335
|
+
+ '/' + Gt[:pods] \
|
|
1336
|
+
+ '/' + @opt.fng
|
|
1337
|
+
processing_path_sisupod=processing_path_fnb \
|
|
1338
|
+
+ '/' + Gt[:sisupod]
|
|
1339
|
+
{
|
|
1340
|
+
fnb: processing_path_fnb,
|
|
1341
|
+
sisupod: processing_path_sisupod,
|
|
1342
|
+
}
|
|
1343
|
+
end
|
|
1344
|
+
def make
|
|
1345
|
+
unless FileTest.directory?(root_dir)
|
|
1346
|
+
FileUtils::mkdir_p(root_dir)
|
|
1347
|
+
File.chmod(0777,root_dir)
|
|
1348
|
+
end
|
|
1349
|
+
if usr_dir?
|
|
1350
|
+
processing_path_usr="#{root_dir}/#{user}"
|
|
1351
|
+
FileUtils::mkdir_p(processing_path_usr) \
|
|
1352
|
+
unless FileTest.directory?(processing_path_usr)
|
|
1353
|
+
File.chmod(0700,processing_path_usr)
|
|
1354
|
+
end
|
|
1355
|
+
sisupod_processing_path=paths[:sisupod]
|
|
1356
|
+
FileUtils::mkdir_p(sisupod_processing_path) \
|
|
1357
|
+
unless FileTest.directory?(sisupod_processing_path)
|
|
1358
|
+
sisupod_processing_path_lng=if defined? @opt.lng
|
|
1359
|
+
sisupod_processing_path \
|
|
1360
|
+
+ '/' + Gt[:doc] \
|
|
1361
|
+
+ '/' + @opt.lng
|
|
1362
|
+
else
|
|
1363
|
+
sisupod_processing_path \
|
|
1364
|
+
+ '/' + Gt[:doc]
|
|
1365
|
+
end
|
|
1366
|
+
unless FileTest.directory?(sisupod_processing_path_lng)
|
|
1367
|
+
#puts "a processing directory (#{sisupod_processing_path_lng}) is being created for use by sisu"
|
|
1368
|
+
FileUtils::mkdir_p(sisupod_processing_path_lng)
|
|
1369
|
+
File.chmod(0700,sisupod_processing_path_lng)
|
|
1370
|
+
end
|
|
1371
|
+
sisupod_processing_path
|
|
1372
|
+
end
|
|
1373
|
+
self
|
|
1374
|
+
end
|
|
1375
|
+
def processing #processing directory, used/needed for sisu work files, has sub-directories (ao,tex etc)
|
|
1376
|
+
unless FileTest.directory?(root_dir)
|
|
1377
|
+
FileUtils::mkdir_p(root_dir)
|
|
1378
|
+
File.chmod(0777,root_dir)
|
|
1379
|
+
end
|
|
1380
|
+
if usr_dir?
|
|
1381
|
+
processing_path_usr="#{root_dir}/#{user}"
|
|
1382
|
+
FileUtils::mkdir_p(processing_path_usr) \
|
|
1383
|
+
unless FileTest.directory?(processing_path_usr)
|
|
1384
|
+
File.chmod(0700,processing_path_usr)
|
|
1385
|
+
end
|
|
1386
|
+
FileUtils::mkdir_p(stub_dir) \
|
|
1387
|
+
unless FileTest.directory?(stub_dir)
|
|
1388
|
+
File.chmod(0700,stub_dir)
|
|
1389
|
+
path_processing=[
|
|
1390
|
+
stub_dir,
|
|
1391
|
+
defaults[:processing_path],
|
|
1392
|
+
defaults[:processing_path_home]
|
|
1393
|
+
]
|
|
1394
|
+
processing=nil
|
|
1395
|
+
path_processing.each do |v| #
|
|
1396
|
+
processing=v
|
|
1397
|
+
unless FileTest.directory?(processing)
|
|
1398
|
+
FileUtils::mkdir_p(processing)
|
|
1399
|
+
File.chmod(0700,processing)
|
|
1400
|
+
end
|
|
1401
|
+
break
|
|
1402
|
+
end
|
|
1403
|
+
processing
|
|
1404
|
+
end
|
|
1405
|
+
def ao
|
|
1406
|
+
pth=if defined? @rc['processing']['dal'] \
|
|
1407
|
+
and @rc['processing']['dal'].is_a?(String)
|
|
1408
|
+
"#{processing}/#{@rc['processing']['dal']}"
|
|
1409
|
+
else "#{processing}/#{defaults[:processing_ao]}"
|
|
1410
|
+
end
|
|
1411
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1412
|
+
pth
|
|
1413
|
+
end
|
|
1414
|
+
def tune
|
|
1415
|
+
pth=if defined? @rc['processing']['tune'] \
|
|
1416
|
+
and @rc['processing']['tune'].is_a?(String)
|
|
1417
|
+
"#{processing}/#{@rc['processing']['tune']}"
|
|
1418
|
+
else "#{processing}/#{defaults[:processing_tune]}"
|
|
1419
|
+
end
|
|
1420
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1421
|
+
pth
|
|
1422
|
+
end
|
|
1423
|
+
def composite_file
|
|
1424
|
+
pth=processing_path.ao #"#{processing}/composite"
|
|
1425
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1426
|
+
pth
|
|
1427
|
+
end
|
|
1428
|
+
def git
|
|
1429
|
+
pth=if defined? @rc['git']['dir'] \
|
|
1430
|
+
and @rc['git']['dir'].is_a?(String)
|
|
1431
|
+
(@rc['git']['dir'] =~/^(?:~|home)$/) \
|
|
1432
|
+
? home + '/' + Gt[:git]
|
|
1433
|
+
: @rc['git']['dir'] + '/' + Gt[:git]
|
|
1434
|
+
else defaults[:processing_git]
|
|
1435
|
+
end
|
|
1436
|
+
unless FileTest.directory?(pth)
|
|
1437
|
+
FileUtils::mkdir_p(pth)
|
|
1438
|
+
File.chmod(0700,pth)
|
|
1439
|
+
end
|
|
1440
|
+
pth
|
|
1441
|
+
end
|
|
1442
|
+
def odf_pth
|
|
1443
|
+
pth="#{processing}/odf/#{@fns}"
|
|
1444
|
+
pth
|
|
1445
|
+
end
|
|
1446
|
+
def odf
|
|
1447
|
+
odt
|
|
1448
|
+
end
|
|
1449
|
+
def odt
|
|
1450
|
+
pth=odf_pth + '/odt'
|
|
1451
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1452
|
+
pth
|
|
1453
|
+
end
|
|
1454
|
+
def odf
|
|
1455
|
+
pth="#{processing}/odf"
|
|
1456
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1457
|
+
pth
|
|
1458
|
+
end
|
|
1459
|
+
def odt_bld
|
|
1460
|
+
FileUtils::rm_rf(processing_path.odt)
|
|
1461
|
+
FileUtils::mkdir_p(processing_path.odt) \
|
|
1462
|
+
unless FileTest.directory?(processing_path.odt)
|
|
1463
|
+
FileUtils::mkdir_p("#{processing_path.odt}/Configurations2") \
|
|
1464
|
+
unless FileTest.directory?("#{processing_path.odt}/Configurations2")
|
|
1465
|
+
FileUtils::mkdir_p("#{processing_path.odt}/META-INF") \
|
|
1466
|
+
unless FileTest.directory?("#{processing_path.odt}/META-INF")
|
|
1467
|
+
FileUtils::mkdir_p("#{processing_path.odt}/Pictures") \
|
|
1468
|
+
unless FileTest.directory?("#{processing_path.odt}/Pictures")
|
|
1469
|
+
FileUtils::mkdir_p("#{processing_path.odt}/Thumbnails") \
|
|
1470
|
+
unless FileTest.directory?("#{processing_path.odt}/Thumbnails")
|
|
1471
|
+
processing_path.odt
|
|
1472
|
+
end
|
|
1473
|
+
def epub
|
|
1474
|
+
"#{processing}/epub/#{@fnb}"
|
|
1475
|
+
end
|
|
1476
|
+
def epub_bld #(md)
|
|
1477
|
+
FileUtils::rm_rf(processing_path.epub) \
|
|
1478
|
+
if FileTest.directory?(processing_path.epub)
|
|
1479
|
+
FileUtils::mkdir_p(processing_path.epub) \
|
|
1480
|
+
unless FileTest.directory?(processing_path.epub)
|
|
1481
|
+
FileUtils::mkdir_p("#{processing_path.epub}/META-INF") \
|
|
1482
|
+
unless FileTest.directory?("#{processing_path.epub}/META-INF")
|
|
1483
|
+
FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/image") \
|
|
1484
|
+
unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/image")
|
|
1485
|
+
FileUtils::mkdir_p("#{processing_path.epub}/#{Ep[:d_oebps]}/css") \
|
|
1486
|
+
unless FileTest.directory?("#{processing_path.epub}/#{Ep[:d_oebps]}/css")
|
|
1487
|
+
processing_path.epub
|
|
1488
|
+
end
|
|
1489
|
+
def epub_cp_images(md)
|
|
1490
|
+
pth="#{processing_path.epub}/#{Ep[:d_oebps]}/image"
|
|
1491
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1492
|
+
src=(md.opt.sisu_install_type? == :full_path_to_sisu_bin_in_sisu_dir_tree) \
|
|
1493
|
+
? "#{md.opt.sisu_data_dir?}/image"
|
|
1494
|
+
: "#{md.opt.sisu_data_dir?}/sisu/image"
|
|
1495
|
+
images=%W[bullet_09.png arrow_next_red.png arrow_prev_red.png arrow_up_red.png]
|
|
1496
|
+
images.each do |i| #move to avoid repeated tests
|
|
1497
|
+
if FileTest.file?("#{src}/#{i}")
|
|
1498
|
+
FileUtils::cp("#{src}/#{i}","#{pth}/#{i}") \
|
|
1499
|
+
unless FileTest.file?("#{pth}/#{i}")
|
|
1500
|
+
else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]}
|
|
1501
|
+
end
|
|
1502
|
+
end
|
|
1503
|
+
pth
|
|
1504
|
+
end
|
|
1505
|
+
def tex
|
|
1506
|
+
pth=if defined? @rc['processing']['latex'] \
|
|
1507
|
+
and @rc['processing']['latex'].is_a?(String)
|
|
1508
|
+
"#{processing}/#{@rc['processing']['latex']}"
|
|
1509
|
+
else "#{processing}/#{defaults[:processing_latex]}"
|
|
1510
|
+
end
|
|
1511
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1512
|
+
pth
|
|
1513
|
+
end
|
|
1514
|
+
def texi
|
|
1515
|
+
pth=if defined? @rc['processing']['texinfo'] \
|
|
1516
|
+
and @rc['processing']['texinfo'].is_a?(String)
|
|
1517
|
+
"#{processing}/#{@rc['processing']['texinfo']}"
|
|
1518
|
+
else "#{processing}/#{defaults[:processing_texinfo]}"
|
|
1519
|
+
end
|
|
1520
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1521
|
+
pth
|
|
1522
|
+
end
|
|
1523
|
+
def texinfo #texinfo webserv, check
|
|
1524
|
+
"#{processing}/#{defaults[:processing_texinfo]}"
|
|
1525
|
+
end
|
|
1526
|
+
def manpage
|
|
1527
|
+
"#{path.output}/man"
|
|
1528
|
+
end
|
|
1529
|
+
def lout
|
|
1530
|
+
pth=if defined? @rc['processing']['lout'] \
|
|
1531
|
+
and @rc['processing']['lout'].is_a?(String)
|
|
1532
|
+
"#{processing}/#{@rc['processing']['lout']}"
|
|
1533
|
+
else "#{processing}/#{defaults[:processing_lout]}"
|
|
1534
|
+
end
|
|
1535
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1536
|
+
pth
|
|
1537
|
+
end
|
|
1538
|
+
def sql
|
|
1539
|
+
pth="#{processing}/sql"
|
|
1540
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1541
|
+
pth
|
|
1542
|
+
end
|
|
1543
|
+
def sqlite
|
|
1544
|
+
pth=if defined? @rc['processing']['sqlite'] \
|
|
1545
|
+
and @rc['processing']['sqlite'].is_a?(String)
|
|
1546
|
+
"#{processing}/#{@rc['processing']['sqlite']}"
|
|
1547
|
+
else "#{processing}/#{defaults[:processing_sqlite]}"
|
|
1548
|
+
end
|
|
1549
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1550
|
+
pth
|
|
1551
|
+
end
|
|
1552
|
+
def postgresql
|
|
1553
|
+
pth=if defined? @rc['processing']['postgresql'] \
|
|
1554
|
+
and @rc['processing']['postgresql'].is_a?(String)
|
|
1555
|
+
"#{processing}/#{@rc['processing']['postgresql']}"
|
|
1556
|
+
else "#{processing}/#{defaults[:processing_postgresql]}"
|
|
1557
|
+
end
|
|
1558
|
+
FileUtils::mkdir_p(pth) unless FileTest.directory?(pth)
|
|
1559
|
+
pth
|
|
1560
|
+
end
|
|
1561
|
+
self
|
|
1562
|
+
end
|
|
1563
|
+
def url
|
|
1564
|
+
def hostname
|
|
1565
|
+
"http://#{@sys.hostname}"
|
|
1566
|
+
end
|
|
1567
|
+
def dir_url
|
|
1568
|
+
"file://#{path.webserv}/#{stub_pwd}"
|
|
1569
|
+
end
|
|
1570
|
+
def localhost
|
|
1571
|
+
"http://localhost/#{stub_pwd}"
|
|
1572
|
+
end
|
|
1573
|
+
def local
|
|
1574
|
+
"http://#{hostname}/#{@stub_pwd}"
|
|
1575
|
+
end
|
|
1576
|
+
def root
|
|
1577
|
+
if defined? @rc['webserv']['url_root'] \
|
|
1578
|
+
and @rc['webserv']['url_root'] =~/https?:\/\//
|
|
1579
|
+
"#{@rc['webserv']['url_root']}/#{@stub_pwd}"
|
|
1580
|
+
elsif defined? @rc['webserv']['url_root'] \
|
|
1581
|
+
and @rc['webserv']['url_root'] =~/localhost/
|
|
1582
|
+
"http://localhost/#{@stub_pwd}"
|
|
1583
|
+
else "file://#{path.output}"
|
|
1584
|
+
end
|
|
1585
|
+
end
|
|
1586
|
+
def remote
|
|
1587
|
+
root
|
|
1588
|
+
end
|
|
1589
|
+
def txt
|
|
1590
|
+
"#{root}/txt"
|
|
1591
|
+
end
|
|
1592
|
+
def html
|
|
1593
|
+
"#{root}/html"
|
|
1594
|
+
end
|
|
1595
|
+
def epub
|
|
1596
|
+
"#{root}/epub"
|
|
1597
|
+
end
|
|
1598
|
+
def odt
|
|
1599
|
+
"#{root}/odt"
|
|
1600
|
+
end
|
|
1601
|
+
def pdf
|
|
1602
|
+
"#{root}/pdf"
|
|
1603
|
+
end
|
|
1604
|
+
def src_txt
|
|
1605
|
+
"#{root}/src"
|
|
1606
|
+
end
|
|
1607
|
+
def src_pod
|
|
1608
|
+
"#{root}/pod"
|
|
1609
|
+
end
|
|
1610
|
+
def pot
|
|
1611
|
+
"#{root}/po4a/pot"
|
|
1612
|
+
end
|
|
1613
|
+
def po
|
|
1614
|
+
"#{root}/po4a/po"
|
|
1615
|
+
end
|
|
1616
|
+
def webserv_host_base(opt=nil)
|
|
1617
|
+
if defined? @rc['webserv']['host']
|
|
1618
|
+
case @rc['webserv']['host']
|
|
1619
|
+
when /https?:\/\// then @rc['webserv']['host']
|
|
1620
|
+
when /\S+/ then "http://#{@rc['webserv']['host']}"
|
|
1621
|
+
else defaults[:webserv_host_cgi]
|
|
1622
|
+
end
|
|
1623
|
+
else defaults[:webserv_host_cgi]
|
|
1624
|
+
end
|
|
1625
|
+
end
|
|
1626
|
+
def webserv_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
|
|
1627
|
+
http=if defined? @rc['webserv_cgi']['host'] \
|
|
1628
|
+
and @rc['webserv_cgi']['host'].is_a?(String)
|
|
1629
|
+
http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://') #check https? missing
|
|
1630
|
+
if port.webserv_port_cgi
|
|
1631
|
+
http + @rc['webserv_cgi']['host'] + ':' \
|
|
1632
|
+
+ port.webserv_port_cgi + '/' \
|
|
1633
|
+
+ @stub_pwd
|
|
1634
|
+
else
|
|
1635
|
+
http + @rc['webserv_cgi']['host'] + '/' \
|
|
1636
|
+
+ @stub_pwd
|
|
1637
|
+
end
|
|
1638
|
+
else
|
|
1639
|
+
http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
|
|
1640
|
+
if port.webserv_port_cgi(opt)
|
|
1641
|
+
http + webserv_host_base + ':' \
|
|
1642
|
+
+ port.webserv_port_cgi(opt) + '/'\
|
|
1643
|
+
+ @stub_pwd
|
|
1644
|
+
else
|
|
1645
|
+
http + webserv_host_base + '/' \
|
|
1646
|
+
+ @stub_pwd
|
|
1647
|
+
end
|
|
1648
|
+
end
|
|
1649
|
+
http=http.strip
|
|
1650
|
+
end
|
|
1651
|
+
def webserv_base_cgi(opt=nil) #web url for local webserv (localhost, or hostname)
|
|
1652
|
+
http_cgi=if opt.selections.str =~/--webserv-(?:cgi|db|search)[=-]["']?(\S+)["']+/
|
|
1653
|
+
m=$1
|
|
1654
|
+
(m=~/http\/\/:/) ? m : %{http://#{m}}
|
|
1655
|
+
elsif defined? @rc['webserv_cgi']['host'] \
|
|
1656
|
+
and @rc['webserv_cgi']['host'].is_a?(String)
|
|
1657
|
+
http=((@rc['webserv_cgi']['host'] =~ /https?:\/\//) ? '' : 'http://')
|
|
1658
|
+
if port.webserv_port_cgi(opt)
|
|
1659
|
+
http + @rc['webserv_cgi']['host'] + ':' \
|
|
1660
|
+
+ port.webserv_port_cgi(opt).to_s
|
|
1661
|
+
else
|
|
1662
|
+
http + @rc['webserv_cgi']['host']
|
|
1663
|
+
end
|
|
1664
|
+
else
|
|
1665
|
+
http=((webserv_host_base=~/https?:\/\//) ? '' : 'http://')
|
|
1666
|
+
if port.webserv_port_cgi(opt)
|
|
1667
|
+
http + webserv_host_base + ':' \
|
|
1668
|
+
+ port.webserv_port_cgi(opt).to_s
|
|
1669
|
+
else http + webserv_host_base
|
|
1670
|
+
end
|
|
1671
|
+
end
|
|
1672
|
+
http_cgi=http_cgi.strip
|
|
1673
|
+
#%q{http://#{ENV['HTTP_HOST']}}
|
|
1674
|
+
end
|
|
1675
|
+
def webrick #must have a port #REMOVE
|
|
1676
|
+
if defined? @rc['webserv_cgi']['host'] \
|
|
1677
|
+
and @rc['webserv_cgi']['host'].is_a?(String)
|
|
1678
|
+
http=if @rc['webserv_cgi']['host'] =~/http:\/\//
|
|
1679
|
+
'http://'
|
|
1680
|
+
elsif @rc['webserv_cgi']['host'] =~/https:\/\//
|
|
1681
|
+
'https://'
|
|
1682
|
+
else defaults
|
|
1683
|
+
end
|
|
1684
|
+
http + @rc['webserv_cgi']['host']
|
|
1685
|
+
elsif webserv_host_base \
|
|
1686
|
+
and webserv_host_base.is_a?(String)
|
|
1687
|
+
webserv_host_base
|
|
1688
|
+
else
|
|
1689
|
+
#http + 'localhost'
|
|
1690
|
+
'localhost'
|
|
1691
|
+
end
|
|
1692
|
+
end
|
|
1693
|
+
def webserv #web url for local webserv (localhost, or hostname)
|
|
1694
|
+
if defined? @rc['webserv']['url_root'] \
|
|
1695
|
+
and @rc['webserv']['url_root'] =~/http/
|
|
1696
|
+
# needed for alternative output dir structures, fixes manifest url links, check may cause problems elsewhere
|
|
1697
|
+
@rc['webserv']['url_root']
|
|
1698
|
+
elsif path.webserv_dir \
|
|
1699
|
+
and path.webserv =~ /#{path.webserv_dir}/ #revisit
|
|
1700
|
+
path.webserv + '/' \
|
|
1701
|
+
+ @base_markup_dir_stub.
|
|
1702
|
+
gsub(/#{path.webserv_dir}/,
|
|
1703
|
+
"#{url.hostname}/#{@stub_pwd}")
|
|
1704
|
+
elsif defined? @rc['webserv']['webrick_url'] \
|
|
1705
|
+
and @rc['webserv']['webrick_url']==false
|
|
1706
|
+
'file://' + path.webserv
|
|
1707
|
+
elsif port.webserv_port_cgi =~/\S+/
|
|
1708
|
+
url.hostname + ':' + port.webserv_port_cgi
|
|
1709
|
+
else
|
|
1710
|
+
url.hostname
|
|
1711
|
+
end
|
|
1712
|
+
end
|
|
1713
|
+
def webserv_base #web url for local webserv (localhost, or hostname)
|
|
1714
|
+
if path.webserv_dir \
|
|
1715
|
+
and path.webserv =~ /#{path.webserv_dir}/ #revisit
|
|
1716
|
+
path.webserv + '/' \
|
|
1717
|
+
+ @stub_pwd.
|
|
1718
|
+
gsub(/#{path.webserv_dir}/,
|
|
1719
|
+
"#{url.hostname}")
|
|
1720
|
+
elsif defined? @rc['webserv']['webrick_url'] \
|
|
1721
|
+
and @rc['webserv']['webrick_url']==false
|
|
1722
|
+
"file://#{path.webserv}"
|
|
1723
|
+
else "#{url.webrick_base}"
|
|
1724
|
+
end
|
|
1725
|
+
end
|
|
1726
|
+
def webserv_files_from_db(opt=nil) #sort this out, messy
|
|
1727
|
+
if opt.selections.str =~/--webserv-output[=-]["']?(\S+)["']+/
|
|
1728
|
+
m=$1
|
|
1729
|
+
(m=~/(?:http|file\/)\/\/:/) ? m : %{http://#{m}}
|
|
1730
|
+
else
|
|
1731
|
+
show_output_on=if defined? @rc['webserv_cgi']['show_output_on']
|
|
1732
|
+
@rc['webserv_cgi']['show_output_on']
|
|
1733
|
+
elsif defined? @rc['webserv_cgi']['file_links']
|
|
1734
|
+
@rc['webserv_cgi']['file_links']
|
|
1735
|
+
else ''
|
|
1736
|
+
end
|
|
1737
|
+
m=case show_output_on
|
|
1738
|
+
when /webserv_cgi/ then url.webserv_base_cgi(opt)
|
|
1739
|
+
when /webserv/ then @rc['webserv']['url_root']
|
|
1740
|
+
when /https?:\/\// then @rc['webserv_cgi']['file_links']
|
|
1741
|
+
when /\S+/ then 'http://' + @rc['webserv_cgi']['file_links']
|
|
1742
|
+
else webserv_base_cgi(opt)
|
|
1743
|
+
end
|
|
1744
|
+
end
|
|
1745
|
+
#%q{http://#{ENV['HTTP_HOST']}/cgi-bin}
|
|
1746
|
+
end
|
|
1747
|
+
def cgi_sample_search_form_name(opt=nil)
|
|
1748
|
+
if opt.selections.str \
|
|
1749
|
+
=~/--(?:cgi-)?search-form-name[=-]["']?(\S+?\.cgi)/
|
|
1750
|
+
$1
|
|
1751
|
+
elsif not opt.selections.str =~/--db[=-]["']?sqlite/ \
|
|
1752
|
+
and defined? @rc['search'] \
|
|
1753
|
+
and defined? @rc['search']['sisu'] \
|
|
1754
|
+
and defined? @rc['search']['sisu']['action'] \
|
|
1755
|
+
and @rc['search']['sisu']['action'] =~/https?:\/\/\S+?\.cgi/
|
|
1756
|
+
/(?:https?:\/\/\S+?)\/([^\/]+?\.cgi)$/.
|
|
1757
|
+
match(@rc['search']['sisu']['action'])[1]
|
|
1758
|
+
else
|
|
1759
|
+
(opt.selections.str =~/--db[=-]["']?sqlite/) \
|
|
1760
|
+
? "#{Db[:name_prefix_db]}sqlite.cgi" \
|
|
1761
|
+
: "#{Db[:name_prefix_db]}pg.cgi"
|
|
1762
|
+
end
|
|
1763
|
+
end
|
|
1764
|
+
def sample_search_form_title(organised_by=:language)
|
|
1765
|
+
title=if defined? @rc['search']['sisu']['title'] \
|
|
1766
|
+
and @rc['search']['sisu']['title'] =~/\S+/
|
|
1767
|
+
@rc['search']['sisu']['title']
|
|
1768
|
+
else %{SiSU (generated sample) search form}
|
|
1769
|
+
end
|
|
1770
|
+
title=title + " (content organised by #{organised_by})"
|
|
1771
|
+
end
|
|
1772
|
+
def output_tell #BROKEN Revisit 2011-02
|
|
1773
|
+
output_type=if defined? @rc['show_output_on'] \
|
|
1774
|
+
and @rc['show_output_on'] \
|
|
1775
|
+
=~/^(?:filesystem|webserv|(?:local|remote)(?:_webserv)?|webrick)/
|
|
1776
|
+
@rc['show_output_on']
|
|
1777
|
+
else 'filesystem'
|
|
1778
|
+
end
|
|
1779
|
+
case output_type
|
|
1780
|
+
when /^filesystem(?:_url)?/ then url.dir_url
|
|
1781
|
+
when /^remote(?:_webserv)?/ then url.remote
|
|
1782
|
+
when /^(?:webserv|local_webserv)/ then url.local
|
|
1783
|
+
when /^local(:\d+)/ then url.hostname + $1 + '/' + stub_pwd
|
|
1784
|
+
when /^localhost(:\d+)/ then url.localhost + $1 + '/' + stub_pwd
|
|
1785
|
+
when /^localhost/ then url.localhost
|
|
1786
|
+
when /^webrick/ then url.webrick
|
|
1787
|
+
when /^path/ then url.webserv_map_pwd
|
|
1788
|
+
else url.webserv_map_pwd
|
|
1789
|
+
end
|
|
1790
|
+
end
|
|
1791
|
+
def images
|
|
1792
|
+
"#{Xx[:html_relative2]}/_sisu/image"
|
|
1793
|
+
end
|
|
1794
|
+
#def images
|
|
1795
|
+
# '../_sisu/image'
|
|
1796
|
+
#end
|
|
1797
|
+
def images_local
|
|
1798
|
+
if FileTest.directory?(path.image_source_include)
|
|
1799
|
+
path.image_source_include
|
|
1800
|
+
else
|
|
1801
|
+
if @@local_image==true
|
|
1802
|
+
cmd=@md.opt.selections.str ? @md.opt.selections.str : ''
|
|
1803
|
+
SiSU_Screen::Ansi.new(
|
|
1804
|
+
cmd,
|
|
1805
|
+
"WARNING - no local image directory or images:",
|
|
1806
|
+
defaults[:image_local]
|
|
1807
|
+
).warn unless @md.opt.act[:quiet][:set]==:on
|
|
1808
|
+
@@local_image=false
|
|
1809
|
+
end
|
|
1810
|
+
url.images
|
|
1811
|
+
end
|
|
1812
|
+
end
|
|
1813
|
+
def images_external
|
|
1814
|
+
if FileTest.directory?(image_external)
|
|
1815
|
+
if @@image_flag
|
|
1816
|
+
images=Dir.glob("#{image_external}/*.{png,jpg,gif}")
|
|
1817
|
+
pth=path.webserv + '/' \
|
|
1818
|
+
+ @stub_pwd
|
|
1819
|
+
FileUtils::mkdir_p("#{pth}/_sisu/image_external") \
|
|
1820
|
+
unless FileTest.directory?("#{pth}/_sisu/image_external")
|
|
1821
|
+
images.each { |i| File.install(i,"#{pth}/#{i}") } \
|
|
1822
|
+
unless images.length > 0
|
|
1823
|
+
@@image_flag=false
|
|
1824
|
+
end
|
|
1825
|
+
"#{Xx[:html_relative2]}/_sisu/image_external"
|
|
1826
|
+
else
|
|
1827
|
+
if @@local_image==true
|
|
1828
|
+
SiSU_Screen::Ansi.new(
|
|
1829
|
+
@cmd,
|
|
1830
|
+
'WARNING - image directory for external images or no such images:',
|
|
1831
|
+
:image_external
|
|
1832
|
+
).warn unless @md.opt.act[:quiet][:set]==:on
|
|
1833
|
+
@@local_image=false
|
|
1834
|
+
end
|
|
1835
|
+
url.images_external
|
|
1836
|
+
end
|
|
1837
|
+
end
|
|
1838
|
+
def images_epub
|
|
1839
|
+
'./image'
|
|
1840
|
+
end
|
|
1841
|
+
self
|
|
1842
|
+
end
|
|
1843
|
+
def port
|
|
1844
|
+
def webrick_port
|
|
1845
|
+
if @md \
|
|
1846
|
+
and @md.opt.act[:sample_search_form][:set]==:on \
|
|
1847
|
+
and @md.opt.selections.str=~/port=(\d+)/
|
|
1848
|
+
$1
|
|
1849
|
+
else
|
|
1850
|
+
if defined? @rc['webserv_cgi']['port']
|
|
1851
|
+
if @rc['webserv_cgi']['port'].nil? \
|
|
1852
|
+
and (defined? @md.opt.selections \
|
|
1853
|
+
and @md.opt.selections.str=~/webrick/)
|
|
1854
|
+
defaults[:webserv_port_cgi]
|
|
1855
|
+
elsif not @rc['webserv_cgi']['port'].nil?
|
|
1856
|
+
@rc['webserv_cgi']['port']
|
|
1857
|
+
else defaults[:webserv_port_cgi]
|
|
1858
|
+
end
|
|
1859
|
+
else defaults[:webserv_port_cgi]
|
|
1860
|
+
end
|
|
1861
|
+
end
|
|
1862
|
+
end
|
|
1863
|
+
def webserv_port_cgi(opt=nil)
|
|
1864
|
+
port=if opt \
|
|
1865
|
+
and opt.act[:sample_search_form][:set]==:on \
|
|
1866
|
+
and opt.selections.str=~/port[=-](\d+)/
|
|
1867
|
+
$1
|
|
1868
|
+
else
|
|
1869
|
+
port=if defined? @rc['webserv_cgi']['port']
|
|
1870
|
+
if @rc['webserv_cgi']['port'].nil? \
|
|
1871
|
+
and (defined? opt.selections \
|
|
1872
|
+
and opt.selections.str=~/webrick/)
|
|
1873
|
+
defaults[:webserv_port_cgi]
|
|
1874
|
+
elsif not @rc['webserv_cgi']['port'].nil?
|
|
1875
|
+
@rc['webserv_cgi']['port']
|
|
1876
|
+
else nil
|
|
1877
|
+
end
|
|
1878
|
+
else
|
|
1879
|
+
if (defined? opt.selections \
|
|
1880
|
+
and opt.selections.str=~/webrick/)
|
|
1881
|
+
defaults[:webserv_port_cgi]
|
|
1882
|
+
else nil
|
|
1883
|
+
end
|
|
1884
|
+
end
|
|
1885
|
+
end
|
|
1886
|
+
port.to_s
|
|
1887
|
+
end
|
|
1888
|
+
self
|
|
1889
|
+
end
|
|
1890
|
+
def digest_conf?
|
|
1891
|
+
if defined? @rc['default']['digest'] \
|
|
1892
|
+
and @rc['default']['digest'] != nil
|
|
1893
|
+
case @rc['default']['digest']
|
|
1894
|
+
when /^sha(?:5|512)?$/ then :sha512
|
|
1895
|
+
when /^sha(?:2|256)?$/ then :sha256
|
|
1896
|
+
when /^md5$/ then :md5
|
|
1897
|
+
else :sha256
|
|
1898
|
+
end
|
|
1899
|
+
else :sha256
|
|
1900
|
+
end
|
|
1901
|
+
end
|
|
1902
|
+
def digest(opt=nil)
|
|
1903
|
+
@opt=opt
|
|
1904
|
+
def type
|
|
1905
|
+
if @opt
|
|
1906
|
+
case @opt.act[:hash_digest_algo]
|
|
1907
|
+
when :sha512 then :sha512
|
|
1908
|
+
when :sha256 then :sha256
|
|
1909
|
+
when :md5 then :md5
|
|
1910
|
+
else digest_conf?
|
|
1911
|
+
end
|
|
1912
|
+
else digest_conf?
|
|
1913
|
+
end
|
|
1914
|
+
end
|
|
1915
|
+
def length
|
|
1916
|
+
case digest(@opt).type
|
|
1917
|
+
when :sha512 then 128
|
|
1918
|
+
when :sha256 then 64
|
|
1919
|
+
when :md5 then 32
|
|
1920
|
+
else 64
|
|
1921
|
+
end
|
|
1922
|
+
end
|
|
1923
|
+
def pattern
|
|
1924
|
+
"[0-9a-f]{#{digest(@opt).length}}" #/[0-9a-f]{#{digest.length}}/
|
|
1925
|
+
end
|
|
1926
|
+
self
|
|
1927
|
+
end
|
|
1928
|
+
def program
|
|
1929
|
+
def text_editor
|
|
1930
|
+
if defined? @rc['program_select']['editor'] \
|
|
1931
|
+
and @rc['program_select']['editor'] =~/\S\S+/
|
|
1932
|
+
@rc['program_select']['editor']
|
|
1933
|
+
elsif defined? @rc['program_select']['text_editor'] \
|
|
1934
|
+
and @rc['program_select']['text_editor'] =~/\S\S+/
|
|
1935
|
+
@rc['program_select']['text_editor']
|
|
1936
|
+
else 'editor' #'gvim -c :R -c :S'
|
|
1937
|
+
end
|
|
1938
|
+
end
|
|
1939
|
+
def pdf_viewer
|
|
1940
|
+
((defined? @rc['program_select']['pdf_viewer']) \
|
|
1941
|
+
&& @rc['program_select']['pdf_viewer'] =~/\S\S+/) \
|
|
1942
|
+
? @rc['program_select']['pdf_viewer']
|
|
1943
|
+
: 'pdf-viewer' #'evince'
|
|
1944
|
+
end
|
|
1945
|
+
def web_browser
|
|
1946
|
+
if defined? @rc['program_select']['www_browser'] \
|
|
1947
|
+
and @rc['program_select']['www_browser'] =~/\S\S+/
|
|
1948
|
+
@rc['program_select']['www_browser']
|
|
1949
|
+
elsif defined? @rc['program_select']['web_browser'] \
|
|
1950
|
+
and @rc['program_select']['web_browser'] =~/\S\S+/
|
|
1951
|
+
@rc['program_select']['web_browser']
|
|
1952
|
+
else 'x-www-browser' #'firefox' 'iceweasel' 'kazehakase' 'galeon'
|
|
1953
|
+
end
|
|
1954
|
+
end
|
|
1955
|
+
def www_browser
|
|
1956
|
+
web_browser
|
|
1957
|
+
end
|
|
1958
|
+
def console_web_browser
|
|
1959
|
+
if defined? @rc['program_select']['console_www_browser'] \
|
|
1960
|
+
and @rc['program_select']['console_www_browser'] =~/\S\S+/
|
|
1961
|
+
@rc['program_select']['console_www_browser']
|
|
1962
|
+
elsif defined? @rc['program_select']['console_web_browser'] \
|
|
1963
|
+
and @rc['program_select']['console_web_browser'] =~/\S\S+/
|
|
1964
|
+
@rc['program_select']['console_web_browser']
|
|
1965
|
+
else 'console-www-browser' #'lynx' 'links' 'links2' 'elinks' 'w3m'
|
|
1966
|
+
end
|
|
1967
|
+
end
|
|
1968
|
+
def console_www_browser
|
|
1969
|
+
web_browser
|
|
1970
|
+
end
|
|
1971
|
+
def epub_viewer
|
|
1972
|
+
((defined? @rc['program_select']['epub_viewer']) \
|
|
1973
|
+
&& @rc['program_select']['epub_viewer'] =~/\S\S+/) \
|
|
1974
|
+
? @rc['program_select']['epub_viewer']
|
|
1975
|
+
: 'ebook-viewer' #'calibre' 'fbreader'
|
|
1976
|
+
end
|
|
1977
|
+
def xml_viewer
|
|
1978
|
+
((defined? @rc['program_select']['xml_viewer']) \
|
|
1979
|
+
&& @rc['program_select']['xml_viewer'] =~/\S\S+/) \
|
|
1980
|
+
? @rc['program_select']['xml_viewer']
|
|
1981
|
+
: text_editor
|
|
1982
|
+
end
|
|
1983
|
+
def docbook_viewer
|
|
1984
|
+
((defined? @rc['program_select']['xml_viewer']) \
|
|
1985
|
+
&& @rc['program_select']['xml_viewer'] =~/\S\S+/) \
|
|
1986
|
+
? @rc['program_select']['xml_viewer']
|
|
1987
|
+
: text_editor
|
|
1988
|
+
end
|
|
1989
|
+
def fictionbook_viewer
|
|
1990
|
+
((defined? @rc['program_select']['xml_viewer']) \
|
|
1991
|
+
&& @rc['program_select']['xml_viewer'] =~/\S\S+/) \
|
|
1992
|
+
? @rc['program_select']['xml_viewer']
|
|
1993
|
+
: text_editor
|
|
1994
|
+
end
|
|
1995
|
+
def xml_editor
|
|
1996
|
+
xml_viewer
|
|
1997
|
+
end
|
|
1998
|
+
def odf_viewer
|
|
1999
|
+
((defined? @rc['program_select']['odf_viewer']) \
|
|
2000
|
+
&& @rc['program_select']['odf_viewer'] =~/\S\S+/) \
|
|
2001
|
+
? @rc['program_select']['odf_viewer']
|
|
2002
|
+
: 'lowriter' #'odf-viewer','oowriter'
|
|
2003
|
+
end
|
|
2004
|
+
def manpage_viewer
|
|
2005
|
+
'man'
|
|
2006
|
+
end
|
|
2007
|
+
def manpage_generator
|
|
2008
|
+
((defined? @rc['program_select']['man']) \
|
|
2009
|
+
&& @rc['program_select']['man'] =~/\S\S+/) \
|
|
2010
|
+
? @rc['program_select']['man']
|
|
2011
|
+
: 'nroff -man' #'nroff -man' #'groff -man -Tascii'
|
|
2012
|
+
end
|
|
2013
|
+
def texinfo
|
|
2014
|
+
((defined? @rc['program_select']['info_viewer']) \
|
|
2015
|
+
&& @rc['program_select']['info_viewer'] =~/\S\S+/) \
|
|
2016
|
+
? @rc['program_select']['info_viewer']
|
|
2017
|
+
: 'pinfo -f' #'pinfo -f' 'info' 'tkinfo'
|
|
2018
|
+
end
|
|
2019
|
+
def file_encoding
|
|
2020
|
+
is=(defined? @rc['program_set']['file_encoding']) \
|
|
2021
|
+
? @rc['program_set']['encoding'] : ''
|
|
2022
|
+
(is.nil? || is==true) ? 'encoding' : is
|
|
2023
|
+
end
|
|
2024
|
+
def wc #wordcount
|
|
2025
|
+
is=(defined? @rc['program_set']['wc']) \
|
|
2026
|
+
? @rc['program_set']['wc'] : ''
|
|
2027
|
+
(is.nil? || is==true) ? 'wc' : is
|
|
2028
|
+
end
|
|
2029
|
+
def tidy
|
|
2030
|
+
is=(defined? @rc['program_set']['tidy']) \
|
|
2031
|
+
? @rc['program_set']['tidy'] : nil
|
|
2032
|
+
(is.nil? || is==true) ? 'tidy' : is
|
|
2033
|
+
end
|
|
2034
|
+
def rmagick
|
|
2035
|
+
is=(defined? @rc['program_set']['rmagick']) \
|
|
2036
|
+
? @rc['program_set']['rmagick'] : nil
|
|
2037
|
+
(is.nil? || is==true) ? 'rmagick' : is
|
|
2038
|
+
end
|
|
2039
|
+
def rexml #should be part of ruby 1.8 but apparently not always
|
|
2040
|
+
is=(defined? @rc['program_set']['rexml']) ? \
|
|
2041
|
+
@rc['program_set']['rexml'] : ''
|
|
2042
|
+
(is.nil? || is==true) ? 'rexml' : is
|
|
2043
|
+
end
|
|
2044
|
+
def pdflatex
|
|
2045
|
+
is=(defined? @rc['program_set']['pdflatex']) ? \
|
|
2046
|
+
@rc['program_set']['pdflatex'] : ''
|
|
2047
|
+
(is.nil? || is==true) ? 'pdflatex' : is
|
|
2048
|
+
end
|
|
2049
|
+
def postgresql
|
|
2050
|
+
is=(defined? @rc['program_set']['postgresql']) ? \
|
|
2051
|
+
@rc['program_set']['postgresql'] : ''
|
|
2052
|
+
(is.nil? || is==true) ? 'postgresql' : is
|
|
2053
|
+
end
|
|
2054
|
+
def sqlite
|
|
2055
|
+
is=(defined? @rc['program_set']['sqlite']) ? \
|
|
2056
|
+
@rc['program_set']['sqlite'] : ''
|
|
2057
|
+
(is.nil? || is==true) ? 'sqlite' : is
|
|
2058
|
+
end
|
|
2059
|
+
self
|
|
2060
|
+
end
|
|
2061
|
+
def i18n
|
|
2062
|
+
def language # language settings
|
|
2063
|
+
m=/.+\/\S+?\~(\S+)/
|
|
2064
|
+
pwd=Dir.pwd
|
|
2065
|
+
conf=(defined? @rc['default']['language']) \
|
|
2066
|
+
? @rc['default']['language'] : nil
|
|
2067
|
+
l=if pwd=~ m then pwd[m,1] #2 directory: by visible directory name
|
|
2068
|
+
elsif conf then @rc['default']['language'] #3 config: from sisurc.yaml
|
|
2069
|
+
else defaults[:language] #4 sisu: program default
|
|
2070
|
+
end #1 document: param gets
|
|
2071
|
+
SiSU_Env::StandardiseLanguage.new(l)
|
|
2072
|
+
end
|
|
2073
|
+
#def multilingual
|
|
2074
|
+
# x=(defined? @rc['output_structure']['multilingual'] \
|
|
2075
|
+
# && @rc['output_structure']['multilingual'] ==true) \
|
|
2076
|
+
# ? true : false
|
|
2077
|
+
#end
|
|
2078
|
+
#def bundle
|
|
2079
|
+
# x=(defined? @rc['output_structure']['bundle'] \
|
|
2080
|
+
# && @rc['output_structure']['bundle'] ==true) \
|
|
2081
|
+
# ? true : false
|
|
2082
|
+
#end
|
|
2083
|
+
def lang_filename(l)
|
|
2084
|
+
@lang={}
|
|
2085
|
+
x=if output_dir_structure.by_language_code?
|
|
2086
|
+
(( defined? @rc['default']['language_file']) \
|
|
2087
|
+
&& @rc['default']['language_file'] != nil) \
|
|
2088
|
+
? @rc['default']['language_file']
|
|
2089
|
+
: 1
|
|
2090
|
+
else 0
|
|
2091
|
+
end
|
|
2092
|
+
if (l != defaults[:language_code]) \
|
|
2093
|
+
or (language.code != defaults[:language_code]) #watch
|
|
2094
|
+
if x==1 then @lang[:pre],@lang[:mid],@lang[:post]="#{l}.",'',''
|
|
2095
|
+
elsif x==2 then @lang[:pre],@lang[:mid],@lang[:post]='',".#{l}",''
|
|
2096
|
+
elsif x==3 then @lang[:pre],@lang[:mid],@lang[:post]='','',".#{l}"
|
|
2097
|
+
else @lang[:pre],@lang[:mid],@lang[:post]='','',''
|
|
2098
|
+
end
|
|
2099
|
+
else @lang[:pre],@lang[:mid],@lang[:post]='','',''
|
|
2100
|
+
end
|
|
2101
|
+
@lang
|
|
2102
|
+
end
|
|
2103
|
+
self
|
|
2104
|
+
end
|
|
2105
|
+
def file_encoding
|
|
2106
|
+
is=''
|
|
2107
|
+
if defined? @rc['program_set']['file_encoding']
|
|
2108
|
+
is=@rc['program_set']['encoding']
|
|
2109
|
+
end
|
|
2110
|
+
if is.nil? \
|
|
2111
|
+
or is==true
|
|
2112
|
+
is='encoding'
|
|
2113
|
+
end
|
|
2114
|
+
is
|
|
2115
|
+
end
|
|
2116
|
+
def papersize # paper settings, default overidden in param if set within document
|
|
2117
|
+
(defined? @rc['default']['papersize']) \
|
|
2118
|
+
? @rc['default']['papersize'].downcase
|
|
2119
|
+
: (defaults[:papersize].downcase)
|
|
2120
|
+
end
|
|
2121
|
+
def sisupod_gen(fns_pod)
|
|
2122
|
+
sisupod_gen_v3(fns_pod)
|
|
2123
|
+
end
|
|
2124
|
+
def sisupod_gen_v3(fns_pod)
|
|
2125
|
+
pwd=Dir.pwd
|
|
2126
|
+
sisupod_processing_path=
|
|
2127
|
+
processing_path.processing + '/' + Gt[:sisupod]
|
|
2128
|
+
if FileTest.directory?(sisupod_processing_path) \
|
|
2129
|
+
or FileTest.file?(sisupod_processing_path)
|
|
2130
|
+
FileUtils::rm_rf(sisupod_processing_path)
|
|
2131
|
+
end
|
|
2132
|
+
unless FileTest.directory?(sisupod_processing_path)
|
|
2133
|
+
FileUtils::mkdir_p(sisupod_processing_path)
|
|
2134
|
+
end
|
|
2135
|
+
f_pod=if FileTest.file?("#{Dir.pwd}/#{fns_pod}")
|
|
2136
|
+
"#{Dir.pwd}/#{fns_pod}"
|
|
2137
|
+
elsif FileTest.file?(fns_pod)
|
|
2138
|
+
fns_pod
|
|
2139
|
+
end
|
|
2140
|
+
if f_pod \
|
|
2141
|
+
&& FileTest.file?(f_pod)
|
|
2142
|
+
(SiSU_Env::SystemCall.new.program_found?('tree')) \
|
|
2143
|
+
? 'tree ' + processing_path.processing + '/' + Gt[:sisupod]
|
|
2144
|
+
: ''
|
|
2145
|
+
if FileTest.directory?(processing_path.processing)
|
|
2146
|
+
Dir.chdir(processing_path.processing)
|
|
2147
|
+
system(%{tar xJf #{f_pod}})
|
|
2148
|
+
Dir.chdir(pwd)
|
|
2149
|
+
end
|
|
2150
|
+
#system(tree) #enable if (/[vVM]/)
|
|
2151
|
+
else
|
|
2152
|
+
SiSU_Screen::Ansi.new(
|
|
2153
|
+
'',
|
|
2154
|
+
'*WARN* file not found: ' + fns_pod
|
|
2155
|
+
).warn unless @md.opt.act[:quiet][:set]==:on
|
|
2156
|
+
end
|
|
2157
|
+
sisupod_processing_path
|
|
2158
|
+
end
|
|
2159
|
+
def sisupod_gen_v2(fns_pod)
|
|
2160
|
+
sisupod_processing_path=
|
|
2161
|
+
processing_path.processing + '/' + Gt[:sisupod]
|
|
2162
|
+
if FileTest.directory?(sisupod_processing_path) \
|
|
2163
|
+
or FileTest.file?(sisupod_processing_path)
|
|
2164
|
+
FileUtils::rm_rf(sisupod_processing_path)
|
|
2165
|
+
end
|
|
2166
|
+
unless FileTest.directory?(sisupod_processing_path)
|
|
2167
|
+
FileUtils::mkdir_p(sisupod_processing_path)
|
|
2168
|
+
end
|
|
2169
|
+
(FileTest.file?(fns_pod)) \
|
|
2170
|
+
? system("unzip -q #{fns_pod} -d #{processing_path.processing}")
|
|
2171
|
+
: (SiSU_Screen::Ansi.new(
|
|
2172
|
+
'',
|
|
2173
|
+
"*WARN* file not found: #{fns_pod}"
|
|
2174
|
+
).warn unless @md.opt.act[:quiet][:set]==:on)
|
|
2175
|
+
sisupod_processing_path
|
|
2176
|
+
end
|
|
2177
|
+
end
|
|
2178
|
+
end
|
|
2179
|
+
__END__
|