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.
- checksums.yaml +7 -0
- data/bin/sisu +367 -0
- data/bin/sisugem +367 -0
- data/data/sisu/image/arrow_next_red.png +0 -0
- data/data/sisu/image/arrow_prev_red.png +0 -0
- data/data/sisu/image/arrow_up_red.png +0 -0
- data/data/sisu/image/b_bluebell.png +0 -0
- data/data/sisu/image/b_doc.png +0 -0
- data/data/sisu/image/b_epub.png +0 -0
- data/data/sisu/image/b_home.png +0 -0
- data/data/sisu/image/b_info.png +0 -0
- data/data/sisu/image/b_odf.png +0 -0
- data/data/sisu/image/b_pdf.png +0 -0
- data/data/sisu/image/b_search.png +0 -0
- data/data/sisu/image/b_toc.png +0 -0
- data/data/sisu/image/bullet_08.png +0 -0
- data/data/sisu/image/bullet_09.png +0 -0
- data/data/sisu/image/bullet_10.png +0 -0
- data/data/sisu/image/bullet_11.png +0 -0
- data/data/sisu/image/bullet_12.png +0 -0
- data/data/sisu/image/bullet_doc.png +0 -0
- data/data/sisu/image/bullet_red.png +0 -0
- data/data/sisu/image/dot_clear.png +0 -0
- data/data/sisu/image/dot_white.png +0 -0
- data/data/sisu/image/gplv3.png +0 -0
- data/data/sisu/image/gplv3_free_software.png +0 -0
- data/data/sisu/image/next.png +0 -0
- data/data/sisu/image/previous.png +0 -0
- data/data/sisu/image/rb7.ico +0 -0
- data/data/sisu/image/sisu.png +0 -0
- data/data/sisu/image/toctoc.png +0 -0
- data/data/sisu/version.yml +5 -0
- data/lib/sisu.rb +94 -0
- data/lib/sisu/air.rb +80 -0
- data/lib/sisu/ao.rb +590 -0
- data/lib/sisu/ao_character_check.rb +102 -0
- data/lib/sisu/ao_composite.rb +286 -0
- data/lib/sisu/ao_doc_objects.rb +565 -0
- data/lib/sisu/ao_doc_str.rb +2269 -0
- data/lib/sisu/ao_endnotes.rb +136 -0
- data/lib/sisu/ao_expand_insertions.rb +514 -0
- data/lib/sisu/ao_hash_digest.rb +174 -0
- data/lib/sisu/ao_idx.rb +422 -0
- data/lib/sisu/ao_images.rb +187 -0
- data/lib/sisu/ao_metadata.rb +86 -0
- data/lib/sisu/ao_misc_arrange.rb +207 -0
- data/lib/sisu/ao_numbering.rb +720 -0
- data/lib/sisu/ao_persist.rb +194 -0
- data/lib/sisu/ao_references.rb +502 -0
- data/lib/sisu/ao_syntax.rb +640 -0
- data/lib/sisu/cgi.rb +84 -0
- data/lib/sisu/cgi_pgsql.rb +270 -0
- data/lib/sisu/cgi_sql_common.rb +986 -0
- data/lib/sisu/cgi_sqlite.rb +244 -0
- data/lib/sisu/conf.rb +287 -0
- data/lib/sisu/constants.rb +388 -0
- data/lib/sisu/css.rb +3484 -0
- data/lib/sisu/db_columns.rb +1997 -0
- data/lib/sisu/db_create.rb +689 -0
- data/lib/sisu/db_dbi.rb +90 -0
- data/lib/sisu/db_drop.rb +207 -0
- data/lib/sisu/db_import.rb +877 -0
- data/lib/sisu/db_indexes.rb +146 -0
- data/lib/sisu/db_load_tuple.rb +323 -0
- data/lib/sisu/db_remove.rb +182 -0
- data/lib/sisu/db_select.rb +230 -0
- data/lib/sisu/db_sqltxt.rb +173 -0
- data/lib/sisu/db_tests.rb +114 -0
- data/lib/sisu/dbi.rb +166 -0
- data/lib/sisu/dbi_discrete.rb +206 -0
- data/lib/sisu/digests.rb +306 -0
- data/lib/sisu/dp.rb +1606 -0
- data/lib/sisu/dp_identify_markup.rb +161 -0
- data/lib/sisu/dp_make.rb +668 -0
- data/lib/sisu/embedded.rb +149 -0
- data/lib/sisu/errors.rb +84 -0
- data/lib/sisu/generic_parts.rb +131 -0
- data/lib/sisu/git.rb +277 -0
- data/lib/sisu/html.rb +775 -0
- data/lib/sisu/html_concordance.rb +391 -0
- data/lib/sisu/html_format.rb +1348 -0
- data/lib/sisu/html_harvest.rb +109 -0
- data/lib/sisu/html_harvest_author_format.rb +111 -0
- data/lib/sisu/html_harvest_authors.rb +466 -0
- data/lib/sisu/html_harvest_topics.rb +893 -0
- data/lib/sisu/html_lite_shared.rb +324 -0
- data/lib/sisu/html_manifest.rb +1032 -0
- data/lib/sisu/html_minitoc.rb +230 -0
- data/lib/sisu/html_parts.rb +437 -0
- data/lib/sisu/html_persist.rb +237 -0
- data/lib/sisu/html_promo.rb +440 -0
- data/lib/sisu/html_scroll.rb +235 -0
- data/lib/sisu/html_segments.rb +716 -0
- data/lib/sisu/html_shared.rb +62 -0
- data/lib/sisu/html_table.rb +64 -0
- data/lib/sisu/html_tune.rb +301 -0
- data/lib/sisu/hub.rb +277 -0
- data/lib/sisu/hub_actions.rb +1122 -0
- data/lib/sisu/hub_loop_markup_files.rb +170 -0
- data/lib/sisu/hub_options.rb +1695 -0
- data/lib/sisu/i18n.rb +702 -0
- data/lib/sisu/manpage.rb +377 -0
- data/lib/sisu/manpage_format.rb +85 -0
- data/lib/sisu/object_munge.rb +307 -0
- data/lib/sisu/prog_text_translation.rb +1702 -0
- data/lib/sisu/qrcode.rb +754 -0
- data/lib/sisu/relaxng.rb +1153 -0
- data/lib/sisu/remote.rb +246 -0
- data/lib/sisu/rexml.rb +148 -0
- data/lib/sisu/se.rb +158 -0
- data/lib/sisu/se_cleanoutput.rb +145 -0
- data/lib/sisu/se_clear.rb +105 -0
- data/lib/sisu/se_createsite.rb +273 -0
- data/lib/sisu/se_css.rb +221 -0
- data/lib/sisu/se_date.rb +92 -0
- data/lib/sisu/se_db.rb +214 -0
- data/lib/sisu/se_envcall.rb +326 -0
- data/lib/sisu/se_file_op.rb +2758 -0
- data/lib/sisu/se_filemap.rb +247 -0
- data/lib/sisu/se_get_init.rb +238 -0
- data/lib/sisu/se_hub_particulars.rb +234 -0
- data/lib/sisu/se_info_env.rb +2179 -0
- data/lib/sisu/se_info_port.rb +70 -0
- data/lib/sisu/se_info_system.rb +202 -0
- data/lib/sisu/se_load.rb +108 -0
- data/lib/sisu/se_processing.rb +659 -0
- data/lib/sisu/se_programs.rb +394 -0
- data/lib/sisu/se_remotes.rb +553 -0
- data/lib/sisu/se_standardise_lang.rb +176 -0
- data/lib/sisu/se_version.rb +174 -0
- data/lib/sisu/shared_images.rb +137 -0
- data/lib/sisu/shared_markup_alt.rb +336 -0
- data/lib/sisu/shared_metadata.rb +1361 -0
- data/lib/sisu/shared_sem.rb +156 -0
- data/lib/sisu/sisu_thor_lib.rb +407 -0
- data/lib/sisu/sitemaps.rb +224 -0
- data/lib/sisu/src_kdissert_share.rb +102 -0
- data/lib/sisu/src_po4a_share.rb +309 -0
- data/lib/sisu/src_po4a_shelf.rb +1217 -0
- data/lib/sisu/src_po4a_shelf_set.rb +297 -0
- data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
- data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
- data/lib/sisu/src_po4a_sstm.rb +135 -0
- data/lib/sisu/src_shared.rb +347 -0
- data/lib/sisu/src_sisupod_make.rb +171 -0
- data/lib/sisu/src_sisupod_sstm.rb +109 -0
- data/lib/sisu/sst_convert_markup.rb +323 -0
- data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
- data/lib/sisu/sst_from_xml.rb +178 -0
- data/lib/sisu/sst_identify_markup.rb +482 -0
- data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
- data/lib/sisu/termsheet.rb +163 -0
- data/lib/sisu/texinfo.rb +430 -0
- data/lib/sisu/texinfo_format.rb +541 -0
- data/lib/sisu/texpdf.rb +1162 -0
- data/lib/sisu/texpdf_format.rb +1689 -0
- data/lib/sisu/texpdf_parts.rb +235 -0
- data/lib/sisu/txt_asciidoc.rb +354 -0
- data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
- data/lib/sisu/txt_markdown.rb +389 -0
- data/lib/sisu/txt_markdown_decorate.rb +207 -0
- data/lib/sisu/txt_orgmode.rb +376 -0
- data/lib/sisu/txt_orgmode_decorate.rb +186 -0
- data/lib/sisu/txt_output.rb +86 -0
- data/lib/sisu/txt_plain.rb +410 -0
- data/lib/sisu/txt_plain_decorate.rb +189 -0
- data/lib/sisu/txt_read.rb +109 -0
- data/lib/sisu/txt_rst.rb +371 -0
- data/lib/sisu/txt_rst_decorate.rb +186 -0
- data/lib/sisu/txt_shared.rb +241 -0
- data/lib/sisu/txt_textile.rb +367 -0
- data/lib/sisu/txt_textile_decorate.rb +186 -0
- data/lib/sisu/update.rb +141 -0
- data/lib/sisu/urls.rb +696 -0
- data/lib/sisu/utils.rb +232 -0
- data/lib/sisu/utils_composite.rb +115 -0
- data/lib/sisu/utils_response.rb +114 -0
- data/lib/sisu/utils_screen_text_color.rb +472 -0
- data/lib/sisu/utils_spell.rb +99 -0
- data/lib/sisu/webrick.rb +191 -0
- data/lib/sisu/wikispeak.rb +375 -0
- data/lib/sisu/xhtml.rb +472 -0
- data/lib/sisu/xhtml_epub2.rb +890 -0
- data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
- data/lib/sisu/xhtml_epub2_format.rb +2272 -0
- data/lib/sisu/xhtml_epub2_persist.rb +278 -0
- data/lib/sisu/xhtml_epub2_segments.rb +599 -0
- data/lib/sisu/xhtml_epub2_tune.rb +330 -0
- data/lib/sisu/xhtml_parts.rb +183 -0
- data/lib/sisu/xhtml_shared.rb +62 -0
- data/lib/sisu/xhtml_table.rb +97 -0
- data/lib/sisu/xml_docbook5.rb +376 -0
- data/lib/sisu/xml_dom.rb +624 -0
- data/lib/sisu/xml_fictionbook2.rb +389 -0
- data/lib/sisu/xml_format.rb +865 -0
- data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
- data/lib/sisu/xml_odf_odt.rb +887 -0
- data/lib/sisu/xml_odf_odt_format.rb +674 -0
- data/lib/sisu/xml_parts.rb +191 -0
- data/lib/sisu/xml_persist.rb +126 -0
- data/lib/sisu/xml_sax.rb +521 -0
- data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
- data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
- data/lib/sisu/xml_shared.rb +665 -0
- data/lib/sisu/xml_tables.rb +261 -0
- data/lib/sisu/zap.rb +90 -0
- 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(/ |#{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__
|