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,482 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** A conversion script for canned substitutions, a fairly generic
8
+ simple tool that can be used to store other canned conversions, used here for
9
+ altering SiSU markup
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/sst_identify_markup.rb;hb=HEAD>
57
+
58
+ =end
59
+ module SiSU_Markup
60
+ class MarkupInform
61
+ attr_accessor :version
62
+ def initialize(version,message,declared_markup='',declared_type='')
63
+ @version,@message,@declared_markup,@declared_type=version,message,declared_markup,declared_type
64
+ end
65
+ def version
66
+ @version
67
+ end
68
+ def message
69
+ @message
70
+ end
71
+ def declared_version
72
+ @declared_markup
73
+ end
74
+ def declared_type
75
+ @declared_type
76
+ end
77
+ def history
78
+ MarkupHistory.new(@version).query
79
+ end
80
+ end
81
+ class MarkupIdentify
82
+ def initialize(opt)
83
+ @opt=opt
84
+ @description='This is a script attempts to identify the version of markup used in SiSU (and provides information on changes in markup)'
85
+ end
86
+ def help
87
+ print <<WOK
88
+
89
+ #{@description}
90
+
91
+ WOK
92
+ exit
93
+ end
94
+ def identify
95
+ f=@opt.fns
96
+ if f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])$/ \
97
+ and File.exist?(f)
98
+ file=File.open(f,'r')
99
+ cont=file.readlines
100
+ file.close
101
+ links,oldlinks='',''
102
+ markup=nil
103
+ @declared_type,@declared_markup='[text?]',''
104
+ if cont[0] =~ /^(?:%\s+)?SiSU\s+(text|master|insert)\s+([0-9](?:\.[0-9]+){1,2})/ \
105
+ or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
106
+ @declared_type,@declared_markup=$1,$2
107
+ elsif cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ \
108
+ or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
109
+ @declared_markup=$1
110
+ end
111
+ @flag_2_0,@flag_1_0,@flag_69,@flag_66,@flag_57,@flag_38=false,false,false,false,false,false
112
+ cont.each_with_index do |y,i|
113
+ if y =~/^(?:0\{?~links?|@links?:)\s/ \
114
+ and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/
115
+ links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
116
+ else ' (post 0.20.4 header links)'
117
+ end
118
+ end
119
+ if @flag_2_0 \
120
+ or y =~/^@make:|^@classify|^\s\s?:[a-z_-]+?:\s+\S/
121
+ version=2.0.to_f
122
+ markup=MarkupInform.new(version,'2.0' + oldlinks,@declared_markup,@declared_type)
123
+ @flag_2_0=true
124
+ break
125
+ end
126
+ unless @flag_38
127
+ if (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
128
+ version='0.38'
129
+ markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
130
+ @flag_38=true
131
+ end
132
+ end
133
+ if @flag_38
134
+ if @flag_1_0 \
135
+ or y =~/^=\{.+?\}\s*$/
136
+ version='0.69'
137
+ markup=MarkupInform.new(version,'0.69' + oldlinks,@declared_markup,@declared_type)
138
+ @flag_1_0=true
139
+ break
140
+ end
141
+ if @flag_66 \
142
+ or y =~/[a-z+][:;]\{.+?\}[:;][a-z+]/
143
+ version='0.66'
144
+ markup=MarkupInform.new(version,'0.66' + oldlinks,@declared_markup,@declared_type)
145
+ @flag_66=true
146
+ break
147
+ end
148
+ end
149
+ end
150
+ unless @flag_2_0 \
151
+ or @flag_1_0 \
152
+ or @flag_66
153
+ cont.each_with_index do |y,i|
154
+ if y =~/^(?:0\{?~links?|@links?:)\s/ \
155
+ and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/
156
+ links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
157
+ else ' (post 0.20.4 header links)'
158
+ end
159
+ end
160
+ if @flag_57 \
161
+ or (y =~/^:?A~\?? @title/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
162
+ version='0.57'
163
+ markup=MarkupInform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type)
164
+ @flag_57=true
165
+ break
166
+ end
167
+ if @flag_38 \
168
+ or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
169
+ version='0.38'
170
+ markup=MarkupInform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
171
+ @flag_38=true
172
+ break if i >= 200
173
+ if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/
174
+ version='0.42'
175
+ markup=MarkupInform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type)
176
+ break
177
+ end
178
+ end
179
+ if (y =~/^1~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) \
180
+ and not @flag_38
181
+ version='0.37'
182
+ markup=MarkupInform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type)
183
+ break
184
+ end
185
+ if y =~/^1~/ \
186
+ and f =~/\.([rs])([123])/ \
187
+ and not @flag_38
188
+ t,n=$1,$2
189
+ version='0.16'
190
+ instruct=if t =~/r/
191
+ " (change file extension from .#{t}#{n} to .ssm)"
192
+ else " (change file extension from .#{t}#{n} to .sst)"
193
+ end
194
+ markup=MarkupInform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type)
195
+ break
196
+ end
197
+ if y =~/^0\{~/ \
198
+ and not @flag_38
199
+ version='0.1'
200
+ markup=MarkupInform.new(version,'0.1 - 0.15',@declared_markup,@declared_type)
201
+ break
202
+ end
203
+ if y =~/^0\{{3}/ \
204
+ and not @flag_38
205
+ markup=MarkupInform.new('circa. 1997','old, check date',@declared_markup,@declared_type)
206
+ break
207
+ end
208
+ markup='Not a recognised file type '
209
+ end
210
+ end
211
+ markup
212
+ else MarkupHistory.new(@opt).help_query
213
+ end
214
+ end
215
+ def determine_markup_version
216
+ if @opt.fns.nil? \
217
+ or @opt.fns.empty?
218
+ MarkupHistory.new(@opt).help_identify
219
+ end
220
+ if File.exist?(@opt.fns)
221
+ if @opt.fns =~/\.(?:sst|ssm|ssi|s[123i]|r[123])/
222
+ markup=identify #(@opt.fns)
223
+ if defined? markup.version
224
+ unless @opt.act[:quiet][:set]==:on
225
+ message=unless markup.declared_version.empty?
226
+ "#{@opt.fns}\n markup Type Declared as SiSU #{markup.declared_version} #{markup.declared_type}\n appears to be SiSU #{markup.version}"
227
+ else
228
+ "Markup Type Appears to be SiSU #{markup.version}\n in file #{@opt.fns}"
229
+ end
230
+ puts message
231
+ puts %{"sisu --query-#{markup.version}" for a brief description of markup type}
232
+ end
233
+ end
234
+ else puts 'file-type not recognised: ' + @opt.fns
235
+ end
236
+ else puts 'file not found: ' + @opt.fns
237
+ end
238
+ (defined? markup.version) \
239
+ ? markup.version
240
+ : 'markup type/version not determined'
241
+ end
242
+ def markup_version?
243
+ if @opt.fns.empty?
244
+ @opt.files.each do |fns|
245
+ @opt.fns=fns
246
+ determine_markup_version
247
+ end
248
+ else determine_markup_version
249
+ end
250
+ end
251
+ end
252
+ class MarkupHistory
253
+ def initialize(opt)
254
+ @opt=opt
255
+ end
256
+ def sisu_3_0
257
+ <<WOK
258
+ SiSU 3.0 same as 2.0, apart from change to headers
259
+
260
+ see document markup samples, and sisu --help headers
261
+
262
+ WOK
263
+ end
264
+ def sisu_2_0
265
+ <<WOK
266
+ SiSU 2.0 same as 1.0, apart from the changing of headers and the addition of a monospace tag
267
+ related headers now grouped, e.g.
268
+
269
+ @title:
270
+ :subtitle:
271
+
272
+ @creator:
273
+ :author:
274
+ :translator:
275
+ :illustrator:
276
+
277
+ see document markup samples, and sisu --help headers
278
+
279
+ the monospace tag takes the form of a has '#' \#{ this enclosed text would be monospaced }#
280
+
281
+ WOK
282
+ end
283
+ def sisu_1_0
284
+ <<WOK
285
+ SiSU 1.0 same as 0.69
286
+
287
+ WOK
288
+ end
289
+ def sisu_0_69
290
+ <<WOK
291
+ SiSU 0.69 (same as 1.0) as previous (0.57) with the addition of book index tags
292
+ /^=\{.+?\}$/
293
+ e.g. appended to a paragraph, on a new-line (without a blank line in between)
294
+ logical structure produced assuming this is the first text "object"
295
+ ={GNU/Linux community distribution:Debian+2|Fedora|Gentoo;Free Software Foundation+5}
296
+
297
+ Free Software Foundation, 1-6
298
+ GNU/Linux community distribution, 1
299
+ Debian, 1-3
300
+ Fedora, 1
301
+ Gentoo,
302
+
303
+ WOK
304
+ end
305
+ def sisu_0_66
306
+ <<WOK
307
+ SiSU 0.66 same as previous, adds semantic tags
308
+ /[:;]\{.+?\}[:;][a-z+]/
309
+ e.g. :{ Ralph last;{Amissah};last }:author
310
+
311
+ WOK
312
+ end
313
+ def sisu_0_65
314
+ <<WOK
315
+ SiSU 0.65 same as previous, adds semantic tags
316
+ /[a-z+][:;]\{.+?\}[:;][a-z+]/
317
+ e.g. author:{ Ralph last;{Amissah};last }:author
318
+
319
+ WOK
320
+ end
321
+ def sisu_0_57
322
+ <<WOK
323
+
324
+ SiSU 0.57 (a subset of 1.0) is the same as 0.42 with the introduction of some
325
+ a shortcut to use the headers @title and @creator in the first heading
326
+ [expanded using the contents of the headers @title: and @author:]
327
+
328
+ :A~ @title by @author
329
+
330
+ WOK
331
+ end
332
+ def sisu_0_42
333
+ <<WOK
334
+ SiSU 0.42 (a subset of 1.0) is the same as 0.38 with the introduction of some additional endnote types,
335
+
336
+ Introduces some varations on endnotes, in particular the use of the asterisk
337
+ ~{* for example for describing an author }~ and ~{** for describing a second author }~
338
+
339
+ * for example for describing an author
340
+
341
+ ** for describing a second author
342
+
343
+ and ~[* my note ]~ or ~[+ another note ]~ which numerically increments an
344
+ asterisk and plus respectively
345
+
346
+ *1 my note
347
+ +1 another note
348
+
349
+ WOK
350
+ end
351
+ def sisu_0_38
352
+ <<WOK
353
+
354
+ SiSU 0.38 (a subset of 1.0) introduced alternative experimental header and heading/structure markers,
355
+
356
+ @headername: and headers :A~ :B~ :C~ 1~ 2~ 3~
357
+
358
+ as the equivalent of (the superceded)
359
+
360
+ 0~headername and headers 1~ 2~ 3~ 4~ 5~ 6~
361
+
362
+ The internal document markup of SiSU 0.16 remains valid and standard
363
+ Though note that SiSU 0.37 introduced a new file naming convention
364
+
365
+ SiSU has in effect two sets of levels to be considered, using 0.38 notation
366
+ A-C headings/levels, pre-ordinary paragraphs /pre-substantive text, and
367
+ 1-3 headings/levels, levels which are followed by ordinary text.
368
+ This may be conceptualised as levels A,B,C, 1,2,3, and using such letter
369
+ number notation, in effect:
370
+ A must exist, optional B and C may follow in sequence (not strict)
371
+ 1 must exist, optional 2 and 3 may follow in sequence
372
+ i.e. there are two independent heading level sequences A,B,C and 1,2,3
373
+ (using the 0.16 standard notation 1,2,3 and 4,5,6)
374
+ on the positive side:
375
+ * the 0.38 A,B,C,1,2,3 alternative makes explicit an aspect of structuring
376
+ documents in SiSU that is not otherwise obvious to the newcomer (though
377
+ it appears more complicated, is more in your face and likely to be
378
+ understood fairly quickly)
379
+ * the substantive text follows levels 1,2,3 and it is 'nice' to do
380
+ most work in those levels
381
+ WOK
382
+ end
383
+ def sisu_0_37
384
+ <<WOK
385
+
386
+ SiSU 0.37 introduced the file naming convention, that remains in use in SiSU
387
+ v1 and v2, using the file extensions .sst .ssm and .ssi
388
+ to replace .s1 .s2 .s3 .r1 .r2 .r3 and .si
389
+
390
+ this is captured by the following file 'rename' instruction:
391
+
392
+ rename 's/\.s[123]$/\.sst/' *.s{1,2,3}
393
+ rename 's/\.r[123]$/\.ssm/' *.r{1,2,3}
394
+ rename 's/\.si$/\.ssi/' *.si
395
+
396
+ The internal document markup remains unchanged, from SiSU 0.16
397
+ WOK
398
+ end
399
+ def sisu_0_16
400
+ <<WOK
401
+
402
+ SiSU 0.16 (0.15 development branch) introduced the use of
403
+
404
+ the header 0~ and headings/structure 1~ 2~ 3~ 4~ 5~ 6~
405
+
406
+ in place of the 0.1 header, heading/structure notation
407
+ WOK
408
+ end
409
+ def sisu_0_1
410
+ <<WOK
411
+
412
+ SiSU 0.1 headers and headings structure represented by
413
+ header 0{~ and headings/structure 1{ 2{ 3{ 4{~ 5{ 6{
414
+ WOK
415
+ end
416
+ def help_query
417
+ <<WOK
418
+
419
+ sisu --query=[sisu version [0.38] or 'history]
420
+ provides a short history of changes to SiSU markup
421
+
422
+ WOK
423
+ end
424
+ def help_identify
425
+ <<WOK
426
+
427
+ sisu --identify [filename]
428
+ attempts to identify the SiSU markup used in a file
429
+
430
+ WOK
431
+ end
432
+ def query
433
+ tell=if @opt.selections.str =~/--query/
434
+ tell=case @opt.selections.str
435
+ when /history/
436
+ "#{sisu_3_0}#{sisu_2_0}#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}\n#{sisu_0_37}\n#{sisu_0_16}\n#{sisu_0_1}"
437
+ when /3.0/
438
+ "#{sisu_3_0}#{sisu_2_0}#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
439
+ when /2.0/
440
+ "#{sisu_2_0}#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
441
+ when /1.0/
442
+ "#{sisu_1_0}#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
443
+ when /0.69/
444
+ "#{sisu_0_69}#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
445
+ when /0.66/
446
+ "#{sisu_0_66}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
447
+ when /0.65/
448
+ "#{sisu_0_65}#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
449
+ when /0.57/
450
+ "#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
451
+ when /0.42/
452
+ "#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
453
+ when /0.38/
454
+ "#{sisu_0_38}#{sisu_0_16}"
455
+ when /0.37/
456
+ "#{sisu_0_37}\n#{sisu_0_16}"
457
+ when /0.1[6-9]|0.2[0-9]|0.3[0-6]/
458
+ "#{sisu_0_16}\n#{sisu_0_1}"
459
+ when /0.[1-9]|0.1[1-4]/
460
+ sisu_0_1
461
+ else puts "NOT RECOGNISED: #{@opt.selections.str}"
462
+ help_query
463
+ end
464
+ tell
465
+ else help_query
466
+ end
467
+ end
468
+ end
469
+ end
470
+ __END__
471
+ #%% to use as independent program ------------------------->
472
+ f=$*
473
+ cf=f[0].to_s
474
+ f.shift
475
+ match_and_replace=[]
476
+ unless f.length > 0; f=Dir.glob("[a-z]*.ss?") #restricted to sisu type files, it need not be
477
+ end
478
+ puts "SiSU files:"
479
+ puts f
480
+ f.each do |x|
481
+ SiSU_Markup::MarkupIdentify.new(x).markup_version?
482
+ end