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.
Files changed (207) hide show
  1. checksums.yaml +7 -0
  2. data/bin/sisu +367 -0
  3. data/bin/sisugem +367 -0
  4. data/data/sisu/image/arrow_next_red.png +0 -0
  5. data/data/sisu/image/arrow_prev_red.png +0 -0
  6. data/data/sisu/image/arrow_up_red.png +0 -0
  7. data/data/sisu/image/b_bluebell.png +0 -0
  8. data/data/sisu/image/b_doc.png +0 -0
  9. data/data/sisu/image/b_epub.png +0 -0
  10. data/data/sisu/image/b_home.png +0 -0
  11. data/data/sisu/image/b_info.png +0 -0
  12. data/data/sisu/image/b_odf.png +0 -0
  13. data/data/sisu/image/b_pdf.png +0 -0
  14. data/data/sisu/image/b_search.png +0 -0
  15. data/data/sisu/image/b_toc.png +0 -0
  16. data/data/sisu/image/bullet_08.png +0 -0
  17. data/data/sisu/image/bullet_09.png +0 -0
  18. data/data/sisu/image/bullet_10.png +0 -0
  19. data/data/sisu/image/bullet_11.png +0 -0
  20. data/data/sisu/image/bullet_12.png +0 -0
  21. data/data/sisu/image/bullet_doc.png +0 -0
  22. data/data/sisu/image/bullet_red.png +0 -0
  23. data/data/sisu/image/dot_clear.png +0 -0
  24. data/data/sisu/image/dot_white.png +0 -0
  25. data/data/sisu/image/gplv3.png +0 -0
  26. data/data/sisu/image/gplv3_free_software.png +0 -0
  27. data/data/sisu/image/next.png +0 -0
  28. data/data/sisu/image/previous.png +0 -0
  29. data/data/sisu/image/rb7.ico +0 -0
  30. data/data/sisu/image/sisu.png +0 -0
  31. data/data/sisu/image/toctoc.png +0 -0
  32. data/data/sisu/version.yml +5 -0
  33. data/lib/sisu.rb +94 -0
  34. data/lib/sisu/air.rb +80 -0
  35. data/lib/sisu/ao.rb +590 -0
  36. data/lib/sisu/ao_character_check.rb +102 -0
  37. data/lib/sisu/ao_composite.rb +286 -0
  38. data/lib/sisu/ao_doc_objects.rb +565 -0
  39. data/lib/sisu/ao_doc_str.rb +2269 -0
  40. data/lib/sisu/ao_endnotes.rb +136 -0
  41. data/lib/sisu/ao_expand_insertions.rb +514 -0
  42. data/lib/sisu/ao_hash_digest.rb +174 -0
  43. data/lib/sisu/ao_idx.rb +422 -0
  44. data/lib/sisu/ao_images.rb +187 -0
  45. data/lib/sisu/ao_metadata.rb +86 -0
  46. data/lib/sisu/ao_misc_arrange.rb +207 -0
  47. data/lib/sisu/ao_numbering.rb +720 -0
  48. data/lib/sisu/ao_persist.rb +194 -0
  49. data/lib/sisu/ao_references.rb +502 -0
  50. data/lib/sisu/ao_syntax.rb +640 -0
  51. data/lib/sisu/cgi.rb +84 -0
  52. data/lib/sisu/cgi_pgsql.rb +270 -0
  53. data/lib/sisu/cgi_sql_common.rb +986 -0
  54. data/lib/sisu/cgi_sqlite.rb +244 -0
  55. data/lib/sisu/conf.rb +287 -0
  56. data/lib/sisu/constants.rb +388 -0
  57. data/lib/sisu/css.rb +3484 -0
  58. data/lib/sisu/db_columns.rb +1997 -0
  59. data/lib/sisu/db_create.rb +689 -0
  60. data/lib/sisu/db_dbi.rb +90 -0
  61. data/lib/sisu/db_drop.rb +207 -0
  62. data/lib/sisu/db_import.rb +877 -0
  63. data/lib/sisu/db_indexes.rb +146 -0
  64. data/lib/sisu/db_load_tuple.rb +323 -0
  65. data/lib/sisu/db_remove.rb +182 -0
  66. data/lib/sisu/db_select.rb +230 -0
  67. data/lib/sisu/db_sqltxt.rb +173 -0
  68. data/lib/sisu/db_tests.rb +114 -0
  69. data/lib/sisu/dbi.rb +166 -0
  70. data/lib/sisu/dbi_discrete.rb +206 -0
  71. data/lib/sisu/digests.rb +306 -0
  72. data/lib/sisu/dp.rb +1606 -0
  73. data/lib/sisu/dp_identify_markup.rb +161 -0
  74. data/lib/sisu/dp_make.rb +668 -0
  75. data/lib/sisu/embedded.rb +149 -0
  76. data/lib/sisu/errors.rb +84 -0
  77. data/lib/sisu/generic_parts.rb +131 -0
  78. data/lib/sisu/git.rb +277 -0
  79. data/lib/sisu/html.rb +775 -0
  80. data/lib/sisu/html_concordance.rb +391 -0
  81. data/lib/sisu/html_format.rb +1348 -0
  82. data/lib/sisu/html_harvest.rb +109 -0
  83. data/lib/sisu/html_harvest_author_format.rb +111 -0
  84. data/lib/sisu/html_harvest_authors.rb +466 -0
  85. data/lib/sisu/html_harvest_topics.rb +893 -0
  86. data/lib/sisu/html_lite_shared.rb +324 -0
  87. data/lib/sisu/html_manifest.rb +1032 -0
  88. data/lib/sisu/html_minitoc.rb +230 -0
  89. data/lib/sisu/html_parts.rb +437 -0
  90. data/lib/sisu/html_persist.rb +237 -0
  91. data/lib/sisu/html_promo.rb +440 -0
  92. data/lib/sisu/html_scroll.rb +235 -0
  93. data/lib/sisu/html_segments.rb +716 -0
  94. data/lib/sisu/html_shared.rb +62 -0
  95. data/lib/sisu/html_table.rb +64 -0
  96. data/lib/sisu/html_tune.rb +301 -0
  97. data/lib/sisu/hub.rb +277 -0
  98. data/lib/sisu/hub_actions.rb +1122 -0
  99. data/lib/sisu/hub_loop_markup_files.rb +170 -0
  100. data/lib/sisu/hub_options.rb +1695 -0
  101. data/lib/sisu/i18n.rb +702 -0
  102. data/lib/sisu/manpage.rb +377 -0
  103. data/lib/sisu/manpage_format.rb +85 -0
  104. data/lib/sisu/object_munge.rb +307 -0
  105. data/lib/sisu/prog_text_translation.rb +1702 -0
  106. data/lib/sisu/qrcode.rb +754 -0
  107. data/lib/sisu/relaxng.rb +1153 -0
  108. data/lib/sisu/remote.rb +246 -0
  109. data/lib/sisu/rexml.rb +148 -0
  110. data/lib/sisu/se.rb +158 -0
  111. data/lib/sisu/se_cleanoutput.rb +145 -0
  112. data/lib/sisu/se_clear.rb +105 -0
  113. data/lib/sisu/se_createsite.rb +273 -0
  114. data/lib/sisu/se_css.rb +221 -0
  115. data/lib/sisu/se_date.rb +92 -0
  116. data/lib/sisu/se_db.rb +214 -0
  117. data/lib/sisu/se_envcall.rb +326 -0
  118. data/lib/sisu/se_file_op.rb +2758 -0
  119. data/lib/sisu/se_filemap.rb +247 -0
  120. data/lib/sisu/se_get_init.rb +238 -0
  121. data/lib/sisu/se_hub_particulars.rb +234 -0
  122. data/lib/sisu/se_info_env.rb +2179 -0
  123. data/lib/sisu/se_info_port.rb +70 -0
  124. data/lib/sisu/se_info_system.rb +202 -0
  125. data/lib/sisu/se_load.rb +108 -0
  126. data/lib/sisu/se_processing.rb +659 -0
  127. data/lib/sisu/se_programs.rb +394 -0
  128. data/lib/sisu/se_remotes.rb +553 -0
  129. data/lib/sisu/se_standardise_lang.rb +176 -0
  130. data/lib/sisu/se_version.rb +174 -0
  131. data/lib/sisu/shared_images.rb +137 -0
  132. data/lib/sisu/shared_markup_alt.rb +336 -0
  133. data/lib/sisu/shared_metadata.rb +1361 -0
  134. data/lib/sisu/shared_sem.rb +156 -0
  135. data/lib/sisu/sisu_thor_lib.rb +407 -0
  136. data/lib/sisu/sitemaps.rb +224 -0
  137. data/lib/sisu/src_kdissert_share.rb +102 -0
  138. data/lib/sisu/src_po4a_share.rb +309 -0
  139. data/lib/sisu/src_po4a_shelf.rb +1217 -0
  140. data/lib/sisu/src_po4a_shelf_set.rb +297 -0
  141. data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
  142. data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
  143. data/lib/sisu/src_po4a_sstm.rb +135 -0
  144. data/lib/sisu/src_shared.rb +347 -0
  145. data/lib/sisu/src_sisupod_make.rb +171 -0
  146. data/lib/sisu/src_sisupod_sstm.rb +109 -0
  147. data/lib/sisu/sst_convert_markup.rb +323 -0
  148. data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
  149. data/lib/sisu/sst_from_xml.rb +178 -0
  150. data/lib/sisu/sst_identify_markup.rb +482 -0
  151. data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
  152. data/lib/sisu/termsheet.rb +163 -0
  153. data/lib/sisu/texinfo.rb +430 -0
  154. data/lib/sisu/texinfo_format.rb +541 -0
  155. data/lib/sisu/texpdf.rb +1162 -0
  156. data/lib/sisu/texpdf_format.rb +1689 -0
  157. data/lib/sisu/texpdf_parts.rb +235 -0
  158. data/lib/sisu/txt_asciidoc.rb +354 -0
  159. data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
  160. data/lib/sisu/txt_markdown.rb +389 -0
  161. data/lib/sisu/txt_markdown_decorate.rb +207 -0
  162. data/lib/sisu/txt_orgmode.rb +376 -0
  163. data/lib/sisu/txt_orgmode_decorate.rb +186 -0
  164. data/lib/sisu/txt_output.rb +86 -0
  165. data/lib/sisu/txt_plain.rb +410 -0
  166. data/lib/sisu/txt_plain_decorate.rb +189 -0
  167. data/lib/sisu/txt_read.rb +109 -0
  168. data/lib/sisu/txt_rst.rb +371 -0
  169. data/lib/sisu/txt_rst_decorate.rb +186 -0
  170. data/lib/sisu/txt_shared.rb +241 -0
  171. data/lib/sisu/txt_textile.rb +367 -0
  172. data/lib/sisu/txt_textile_decorate.rb +186 -0
  173. data/lib/sisu/update.rb +141 -0
  174. data/lib/sisu/urls.rb +696 -0
  175. data/lib/sisu/utils.rb +232 -0
  176. data/lib/sisu/utils_composite.rb +115 -0
  177. data/lib/sisu/utils_response.rb +114 -0
  178. data/lib/sisu/utils_screen_text_color.rb +472 -0
  179. data/lib/sisu/utils_spell.rb +99 -0
  180. data/lib/sisu/webrick.rb +191 -0
  181. data/lib/sisu/wikispeak.rb +375 -0
  182. data/lib/sisu/xhtml.rb +472 -0
  183. data/lib/sisu/xhtml_epub2.rb +890 -0
  184. data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
  185. data/lib/sisu/xhtml_epub2_format.rb +2272 -0
  186. data/lib/sisu/xhtml_epub2_persist.rb +278 -0
  187. data/lib/sisu/xhtml_epub2_segments.rb +599 -0
  188. data/lib/sisu/xhtml_epub2_tune.rb +330 -0
  189. data/lib/sisu/xhtml_parts.rb +183 -0
  190. data/lib/sisu/xhtml_shared.rb +62 -0
  191. data/lib/sisu/xhtml_table.rb +97 -0
  192. data/lib/sisu/xml_docbook5.rb +376 -0
  193. data/lib/sisu/xml_dom.rb +624 -0
  194. data/lib/sisu/xml_fictionbook2.rb +389 -0
  195. data/lib/sisu/xml_format.rb +865 -0
  196. data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
  197. data/lib/sisu/xml_odf_odt.rb +887 -0
  198. data/lib/sisu/xml_odf_odt_format.rb +674 -0
  199. data/lib/sisu/xml_parts.rb +191 -0
  200. data/lib/sisu/xml_persist.rb +126 -0
  201. data/lib/sisu/xml_sax.rb +521 -0
  202. data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
  203. data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
  204. data/lib/sisu/xml_shared.rb +665 -0
  205. data/lib/sisu/xml_tables.rb +261 -0
  206. data/lib/sisu/zap.rb +90 -0
  207. metadata +251 -0
