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,187 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** system environment, resource control and configuration details
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/ao_images.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_AO_Images
58
+ class Images
59
+ begin
60
+ require 'RMagick'
61
+ include Magick
62
+ rescue LoadError
63
+ #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('RMagic NOT FOUND')
64
+ end
65
+ def initialize(md,data)
66
+ @md,@data=md,data
67
+ end
68
+ def images
69
+ data=@data
70
+ @rmgk=false
71
+ imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick')
72
+ if imagemagick_
73
+ begin
74
+ @rmgk=SiSU_Env::Load.new('RMagick').prog
75
+ rescue
76
+ @rmgk=false
77
+ end
78
+ else
79
+ if (@md.opt.act[:verbose_plus][:set]==:on \
80
+ || @md.opt.act[:maintenance][:set]==:on)
81
+ SiSU_Screen::Ansi.new(
82
+ @md.opt.act[:color_state][:set],
83
+ '*WARN* use of RMagick is not enabled in sisurc.yml'
84
+ ).warn
85
+ end
86
+ end
87
+ data.select do |dob|
88
+ unless dob.is ==:table
89
+ dob.obj=dob.obj.strip
90
+ if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
91
+ if dob.obj !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+/
92
+ m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/
93
+ if imagemagick_
94
+ imgs=dob.obj.scan(m).flatten
95
+ img_col=img_row=nil
96
+ images=imgs.each do |image|
97
+ dir=SiSU_Env::InfoEnv.new(@md.fns)
98
+ path_image=[
99
+ dir.path.image_source_include_local,
100
+ dir.path.image_source_include_remote,
101
+ dir.path.image_source_include
102
+ ]
103
+ image_path=nil
104
+ path_image.each do |img_pth|
105
+ image_path=img_pth
106
+ break if FileTest.exist?("#{img_pth}/#{image}")
107
+ end
108
+ if FileTest.exist?("#{image_path}/#{image}")
109
+ if @rmgk
110
+ img=Magick::ImageList.new("#{image_path}/#{image}")
111
+ img_col,img_row=img.columns,img.rows
112
+ else
113
+ if (@md.opt.act[:verbose_plus][:set]==:on \
114
+ || @md.opt.act[:maintenance][:set]==:on)
115
+ SiSU_Screen::Ansi.new(
116
+ @md.opt.act[:color_state][:set],
117
+ '*WARN* RMagick not present, will attempt to use imagemagick (identify) directly'
118
+ ).warn
119
+ end
120
+ imgk=SiSU_Env::SystemCall.new.imagemagick
121
+ gmgk=SiSU_Env::SystemCall.new.graphicsmagick
122
+ if imgk or gmgk
123
+ if imgk
124
+ imgsys=`identify #{image_path}/#{image}`.strip #system call
125
+ elsif gmgk
126
+ imgsys=`gm identify #{image_path}/#{image}`.strip #system call
127
+ end
128
+ img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2]
129
+ img_col,img_row=img_col.to_i,img_row.to_i
130
+ else
131
+ errmsg='imagemagick or graphicsmagick are required to process images'
132
+ if @md.opt.act[:no_stop][:set]==:on
133
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
134
+ error("#{errmsg}, proceeding (as requested) without image processing")
135
+ break
136
+ else
137
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
138
+ error("#{errmsg}, STOPPING")
139
+ exit
140
+ end
141
+ end
142
+ end
143
+ row=((img && defined? img.rows) ? img.rows : img_row)
144
+ col=((img && defined? img.columns) ? img.columns : img_col)
145
+ if img_col > img_row #landscape
146
+ if img_col> 640
147
+ img_col=640
148
+ img_row=((1.00*img_col/col)*row).round
149
+ end
150
+ else #portrait
151
+ if img_col> 640
152
+ img_col=640
153
+ img_row=((1.00*img_col/col)*row).round
154
+ end
155
+ if img_row > 640
156
+ img_row=640
157
+ img_col=((1.00*img_row/row)*col).round
158
+ end
159
+ end
160
+ dob.obj=dob.obj.gsub(/(#{image})/,"#{image} #{img_col}x#{img_row}")
161
+ else
162
+ dob.obj=dob.obj.
163
+ gsub(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,
164
+ '[ \1 (\2 missing) ]')
165
+ end
166
+ end
167
+ else
168
+ images=dob.obj.scan(m) do |image|
169
+ SiSU_Screen::Ansi.new(
170
+ @md.opt.act[:color_state][:set],
171
+ '*WARN* where image dimensions have not been provided RMagick or imagemagick is required',image
172
+ ).warn unless @md.opt.act[:quiet][:set]==:on
173
+ end
174
+ end
175
+ end
176
+ end
177
+ if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
178
+ dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ')
179
+ end
180
+ end
181
+ dob unless dob.nil?
182
+ end
183
+ end
184
+ end
185
+ end
186
+ __END__
187
+ imgsys=`identify #{image_path}/#{image}`.strip
@@ -0,0 +1,86 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** system environment, resource control and configuration details
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/ao_metadata.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_AO_Metadata
58
+ class Metadata
59
+ def initialize(md,metad)
60
+ @md,@metadata=md,metad
61
+ l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
62
+ language=l[:n]
63
+ @tr=SiSU_Translate::Source.new(md,language)
64
+ end
65
+ def make_para(obj,ocn)
66
+ h={
67
+ obj: obj,
68
+ ocn: 0
69
+ }
70
+ SiSU_AO_DocumentStructure::ObjectPara.new.paragraph(h)
71
+ end
72
+ def make_heading(obj,ocn,name,lv,ln)
73
+ h={
74
+ lv: lv,
75
+ ln: ln,
76
+ name: name,
77
+ obj: obj,
78
+ ocn: 0
79
+ }
80
+ SiSU_AO_DocumentStructure::ObjectHeading.new.heading(h)
81
+ end
82
+ def metadata
83
+ end
84
+ end
85
+ end
86
+ __END__
@@ -0,0 +1,207 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** system environment, resource control and configuration details
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/ao_misc_arrange.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_AO_MiscArrangeText
58
+ class SI
59
+ def initialize(md,data)
60
+ @md,@data=md,data
61
+ end
62
+ def conditional_headings(para)
63
+ para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
64
+ gsub(/^((?:[1-9]|:?[A-D])~\S*)\s*$/,
65
+ '\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
66
+ if para =~/^@\S+?:/
67
+ para=para.gsub(/^@(\S+?):(\s+|$)/,
68
+ "#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2").
69
+ gsub(/^@(\S+?):([+-])(\s+|$)/,
70
+ "#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
71
+ end
72
+ para
73
+ end
74
+ def markup_blocks(para)
75
+ def ticks(para)
76
+ block_open,block_close,text=nil,nil,nil
77
+ if para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.+?\n```(?:\s+[~-][#]|\s+\~\{.+?\}\~)?\s*\Z/m
78
+ @flag=:close
79
+ block_open,text,block_close=
80
+ /\A(```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?)\n(.+?)\n(```([ ]+[~-][#]|\s+\~\{.+?\}\~)?)\s*\Z/m.
81
+ match(para)[1..3]
82
+ ((para=~/^```[ ]+table(?:~h)?\s+/) \
83
+ and (para !~/^```[ ]+table(?:~h)?\s+c\d+/)) \
84
+ ? para
85
+ : (para=[]; para << block_open << text << block_close)
86
+ elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m #look at, study
87
+ @flag=:open
88
+ block_open,text=/\A(```(?:[ ]+.+?))\n(.*?)\Z/m.match(para)[1,2]
89
+ para=[]
90
+ if not text.to_s.empty?
91
+ para << block_open << text
92
+ else
93
+ para << block_open
94
+ end
95
+ elsif para =~/\A.+?\n```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(\s*=\{.+?\})?\s*\Z/m \
96
+ and @flag==:open
97
+ @flag=:close
98
+ text,block_close=
99
+ /\A(.+?)\n(```(?:\s+\~\{.+?\}\~)?(?:\s+[~-][#])?(?:\s+=\{.+?\})?)\s*\Z/m.match(para)[1,2]
100
+ para=[]
101
+ if not text.to_s.empty?
102
+ para << text.to_s << block_close
103
+ else
104
+ para << block_close
105
+ end
106
+ else para
107
+ end
108
+ para
109
+ end
110
+ def ticks_remove(para)
111
+ unless @md.opt.act[:quiet][:set] ==:on
112
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
113
+ mark("ticks not recognized, ticks removed from pargraph\n#{para}")
114
+ end
115
+ para=para.gsub(/```[ ]+\S+[ ]*/m,'').
116
+ gsub(/```\s*/m,'').
117
+ strip
118
+ end
119
+ def ticks_quote(para)
120
+ @flag=:quote_open
121
+ text=para
122
+ para=[]
123
+ if text =~ /```[ ]+quote/m
124
+ para << '`:quote_open`'
125
+ text=text.gsub(/```[ ]+quote/m,'')
126
+ end
127
+ text=if text =~/(?:\n|\A)=\{.+?\}/m #exclude book index from indent markup
128
+ txt,bkidx,tail=/(.+?)((?:\n|\A)=\{.+?\}$)(.*)/m.match(text).captures
129
+ txt=txt.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
130
+ txt + bkidx + tail
131
+ else text.gsub(/(?:\n|\A)([^`\n]+)/m,'_1 \1')
132
+ end
133
+ para << text.gsub(/```/m,'')
134
+ if text =~/```/m
135
+ @flag=:quote_close
136
+ para << '`:quote_close`'
137
+ end
138
+ para
139
+ end
140
+ def curly_braces(para)
141
+ block_open,block_close,text=nil,nil,nil
142
+ para=if para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
143
+ block_open,text,block_close=
144
+ /\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
145
+ match(para)[1..3]
146
+ para=[]
147
+ para << block_open << text << block_close
148
+ elsif para =~/\A(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?\n.+?\Z/m
149
+ block_open,text=
150
+ /\A((?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{ .+?)\n(.+?)\Z/m.
151
+ match(para)[1,2]
152
+ para=[]
153
+ if not text.to_s.empty?
154
+ para << block_open << text
155
+ else
156
+ para << block_open
157
+ end
158
+ elsif para =~/\A.+?\n\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?\s*\Z/m
159
+ text,block_close=
160
+ /\A(.+?)\n(\}(?:code|box|poem|alt|group|block|table)(?: [~-][#])?)\s*\Z/m.
161
+ match(para)[1,2]
162
+ para=[]
163
+ if not text.to_s.empty?
164
+ para << text.to_s << block_close
165
+ else
166
+ para << block_close
167
+ end
168
+ else para
169
+ end
170
+ para
171
+ end
172
+ para=if (para =~/\A```[ ]+quote/m \
173
+ and @flag !=:open) \
174
+ or @flag==:quote_open
175
+ ticks_quote(para)
176
+ elsif para =~/\A```[ ]+(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table).*?\n.*?\Z/m \
177
+ or @flag==:open
178
+ ticks(para)
179
+ elsif para =~/```/m
180
+ ticks_remove(para)
181
+ else
182
+ para
183
+ end
184
+ para=if para =~/^(?:code(?:\.[a-z][0-9a-z_]+)?|box(?:\.[a-z_]+)?|poem|alt|group|block|table)\{|^\}(?:code|box|poem|alt|group|block|table)/m
185
+ curly_braces(para)
186
+ else
187
+ para
188
+ end
189
+ end
190
+ def prepare_text
191
+ data=@data
192
+ if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it)
193
+ data[0]=data[0].gsub(/^#!\s*\/usr\/bin\/sisu/,'').
194
+ gsub(/^#!\s*\/usr\/bin\/env sisu/,'')
195
+ end
196
+ if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier
197
+ data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1').
198
+ gsub(/^(sisu-[\d.]+)$/,'% \1')
199
+ end
200
+ data.each.map do |para|
201
+ para=conditional_headings(para)
202
+ markup_blocks(para)
203
+ end.flatten
204
+ end
205
+ end
206
+ end
207
+ __END__