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,207 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** plaintext decoration
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/txt_markdown_decorate.rb;hb=HEAD>
55
+
56
+ =end
57
+
58
+ module SiSU_Decorate_Txt_Markdown
59
+ def decorate
60
+ def heading
61
+ def inline #atx
62
+ def l0
63
+ '#'
64
+ end
65
+ def l1
66
+ '##'
67
+ end
68
+ def l2
69
+ '###'
70
+ end
71
+ def l3
72
+ '####'
73
+ end
74
+ def l4
75
+ '#####'
76
+ end
77
+ def l5
78
+ '######'
79
+ end
80
+ self
81
+ end
82
+ def underscore #Setext
83
+ def l1
84
+ '='
85
+ end
86
+ def l2
87
+ '-'
88
+ end
89
+ def l3
90
+ ''
91
+ end
92
+ def l4
93
+ ''
94
+ end
95
+ def l5
96
+ ''
97
+ end
98
+ def l6
99
+ ''
100
+ end
101
+ self
102
+ end
103
+ self
104
+ end
105
+ def bold
106
+ def open
107
+ '**'
108
+ end
109
+ def close
110
+ '**'
111
+ end
112
+ self
113
+ end
114
+ def italics
115
+ def open
116
+ '*'
117
+ end
118
+ def close
119
+ '*'
120
+ end
121
+ self
122
+ end
123
+ def underscore
124
+ def open
125
+ '_'
126
+ end
127
+ def close
128
+ '_'
129
+ end
130
+ self
131
+ end
132
+ #def emphasis
133
+ # def open
134
+ # ''
135
+ # end
136
+ # def close
137
+ # ''
138
+ # end
139
+ # self
140
+ #end
141
+ def cite
142
+ def open
143
+ '"'
144
+ end
145
+ def close
146
+ '"'
147
+ end
148
+ self
149
+ end
150
+ def insert
151
+ def open
152
+ '+'
153
+ end
154
+ def close
155
+ '+'
156
+ end
157
+ self
158
+ end
159
+ def strike
160
+ def open
161
+ '-'
162
+ end
163
+ def close
164
+ '-'
165
+ end
166
+ self
167
+ end
168
+ def superscript
169
+ def open
170
+ '^'
171
+ end
172
+ def close
173
+ '^'
174
+ end
175
+ self
176
+ end
177
+ def subscript
178
+ def open
179
+ '['
180
+ end
181
+ def close
182
+ ']'
183
+ end
184
+ self
185
+ end
186
+ def hilite
187
+ def open
188
+ '**'
189
+ end
190
+ def close
191
+ '**'
192
+ end
193
+ self
194
+ end
195
+ def monospace
196
+ def open
197
+ '`'
198
+ end
199
+ def close
200
+ '`'
201
+ end
202
+ self
203
+ end
204
+ self
205
+ end
206
+ end
207
+ __END__
@@ -0,0 +1,376 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** plaintext (smarttext) generation, orgmode structure
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/txt_orgmode.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Txt_OrgMode
58
+ require_relative 'ao' # ao.rb
59
+ require_relative 'se' # se.rb
60
+ include SiSU_Env
61
+ require_relative 'shared_metadata' # shared_metadata.rb
62
+ require_relative 'generic_parts' # generic_parts.rb
63
+ require_relative 'txt_read' # txt_read.rb
64
+ require_relative 'txt_shared' # txt_shared.rb
65
+ require_relative 'txt_orgmode_decorate' # txt_orgmode_decorate.rb
66
+ require_relative 'txt_output' # txt_output.rb
67
+ include SiSU_Param
68
+ @@alt_id_count,@@alt_id_count=0,0
69
+ @@tablefoot=''
70
+ class Source
71
+ include SiSU_Txt_Read
72
+ def initialize(opt)
73
+ @opt=opt
74
+ unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/
75
+ puts "#{sf} not a processed file type"
76
+ end
77
+ end
78
+ def read
79
+ begin
80
+ md=SiSU_Param::Parameters.new(@opt).get
81
+ specific={
82
+ description: 'OrgMode (plaintext utf-8)',
83
+ output_path: md.file.output_path.orgmode.dir,
84
+ output_file: md.file.base_filename.orgmode,
85
+ }
86
+ read_generic(@opt,specific)
87
+ SiSU_Txt_OrgMode::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet
88
+ rescue
89
+ SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
90
+ __LINE__.to_s + ':' + __FILE__
91
+ end
92
+ ensure
93
+ end
94
+ end
95
+ private
96
+ class Scroll <Source
97
+ include SiSU_Parts_Generic
98
+ include SiSU_TextUtils
99
+ include SiSU_Decorate_Txt_OrgMode
100
+ @@endnotes={ para: [], end: [] }
101
+ def initialize(md,data,wrap_width)
102
+ @md,@data,@wrap_width=md,data,wrap_width
103
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
104
+ @tab="\t"
105
+ @@endnotes_=case md.opt.selections.str
106
+ when /--footnote/ then false
107
+ when /--endnote/ then true
108
+ else true
109
+ end
110
+ @plaintext={ body: [], open: [], close: [], head: [], endnotes: [], metadata: [], tail: [] }
111
+ end
112
+ def songsheet
113
+ plaintext=markup(@data)
114
+ publish(plaintext)
115
+ end
116
+ def break_line
117
+ "\n"
118
+ end
119
+ def extract_endnotes(dob='')
120
+ notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
121
+ @n=[]
122
+ notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider
123
+ n=n.dup.to_s
124
+ if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/
125
+ fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added
126
+ fix.each do |x|
127
+ unless x.empty? then @n << x
128
+ end
129
+ end
130
+ else @n << n
131
+ end
132
+ end
133
+ notes=@n.flatten
134
+ notes.each do |e|
135
+ util=(e.to_s =~/^\[[\d*+]+\]:/) \
136
+ ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1))
137
+ : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1))
138
+ wrap=util.line_wrap
139
+ wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
140
+ wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB
141
+ \\1[\\2]: \\3
142
+ GSUB
143
+ )
144
+ else
145
+ wrap.gsub(/^(.+)\Z/m, <<-GSUB
146
+ \\1
147
+ GSUB
148
+ )
149
+ end
150
+ @@endnotes[:para] << "-#{wrap}"
151
+ @@endnotes[:end] << '' << wrap
152
+ end
153
+ @@endnotes
154
+ end
155
+ # Used for extraction of endnotes from paragraphs
156
+ def plaintext_metadata
157
+ array=SiSU_Metadata::Summary.new(@md).plaintext.metadata
158
+ array.each do |meta|
159
+ tag,inf=meta.scan(/^.+?:\s|.+/)
160
+ if tag and inf
161
+ util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1)
162
+ txt=util.line_wrap
163
+ @plaintext[:metadata] <<<<WOK
164
+
165
+ #{@tab}#{tag}#{txt}
166
+ WOK
167
+ end
168
+ end
169
+ end
170
+ def plaintext_tail
171
+ # env=SiSU_Env::InfoEnv.new(@md.fns)
172
+ generator="Generated by: #{@md.project_details.project} #{@md.project_details.version} of #{@md.project_details.date_stamp} (#{@md.project_details.date})" if @md.project_details.version
173
+ lastdone="Last Generated on: #{Time.now}"
174
+ rubyv="Ruby version: #{@md.ruby_version}"
175
+ sc=if @md.sc_info
176
+ "Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}"
177
+ else ''
178
+ end
179
+ @plaintext[:tail] <<<<WOK
180
+ ** Metadata
181
+ #{break_line}
182
+ plaintext (plain text):
183
+ #{@md.file.output_path.orgmode.url}/#{@md.file.base_filename.orgmode}#{break_line}
184
+ Other versions of this document: #{break_line}
185
+ manifest:
186
+ #{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}#{break_line}
187
+ at:
188
+ #{@md.file.output_path.base.url}#{break_line}
189
+
190
+ #{sc}
191
+ * #{generator}
192
+ * #{rubyv}
193
+ * #{lastdone}
194
+ * SiSU #{the_url.sisu_txt}
195
+ WOK
196
+ end
197
+ def heading_decorated_inline(dob)
198
+ if dob.is==:heading
199
+ heading_inline = case dob.lc
200
+ when 0 then decorate.heading.inline.l0
201
+ when 1 then decorate.heading.inline.l1
202
+ when 2 then decorate.heading.inline.l2
203
+ when 3 then decorate.heading.inline.l3
204
+ when 4 then decorate.heading.inline.l4
205
+ when 5 then decorate.heading.inline.l5
206
+ when 6 then decorate.heading.inline.l6
207
+ end
208
+ heading_inline + ' ' + dob.obj
209
+ end
210
+ end
211
+ def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document
212
+ heading_decoration=:inline #(:inline|:underscore) #switch heading decoration between inline & underscore options
213
+ util=nil
214
+ wrapped=if dob.is==:para \
215
+ || dob.is==:heading
216
+ if dob.is==:heading
217
+ util=(heading_decoration== :inline) \
218
+ ? (SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0))
219
+ : (SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0))
220
+ elsif dob.is==:para
221
+ if dob.hang \
222
+ and dob.hang =~/[0-9]/ \
223
+ and dob.indent != dob.hang
224
+ util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2)
225
+ #util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0)
226
+ elsif dob.indent =~/[1-9]/
227
+ util=if dob.bullet_
228
+ SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2)
229
+ else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2)
230
+ end
231
+ else
232
+ util=if dob.bullet_
233
+ SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0)
234
+ else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
235
+ end
236
+ end
237
+ else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
238
+ end
239
+ dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap
240
+ end
241
+ if dob.is==:para \
242
+ || dob.is==:heading
243
+ @plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP
244
+ end
245
+ # remove ...
246
+ if @@endnotes[:para] \
247
+ and not @@endnotes_
248
+ @@endnotes[:para].each {|e| @plaintext[:body] << e << break_line}
249
+ elsif @@endnotes[:para] \
250
+ and @@endnotes_
251
+ @@endnotes[:para].each {|e| @plaintext[:endnotes] << e << break_line}
252
+ end
253
+ @@endnotes[:para]=[]
254
+ end
255
+ def markup(data) # Used for major markup instructions
256
+ SiSU_Env::InfoEnv.new(@md.fns)
257
+ @data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]}
258
+ (0..6).each { |x| @cont[x]=@level[x]=false }
259
+ (4..6).each { |x| @plaintext_contents_close[x]='' }
260
+ plaintext_tail #($1,$2)
261
+ plaintext_metadata
262
+ table_message='[table conversion awaited, see other document formats]'
263
+ data.each do |dob|
264
+ dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix
265
+ gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]#
266
+ gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
267
+ "#{decorate.bold.open}\\1#{decorate.bold.close}").
268
+ gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
269
+ "#{decorate.italics.open}\\1#{decorate.italics.close}").
270
+ gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
271
+ "#{decorate.underscore.open}\\1#{decorate.underscore.close}").
272
+ gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
273
+ "#{decorate.subscript.open}\\1#{decorate.subscript.close}").
274
+ gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
275
+ "#{decorate.superscript.open}\\1#{decorate.superscript.close}").
276
+ gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
277
+ "#{decorate.insert.open}\\1#{decorate.insert.close}").
278
+ gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
279
+ "#{decorate.cite.open}\\1#{decorate.cite.close}").
280
+ gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
281
+ "#{decorate.strike.open}\\1#{decorate.strike.close}").
282
+ gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
283
+ "#{decorate.monospace.open}\\1#{decorate.monospace.close}")
284
+ unless dob.is==:code
285
+ dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1').
286
+ gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
287
+ gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]').
288
+ gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]').
289
+ gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{the_text.url_open}\\1#{the_text.url_close}")
290
+ extract_endnotes(dob)
291
+ dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up
292
+ gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up
293
+ gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<').
294
+ gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>').
295
+ gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&').
296
+ gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!').
297
+ gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#').
298
+ gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*').
299
+ gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-').
300
+ gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/').
301
+ gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_').
302
+ gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').
303
+ gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}').
304
+ gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~').
305
+ gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©').
306
+ gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\')
307
+ end
308
+ dob.obj=if dob.of==:block # watch
309
+ dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* ").
310
+ gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line)
311
+ else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2)
312
+ end
313
+ if dob.is==:code
314
+ dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
315
+ gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
316
+ end
317
+ dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
318
+ gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').
319
+ gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links
320
+ gsub(/&nbsp;|#{Mx[:nbsp]}/,' '). # decide on
321
+ gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
322
+ gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]').
323
+ gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
324
+ if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
325
+ p_num=''
326
+ #ocn
327
+ if dob.is==:heading \
328
+ or dob.is==:para
329
+ plaintext_structure(dob,p_num)
330
+ elsif dob.is==:group \
331
+ or dob.is==:block \
332
+ or dob.is==:verse \
333
+ or dob.is==:code \
334
+ or dob.is==:table
335
+ @plaintext[:body] << dob.obj + p_num << break_line
336
+ elsif dob.is==:break
337
+ sp=' '
338
+ ln='<' #ln='-'
339
+ @plaintext[:body] <<=if dob.obj==Mx[:br_page] \
340
+ or dob.obj==Mx[:br_page_new] \
341
+ or dob.obj==Mx[:br_page_line]
342
+ "#{break_line}#{ln*40}#{break_line*2}"
343
+ elsif dob.obj ==Mx[:br_obj]
344
+ "#{break_line}#{sp*20}* * *#{break_line*2}"
345
+ end # following empty line (break_line) missing, fix
346
+ end
347
+ dob='' if (dob.obj =~/<a name="n\d+">/ \
348
+ and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
349
+ if dob ## Clean Prepared Text
350
+ dob.obj=dob.obj.gsub(/<!.+!>/,' ').
351
+ gsub(/<:\S+>/,' ')
352
+ end
353
+ end
354
+ end
355
+ @plaintext
356
+ end
357
+ def publish(plaintext)
358
+ divider='='
359
+ content=[]
360
+ content << plaintext[:open]
361
+ content << plaintext[:head]
362
+ content << plaintext[:body]
363
+ if @@endnotes_
364
+ content << '** Endnotes' << @@endnotes[:end]
365
+ end
366
+ content << plaintext[:metadata]
367
+ content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used?
368
+ content << plaintext[:tail]
369
+ outputfile=SiSU_Env::FileOp.new(@md).write_file.orgmode
370
+ Txt_Output::Output.new.document(content,outputfile)
371
+ @@endnotes={ para: [], end: [] }
372
+ end
373
+ end
374
+ end
375
+ end
376
+ __END__