@@ -0,0 +1,170 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** hub
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/hub_loop_markup_files.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Hub_Loops
58
+ require_relative 'constants' # constants.rb
59
+ require_relative 'se' # se.rb
60
+ include SiSU_Env
61
+ include SiSU_Screen
62
+ require_relative 'hub_actions' # hub_actions.rb
63
+ require_relative 'hub_options' # hub_options.rb
64
+ require_relative 'dp' # dp.rb
65
+ include SiSU_Param
66
+ require_relative 'utils' # utils.rb
67
+ begin
68
+ require 'uri'
69
+ rescue LoadError
70
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
71
+ error('uri NOT FOUND (LoadError)')
72
+ end
73
+ class OptionLoopFiles
74
+ attr_reader :opt
75
+ def initialize(opt)
76
+ @opt=opt
77
+ @r=Px[:lng_lst_rgx]
78
+ end
79
+ def loop_files_on_given_option
80
+ @opt.files.each_with_index do |fno,i|
81
+ @opt.fno,@opt.fns=fno,fno
82
+ @opt.f_pth=@opt.f_pths[i]
83
+ if fno !~/\.-sst$/
84
+ @opt.pth=@opt.paths[i]
85
+ @opt.lng=@opt.lngs[i]
86
+ end
87
+ @@pwd=@opt.pth
88
+ @opt.pth=@opt.f_pths[i][:pth]
89
+ @opt.lng=@opt.f_pths[i][:lng]
90
+ Dir.chdir(@opt.f_pth[:pth]) #watch
91
+ SiSU_Env::FilenameLanguageCodeInsert.new(@opt,@opt.lng).language_code_insert # ... track
92
+ @env=SiSU_Env::InfoEnv.new(fno)
93
+ yield
94
+ end
95
+ end
96
+ def loop_files_on_given_option_bundle
97
+ @files_bundle={}
98
+ @opt.files.each_with_index do |fno,i|
99
+ fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'')
100
+ unless @files_bundle[fn_base_bundle]
101
+ @files_bundle[fn_base_bundle]={ status: :todo }
102
+ end
103
+ end
104
+ @opt.files.each_with_index do |fno,i|
105
+ fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'')
106
+ unless @files_bundle[fn_base_bundle][:status] == :done
107
+ @files_bundle[fn_base_bundle][:status] = :done
108
+ @opt.fns=fno
109
+ @opt.fno=fno
110
+ @opt.f_pth=@opt.f_pths[i]
111
+ if fno !~/\.-sst$/
112
+ @opt.pth=@opt.paths[i]
113
+ @opt.lng=@opt.lngs[i]
114
+ end
115
+ @@pwd=@opt.pth
116
+ @opt.pth=@opt.f_pths[i][:pth]
117
+ @opt.lng=@opt.f_pths[i][:lng]
118
+ Dir.chdir(@opt.f_pth[:pth]) #watch
119
+ @env=SiSU_Env::InfoEnv.new(fno)
120
+ yield
121
+ else next
122
+ end
123
+ end
124
+ end
125
+ def manifest_on_files_translated
126
+ number_of_files={}
127
+ @opt.files.each_with_index do |fns,i|
128
+ fn=fns.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'')
129
+ (number_of_files[fn].is_a?(Array)) \
130
+ ? (number_of_files[fn] << i)
131
+ : (number_of_files.store(fn,[i]))
132
+ end
133
+ files_translated_idx=[]
134
+ number_of_files.each do |x|
135
+ if x[1].length > 1
136
+ files_translated_idx << x[1]
137
+ end
138
+ end
139
+ #files_translated_idx=number_of_files.select do |x|
140
+ # x[1] if x[1].length > 1
141
+ #end
142
+ if files_translated_idx.flatten.length > 1
143
+ SiSU_Screen::Ansi.new(
144
+ @opt.act[:color_state][:set],
145
+ 'Manifest re-run on (currently generated) translated files',
146
+ ''
147
+ ).grey_title_hi unless @opt.act[:quiet][:set] ==:on
148
+ files_translated_idx.flatten.each do |i|
149
+ @opt.fns=@opt.files[i]
150
+ @opt.f_pth=@opt.f_pths[i]
151
+ if @opt.fns =~/\.-sst$/
152
+ @opt.pth=Dir.pwd
153
+ @opt.lng='en'
154
+ elsif @opt.fno =~/\.txz$/
155
+ @opt.pth=@opt.f_pths[i][:pth]
156
+ @opt.lng=@opt.f_pths[i][:lng]
157
+ else
158
+ @opt.pth=@opt.f_pths[i][:pth]
159
+ @opt.lng=@opt.f_pths[i][:lng]
160
+ end
161
+ @@pwd=@opt.pth
162
+ Dir.chdir(@opt.pth) #watch
163
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
164
+ yield
165
+ end
166
+ end
167
+ end
168
+ end
169
+ end
170
+ __END__
@@ -0,0 +1,1695 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** hub, command line options parsing
8
+
9
+ *** hub
10
+
11
+ ** Author: Ralph Amissah
12
+ <ralph@amissah.com>
13
+ <ralph.amissah@gmail.com>
14
+
15
+ ** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
16
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
17
+ All Rights Reserved.
18
+
19
+ ** License: GPL 3 or later:
20
+
21
+ SiSU, a framework for document structuring, publishing and search
22
+
23
+ Copyright (C) Ralph Amissah
24
+
25
+ This program is free software: you can redistribute it and/or modify it
26
+ under the terms of the GNU General Public License as published by the Free
27
+ Software Foundation, either version 3 of the License, or (at your option)
28
+ any later version.
29
+
30
+ This program is distributed in the hope that it will be useful, but WITHOUT
31
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
32
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
33
+ more details.
34
+
35
+ You should have received a copy of the GNU General Public License along with
36
+ this program. If not, see <http://www.gnu.org/licenses/>.
37
+
38
+ If you have Internet connection, the latest version of the GPL should be
39
+ available at these locations:
40
+ <http://www.fsf.org/licensing/licenses/gpl.html>
41
+ <http://www.gnu.org/licenses/gpl.html>
42
+
43
+ <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
44
+
45
+ ** SiSU uses:
46
+ * Standard SiSU markup syntax,
47
+ * Standard SiSU meta-markup syntax, and the
48
+ * Standard SiSU object citation numbering and system
49
+
50
+ ** Hompages:
51
+ <http://www.jus.uio.no/sisu>
52
+ <http://www.sisudoc.org>
53
+
54
+ ** Git
55
+ <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
56
+ <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/hub_options.rb;hb=HEAD>
57
+
58
+ =end
59
+ module SiSU_Commandline
60
+ begin
61
+ require 'pathname'
62
+ rescue LoadError
63
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
64
+ error('pathname NOT FOUND (LoadError)')
65
+ end
66
+ require_relative 'se' # se.rb
67
+ require_relative 'dp_make' # dp_make.rb
68
+ class HeaderCommon
69
+ def sisu_document_make_instructions(make_instruct_array=:nil)
70
+ @pagenew=
71
+ @pagebreak=
72
+ @pageline=
73
+ @toc=
74
+ @lv1=@lv2=@lv3=@lv4=@lv5=@lv6=
75
+ @num_top=
76
+ @i18n=
77
+ @man_section=
78
+ @emphasis_set_to=
79
+ @bold_match_list=
80
+ @italics_match_list=
81
+ @substitution_match_list=
82
+ @footer_links=
83
+ @home_button_links=
84
+ @links=
85
+ nil
86
+ make_instruct_array=make_instruct_array==:nil \
87
+ ? SiSU_Env::GetInit.new.sisu_document_make.makefile_read
88
+ : make_instruct_array
89
+ @makeset=false
90
+ if make_instruct_array
91
+ make_instruct_array.each do |para| #% scan document
92
+ if para =~/^(?:@make:|@links:)[+-]?\s/
93
+ case para
94
+ when /^@make:(.+)/m #% header processing - make
95
+ @env=SiSU_Env::InfoEnv.new
96
+ @make=SiSU_Param_Make::MdMake.new($1.strip,@opt,@env).make
97
+ makes=SiSU_Param_Make::MakeHead.new(@make).make_instruct
98
+ @makeset=true
99
+ @pagenew=makes[:pagenew]
100
+ @pagebreak=makes[:pagenew]
101
+ @pageline=makes[:pageline]
102
+ @toc=makes[:toc]
103
+ @lv1=makes[:lv1]
104
+ @lv2=makes[:lv2]
105
+ @lv3=makes[:lv3]
106
+ @lv4=makes[:lv4]
107
+ @lv5=makes[:lv5]
108
+ @lv6=makes[:lv6]
109
+ @num_top=makes[:num_top]
110
+ @i18n=makes[:i18n]
111
+ @man_section=makes[:man_section]
112
+ @emphasis_set_to=makes[:emphasis_set_to]
113
+ @bold_match_list=makes[:bold_match_list]
114
+ @italics_match_list=makes[:italics_match_list]
115
+ @substitution_match_list=makes[:substitution_match_list]
116
+ @footer_links=makes[:footer_links]
117
+ @home_button_links=makes[:home_button_links]
118
+ @home_button_image=makes[:home_button_image]
119
+ @cover_image=makes[:cover_image]
120
+ when /^@links:(.+)/m #% header processing - make
121
+ make_links=SiSU_Param::Parameters::MdMake.new($1.strip,@opt,@env).make_links
122
+ @links,@links_append=make_links.links,make_links.append?
123
+ end
124
+ end
125
+ end #% here endeth the common header loop
126
+ end
127
+ { makeset: @makeset,
128
+ pagenew: @pagenew,
129
+ pagebreak: @pagebreak,
130
+ pageline: @pageline,
131
+ toc: @toc,
132
+ lv1: @lv1,
133
+ lv2: @lv2,
134
+ lv3: @lv3,
135
+ lv4: @lv4,
136
+ lv5: @lv5,
137
+ lv6: @lv6,
138
+ num_top: @num_top,
139
+ i18n: @i18n,
140
+ man_section: @man_section,
141
+ emphasis_set_to: @emphasis_set_to,
142
+ bold_match_list: @bold_match_list,
143
+ italics_match_list: @italics_match_list,
144
+ substitution_match_list: @substitution_match_list,
145
+ footer_links: @footer_links,
146
+ home_button_links: @home_button_links,
147
+ home_button_image: @home_button_image,
148
+ cover_image: @cover_image,
149
+ links: @links,
150
+ links_append: @links_append
151
+ }
152
+ end
153
+ end
154
+ class Options
155
+ attr_accessor :selections,:opt_ch,:act,:dir_structure_by,:lingual,:f_pths,:files,:files_mod,:call_path,:base_path,:base_stub,:sub_location,:image_src_path,:paths,:lngs,:f_pth,:pth,:fno,:fns,:fnb,:fnc,:fng,:fncb,:lng,:lng_base,:what,:make_instructions,:make_instructions_pod,:sisu_run_path,:sisu_install_type
156
+ @@act=nil
157
+ def initialize(a,sisu_runtime)
158
+ @opt_ch=@f_pth=@pth=@fno=@fns=@fnb=@fnc=@fng=@fncb=@what=@lng=@lng_base=@call_path=@base_path=@base_stub=@image_src_path=@sub_location=''
159
+ @f_pths,@files,@files_mod,@paths,@select_arr,@act=Array.new(5){[]}
160
+ @select_str=nil
161
+ @env=SiSU_Env::InfoEnv.new
162
+ @lng_base=@env.language_default_set
163
+ @dir_structure_by=SiSU_Env::EnvCall.new.output_dir_structure.by?
164
+ @lingual=SiSU_Env::EnvCall.new.mono_multi_lingual?
165
+ @sisu_run_from=sisu_runtime[:runtime_path]
166
+ @sisu_install_type=sisu_runtime[:runtime_type]
167
+ @call_path=sisu_runtime[:call_path]
168
+ pth=SiSU_Utils::Path.new(call_path)
169
+ @base_path=pth.base_markup
170
+ @base_stub=pth.base_markup_stub
171
+ @image_src_path=pth.image_src
172
+ @a=sisu_glob_rules(a)
173
+ @a.freeze
174
+ @make_instructions=HeaderCommon.new.sisu_document_make_instructions
175
+ @make_instructions_pod=nil
176
+ init
177
+ end
178
+ def sisu_called_from?
179
+ @call_path
180
+ end
181
+ def sisu_bin_filepath?
182
+ @sisu_run_from
183
+ end
184
+ def sisu_install_type?
185
+ @sisu_install_type
186
+ end
187
+ def sisu_lib_dir?
188
+ File.dirname(__FILE__)
189
+ end
190
+ def sisu_data_dir?
191
+ env=RbConfig::CONFIG
192
+ if sisu_install_type? ==:full_path_to_sisu_bin_in_sisu_dir_tree
193
+ sisu_bin_filepath?.gsub(/\/bin\/sisu\S*/,'/data/sisu')
194
+ #sisu_lib_dir?.gsub(/\/lib\/sisu\/(?:current|develop)\S*/,'/data/sisu')
195
+ elsif sisu_install_type? ==:gem_install
196
+ #sisu_run_from?.gsub(/\/bin\/.+/,'/data/sisu')
197
+ env['datadir']
198
+ elsif sisu_install_type? ==:system_install
199
+ #SiSU_Info_Env::InfoEnv.new.path.share
200
+ env['datadir']
201
+ else
202
+ env['datadir']
203
+ end
204
+ end
205
+ def find_all(find_flag,opt)
206
+ if find_flag
207
+ x=Dir.glob('*.ss[tm]')
208
+ Px[:lng_lst].each do |d|
209
+ if FileTest.directory?(d)
210
+ x << Dir.glob("#{d}/*.ss[tm]")
211
+ end
212
+ end
213
+ x=x.flatten
214
+ opt + x
215
+ end
216
+ end
217
+ def find_select(find_flag,opt)
218
+ if find_flag
219
+ x=[]
220
+ if opt.inspect =~/"[a-zA-Z][a-zA-Z0-9._-]+?"/
221
+ opt.each do |g|
222
+ x <<=if g =~/.ss[tm]/
223
+ Dir.glob("*#{g}")
224
+ else
225
+ Dir.glob("*#{g}*.ss[tm]")
226
+ end
227
+ Px[:lng_lst].each do |d|
228
+ if FileTest.directory?(d)
229
+ x <<=if g =~/.ss[tm]/
230
+ Dir.glob("#{d}/*#{g}")
231
+ else
232
+ Dir.glob("#{d}/*#{g}*.ss[tm]")
233
+ end
234
+ end
235
+ end
236
+ end
237
+ end
238
+ x.flatten
239
+ end
240
+ end
241
+ def sisu_glob_rules(a)
242
+ a=if a.inspect =~/"-[A-Za-z0-9]*[fG]/ \
243
+ or a.inspect =~/"--find"|"--glob"/
244
+ b,f=[],[]
245
+ find_flag=false
246
+ a.each do |y|
247
+ if y =~ /^-/
248
+ if y =~/^-/ \
249
+ && y =~/[fG]|--find|--glob/
250
+ find_flag=true
251
+ end
252
+ b << y
253
+ end
254
+ if find_flag \
255
+ && y !~ /^-/ \
256
+ && y =~ /\S+/
257
+ if y !~/\//
258
+ f << y
259
+ else
260
+ find_flag=false
261
+ puts %{sub-directories "#{y}" cannot be provided for --find or --glob at this time}
262
+ end
263
+ end
264
+ end
265
+ r=Px[:lng_lst_rgx].gsub(/\|#{lng_base}\|/,'|')
266
+ @lang_regx=%r{(?:#{r})}
267
+ if find_flag
268
+ (f.length > 0) \
269
+ ? (b + find_select(find_flag,f))
270
+ : find_all(find_flag,b)
271
+ elsif a.inspect =~/"(?:-\S+?|--\S+?)"/ \
272
+ && a.inspect =~/"#{@lang_regx}\/?"/ \
273
+ && a.inspect =~/"#{lng_base}\/\S+?\.ss[tm]"/
274
+ init_selected_lang_dirs(a)
275
+ else b
276
+ end
277
+ else a
278
+ end
279
+ end
280
+ def init_selected_lang_dirs(a)
281
+ @z=a.each.map do |y|
282
+ if y =~/^#{lng_base}\/(\S+?\.ss[tm])$/
283
+ @fn=$1
284
+ y
285
+ elsif y =~/^#{@lang_regx}\/?$/
286
+ "#{y}/#{@fn}"
287
+ else y
288
+ end
289
+ end
290
+ end
291
+ def init
292
+ a=@a
293
+ s=expand_numeric_shortcuts(a)
294
+ q=set_files_and_paths_and_general_extract(s)
295
+ files=(q[:files].length > 0) ? :true : :false
296
+ @select_arr=opt_cmd_and_mod_adjust(q[:opt_ch],q[:selections],files)
297
+ if a.length > 0
298
+ @what=q[:what] unless q[:what].empty?
299
+ @paths = q[:paths]
300
+ @files = q[:files]
301
+ @f_pths = q[:f_pths]
302
+ @lngs = q[:lngs]
303
+ if @files.length > 0 \
304
+ and @opt_ch.empty? \
305
+ and @select_arr.length==0 #% if no other action called on filename given, default is sisu --v5 -0 [filename(s)] configured as flag default
306
+ shortcut=SiSU_Env::InfoProcessingFlag.new
307
+ @select_arr=['--v5']
308
+ @select_arr << shortcut.act_0.arr #+ ' --dal'
309
+ end
310
+ if @select_arr.inspect =~/--verbose/ \
311
+ && @opt_ch !~/-[ku]*v[ku]*$/
312
+ SiSU_Screen::Ansi.new(
313
+ @opt_ch,
314
+ "\tsisu " + @opt_ch + ' ' + @select_arr.join(' ') + ' ' + @files.join(' ') + "\n"
315
+ ).print_brown
316
+ end
317
+ end
318
+ @@act ? @act=@@act : @@act=@act=opt_act
319
+ self
320
+ end
321
+ def sisu_document_make_pod
322
+ def makefile_name
323
+ SiSU_Env::GetInit.new.sisu_document_make.makefile_name
324
+ end
325
+ def makefile(pod_make_path)
326
+ "#{pod_make_path}/#{makefile_name}"
327
+ end
328
+ def makefile_read(pod_make_path)
329
+ if FileTest.file?(makefile(pod_make_path))
330
+ sisu_doc_makefile=IO.read(makefile(pod_make_path), mode: 'r:utf-8')
331
+ sisu_doc_makefile.split(/\s*\n\s*\n/m)
332
+ else nil
333
+ end
334
+ end
335
+ self
336
+ end
337
+ def set_files_and_paths_and_general_extract(s)
338
+ c,w='',''
339
+ m,f,pth,lng,lngs=[],[],[],[],[]
340
+ lng_is=''
341
+ a=(s.nil?) \
342
+ ? ['-v']
343
+ : s.split(/\s+/)
344
+ r_l=Px[:lng_lst].join('|')
345
+ a.uniq.each do |x|
346
+ if x =~/^-[a-z0-5]+/i \
347
+ or x =~/^--\S+/
348
+ if x =~/^-([a-z0-5]+)/i
349
+ c << $1
350
+ end
351
+ if x =~/^--\S+/
352
+ m << x
353
+ end
354
+ elsif x =~ /(?:\.(?:(?:-|ssm\.)?sst(?:\.xml)?|ssm|ssi|sx[sdn]\.xml|s[1-3]|kdi|ssp)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip))$/
355
+ if x =~/\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)/
356
+ if x =~/^(?:https?|file):\/\/\S+/ #\
357
+ end
358
+ pwd=Dir.pwd
359
+ fn_pod=x.gsub(/([^\/]+)\.txz$/,'\1')
360
+ fullname=@env.processing_path.processing + '/sisupod/' + fn_pod
361
+ pt=Pathname.new(fullname)
362
+ FileUtils::mkdir_p(pt.to_s)
363
+ pod_make_path=fullname + '/sisupod/doc/_sisu'
364
+ make_instruct_array=sisu_document_make_pod.makefile_read(pod_make_path)
365
+ @make_instructions_pod=
366
+ HeaderCommon.new.sisu_document_make_instructions(make_instruct_array)
367
+ Dir.chdir(pt.realpath)
368
+ system("
369
+ chdir #{fullname}
370
+ tar xaf #{pwd}/#{x}
371
+ chdir #{pwd}
372
+ ")
373
+ Dir.chdir(pt.realpath.to_s + '/sisupod/doc')
374
+ r=Px[:lng_lst_rgx]
375
+ Dir.entries("#{fullname}/sisupod/doc").each do |d_lng|
376
+ if d_lng =~/^(?:#{r})$/
377
+ Dir.chdir(pt.realpath.to_s + "/sisupod/doc/#{d_lng}")
378
+ filenames=Dir.glob("*.ss[mt]")
379
+ filenames.each do |fn|
380
+ f_pths << {
381
+ pth: "#{fullname}/sisupod/doc/#{d_lng}",
382
+ f: "#{fn}",
383
+ pth_stub: 'doc',
384
+ lng: d_lng,
385
+ lng_is: d_lng,
386
+ url_base: '',
387
+ url: ''
388
+ }
389
+ Dir.chdir(pwd)
390
+ f << fn
391
+ end
392
+ end
393
+ end
394
+ elsif x =~/^(?:https?|file):\/\/\S+/ \
395
+ and x =~/\S+?\.ss[mt]$/
396
+ r_url=/(http:\/\/\S+?\/\S+?\/src(?:\/(?:#{r_l}))?)\//
397
+ url_base = (x[r_url,1])
398
+ url = x
399
+ y=x.gsub(/http:\/\/\S+?\/\S+?\/src\//,'')
400
+ t=/(#{r_l})\/[^\/]+?\.ss[tm]$/
401
+ l_p = (y[t,1]) \
402
+ ? y[t,1]
403
+ : nil
404
+ lng << l_p
405
+ lngs << if l_p
406
+ l_p
407
+ elsif x =~/~(#{r_l})\.ss[tm]/
408
+ $1
409
+ else lng_base
410
+ end
411
+ r_f=/(?:#{r_l})\/([^\/]+?\.ss[tm])$/
412
+ fn = (y[r_f,1]) \
413
+ ? y[r_f,1]
414
+ : y
415
+ fn=fn.gsub(/\.((?:ssm\.)?sst)/,'.-\1')
416
+ fullname=Dir.pwd + '/' + fn
417
+ pt=Pathname.new(fullname)
418
+ pth << Dir.pwd
419
+ r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/
420
+ lng_is =if l_p
421
+ l_p
422
+ elsif x =~/~(#{r_l})\.ss[tm]/
423
+ $1
424
+ else lng_base
425
+ end
426
+ f_pths << {
427
+ pth: pt.split[0].realpath.to_s,
428
+ f: pt.split[1].to_s,
429
+ pth_stub: pt.split[0].realpath.to_s[r_u,1],
430
+ lng: (pt.split[0].realpath.to_s[t,1]) \
431
+ ? pt.split[0].realpath.to_s[t,1]
432
+ : nil,
433
+ lng_is: lng_is,
434
+ url_base: url_base,
435
+ url: url
436
+ }
437
+ f << fn
438
+ elsif FileTest.file?(x)
439
+ pt=Pathname.new(x)
440
+ pth << pt.split[0].realpath.to_s #remove?
441
+ f << pt.split[1].to_s #remove?
442
+ r_u=/.+?\/([^\/]+)(?:\/(?:#{r_l})$|$)/
443
+ t=/.+\/(#{r_l})$/
444
+ l_p = (pt.split[0].realpath.to_s[t,1]) \
445
+ ? pt.split[0].realpath.to_s[t,1]
446
+ : nil
447
+ lngs << lng_is = if l_p
448
+ l_p
449
+ elsif x =~/~(#{r_l})\.ss[tm]/
450
+ $1
451
+ else lng_base
452
+ end
453
+ f_pths << {
454
+ pth: pt.split[0].realpath.to_s,
455
+ f: pt.split[1].to_s,
456
+ pth_stub: pt.split[0].realpath.to_s[r_u,1],
457
+ lng: lng_is,
458
+ lng_is: lng_is,
459
+ url_base: nil,
460
+ url: nil,
461
+ }
462
+ else puts "file not found: #{x}"
463
+ end
464
+ elsif x =~ /\.termsheet\.rb$/
465
+ (FileTest.file?(x)) \
466
+ ? (f << x)
467
+ : (puts "file not found: #{x}")
468
+ else w=x
469
+ puts "#{x} in #{a.join(' ')}?"
470
+ end
471
+ end
472
+ {
473
+ opt_ch: c,
474
+ selections: m,
475
+ what: w,
476
+ paths: pth,
477
+ files: f,
478
+ f_pths: f_pths,
479
+ lng: lng_is,
480
+ lngs: lngs,
481
+ }
482
+ end
483
+ def expand_numeric_shortcuts(a)
484
+ s=''
485
+ a.each do |x|
486
+ y=case x
487
+ when /0/
488
+ (x=~/^-0\S+/) \
489
+ ? x.gsub(/^-0(\S+)/,'--act0' + ' -\1')
490
+ : x.gsub(/^-0/,'--act0' + ' ')
491
+ when /1/
492
+ (x=~/^-1\S+/) \
493
+ ? x.gsub(/^-1(\S+)/,'--act1' + ' -\1')
494
+ : x.gsub(/^-1/,'--act1' + ' ')
495
+ when /2/
496
+ (x=~/^-2\S+/) \
497
+ ? x.gsub(/^-2(\S+)/,'--act2' + ' -\1')
498
+ : x.gsub(/^-2/,'--act2' + ' ')
499
+ when /3/
500
+ (x=~/^-3\S+/) \
501
+ ? x.gsub(/^-3(\S+)/,'--act3' + ' -\1')
502
+ : x.gsub(/^-3/,'--act3' + ' ')
503
+ when /4/
504
+ (x=~/^-4\S+/) \
505
+ ? x.gsub(/^-4(\S+)/,'--act4' + ' -\1')
506
+ : x.gsub(/^-4/,'--act4' + ' ')
507
+ when /5/
508
+ (x=~/^-5\S+/) \
509
+ ? x.gsub(/^-5(\S+)/,'--act5' + ' -\1')
510
+ : x.gsub(/^-5/,'--act5' + ' ')
511
+ when /6/
512
+ (x=~/^-6\S+/) \
513
+ ? x.gsub(/^-6(\S+)/,'--act6' + ' -\1')
514
+ : x.gsub(/^-6/,'--act6' + ' ')
515
+ when /7/
516
+ (x=~/^-7\S+/) \
517
+ ? x.gsub(/^-7(\S+)/,'--act7' + ' -\1')
518
+ : x.gsub(/^-7/,'--act7' + ' ')
519
+ when /8/
520
+ (x=~/^-8\S+/) \
521
+ ? x.gsub(/^-8(\S+)/,'--act8' + ' -\1')
522
+ : x.gsub(/^-8/,'--act8' + ' ')
523
+ when /9/
524
+ (x=~/^-9\S+/) \
525
+ ? x.gsub(/^-9(\S+)/,'--act9' + ' -\1')
526
+ : x.gsub(/^-9/,'--act9' + ' ')
527
+ else x
528
+ end
529
+ s << " #{y}" unless y.empty?
530
+ end
531
+ s.strip!
532
+ end
533
+ def opt_cmd_and_mod_adjust(ch,select_arr,files)
534
+ select_arr=select_arr.flatten
535
+ sel_init=select_arr.flatten
536
+ shortcut=SiSU_Env::InfoProcessingFlag.new
537
+ if files ==:true
538
+ if not sel_init.empty? \
539
+ and sel_init.inspect =~/"--act[s0-9]?/
540
+ sel_init.each do |s|
541
+ select_arr <<=case s
542
+ when /--act0/ then shortcut.act_0.arr
543
+ when /--act1/ then shortcut.act_1.arr
544
+ when /--act2/ then shortcut.act_2.arr
545
+ when /--act3/ then shortcut.act_3.arr
546
+ when /--act4/ then shortcut.act_4.arr
547
+ when /--act5/ then shortcut.act_5.arr
548
+ when /--act6/ then shortcut.act_6.arr
549
+ when /--act7/ then shortcut.act_7.arr
550
+ when /--act8/ then shortcut.act_8.arr
551
+ when /--act9/ then shortcut.act_9.arr
552
+ when /--act/ then shortcut.act_info
553
+ end
554
+ end
555
+ end
556
+ if not sel_init.empty? \
557
+ and sel_init.inspect =~/"--pdf-/
558
+ select_arr << '--pdf'
559
+ sel_init.each do |s|
560
+ if s =~ /^--pdf-(?:(?:l|landscape)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:l|landscape))$/
561
+ select_arr << '--landscape'
562
+ end
563
+ if s =~ /^--pdf-(?:(?:p|portrait)(?:-(?:a4|letter|a5|b5|legal))?|(?:a4|letter|a5|b5|legal)-(?:p|portrait))$/
564
+ select_arr << '--portrait'
565
+ end
566
+ if s =~ /^--pdf(?:-(?:a4|letter|a5|b5|legal)(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))(?:-(?:a4|letter|a5|b5|legal)))$/
567
+ if s =~ /^--pdf(?:-a4(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-a4)$/
568
+ select_arr << '--papersize-a4'
569
+ end
570
+ if s =~ /^--pdf(?:-a5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-a5)$/
571
+ select_arr << '--papersize-a5'
572
+ end
573
+ if s =~ /^--pdf(?:-b5(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-b5)$/
574
+ select_arr << '--papersize-b5'
575
+ end
576
+ if s =~ /^--pdf(?:-letter(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-letter)$/
577
+ select_arr << '--papersize-letter'
578
+ end
579
+ if s =~ /^--pdf(?:-legal(?:-(?:[lp]|landscape|portrait))?|(?:-(?:[lp]|landscape|portrait))-legal)$/
580
+ select_arr << '--papersize-legal'
581
+ end
582
+ end
583
+ end
584
+ select_arr=select_arr.uniq
585
+ end
586
+ if ch.empty? \
587
+ and sel_init.length == 0
588
+ select_arr << shortcut.act_0.arr ################ & --flag empty
589
+ elsif not ch.empty?
590
+ if ch =~/c/ then select_arr << '--color-toggle'
591
+ ch=ch.gsub(/[c]/,'')
592
+ end
593
+ if ch =~/k/ then select_arr << '--color-off'
594
+ ch=ch.gsub(/[k]/,'')
595
+ end
596
+ if ch =~/C/ then select_arr << '--config'
597
+ ch=ch.gsub(/[C]+/,'')
598
+ end
599
+ if ch =~/m/ then select_arr << '--dal'
600
+ ch=ch.gsub(/[m]/,'')
601
+ end
602
+ if ch =~/t/ then select_arr << '--txt'
603
+ ch=ch.gsub(/[t]/,'')
604
+ end
605
+ if ch =~/h/ then select_arr << '--html'
606
+ ch=ch.gsub(/[h]/,'')
607
+ end
608
+ if ch =~/e/ then select_arr << '--epub'
609
+ ch=ch.gsub(/[e]/,'')
610
+ end
611
+ if ch =~/o/ then select_arr << '--odt'
612
+ ch=ch.gsub(/[o]/,'')
613
+ end
614
+ if ch =~/d/ then select_arr << '--docbook'
615
+ ch=ch.gsub(/[d]/,'')
616
+ end
617
+ if ch =~/p/ then select_arr << '--pdf'
618
+ ch=ch.gsub(/[p]/,'')
619
+ end
620
+ if ch =~/w/ then select_arr << '--concordance'
621
+ ch=ch.gsub(/[w]/,'')
622
+ end
623
+ if ch =~/i/ then select_arr << '--manpage'
624
+ ch=ch.gsub(/[i]/,'')
625
+ end
626
+ if ch =~/I/ then select_arr << '--texinfo'
627
+ ch=ch.gsub(/[I]/,'')
628
+ end
629
+ if ch =~/b/ then select_arr << '--xhtml'
630
+ ch=ch.gsub(/[b]/,'')
631
+ end
632
+ if ch =~/x/ then select_arr << '--xml-sax'
633
+ ch=ch.gsub(/[x]/,'')
634
+ end
635
+ if ch =~/X/ then select_arr << '--xml-dom'
636
+ ch=ch.gsub(/[X]/,'')
637
+ end
638
+ if ch =~/j/ then select_arr << '--images'
639
+ ch=ch.gsub(/[j]/,'')
640
+ end
641
+ if ch =~/N/ then select_arr << '--digests'
642
+ ch=ch.gsub(/[N]/,'')
643
+ end
644
+ if ch =~/P/ then select_arr << '--po4a-sst'
645
+ ch=ch.gsub(/[P]/,'')
646
+ end
647
+ if ch =~/d/ then select_arr << '--sqlite'
648
+ ch=ch.gsub(/[d]/,'')
649
+ end
650
+ if ch =~/D/ then select_arr << '--pg'
651
+ ch=ch.gsub(/[D]/,'')
652
+ end
653
+ if ch =~/Q/ then select_arr << '--qrcode'
654
+ ch=ch.gsub(/[Q]/,'')
655
+ end
656
+ if ch =~/s/ then select_arr << '--source'
657
+ ch=ch.gsub(/[s]/,'')
658
+ end
659
+ if ch =~/S/ then select_arr << '--sisupod'
660
+ ch=ch.gsub(/[S]/,'')
661
+ end
662
+ if ch =~/m/ then select_arr << '--manifest'
663
+ ch=ch.gsub(/[m]/,'')
664
+ end
665
+ if ch =~/R/ then select_arr << '--rsync'
666
+ ch=ch.gsub(/[R]/,'')
667
+ end
668
+ if ch =~/r/ then select_arr << '--scp'
669
+ ch=ch.gsub(/[r]/,'')
670
+ end
671
+ if ch =~/g/ then select_arr << '--git'
672
+ ch=ch.gsub(/[g]/,'')
673
+ end
674
+ if ch =~/U/ then select_arr << '--urls'
675
+ ch=ch.gsub(/[u]/,'')
676
+ end
677
+ if ch =~/Z/ then select_arr << '--zap'
678
+ ch=ch.gsub(/[Z]/,'')
679
+ end
680
+ if ch =~/F/ then select_arr << '--sample-search-form'
681
+ ch=ch.gsub(/[F]/,'')
682
+ end
683
+ if ch =~/W/ then select_arr << '--webrick'
684
+ ch=ch.gsub(/[w]/,'')
685
+ end
686
+ if ch =~/M/ then select_arr << '--maintenance'
687
+ ch=ch.gsub(/[M]/,'')
688
+ end
689
+ if ch =~/V/ then select_arr << '--very-verbose'
690
+ ch=ch.gsub(/[V]/,'')
691
+ end
692
+ if ch =~/v/ then select_arr << '--verbose'
693
+ ch=ch.gsub(/[v]/,'')
694
+ end
695
+ if ch =~/q/ then select_arr << '--quiet'
696
+ ch=ch.gsub(/[q]/,'')
697
+ end
698
+ if select_arr.inspect !~/--urls/ \
699
+ and select_arr.inspect \
700
+ !~/"--harvest/
701
+ select_arr << '--urls'
702
+ end
703
+ if select_arr.inspect !~/--dal/ \
704
+ and select_arr.inspect =~/txt|text|html|odt|epub|docbook|xml|pdf|manpage|texinfo|concordance|qrcode|source|sisupod|pg|sqlite|zap/
705
+ select_arr << '--dal'
706
+ end
707
+ if select_arr.inspect !~/--manifest/ \
708
+ and select_arr.inspect =~/txt|text|html|odt|epub|docbook|xml|pdf|manpage|texinfo|concordance|qrcode|source|sisupod|pg|sqlite|zap/
709
+ select_arr << '--manifest'
710
+ end
711
+ if select_arr.inspect !~/--images/ \
712
+ and select_arr.inspect =~/html|odt|docbook|xml|qrcode/
713
+ select_arr << '--images'
714
+ end
715
+ end
716
+ else
717
+ if not sel_init.empty? \
718
+ and sel_init.inspect =~/"--acts?/
719
+ shortcut.act_info
720
+ exit
721
+ end
722
+ if ch =~/c/ then select_arr << '--color-toggle'
723
+ ch=ch.gsub(/[c]/,'')
724
+ end
725
+ if ch =~/k/ then select_arr << '--color-off'
726
+ ch=ch.gsub(/[k]/,'')
727
+ end
728
+ if ch =~/C/ then select_arr << '--config'
729
+ ch=ch.gsub(/[C]+/,'')
730
+ end
731
+ if sel_init.inspect =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"/
732
+ if ch =~/d/ then select_arr << '--sqlite'
733
+ ch=ch.gsub(/[d]/,'')
734
+ end
735
+ if ch =~/D/ then select_arr << '--pg'
736
+ ch=ch.gsub(/[D]/,'')
737
+ end
738
+ end
739
+ if ch =~/W/ then select_arr << '--webrick'
740
+ ch=ch.gsub(/[w]/,'')
741
+ end
742
+ if ch =~/v/ then select_arr << '--version'
743
+ ch=ch.gsub(/[v]/,'')
744
+ end
745
+ if ch =~/M/ then select_arr << '--maintenance'
746
+ ch=ch.gsub(/[M]/,'')
747
+ end
748
+ if ch =~/V/ then select_arr << '--very-verbose'
749
+ ch=ch.gsub(/[V]/,'')
750
+ end
751
+ if ch =~/q/ then select_arr << '--quiet'
752
+ ch=ch.gsub(/[q]/,'')
753
+ end
754
+ end
755
+ select_arr=select_arr.flatten.compact.uniq.sort
756
+ end
757
+ def opt_act
758
+ select_arr=@select_arr
759
+ @@act=if @@act
760
+ @act=@@act
761
+ else
762
+ act={}
763
+ act[:no_stop]=if select_arr.inspect \
764
+ =~/"--no-stop"|"--errors-as-warnings"/
765
+ { bool: true, set: :on }
766
+ else
767
+ { bool: false, set: :na }
768
+ end
769
+ act[:license]=(select_arr.inspect \
770
+ =~/"--license/) \
771
+ ? { bool: true, set: :on }
772
+ : { bool: false, set: :na }
773
+ act[:site_init]=(select_arr.inspect \
774
+ =~/"--init"|"--initialize"|"--init-site"|"--conf"|"--config"|"--configure"/) \
775
+ ? { bool: true, set: :on }
776
+ : { bool: false, set: :na }
777
+ act[:rc]=if select_arr.inspect \
778
+ =~/"--rc=/
779
+ x=Dir.pwd + '/' + select_arr.join.gsub(/--rc=/,'')
780
+ { bool: true, set: :on, inst: x }
781
+ else
782
+ { bool: false, set: :na, inst: '' }
783
+ end
784
+ act[:processing_path]=if select_arr.inspect \
785
+ =~/"--processing-path=/
786
+ base_pth=select_arr.join(';').gsub(/^.*--processing-path=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
787
+ { bool: true, set: :on, inst: base_pth }
788
+ elsif select_arr.inspect \
789
+ =~/"--processing-path/
790
+ { bool: true, set: :on, inst: @base_path }
791
+ else
792
+ { bool: false, set: :na, inst: nil }
793
+ end
794
+ act[:dump]=if select_arr.inspect \
795
+ =~/"--dump=/
796
+ base_pth=select_arr.join(';').
797
+ gsub(/^.*--dump=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
798
+ { bool: true, set: :on, inst: base_pth }
799
+ elsif select_arr.inspect =~/"--dump/
800
+ { bool: true, set: :on, inst: @base_path }
801
+ else
802
+ { bool: false, set: :na, inst: nil }
803
+ end
804
+ act[:redirect]=if select_arr.inspect \
805
+ =~/"--redirect=/
806
+ base_pth=select_arr.join(';').
807
+ gsub(/^.*--redirect=['"]?(.+?)(?:['"]?;.+)?$/,'\1')
808
+ { bool: true, set: :on, inst: base_pth }
809
+ elsif select_arr.inspect \
810
+ =~/"--redirect/
811
+ { bool: true, set: :on, inst: @base_path }
812
+ else
813
+ { bool: false, set: :na, inst: nil }
814
+ end
815
+ act[:switch]=if select_arr.inspect \
816
+ =~/"--switch-off=/
817
+ off_list=select_arr.join(';').
818
+ gsub(/^.*--switch-off=['"]?(.+?)(?:['"];.+)?$/,'\1')
819
+ off_list=off_list.scan(/[^,;\s]+/)
820
+ { bool: false, set: :off, off: off_list}
821
+ else { bool: true, set: :na, off: [] }
822
+ end
823
+ act[:default_language]=if select_arr.inspect \
824
+ =~/"--(?:default-)?language[-=](\S{2})"/
825
+ { set: :on, code: $1 }
826
+ elsif lng_base
827
+ { set: :on, code: lng_base }
828
+ else { set: :na, code: 'en' }
829
+ end
830
+ act[:i18n]=if select_arr.inspect \
831
+ =~/"(?:--monolingual|--i18n-mono(?:lingual)?)"/ #if monolingual possible outputs output_by :filename & :filetype only, without language code in default language name; give warning of conflict settings if monolingual & :language selected
832
+ @lingual=:mono
833
+ { set: :mono }
834
+ elsif select_arr.inspect \
835
+ =~/"(?:--multilingual|--i18n-multi(?:lingual)?)"/
836
+ @lingual=:multi
837
+ { set: :multi }
838
+ else { set: :na }
839
+ end
840
+ act[:output_by]=if select_arr.inspect \
841
+ =~/"--(?:output-)?by-language"/
842
+ @dir_structure_by=:language
843
+ { set: :language }
844
+ elsif select_arr.inspect \
845
+ =~/"--(?:output-)?by-filename"/
846
+ @dir_structure_by=:filename
847
+ { set: :filename }
848
+ elsif select_arr.inspect \
849
+ =~/"--(?:output-)?by-filetype"/
850
+ @dir_structure_by=:filetype
851
+ { set: :filetype }
852
+ else { set: :na }
853
+ end
854
+ act[:ocn]=if select_arr.inspect \
855
+ =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/
856
+ { bool: true, set: :on }
857
+ elsif select_arr.inspect \
858
+ =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/ \
859
+ || act[:switch][:off].inspect =~/"ocn"|"--numbering"/
860
+ { bool: false, set: :off }
861
+ else { bool: true, set: :na }
862
+ end
863
+ act[:toc]=if select_arr.inspect \
864
+ =~/"--inc-toc"/
865
+ { bool: true, set: :on }
866
+ elsif select_arr.inspect \
867
+ =~/"--(?:exc|no)-toc"/ \
868
+ || act[:switch][:off].inspect =~/"toc"/
869
+ { bool: false, set: :off }
870
+ else { bool: true, set: :na }
871
+ end
872
+ act[:minitoc]=if select_arr.inspect \
873
+ =~/"--inc-minitoc"/
874
+ { bool: true, set: :on }
875
+ elsif select_arr.inspect \
876
+ =~/"--(?:exc|no)-minitoc"/ \
877
+ || act[:switch][:off].inspect =~/"minitoc"/
878
+ { bool: false, set: :off }
879
+ else { bool: true, set: :na }
880
+ end
881
+ act[:links_to_manifest]=if select_arr.inspect \
882
+ =~/"--inc-links-to-manifest"|"--inc-manifest-links"/
883
+ { bool: true, set: :on }
884
+ elsif select_arr.inspect \
885
+ =~/"--(?:exc|no)-manifest"/ \
886
+ || act[:switch][:off].inspect =~/"manifest"/ #place lower
887
+ { bool: false, set: :off }
888
+ elsif select_arr.inspect \
889
+ =~/"--(?:exc|no)-links-to-manifest"|"--(?:exc|no)-manifest-links"/ \
890
+ || act[:switch][:off].inspect \
891
+ =~/"links_to_manifest"|"manifest_links"|"--(?:exc|no)-manifest"/ \
892
+ || select_arr.inspect \
893
+ =~/"--(?:redirect|dump)/
894
+ { bool: false, set: :off }
895
+ else { bool: true, set: :na }
896
+ end
897
+ act[:manifest_minitoc]=if select_arr.inspect \
898
+ =~/"--inc-manifest-minitoc"|"--inc-minitoc"/
899
+ { bool: true, set: :on }
900
+ elsif select_arr.inspect \
901
+ =~/"--(?:exc|no)-manifest-minitoc"|"--(?:exc|no)-minitoc"/ \
902
+ || act[:switch][:off].inspect =~/"manifest_minitoc"|"minitoc"/
903
+ { bool: false, set: :off }
904
+ else { bool: true, set: :na }
905
+ end
906
+ act[:metadata]=if select_arr.inspect \
907
+ =~/"--inc-metadata"/
908
+ { bool: true, set: :on }
909
+ elsif select_arr.inspect \
910
+ =~/"--(?:exc|no)-metadata"/ \
911
+ || act[:switch][:off].inspect =~/"metadata"/
912
+ { bool: false, set: :off }
913
+ else { bool: true, set: :na }
914
+ end
915
+ act[:html_minitoc]=if select_arr.inspect \
916
+ =~/"--inc-html-minitoc"|"--inc-minitoc"/
917
+ { bool: true, set: :on }
918
+ elsif select_arr.inspect \
919
+ =~/"--(?:exc|no)-html-minitoc"|"--(?:exc|no)-minitoc"/ \
920
+ || act[:switch][:off].inspect =~/"html_minitoc"|"minitoc"/
921
+ { bool: false, set: :off }
922
+ else { bool: true, set: :na }
923
+ end
924
+ act[:html_navigation]=if select_arr.inspect \
925
+ =~/"--inc-html-navigation"|"--inc-navigation"/
926
+ { bool: true, set: :on }
927
+ elsif select_arr.inspect \
928
+ =~/"--(?:exc|no)-html-navigation"|"--(?:exc|no)-navigation"/ \
929
+ || act[:switch][:off].inspect =~/"html_navigation"|"nav"/
930
+ { bool: false, set: :off }
931
+ else { bool: true, set: :na }
932
+ end
933
+ act[:html_navigation_bar]=if select_arr.inspect \
934
+ =~/"--inc-html-navigation-bar"|"--inc-navigation-bar"/
935
+ { bool: true, set: :on }
936
+ elsif select_arr.inspect \
937
+ =~/"--(?:exc|no)-html-navigation-bar"|"--(?:exc|no)-navigation-bar"/ \
938
+ || act[:switch][:off].inspect =~/"html_navigation_bar"|"navbar"/
939
+ { bool: false, set: :off }
940
+ else { bool: false, set: :na }
941
+ end
942
+ act[:segsubtoc]=if select_arr.inspect \
943
+ =~/"--inc-segsubtoc"/
944
+ { bool: true, set: :on }
945
+ elsif select_arr.inspect \
946
+ =~/"--(?:exc|no)-segsubtoc"/ \
947
+ || act[:switch][:off].inspect =~/"segsubtoc"/
948
+ { bool: false, set: :off }
949
+ else { bool: true, set: :na }
950
+ end
951
+ act[:search_form]=if select_arr.inspect \
952
+ =~/"--inc-search-form"/
953
+ { bool: true, set: :on }
954
+ elsif select_arr.inspect \
955
+ =~/"--(?:exc|no)-search-form"/ \
956
+ || act[:switch][:off].inspect =~/"search_form"|"search"/
957
+ { bool: false, set: :off }
958
+ else { bool: true, set: :na }
959
+ end
960
+ act[:html_search_form]=if select_arr.inspect \
961
+ =~/"--inc-html-search-form"|"--inc-search-form"/
962
+ { bool: true, set: :on }
963
+ elsif select_arr.inspect \
964
+ =~/"--(?:exc|no)-html-search-form"|"--(?:exc|no)-search-form"/ \
965
+ || act[:switch][:off].inspect \
966
+ =~/"html_search_form"|"search_form"|"search"/
967
+ { bool: false, set: :off }
968
+ else { bool: true, set: :na }
969
+ end
970
+ act[:html_right_pane]=if select_arr.inspect \
971
+ =~/"--inc-html-right-pane"|"--inc-right-pane"|"--inc-html-right-column"|"--inc-right-column"/
972
+ { bool: true, set: :on }
973
+ elsif select_arr.inspect \
974
+ =~/"--(?:exc|no)-html-right-pane"|"--(?:exc|no)-right-pane"|"--(?:exc|no)-html-right-column"|"--(?:exc|no)-right-column"/ \
975
+ || act[:switch][:off].inspect =~/"html_right_pane"|"html_right_column"|"promo"/
976
+ { bool: false, set: :off }
977
+ else { bool: true, set: :na }
978
+ end
979
+ act[:html_top_band]=if select_arr.inspect \
980
+ =~/"--inc-html-top-band"|"--inc-top-band"/
981
+ { bool: true, set: :on }
982
+ elsif select_arr.inspect \
983
+ =~/"--(?:exc|no)-html-top-band"|"--(?:exc|no)-top-band"/ \
984
+ || act[:switch][:off].inspect =~/"html-top-band"|"top-band"/
985
+ { bool: false, set: :off }
986
+ else { bool: true, set: :na }
987
+ end
988
+ act[:html]=if select_arr.inspect \
989
+ =~/"--html-strict"/ \
990
+ or ((select_arr.inspect \
991
+ =~/"--html"/) \
992
+ && select_arr.inspect \
993
+ =~/"--strict"/)
994
+ act[:html_strict]={ bool: true, set: :on }
995
+ act[:html_scroll]={ bool: true, set: :on }
996
+ act[:html_seg]={ bool: true, set: :on }
997
+ { bool: true, set: :on }
998
+ elsif (select_arr.inspect \
999
+ =~/"--html"/)
1000
+ act[:html_strict]={ bool: false, set: :off }
1001
+ act[:html_scroll]={ bool: true, set: :on }
1002
+ act[:html_seg]={ bool: true, set: :on }
1003
+ { bool: true, set: :on }
1004
+ else
1005
+ act[:html_strict]=(select_arr.inspect \
1006
+ =~/"--strict"/) \
1007
+ ? { bool: true, set: :on }
1008
+ : { bool: false, set: :na }
1009
+ act[:html_scroll]=(select_arr.inspect \
1010
+ =~/"--html-scroll"/) \
1011
+ ? { bool: true, set: :on }
1012
+ : { bool: false, set: :na }
1013
+ act[:html_seg]=(select_arr.inspect \
1014
+ =~/"--html-seg"/) \
1015
+ ? { bool: true, set: :on }
1016
+ : { bool: false, set: :na }
1017
+ { bool: false, set: :na }
1018
+ end
1019
+ act[:concordance]=(select_arr.inspect \
1020
+ =~/"--concordance"/) \
1021
+ ? { bool: true, set: :on }
1022
+ : { bool: false, set: :na }
1023
+ act[:images]=(select_arr.inspect \
1024
+ =~/"--images"/) \
1025
+ ? { bool: true, set: :on }
1026
+ : { bool: false, set: :na }
1027
+ if select_arr.inspect \
1028
+ =~/"--pdf"/
1029
+ if select_arr.inspect \
1030
+ =~/"--portrait"/
1031
+ act[:pdf]= { bool: false, set: :na }
1032
+ act[:pdf_l]={ bool: false, set: :na }
1033
+ act[:pdf_p]={ bool: true, set: :on }
1034
+ elsif select_arr.inspect \
1035
+ =~/"--landscape"/
1036
+ act[:pdf]= { bool: false, set: :na }
1037
+ act[:pdf_l]={ bool: true, set: :on }
1038
+ act[:pdf_p]={ bool: false, set: :na }
1039
+ else
1040
+ act[:pdf]= { bool: true, set: :on }
1041
+ act[:pdf_l]={ bool: true, set: :on }
1042
+ act[:pdf_p]={ bool: true, set: :on }
1043
+ end
1044
+ else
1045
+ act[:pdf]= { bool: false, set: :na }
1046
+ act[:pdf_p]= { bool: false, set: :na }
1047
+ act[:pdf_l]= { bool: false, set: :na }
1048
+ act[:pdf_a4]= { bool: false, set: :na }
1049
+ act[:pdf_a5]= { bool: false, set: :na }
1050
+ act[:pdf_b5]= { bool: false, set: :na }
1051
+ act[:pdf_letter]={ bool: false, set: :na }
1052
+ act[:pdf_legal]= { bool: false, set: :na }
1053
+ end
1054
+ if act[:pdf][:set]==:on \
1055
+ or act[:pdf_p][:set]==:on \
1056
+ or act[:pdf_l][:set]==:on
1057
+ act[:pdf_a4]=if select_arr.inspect \
1058
+ =~/"--a4"|--papersize-a4"/ \
1059
+ or select_arr.inspect \
1060
+ =~/"--papersize=\S*a4\b\S*"/ #--papersize=a4,a5
1061
+ { bool: true, set: :on }
1062
+ else
1063
+ { bool: false, set: :na }
1064
+ end
1065
+ act[:pdf_a5]=if select_arr.inspect \
1066
+ =~/"--a5"|"--papersize-a5"/ \
1067
+ or select_arr.inspect \
1068
+ =~/"--papersize=\S*a5\b\S*"/ #--papersize=a4,a5
1069
+ { bool: true, set: :on }
1070
+ else
1071
+ { bool: false, set: :na }
1072
+ end
1073
+ act[:pdf_b5]=if select_arr.inspect \
1074
+ =~/"--b5"|"--papersize-b5"/ \
1075
+ or select_arr.inspect \
1076
+ =~/"--papersize=\S*b5\b\S*"/
1077
+ { bool: true, set: :on }
1078
+ else
1079
+ { bool: false, set: :na }
1080
+ end
1081
+ act[:pdf_letter]=if select_arr.inspect \
1082
+ =~/"--letter"|"--papersize-letter"/ \
1083
+ or select_arr.inspect \
1084
+ =~/"--papersize=\S*letter\b\S*"/
1085
+ { bool: true, set: :on }
1086
+ else
1087
+ { bool: false, set: :na }
1088
+ end
1089
+ act[:pdf_legal]=if select_arr.inspect \
1090
+ =~/"--legal"|"--papersize-legal"/ \
1091
+ or select_arr.inspect \
1092
+ =~/"--papersize=\S*legal\b\S*"/
1093
+ { bool: true, set: :on }
1094
+ else
1095
+ { bool: false, set: :na }
1096
+ end
1097
+ end
1098
+ act[:epub]=(select_arr.inspect \
1099
+ =~/"--epub"/) \
1100
+ ? { bool: true, set: :on }
1101
+ : { bool: false, set: :na }
1102
+ act[:odt]=if select_arr.inspect \
1103
+ =~/"--odt"|"--odf"|"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/
1104
+ act[:odt_ocn]=if (select_arr.inspect \
1105
+ =~/"--odt-(?:ocn|numbering)"|"--odf-(?:ocn|numbering)"/ \
1106
+ or select_arr.inspect \
1107
+ =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/)
1108
+ { bool: true, set: :on }
1109
+ elsif select_arr.inspect \
1110
+ =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/
1111
+ { bool: false, set: :off }
1112
+ else
1113
+ { bool: false, set: :na }
1114
+ end
1115
+ { bool: true, set: :on }
1116
+ else
1117
+ { bool: false, set: :na }
1118
+ end
1119
+ act[:xml_sax]=(select_arr.inspect \
1120
+ =~/"--xml-sax"|"--sax"/) \
1121
+ ? { bool: true, set: :on }
1122
+ : { bool: false, set: :na }
1123
+ act[:xml_dom]=(select_arr.inspect \
1124
+ =~/"--xml-dom"|"--dom"/) \
1125
+ ? { bool: true, set: :on }
1126
+ : { bool: false, set: :na }
1127
+ act[:xml_docbook_book]=(select_arr.inspect \
1128
+ =~/"--docbook"|"--docbook-book"|"--xml-docbook"|"--xml-docbook_book"/) \
1129
+ ? { bool: true, set: :on }
1130
+ : { bool: false, set: :na }
1131
+ act[:xml_fictionbook]=(select_arr.inspect \
1132
+ =~/"--fictionbook"|"--xml-fictionbook"/) \
1133
+ ? { bool: true, set: :on }
1134
+ : { bool: false, set: :na }
1135
+ act[:xml_scaffold_structure_sisu]=select_arr.inspect \
1136
+ =~/"--xml-scaffold"|"--xml-scaffold-sisu"/ \
1137
+ ? { bool: true, set: :on }
1138
+ : { bool: false, set: :na }
1139
+ act[:xml_scaffold_structure_collapse]=select_arr.inspect \
1140
+ =~/"--xml-scaffold-collapse"/ \
1141
+ ? { bool: true, set: :on }
1142
+ : { bool: false, set: :na }
1143
+ act[:xhtml]=(select_arr.inspect \
1144
+ =~/"--xhtml"/) \
1145
+ ? { bool: true, set: :on }
1146
+ : { bool: false, set: :na }
1147
+ act[:txt]=if select_arr.inspect \
1148
+ =~/"--txt"|"--text"|"--plaintext"|"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/
1149
+ act[:txt_ocn]=if (select_arr.inspect \
1150
+ =~/"--txt-(?:ocn|numbering)"|"--text-(?:ocn|numbering)"|"--plaintext-(?:ocn|numbering)"/ \
1151
+ or select_arr.inspect \
1152
+ =~/"--ocn"|"--inc-ocn"|"--numbering"|"--inc-numbering"/)
1153
+ { bool: true, set: :on }
1154
+ elsif select_arr.inspect \
1155
+ =~/"--no-ocn"|"--exc-ocn"|"--no-numbering"|"--exc-numbering"/
1156
+ { bool: false, set: :off }
1157
+ else
1158
+ { bool: false, set: :na }
1159
+ end
1160
+ { bool: true, set: :on }
1161
+ else
1162
+ { bool: false, set: :na }
1163
+ end
1164
+ act[:txt_textile]=(select_arr.inspect \
1165
+ =~/"--textile"/) \
1166
+ ? { bool: true, set: :on }
1167
+ : { bool: false, set: :na }
1168
+ act[:txt_asciidoc]=(select_arr.inspect \
1169
+ =~/"--asciidoc"/) \
1170
+ ? { bool: true, set: :on }
1171
+ : { bool: false, set: :na }
1172
+ act[:txt_markdown]=(select_arr.inspect \
1173
+ =~/"--markdown"/) \
1174
+ ? { bool: true, set: :on }
1175
+ : { bool: false, set: :na }
1176
+ act[:txt_rst]=(select_arr.inspect \
1177
+ =~/"--rst"|"--rest"|"--restructuredtext"/) \
1178
+ ? { bool: true, set: :on }
1179
+ : { bool: false, set: :na }
1180
+ act[:txt_orgmode]=(select_arr.inspect \
1181
+ =~/"--org"|"--orgmode"/) \
1182
+ ? { bool: true, set: :on }
1183
+ : { bool: false, set: :na }
1184
+ act[:manpage]=(select_arr.inspect \
1185
+ =~/"--manpage"|"--man"/) \
1186
+ ? { bool: true, set: :on }
1187
+ : { bool: false, set: :na }
1188
+ act[:texinfo]=(select_arr.inspect \
1189
+ =~/"--texinfo"/) \
1190
+ ? { bool: true, set: :on }
1191
+ : { bool: false, set: :na }
1192
+ act[:psql]=if select_arr.inspect \
1193
+ =~/"--pg-\S+"/ \
1194
+ or ((select_arr.inspect =~/"--pg"/) \
1195
+ && (select_arr.inspect \
1196
+ =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/))
1197
+ act[:psql_createdb]=if select_arr.inspect \
1198
+ =~/"--pg-createdb"|"--createdb"/
1199
+ { bool: true, set: :on }
1200
+ else
1201
+ { bool: false, set: :na }
1202
+ end
1203
+ if select_arr.inspect \
1204
+ =~/"--pg-recreate(?:all)?"|"--recreate(?:all)?"/
1205
+ act[:psql_drop]={ bool: true, set: :on }
1206
+ act[:psql_create]={ bool: true, set: :on }
1207
+ else
1208
+ act[:psql_drop]=if select_arr.inspect \
1209
+ =~/"--pg-dropall"|"--dropall"/
1210
+ { bool: true, set: :on }
1211
+ else
1212
+ { bool: false, set: :na }
1213
+ end
1214
+ act[:psql_create]=if select_arr.inspect \
1215
+ =~/"--pg-create(?:all)?"|"--create(?:all)?"/
1216
+ { bool: true, set: :on }
1217
+ else
1218
+ { bool: false, set: :na }
1219
+ end
1220
+ end
1221
+ act[:psql_import]=if select_arr.inspect \
1222
+ =~/"--pg-import"|"--import"/
1223
+ { bool: true, set: :on }
1224
+ else
1225
+ { bool: false, set: :na }
1226
+ end
1227
+ act[:psql_update]=if select_arr.inspect \
1228
+ =~/"--pg-update"|"--update"/
1229
+ act[:psql_remove]={ bool: true, set: :on }
1230
+ { bool: true, set: :on }
1231
+ else
1232
+ act[:psql_remove]=if select_arr.inspect \
1233
+ =~/"--pg-remove"|"--remove"/
1234
+ { bool: true, set: :on }
1235
+ else
1236
+ { bool: false, set: :na }
1237
+ end
1238
+ { bool: false, set: :na }
1239
+ end
1240
+ { bool: true, set: :on }
1241
+ else
1242
+ act[:psql_createdb]=
1243
+ { bool: false, set: :na }
1244
+ act[:psql_drop]=
1245
+ { bool: false, set: :na }
1246
+ act[:psql_create]=
1247
+ { bool: false, set: :na }
1248
+ act[:psql_import]=
1249
+ { bool: false, set: :na }
1250
+ act[:psql_update]=
1251
+ { bool: false, set: :na }
1252
+ act[:psql_remove]=
1253
+ { bool: false, set: :na }
1254
+ { bool: false, set: :na }
1255
+ end
1256
+ act[:sqlite]=if select_arr.inspect \
1257
+ =~/"--sqlite-\S+"/ \
1258
+ or (select_arr.inspect \
1259
+ =~/"--sqlite"/ \
1260
+ && select_arr.inspect \
1261
+ =~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/)
1262
+ act[:sqlite_createdb]=if select_arr.inspect \
1263
+ =~/"--sqlite-createdb"|"--createdb"/
1264
+ { bool: true, set: :on }
1265
+ else
1266
+ { bool: false, set: :na }
1267
+ end
1268
+ if select_arr.inspect \
1269
+ =~/"--sqlite-recreate(?:all)?"|"--recreate(?:all)?"/
1270
+ act[:sqlite_drop]={ bool: true, set: :on }
1271
+ act[:sqlite_create]={ bool: true, set: :on }
1272
+ else
1273
+ act[:sqlite_create]=if select_arr.inspect \
1274
+ =~/"--sqlite-create(?:all)?"|"--create(?:all)?"/
1275
+ { bool: true, set: :on }
1276
+ else
1277
+ { bool: false, set: :na }
1278
+ end
1279
+ act[:sqlite_drop]=if select_arr.inspect \
1280
+ =~/"--sqlite-dropall"|"--dropall"/
1281
+ { bool: true, set: :on }
1282
+ else
1283
+ { bool: false, set: :na }
1284
+ end
1285
+ end
1286
+ act[:sqlite_import]=if select_arr.inspect \
1287
+ =~/"--sqlite-import"|"--import"/
1288
+ { bool: true, set: :on }
1289
+ else
1290
+ { bool: false, set: :na }
1291
+ end
1292
+ act[:sqlite_update]=if select_arr.inspect \
1293
+ =~/"--sqlite-update"|"--update"/
1294
+ act[:sqlite_remove]={ bool: true, set: :on }
1295
+ { bool: true, set: :on }
1296
+ else
1297
+ act[:sqlite_remove]=if select_arr.inspect \
1298
+ =~/"--sqlite-remove"|"--sqlite-remove"/
1299
+ { bool: true, set: :on }
1300
+ else
1301
+ { bool: false, set: :na }
1302
+ end
1303
+ { bool: false, set: :na }
1304
+ end
1305
+ { bool: true, set: :on }
1306
+ else
1307
+ act[:sqlite_createdb]=
1308
+ { bool: false, set: :na }
1309
+ act[:sqlite_drop]=
1310
+ { bool: false, set: :na }
1311
+ act[:sqlite_create]=
1312
+ { bool: false, set: :na }
1313
+ act[:sqlite_import]=
1314
+ { bool: false, set: :na }
1315
+ act[:sqlite_update]=
1316
+ { bool: false, set: :na }
1317
+ act[:sqlite_remove]=
1318
+ { bool: false, set: :na }
1319
+ { bool: false, set: :na }
1320
+ end
1321
+ act[:sqlite_discrete]=select_arr.inspect \
1322
+ =~/"--sql"|"--sqlite"/ \
1323
+ && (select_arr.inspect \
1324
+ !~/"--createdb"|"--create(?:all)?"|"--dropall"|"--recreate(?:all)?"|"--import"|"--update"|"--remove"/) \
1325
+ ? { bool: true, set: :on }
1326
+ : { bool: false, set: :na }
1327
+ act[:harvest]=(select_arr.inspect \
1328
+ =~/"--harvest"/) \
1329
+ ? { bool: true, set: :on }
1330
+ : { bool: false, set: :na }
1331
+ act[:po4a_sstm]=(select_arr.inspect \
1332
+ =~/"--po4a-ss[tm]"/) \
1333
+ ? { bool: true, set: :on }
1334
+ : { bool: false, set: :na }
1335
+ act[:po4a_sst_ao_sst]=(select_arr.inspect \
1336
+ =~/"--po4a-ao(?:-ss[tm])?"/) \
1337
+ ? { bool: true, set: :on }
1338
+ : { bool: false, set: :na }
1339
+ act[:po4a_shelf]=(select_arr.inspect \
1340
+ =~/"--po4a-shelf"|"--pot?-shelf"/) \
1341
+ ? { bool: true, set: :on }
1342
+ : { bool: false, set: :na }
1343
+ if act[:po4a_shelf][:set]==:on \
1344
+ or act[:po4a_sst_ao_sst][:set]==:on \
1345
+ or act[:po4a_sstm][:set]==:on
1346
+ act[:po4a_lang]=if select_arr.inspect \
1347
+ =~/"--(?:trans|init)-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/
1348
+ lng_src,lng_trn=$1,$2.split(',')
1349
+ { bool: true, set: :on, src: lng_src, trn: lng_trn }
1350
+ elsif select_arr.inspect \
1351
+ =~/"--trans"/
1352
+ { bool: true, set: :on }
1353
+ { bool: true, set: :on, src: 'en', trn: [] }
1354
+ else
1355
+ { bool: false, set: :na }
1356
+ end
1357
+ act[:po4a_lang_trans]=if select_arr.inspect \
1358
+ =~/"--trans-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/
1359
+ lng_src,lng_trn=$1,$2.split(',')
1360
+ { bool: true, set: :on, src: lng_src, trn: lng_trn }
1361
+ elsif select_arr.inspect \
1362
+ =~/"--trans"/
1363
+ { bool: true, set: :on }
1364
+ { bool: true, set: :on, src: 'en', trn: [] }
1365
+ else
1366
+ { bool: false, set: :na }
1367
+ end
1368
+ act[:po4a_lang_init]=if select_arr.inspect \
1369
+ =~/"--init-([a-z]{2}):((?:(?:[a-z]{2}\b),?)+)/
1370
+ lng_src,lng_trn=$1,$2.split(',')
1371
+ { bool: true, set: :on, src: lng_src, trn: lng_trn }
1372
+ else
1373
+ { bool: false, set: :na }
1374
+ end
1375
+ else
1376
+ act[:po4a_lang_trans]= \
1377
+ { bool: false, set: :na }
1378
+ act[:po4a_lang_init]= \
1379
+ { bool: false, set: :na }
1380
+ end
1381
+ act[:git]=(select_arr.inspect \
1382
+ =~/"--git"/) \
1383
+ ? { bool: true, set: :on }
1384
+ : { bool: false, set: :na }
1385
+ act[:hash_digests]=(select_arr.inspect \
1386
+ =~/"--digests?"|"--hash-digests"/) \
1387
+ ? { bool: true, set: :on }
1388
+ : { bool: false, set: :na }
1389
+ act[:pdf_font_size]=if select_arr.inspect \
1390
+ =~/"--(?:pdf-)?font-?size[=-](\d{1,2})(?:pt)?"/
1391
+ $1
1392
+ else :na
1393
+ end
1394
+ act[:pdf_hyperlink_colors]=if select_arr.inspect \
1395
+ =~/"--pdf-hyperlinks-(?:mono(?:chrome)?|no-color)"/
1396
+ :mono
1397
+ elsif select_arr.inspect \
1398
+ =~/"--pdf-hyperlinks-color"/
1399
+ :color
1400
+ else :na
1401
+ end
1402
+ act[:hash_digest_algo]=if select_arr.inspect \
1403
+ =~/"--hash-(?:sha)?512"/
1404
+ :sha512
1405
+ elsif select_arr.inspect \
1406
+ =~/"--hash-(?:sha)?256"/
1407
+ :sha256
1408
+ elsif select_arr.inspect \
1409
+ =~/"--hash-md5"/
1410
+ :md5
1411
+ else :na
1412
+ end
1413
+ act[:sample_search_form]=if select_arr.inspect \
1414
+ =~/"--sample-search-form"/
1415
+ if select_arr.inspect \
1416
+ =~/"--db[-=]pg"/
1417
+ { bool: true, set: :on, db: :pg }
1418
+ elsif select_arr.inspect \
1419
+ =~/"--db[-=]sqlite"/
1420
+ { bool: true, set: :on, db: :sqlite }
1421
+ else
1422
+ { bool: true, set: :on, db: :na }
1423
+ end
1424
+ else
1425
+ { bool: false, set: :na, db: :na }
1426
+ end
1427
+ act[:webrick]=select_arr.inspect \
1428
+ =~/"--webrick"/ \
1429
+ ? { bool: true, set: :on }
1430
+ : { bool: false, set: :na }
1431
+ act[:share_source]=select_arr.inspect \
1432
+ =~/"--source"/ \
1433
+ ? { bool: true, set: :on }
1434
+ : { bool: false, set: :na }
1435
+ act[:sisupod]=select_arr.inspect \
1436
+ =~/"--sisupod"/ \
1437
+ ? { bool: true, set: :on }
1438
+ : { bool: false, set: :na }
1439
+ act[:scp]=select_arr.inspect \
1440
+ =~/"--scp"/ \
1441
+ ? { bool: true, set: :on }
1442
+ : { bool: false, set: :na }
1443
+ act[:rsync]=select_arr.inspect \
1444
+ =~/"--rsync"|"--remote"/ \
1445
+ ? { bool: true, set: :on }
1446
+ : { bool: false, set: :na }
1447
+ act[:zap]=select_arr.inspect \
1448
+ =~/"--zap"|"--delete"/ \
1449
+ ? { bool: true, set: :on }
1450
+ : { bool: false, set: :na }
1451
+ act[:urls_all]=select_arr.inspect \
1452
+ =~/"--urls-all"/ \
1453
+ ? { bool: true, set: :on }
1454
+ : { bool: false, set: :na }
1455
+ act[:urls_selected]=if select_arr.inspect \
1456
+ =~/"--urls"/
1457
+ { bool: true, set: :on }
1458
+ elsif select_arr.inspect \
1459
+ =~/"--harvest/
1460
+ { bool: false, set: :off }
1461
+ elsif select_arr.inspect \
1462
+ =~/"--verbose"|"--maintenance"/
1463
+ { bool: true, set: :on }
1464
+ else
1465
+ { bool: false, set: :na }
1466
+ end
1467
+ act[:sitemap]=select_arr.inspect \
1468
+ =~/"--sitemap"/ \
1469
+ ? { bool: true, set: :on }
1470
+ : { bool: false, set: :na }
1471
+ act[:qrcode]=select_arr.inspect \
1472
+ =~/"--qrcode"/ \
1473
+ ? { bool: true, set: :on }
1474
+ : { bool: false, set: :na }
1475
+ act[:help]=select_arr.inspect \
1476
+ =~/"--help/ \
1477
+ ? { bool: true, set: :on }
1478
+ : { bool: false, set: :na }
1479
+ act[:ao]=if select_arr.inspect \
1480
+ =~/"--ao"|"--dal"/
1481
+ { bool: true, set: :on }
1482
+ elsif (act[:txt][:set]==:on \
1483
+ || act[:txt_textile][:set]==:on \
1484
+ || act[:txt_asciidoc][:set]==:on \
1485
+ || act[:txt_markdown][:set]==:on \
1486
+ || act[:txt_rst][:set]==:on \
1487
+ || act[:txt_orgmode][:set]==:on \
1488
+ || act[:xhtml][:set]==:on \
1489
+ || act[:epub][:set]==:on \
1490
+ || act[:html][:set]==:on \
1491
+ || act[:html_seg][:set]==:on \
1492
+ || act[:html_scroll][:set]==:on \
1493
+ || act[:texinfo][:set]==:on \
1494
+ || act[:manpage][:set]==:on \
1495
+ || act[:hash_digests][:set]==:on \
1496
+ || act[:odt][:set]==:on \
1497
+ || act[:pdf][:set]==:on \
1498
+ || act[:pdf_p][:set]==:on \
1499
+ || act[:pdf_l][:set]==:on \
1500
+ || act[:qrcode][:set]==:on \
1501
+ || act[:sisupod][:set]==:on \
1502
+ || act[:share_source][:set]==:on \
1503
+ || act[:po4a_sstm][:set]==:on \
1504
+ || act[:concordance][:set]==:on \
1505
+ || act[:sqlite_discrete][:set]==:on \
1506
+ || act[:sqlite_import][:set]==:on \
1507
+ || act[:sqlite_update][:set]==:on \
1508
+ || act[:sqlite_remove][:set]==:on \
1509
+ || act[:psql_import][:set]==:on \
1510
+ || act[:psql_update][:set]==:on \
1511
+ || act[:psql_remove][:set]==:on \
1512
+ || act[:xml_dom][:set]==:on \
1513
+ || act[:xml_sax][:set]==:on \
1514
+ || act[:xml_docbook_book][:set]==:on \
1515
+ || act[:xml_fictionbook][:set]==:on \
1516
+ || act[:xml_scaffold_structure_sisu][:set]==:on \
1517
+ || act[:xml_scaffold_structure_collapse][:set]==:on )
1518
+ { bool: true, set: :on }
1519
+ else
1520
+ { bool: false, set: :na }
1521
+ end
1522
+ act[:manifest]=if select_arr.inspect \
1523
+ =~/"--inc-manifest"/
1524
+ { bool: true, set: :on }
1525
+ elsif select_arr.inspect \
1526
+ =~/"--(?:exc|no)-manifest"/ \
1527
+ || act[:switch][:off].inspect =~/"manifest"/
1528
+ { bool: false, set: :off }
1529
+ elsif select_arr.inspect \
1530
+ =~/"--manifest"/
1531
+ { bool: true, set: :on }
1532
+ elsif (act[:txt][:set]==:on \
1533
+ || act[:txt_textile][:set]==:on \
1534
+ || act[:txt_asciidoc][:set]==:on \
1535
+ || act[:txt_markdown][:set]==:on \
1536
+ || act[:txt_rst][:set]==:on \
1537
+ || act[:txt_orgmode][:set]==:on \
1538
+ || act[:xhtml][:set]==:on \
1539
+ || act[:epub][:set]==:on \
1540
+ || act[:html][:set]==:on \
1541
+ || act[:html_seg][:set]==:on \
1542
+ || act[:html_scroll][:set]==:on \
1543
+ || act[:texinfo][:set]==:on \
1544
+ || act[:manpage][:set]==:on \
1545
+ || act[:hash_digests][:set]==:on \
1546
+ || act[:odt][:set]==:on \
1547
+ || act[:pdf][:set]==:on \
1548
+ || act[:pdf_p][:set]==:on \
1549
+ || act[:pdf_l][:set]==:on \
1550
+ || act[:qrcode][:set]==:on \
1551
+ || act[:sisupod][:set]==:on \
1552
+ || act[:share_source][:set]==:on \
1553
+ || act[:po4a_sstm][:set]==:on \
1554
+ || act[:concordance][:set]==:on \
1555
+ || act[:xml_dom][:set]==:on \
1556
+ || act[:xml_sax][:set]==:on \
1557
+ || act[:xml_docbook_book][:set]==:on \
1558
+ || act[:xml_fictionbook][:set]==:on \
1559
+ || act[:xml_scaffold_structure_sisu][:set]==:on \
1560
+ || act[:xml_scaffold_structure_collapse][:set]==:on )
1561
+ { bool: true, set: :on }
1562
+ else { bool: true, set: :na }
1563
+ end
1564
+ act[:console_messages] = ''
1565
+ act[:verbose]=if select_arr.inspect \
1566
+ =~/"--verbose"/
1567
+ act[:console_messages] << ' --verbose '
1568
+ { bool: true, set: :on }
1569
+ else
1570
+ { bool: false, set: :na }
1571
+ end
1572
+ act[:verbose_plus]=if select_arr.inspect \
1573
+ =~/"--very-verbose"|"--verbose-very"/
1574
+ act[:console_messages] << ' --very-verbose '
1575
+ { bool: true, set: :on }
1576
+ else
1577
+ { bool: false, set: :na }
1578
+ end
1579
+ act[:version_info]=if select_arr.inspect \
1580
+ =~/"--version"|"--verbose"|"--maintenance"/
1581
+ act[:console_messages] << ' --maintenance '
1582
+ { bool: true, set: :on }
1583
+ else
1584
+ { bool: false, set: :na }
1585
+ end
1586
+ act[:quiet]=if (select_arr.inspect =~/"--quiet"/)
1587
+ act[:console_messages] << ' --quiet '
1588
+ { bool: true, set: :on }
1589
+ else
1590
+ { bool: false, set: :na }
1591
+ end
1592
+ act[:color_state]=if select_arr.inspect =~/"--color-on"|"--color"/
1593
+ act[:console_messages] << ' --color-on '
1594
+ { bool: true, set: :on }
1595
+ elsif (select_arr.inspect =~/"--color-off"/)
1596
+ act[:console_messages] << ' --color-off '
1597
+ { bool: false, set: :off }
1598
+ else { bool: true, set: :na } #fix default color
1599
+ end
1600
+ # act[:color_toggle]=if select_arr.inspect =~/"--color-toggle"/
1601
+ # true
1602
+ # else false
1603
+ # end
1604
+ act[:maintenance]=if (select_arr.inspect =~/"--maintenance|--keep-processing-files"/)
1605
+ act[:console_messages] << ' --maintenance '
1606
+ { bool: true, set: :on }
1607
+ else
1608
+ { bool: false, set: :na }
1609
+ end
1610
+ act[:profile]=if (select_arr.inspect =~/"--profile"/)
1611
+ act[:console_messages] << ' --color-off '
1612
+ { bool: true, set: :on }
1613
+ else
1614
+ { bool: false, set: :na }
1615
+ end
1616
+ @act=act
1617
+ end
1618
+ end
1619
+ def opt_ch
1620
+ @opt_ch
1621
+ end
1622
+ def selections
1623
+ def arr
1624
+ @select_arr.sort
1625
+ end
1626
+ def str
1627
+ @select_str ||= arr.join(' ')
1628
+ end
1629
+ self
1630
+ end
1631
+ def act
1632
+ @@act
1633
+ end
1634
+ def files_mod
1635
+ files_mod=files
1636
+ @files_mod=files_mod
1637
+ end
1638
+ def files
1639
+ @files
1640
+ end
1641
+ def f_pth
1642
+ @f_pth
1643
+ end
1644
+ def pth
1645
+ @pth
1646
+ end
1647
+ def sub_location
1648
+ pth.gsub(/#{base_path}/,'')
1649
+ end
1650
+ def lng
1651
+ @lng
1652
+ end
1653
+ def lng_base
1654
+ @lng_base
1655
+ end
1656
+ def fno
1657
+ @fno=(fns.nil? || fns.empty?) \
1658
+ ? '' \
1659
+ : (fns[/(.+?(?:sst|ssm))(?:\.sst)?/,1])
1660
+ end
1661
+ def fng
1662
+ @fng=(fno.nil? || fno.empty?) \
1663
+ ? '' \
1664
+ : (fno.gsub(/(?:~(?:#{Px[:lng_lst_rgx]}))?(\.ss[tm])$/,'\1'))
1665
+ end
1666
+ def fns
1667
+ @fns
1668
+ end
1669
+ def fnl
1670
+ @fns.gsub(/(\S+?)((?:\.ssm)?\.sst)/,"\\1.#{lng}\\2")
1671
+ end
1672
+ def what
1673
+ @what
1674
+ end
1675
+ def fnb
1676
+ (fns.nil? || fns.empty?) \
1677
+ ? '' \
1678
+ : (fns[/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/,1])
1679
+ end
1680
+ def fnc
1681
+ @fnc=(@fns =~/\.(?:ssm\.sst|ssm)$/) \
1682
+ ? fnb + '.ssm.sst'
1683
+ : @fns
1684
+ end
1685
+ def fncb
1686
+ @fncb=(@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/) \
1687
+ ? fnb + '.ssm.sst'
1688
+ : @fns.gsub(/(?:\~\S{2,3})?(\.sst)$/,'\1')
1689
+ end
1690
+ end
1691
+ end
1692
+ __END__
1693
+ note usually named @opt is carried in dp document parameters (usually as @md.opt), @opt is a
1694
+ subset of @md where @md is passed, contents of @opt are available as @md.opt
1695
+ passing @opt as well is duplication check for fns & fnb