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