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_asciidoc_decorate.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
|
|
58
|
+
module SiSU_Decorate_Txt_AsciiDoc
|
|
59
|
+
def decorate
|
|
60
|
+
def heading
|
|
61
|
+
def inline
|
|
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
|
+
'' #'======' #logical
|
|
79
|
+
end
|
|
80
|
+
self
|
|
81
|
+
end
|
|
82
|
+
def underscore
|
|
83
|
+
def l0
|
|
84
|
+
'='
|
|
85
|
+
end
|
|
86
|
+
def l1
|
|
87
|
+
'-'
|
|
88
|
+
end
|
|
89
|
+
def l2
|
|
90
|
+
'~'
|
|
91
|
+
end
|
|
92
|
+
def l3
|
|
93
|
+
'^'
|
|
94
|
+
end
|
|
95
|
+
def l4
|
|
96
|
+
'+'
|
|
97
|
+
end
|
|
98
|
+
def l5
|
|
99
|
+
'.' #'.' #proposed
|
|
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 #bold
|
|
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,389 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** plaintext (smarttext) generation, markdown
|
|
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.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Txt_Markdown
|
|
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_markdown_decorate' # txt_markdown_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: 'Markdown (plaintext utf-8)',
|
|
83
|
+
output_path: md.file.output_path.markdown.dir,
|
|
84
|
+
output_file: md.file.base_filename.markdown,
|
|
85
|
+
}
|
|
86
|
+
read_generic(@opt,specific)
|
|
87
|
+
SiSU_Txt_Markdown::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_Markdown
|
|
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? then @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.markdown.url}/#{@md.file.base_filename.markdown}#{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_inline(dob)
|
|
197
|
+
if dob.is==:heading
|
|
198
|
+
heading_inline = case dob.lc
|
|
199
|
+
when 0 then decorate.heading.inline.l0
|
|
200
|
+
when 1 then decorate.heading.inline.l1
|
|
201
|
+
when 2 then decorate.heading.inline.l2
|
|
202
|
+
when 3 then decorate.heading.inline.l3
|
|
203
|
+
when 4 then decorate.heading.inline.l4
|
|
204
|
+
when 5 then decorate.heading.inline.l5
|
|
205
|
+
when 6 then decorate.heading.inline.l6
|
|
206
|
+
end
|
|
207
|
+
heading_inline + ' ' + dob.obj + ' ' + heading_inline
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
def heading_decorated_underscore(dob,times,p_num)
|
|
211
|
+
if dob.is==:heading
|
|
212
|
+
#times=@wrap_width if times > @wrap_width
|
|
213
|
+
case dob.lc
|
|
214
|
+
when 0 then decorate.heading.underscore.l0*times + p_num << break_line*2
|
|
215
|
+
when 1 then decorate.heading.underscore.l1*times + p_num << break_line*2
|
|
216
|
+
when 2 then decorate.heading.underscore.l2*times + p_num << break_line*2
|
|
217
|
+
when 3 then decorate.heading.underscore.l3*times + p_num << break_line*2
|
|
218
|
+
when 4 then decorate.heading.underscore.l4*times + p_num << break_line*2
|
|
219
|
+
when 5 then decorate.heading.underscore.l5*times + p_num << break_line*2
|
|
220
|
+
when 6 then decorate.heading.underscore.l6*times + p_num << break_line*2
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
def plaintext_structure(dob='',p_num='') #% Used to extract the structure of a document
|
|
225
|
+
heading_decoration=:inline #(:inline|:underscore) #switch heading decoration between inline & underscore options
|
|
226
|
+
util=nil
|
|
227
|
+
wrapped=if dob.is==:para \
|
|
228
|
+
|| dob.is==:heading
|
|
229
|
+
if dob.is==:heading
|
|
230
|
+
util=(heading_decoration== :inline) \
|
|
231
|
+
? (SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0))
|
|
232
|
+
: (SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0))
|
|
233
|
+
elsif dob.is==:para
|
|
234
|
+
if dob.hang \
|
|
235
|
+
and dob.hang =~/[0-9]/ \
|
|
236
|
+
and dob.indent != dob.hang
|
|
237
|
+
util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2)
|
|
238
|
+
#util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0)
|
|
239
|
+
elsif dob.indent =~/[1-9]/
|
|
240
|
+
util=if dob.bullet_
|
|
241
|
+
SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2)
|
|
242
|
+
else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2)
|
|
243
|
+
end
|
|
244
|
+
else
|
|
245
|
+
util=if dob.bullet_
|
|
246
|
+
SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0)
|
|
247
|
+
else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
|
|
251
|
+
end
|
|
252
|
+
dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap
|
|
253
|
+
end
|
|
254
|
+
if heading_decoration== :underscore \
|
|
255
|
+
and dob.is==:heading
|
|
256
|
+
@plaintext[:body] << wrapped + p_num # main text, contents, body KEEP
|
|
257
|
+
@plaintext[:body] << heading_decorated_underscore(dob,wrapped.length,p_num)
|
|
258
|
+
else
|
|
259
|
+
@plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP
|
|
260
|
+
end
|
|
261
|
+
if @@endnotes[:para] \
|
|
262
|
+
and not @@endnotes_
|
|
263
|
+
@@endnotes[:para].each {|e| @plaintext[:body] << e << break_line}
|
|
264
|
+
elsif @@endnotes[:para] \
|
|
265
|
+
and @@endnotes_
|
|
266
|
+
end
|
|
267
|
+
@@endnotes[:para]=[]
|
|
268
|
+
end
|
|
269
|
+
def markup(data) # Used for major markup instructions
|
|
270
|
+
SiSU_Env::InfoEnv.new(@md.fns)
|
|
271
|
+
@data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]}
|
|
272
|
+
(0..6).each { |x| @cont[x]=@level[x]=false }
|
|
273
|
+
(4..6).each { |x| @plaintext_contents_close[x]='' }
|
|
274
|
+
plaintext_tail #($1,$2)
|
|
275
|
+
plaintext_metadata
|
|
276
|
+
table_message='[table conversion awaited, see other document formats]'
|
|
277
|
+
data.each do |dob|
|
|
278
|
+
dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix
|
|
279
|
+
gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]#
|
|
280
|
+
gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
|
|
281
|
+
"#{decorate.bold.open}\\1#{decorate.bold.close}").
|
|
282
|
+
gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
|
|
283
|
+
"#{decorate.italics.open}\\1#{decorate.italics.close}").
|
|
284
|
+
gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
|
|
285
|
+
"#{decorate.underscore.open}\\1#{decorate.underscore.close}").
|
|
286
|
+
gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
|
|
287
|
+
"#{decorate.subscript.open}\\1#{decorate.subscript.close}").
|
|
288
|
+
gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
|
|
289
|
+
"#{decorate.superscript.open}\\1#{decorate.superscript.close}").
|
|
290
|
+
gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
|
|
291
|
+
"#{decorate.insert.open}\\1#{decorate.insert.close}").
|
|
292
|
+
gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
|
|
293
|
+
"#{decorate.cite.open}\\1#{decorate.cite.close}").
|
|
294
|
+
gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
|
|
295
|
+
"#{decorate.strike.open}\\1#{decorate.strike.close}").
|
|
296
|
+
gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
|
|
297
|
+
"#{decorate.monospace.open}\\1#{decorate.monospace.close}")
|
|
298
|
+
unless dob.is==:code
|
|
299
|
+
dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1').
|
|
300
|
+
gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
|
|
301
|
+
gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]').
|
|
302
|
+
gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]').
|
|
303
|
+
gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{the_text.url_open}\\1#{the_text.url_close}")
|
|
304
|
+
extract_endnotes(dob)
|
|
305
|
+
dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up
|
|
306
|
+
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up
|
|
307
|
+
gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<').
|
|
308
|
+
gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>').
|
|
309
|
+
gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&').
|
|
310
|
+
gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!').
|
|
311
|
+
gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#').
|
|
312
|
+
gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*').
|
|
313
|
+
gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-').
|
|
314
|
+
gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/').
|
|
315
|
+
gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_').
|
|
316
|
+
gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').
|
|
317
|
+
gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}').
|
|
318
|
+
gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~').
|
|
319
|
+
gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©').
|
|
320
|
+
gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\')
|
|
321
|
+
end
|
|
322
|
+
dob.obj=if dob.of==:block # watch
|
|
323
|
+
dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* ").
|
|
324
|
+
gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line)
|
|
325
|
+
else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2)
|
|
326
|
+
end
|
|
327
|
+
if dob.is==:code
|
|
328
|
+
dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
|
|
329
|
+
gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
|
|
330
|
+
end
|
|
331
|
+
dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
|
|
332
|
+
gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').
|
|
333
|
+
gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links
|
|
334
|
+
gsub(/ |#{Mx[:nbsp]}/,' '). # decide on
|
|
335
|
+
gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
|
|
336
|
+
gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]').
|
|
337
|
+
gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
|
|
338
|
+
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
339
|
+
p_num=''
|
|
340
|
+
#ocn
|
|
341
|
+
if dob.is==:heading \
|
|
342
|
+
or dob.is==:para
|
|
343
|
+
plaintext_structure(dob,p_num)
|
|
344
|
+
elsif dob.is==:group \
|
|
345
|
+
or dob.is==:block \
|
|
346
|
+
or dob.is==:verse \
|
|
347
|
+
or dob.is==:code \
|
|
348
|
+
or dob.is==:table
|
|
349
|
+
@plaintext[:body] << dob.obj + p_num << break_line
|
|
350
|
+
elsif dob.is==:break
|
|
351
|
+
sp=' '
|
|
352
|
+
ln='-'
|
|
353
|
+
@plaintext[:body] <<=if dob.obj==Mx[:br_page] \
|
|
354
|
+
or dob.obj==Mx[:br_page_new] \
|
|
355
|
+
or dob.obj==Mx[:br_page_line]
|
|
356
|
+
"#{break_line}#{ln*40}#{break_line*2}"
|
|
357
|
+
elsif dob.obj ==Mx[:br_obj]
|
|
358
|
+
"#{break_line}#{sp*20}* * *#{break_line*2}"
|
|
359
|
+
end # following empty line (break_line) missing, fix
|
|
360
|
+
end
|
|
361
|
+
dob='' if (dob.obj =~/<a name="n\d+">/ \
|
|
362
|
+
and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
|
|
363
|
+
if dob ## Clean Prepared Text
|
|
364
|
+
dob.obj=dob.obj.gsub(/<!.+!>/,' ').
|
|
365
|
+
gsub(/<:\S+>/,' ')
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
@plaintext
|
|
370
|
+
end
|
|
371
|
+
def publish(plaintext)
|
|
372
|
+
divider='='
|
|
373
|
+
content=[]
|
|
374
|
+
content << plaintext[:open]
|
|
375
|
+
content << plaintext[:head]
|
|
376
|
+
content << plaintext[:body]
|
|
377
|
+
content << @@endnotes[:end] if @@endnotes_
|
|
378
|
+
content << "#{break_line}#{divider*@wrap_width}#{break_line}"
|
|
379
|
+
content << plaintext[:metadata]
|
|
380
|
+
content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used?
|
|
381
|
+
content << plaintext[:tail]
|
|
382
|
+
outputfile=SiSU_Env::FileOp.new(@md).write_file.markdown
|
|
383
|
+
Txt_Output::Output.new.document(content,outputfile)
|
|
384
|
+
@@endnotes={ para: [], end: [] }
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
end
|
|
389
|
+
__END__
|