sisu 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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