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,186 @@
|
|
|
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_rst_decorate.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
|
|
58
|
+
module SiSU_Decorate_Txt_rST
|
|
59
|
+
def decorate
|
|
60
|
+
def heading
|
|
61
|
+
def underscore
|
|
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
|
+
self
|
|
83
|
+
end
|
|
84
|
+
def bold
|
|
85
|
+
def open
|
|
86
|
+
'*'
|
|
87
|
+
end
|
|
88
|
+
def close
|
|
89
|
+
'*'
|
|
90
|
+
end
|
|
91
|
+
self
|
|
92
|
+
end
|
|
93
|
+
def italics
|
|
94
|
+
def open
|
|
95
|
+
'/'
|
|
96
|
+
end
|
|
97
|
+
def close
|
|
98
|
+
'/'
|
|
99
|
+
end
|
|
100
|
+
self
|
|
101
|
+
end
|
|
102
|
+
def underscore
|
|
103
|
+
def open
|
|
104
|
+
'_'
|
|
105
|
+
end
|
|
106
|
+
def close
|
|
107
|
+
'_'
|
|
108
|
+
end
|
|
109
|
+
self
|
|
110
|
+
end
|
|
111
|
+
#def emphasis
|
|
112
|
+
# def open
|
|
113
|
+
# ''
|
|
114
|
+
# end
|
|
115
|
+
# def close
|
|
116
|
+
# ''
|
|
117
|
+
# end
|
|
118
|
+
# self
|
|
119
|
+
#end
|
|
120
|
+
def cite
|
|
121
|
+
def open
|
|
122
|
+
'"'
|
|
123
|
+
end
|
|
124
|
+
def close
|
|
125
|
+
'"'
|
|
126
|
+
end
|
|
127
|
+
self
|
|
128
|
+
end
|
|
129
|
+
def insert
|
|
130
|
+
def open
|
|
131
|
+
'+'
|
|
132
|
+
end
|
|
133
|
+
def close
|
|
134
|
+
'+'
|
|
135
|
+
end
|
|
136
|
+
self
|
|
137
|
+
end
|
|
138
|
+
def strike
|
|
139
|
+
def open
|
|
140
|
+
'-'
|
|
141
|
+
end
|
|
142
|
+
def close
|
|
143
|
+
'-'
|
|
144
|
+
end
|
|
145
|
+
self
|
|
146
|
+
end
|
|
147
|
+
def superscript
|
|
148
|
+
def open
|
|
149
|
+
'^'
|
|
150
|
+
end
|
|
151
|
+
def close
|
|
152
|
+
'^'
|
|
153
|
+
end
|
|
154
|
+
self
|
|
155
|
+
end
|
|
156
|
+
def subscript
|
|
157
|
+
def open
|
|
158
|
+
'['
|
|
159
|
+
end
|
|
160
|
+
def close
|
|
161
|
+
']'
|
|
162
|
+
end
|
|
163
|
+
self
|
|
164
|
+
end
|
|
165
|
+
def hilite
|
|
166
|
+
def open
|
|
167
|
+
'*'
|
|
168
|
+
end
|
|
169
|
+
def close
|
|
170
|
+
'*'
|
|
171
|
+
end
|
|
172
|
+
self
|
|
173
|
+
end
|
|
174
|
+
def monospace
|
|
175
|
+
def open
|
|
176
|
+
'#'
|
|
177
|
+
end
|
|
178
|
+
def close
|
|
179
|
+
'#'
|
|
180
|
+
end
|
|
181
|
+
self
|
|
182
|
+
end
|
|
183
|
+
self
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
__END__
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** modules shared by flatfile output generators
|
|
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_shared.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_TextUtils
|
|
58
|
+
require_relative 'generic_parts' # generic_parts.rb
|
|
59
|
+
class Wrap
|
|
60
|
+
def initialize(para='',n_char_max=76,n_indent=0,n_hang=nil,post='')
|
|
61
|
+
@para,@n_char_max,@n_indent,@post,=para,n_char_max,n_indent,post
|
|
62
|
+
@n_char_max_extend = n_char_max
|
|
63
|
+
@n_hang=n_hang ? n_hang : @n_indent
|
|
64
|
+
end
|
|
65
|
+
def break_line
|
|
66
|
+
"\n"
|
|
67
|
+
end
|
|
68
|
+
def line_wrap
|
|
69
|
+
space=' '
|
|
70
|
+
spaces_indent,spaces_hang="#{break_line}#{space*@n_indent}",space*@n_hang
|
|
71
|
+
line=0
|
|
72
|
+
out=[]
|
|
73
|
+
out[line]=''
|
|
74
|
+
@para=@para.gsub(/<br>/,' \\ ').
|
|
75
|
+
gsub(/#{Mx[:br_nl]}/,"\n\n")
|
|
76
|
+
words=@para.scan(/\n\n|\s+\\\s+|<br>|\S+/m)
|
|
77
|
+
while words != ''
|
|
78
|
+
word=words.shift
|
|
79
|
+
if not word
|
|
80
|
+
out[line] unless out[line].empty? #check
|
|
81
|
+
break
|
|
82
|
+
elsif word =~/<br>/
|
|
83
|
+
word=nil
|
|
84
|
+
out[line]=out[line].gsub(/<br>/,'')
|
|
85
|
+
line=line
|
|
86
|
+
elsif word =~/\n\n/
|
|
87
|
+
word="\n"
|
|
88
|
+
@n_char_max_extend = @n_char_max
|
|
89
|
+
line += 1
|
|
90
|
+
elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \
|
|
91
|
+
and out[line] =~/\S+/
|
|
92
|
+
@n_char_max_extend = @n_char_max
|
|
93
|
+
out[line].squeeze!(' ')
|
|
94
|
+
line += 1
|
|
95
|
+
end
|
|
96
|
+
if word
|
|
97
|
+
out[line]=if out[line] \
|
|
98
|
+
and out[line] !~/\S+$/m
|
|
99
|
+
"#{out[line]}#{word}"
|
|
100
|
+
elsif out[line] \
|
|
101
|
+
and out[line] =~/\S+/
|
|
102
|
+
"#{out[line]} #{word}"
|
|
103
|
+
else "#{word.strip}"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
@oldword=word if word =~/\S+/
|
|
107
|
+
end
|
|
108
|
+
post=(@post.empty?) \
|
|
109
|
+
? ''
|
|
110
|
+
: "\n" + (' '*@n_indent) +@post
|
|
111
|
+
spaces_hang + out.join(spaces_indent) + post
|
|
112
|
+
end
|
|
113
|
+
def line_wrap_indent1
|
|
114
|
+
@n_indent,@n_hang=2,2
|
|
115
|
+
line_wrap
|
|
116
|
+
end
|
|
117
|
+
def line_wrap_endnote
|
|
118
|
+
@n_indent,@n_hang=4,2
|
|
119
|
+
line_wrap
|
|
120
|
+
end
|
|
121
|
+
def array_wrap
|
|
122
|
+
if @para.is_a?(Array)
|
|
123
|
+
@arr=[]
|
|
124
|
+
@para.each do |line|
|
|
125
|
+
@arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
@arr
|
|
129
|
+
end
|
|
130
|
+
def no_wrap
|
|
131
|
+
@para
|
|
132
|
+
end
|
|
133
|
+
def no_wrap_no_breaks
|
|
134
|
+
@para.gsub(/\n/m,' ').gsub(/\s\s+/,' ')
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
class HeaderScan
|
|
138
|
+
def initialize(md,para)
|
|
139
|
+
@md,@p=md,para
|
|
140
|
+
end
|
|
141
|
+
def extract(tag,tag_content,type,attrib)
|
|
142
|
+
if dc_tag \
|
|
143
|
+
and dc_content
|
|
144
|
+
[dc_tag,dc_content,{dc_tag=>dc_content}]
|
|
145
|
+
else nil
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825
|
|
149
|
+
@tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib
|
|
150
|
+
def label #element
|
|
151
|
+
@tag
|
|
152
|
+
end
|
|
153
|
+
def type
|
|
154
|
+
@type
|
|
155
|
+
end
|
|
156
|
+
def text
|
|
157
|
+
@tag_content
|
|
158
|
+
end
|
|
159
|
+
def info #element text
|
|
160
|
+
@tag_content
|
|
161
|
+
end
|
|
162
|
+
def attribute
|
|
163
|
+
@attrib
|
|
164
|
+
end
|
|
165
|
+
def element
|
|
166
|
+
@tag
|
|
167
|
+
end
|
|
168
|
+
def attrib
|
|
169
|
+
@attrib
|
|
170
|
+
end
|
|
171
|
+
def el
|
|
172
|
+
@tag
|
|
173
|
+
end
|
|
174
|
+
self
|
|
175
|
+
end
|
|
176
|
+
def start_is_match
|
|
177
|
+
case @p
|
|
178
|
+
when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1
|
|
179
|
+
when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2
|
|
180
|
+
when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3
|
|
181
|
+
when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4
|
|
182
|
+
when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5
|
|
183
|
+
when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6
|
|
184
|
+
when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7
|
|
185
|
+
when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
186
|
+
when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
187
|
+
when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
188
|
+
when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
189
|
+
when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
190
|
+
when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8
|
|
191
|
+
when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9
|
|
192
|
+
when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10
|
|
193
|
+
when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11
|
|
194
|
+
when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12
|
|
195
|
+
when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13
|
|
196
|
+
when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14
|
|
197
|
+
when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15
|
|
198
|
+
when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
199
|
+
when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
200
|
+
when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2)
|
|
201
|
+
when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2)
|
|
202
|
+
when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
203
|
+
when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
204
|
+
when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
205
|
+
when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
206
|
+
when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
207
|
+
when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
208
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra')
|
|
209
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra')
|
|
210
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra')
|
|
211
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra')
|
|
212
|
+
when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct')
|
|
213
|
+
when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct')
|
|
214
|
+
when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
215
|
+
when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct')
|
|
216
|
+
when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct')
|
|
217
|
+
when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct')
|
|
218
|
+
when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
219
|
+
when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b
|
|
220
|
+
when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
221
|
+
when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
222
|
+
when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
223
|
+
when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct')
|
|
224
|
+
else nil
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
def dublin
|
|
228
|
+
if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
|
|
229
|
+
start_is_match
|
|
230
|
+
else nil
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
def meta
|
|
234
|
+
if @p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/
|
|
235
|
+
start_is_match
|
|
236
|
+
else nil
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
__END__
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** plaintext (smarttext) generation, textile
|
|
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_textile.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Txt_Textile
|
|
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_textile_decorate' # txt_textile_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
|
+
#include SiSU_Parts_Generic
|
|
73
|
+
def initialize(opt)
|
|
74
|
+
@opt=opt
|
|
75
|
+
unless @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/
|
|
76
|
+
puts "#{sf} not a processed file type"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
def read
|
|
80
|
+
begin
|
|
81
|
+
md=SiSU_Param::Parameters.new(@opt).get
|
|
82
|
+
specific={
|
|
83
|
+
description: 'Textile (plaintext utf-8)',
|
|
84
|
+
output_path: md.file.output_path.textile.dir,
|
|
85
|
+
output_file: md.file.base_filename.textile,
|
|
86
|
+
}
|
|
87
|
+
read_generic(@opt,specific)
|
|
88
|
+
SiSU_Txt_Textile::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet
|
|
89
|
+
rescue
|
|
90
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
91
|
+
__LINE__.to_s + ':' + __FILE__
|
|
92
|
+
end
|
|
93
|
+
ensure
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
private
|
|
97
|
+
class Scroll <Source
|
|
98
|
+
include SiSU_Parts_Generic
|
|
99
|
+
include SiSU_TextUtils
|
|
100
|
+
include SiSU_Decorate_Txt_Textile
|
|
101
|
+
@@endnotes={ para: [], end: [] }
|
|
102
|
+
def initialize(md,data,wrap_width)
|
|
103
|
+
@md,@data,@wrap_width=md,data,wrap_width
|
|
104
|
+
@env=SiSU_Env::InfoEnv.new(@md.fns)
|
|
105
|
+
@tab="\t"
|
|
106
|
+
@@endnotes_=case md.opt.selections.str
|
|
107
|
+
when /--footnote/ then false
|
|
108
|
+
when /--endnote/ then true
|
|
109
|
+
else true
|
|
110
|
+
end
|
|
111
|
+
@plaintext={ body: [], open: [], close: [], head: [], metadata: [], tail: [] }
|
|
112
|
+
end
|
|
113
|
+
def songsheet
|
|
114
|
+
plaintext=markup(@data)
|
|
115
|
+
publish(plaintext)
|
|
116
|
+
end
|
|
117
|
+
def break_line
|
|
118
|
+
"\n"
|
|
119
|
+
end
|
|
120
|
+
# Used for extraction of endnotes from paragraphs
|
|
121
|
+
def extract_endnotes(dob='')
|
|
122
|
+
notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
|
|
123
|
+
@n=[]
|
|
124
|
+
notes.flatten.each do |n| #high cost to deal with <br> appropriately within plaintext, consider
|
|
125
|
+
n=n.dup.to_s
|
|
126
|
+
if n =~/#{Mx[:br_line]}|#{Mx[:br_nl]}/
|
|
127
|
+
fix = n.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/) #watch #added
|
|
128
|
+
fix.each do |x|
|
|
129
|
+
unless x.empty?; @n << x
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
else @n << n
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
notes=@n.flatten
|
|
136
|
+
notes.each do |e|
|
|
137
|
+
util=(e.to_s =~/^\[[\d*+]+\]:/) \
|
|
138
|
+
? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1))
|
|
139
|
+
: (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,1,1))
|
|
140
|
+
wrap=util.line_wrap
|
|
141
|
+
wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m
|
|
142
|
+
wrap.gsub(/^(\s*)([\d*+]+)\s+(.+?)\s*\Z/m, <<-GSUB
|
|
143
|
+
\\1[\\2]: \\3
|
|
144
|
+
GSUB
|
|
145
|
+
)
|
|
146
|
+
else
|
|
147
|
+
wrap.gsub(/^(.+)\Z/m, <<-GSUB
|
|
148
|
+
\\1
|
|
149
|
+
GSUB
|
|
150
|
+
)
|
|
151
|
+
end
|
|
152
|
+
@@endnotes[:para] << "-#{wrap}"
|
|
153
|
+
@@endnotes[:end] << '' << wrap
|
|
154
|
+
end
|
|
155
|
+
@@endnotes
|
|
156
|
+
end
|
|
157
|
+
def plaintext_metadata
|
|
158
|
+
array=SiSU_Metadata::Summary.new(@md).plaintext.metadata
|
|
159
|
+
array.each do |meta|
|
|
160
|
+
tag,inf=meta.scan(/^.+?:\s|.+/)
|
|
161
|
+
if tag and inf
|
|
162
|
+
util=SiSU_TextUtils::Wrap.new(inf,@wrap_width,15,1)
|
|
163
|
+
txt=util.line_wrap
|
|
164
|
+
@plaintext[:metadata] <<<<WOK
|
|
165
|
+
|
|
166
|
+
#{@tab}#{tag}#{txt}
|
|
167
|
+
WOK
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
def plaintext_tail
|
|
172
|
+
# env=SiSU_Env::InfoEnv.new(@md.fns)
|
|
173
|
+
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
|
|
174
|
+
lastdone="Last Generated on: #{Time.now}"
|
|
175
|
+
rubyv="Ruby version: #{@md.ruby_version}"
|
|
176
|
+
sc=if @md.sc_info
|
|
177
|
+
"Source file: #{@md.sc_filename}#{break_line}Version number: #{@md.sc_number}#{break_line}Version date: #{@md.sc_date}#{break_line}"
|
|
178
|
+
else ''
|
|
179
|
+
end
|
|
180
|
+
@plaintext[:tail] <<<<WOK
|
|
181
|
+
#{break_line}
|
|
182
|
+
plaintext (plain text):
|
|
183
|
+
#{@md.file.output_path.textile.url}/#{@md.file.base_filename.textile}#{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
|
+
util=nil
|
|
213
|
+
wrapped=if dob.is==:para \
|
|
214
|
+
|| dob.is==:heading
|
|
215
|
+
if dob.is==:heading
|
|
216
|
+
util=SiSU_TextUtils::Wrap.new(heading_decorated_inline(dob),@wrap_width,0,0)
|
|
217
|
+
elsif dob.is==:para
|
|
218
|
+
if dob.hang \
|
|
219
|
+
and dob.hang =~/[0-9]/ \
|
|
220
|
+
and dob.indent != dob.hang
|
|
221
|
+
util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2,dob.hang.to_i*2)
|
|
222
|
+
#util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.hang.to_i*2,0)
|
|
223
|
+
elsif dob.indent =~/[1-9]/
|
|
224
|
+
util=if dob.bullet_
|
|
225
|
+
SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,dob.indent.to_i*2)
|
|
226
|
+
else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,dob.indent.to_i*2)
|
|
227
|
+
end
|
|
228
|
+
else
|
|
229
|
+
util=if dob.bullet_
|
|
230
|
+
SiSU_TextUtils::Wrap.new("* #{dob.obj}",@wrap_width,0)
|
|
231
|
+
else SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
else util=SiSU_TextUtils::Wrap.new(dob.obj,@wrap_width,0)
|
|
235
|
+
end
|
|
236
|
+
dob.is==:heading ? util.no_wrap_no_breaks : util.line_wrap
|
|
237
|
+
end
|
|
238
|
+
@plaintext[:body] << wrapped + p_num << break_line # main text, contents, body KEEP
|
|
239
|
+
if @@endnotes[:para] \
|
|
240
|
+
and not @@endnotes_
|
|
241
|
+
@@endnotes[:para].each {|e| @plaintext[:body] << e << break_line}
|
|
242
|
+
elsif @@endnotes[:para] \
|
|
243
|
+
and @@endnotes_
|
|
244
|
+
end
|
|
245
|
+
@@endnotes[:para]=[]
|
|
246
|
+
end
|
|
247
|
+
def markup(data) # Used for major markup instructions
|
|
248
|
+
SiSU_Env::InfoEnv.new(@md.fns)
|
|
249
|
+
@data_mod,@endnotes,@level,@cont,@copen,@plaintext_contents_close=Array.new(6){[]}
|
|
250
|
+
(0..6).each { |x| @cont[x]=@level[x]=false }
|
|
251
|
+
(4..6).each { |x| @plaintext_contents_close[x]='' }
|
|
252
|
+
plaintext_tail #($1,$2)
|
|
253
|
+
plaintext_metadata
|
|
254
|
+
table_message='[table conversion awaited, see other document formats]'
|
|
255
|
+
data.each do |dob|
|
|
256
|
+
dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+/um,"#{break_line}#{table_message}"). #fix
|
|
257
|
+
gsub(/.+?#{Mx[:gl_o]}-##{Mx[:gl_c]}/,''). # remove dummy headings (used by html) #check also [~-]#
|
|
258
|
+
gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
|
|
259
|
+
"#{decorate.bold.open}\\1#{decorate.bold.close}").
|
|
260
|
+
gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
|
|
261
|
+
"#{decorate.italics.open}\\1#{decorate.italics.close}").
|
|
262
|
+
gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
|
|
263
|
+
"#{decorate.underscore.open}\\1#{decorate.underscore.close}").
|
|
264
|
+
gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
|
|
265
|
+
"#{decorate.subscript.open}\\1#{decorate.subscript.close}").
|
|
266
|
+
gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
|
|
267
|
+
"#{decorate.superscript.open}\\1#{decorate.superscript.close}").
|
|
268
|
+
gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,
|
|
269
|
+
"#{decorate.insert.open}\\1#{decorate.insert.close}").
|
|
270
|
+
gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,
|
|
271
|
+
"#{decorate.cite.open}\\1#{decorate.cite.close}").
|
|
272
|
+
gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,
|
|
273
|
+
"#{decorate.strike.open}\\1#{decorate.strike.close}").
|
|
274
|
+
gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
|
|
275
|
+
"#{decorate.monospace.open}\\1#{decorate.monospace.close}")
|
|
276
|
+
unless dob.is==:code
|
|
277
|
+
dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/,'\1').
|
|
278
|
+
gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
|
|
279
|
+
gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,'\1 [link: <\2>]').
|
|
280
|
+
gsub(/#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}image/,'\1 [link: local image]').
|
|
281
|
+
gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,"#{the_text.url_open}\\1#{the_text.url_close}")
|
|
282
|
+
extract_endnotes(dob)
|
|
283
|
+
dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'[^\1]'). # endnote marker marked up
|
|
284
|
+
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'[^\1]'). # endnote marker marked up
|
|
285
|
+
gsub(/#{Mx[:gl_o]}(?:#lt|#060)#{Mx[:gl_c]}/,'<').
|
|
286
|
+
gsub(/#{Mx[:gl_o]}(?:#gt|#062)#{Mx[:gl_c]}/,'>').
|
|
287
|
+
gsub(/#{Mx[:gl_o]}#(?:038|amp)#{Mx[:gl_c]}/,'&').
|
|
288
|
+
gsub(/#{Mx[:gl_o]}#033#{Mx[:gl_c]}/,'!').
|
|
289
|
+
gsub(/#{Mx[:gl_o]}#035#{Mx[:gl_c]}/,'#').
|
|
290
|
+
gsub(/#{Mx[:gl_o]}#042#{Mx[:gl_c]}/,'*').
|
|
291
|
+
gsub(/#{Mx[:gl_o]}#045#{Mx[:gl_c]}/,'-').
|
|
292
|
+
gsub(/#{Mx[:gl_o]}#047#{Mx[:gl_c]}/,'/').
|
|
293
|
+
gsub(/#{Mx[:gl_o]}#095#{Mx[:gl_c]}/,'_').
|
|
294
|
+
gsub(/#{Mx[:gl_o]}#123#{Mx[:gl_c]}/,'{').
|
|
295
|
+
gsub(/#{Mx[:gl_o]}#125#{Mx[:gl_c]}/,'}').
|
|
296
|
+
gsub(/#{Mx[:gl_o]}#126#{Mx[:gl_c]}/,'~').
|
|
297
|
+
gsub(/#{Mx[:gl_o]}#169#{Mx[:gl_c]}/,'©').
|
|
298
|
+
gsub(/#{Mx[:gl_o]}#092#{Mx[:gl_c]}/,'\\')
|
|
299
|
+
end
|
|
300
|
+
dob.obj=if dob.of==:block # watch
|
|
301
|
+
dob.obj.gsub(/#{Mx[:gl_o]}●#{Mx[:gl_c]}/m,"* ").
|
|
302
|
+
gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line)
|
|
303
|
+
else dob.obj.gsub(/\n?#{Mx[:br_line]}\n?|\n?#{Mx[:br_nl]}\n?/m,break_line*2)
|
|
304
|
+
end
|
|
305
|
+
if dob.is==:code
|
|
306
|
+
dob.obj=dob.obj.gsub(/(^|[^}])_([<>])/m,'\1\2'). # _> _<
|
|
307
|
+
gsub(/(^|[^}])_([<>])/m,'\1\2') # _<_<
|
|
308
|
+
end
|
|
309
|
+
dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,'\1').
|
|
310
|
+
gsub(/<a href=".+?">(.+?)<\/a>/m,'\1').
|
|
311
|
+
gsub(/#{Mx[:mk_o]}:name#(\S+?)#{Mx[:mk_c]}/,''). # remove name links
|
|
312
|
+
gsub(/ |#{Mx[:nbsp]}/,' '). # decide on
|
|
313
|
+
gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [ \1 ]'). #"[ #{dir.url.images_local}\/\\1 ]")
|
|
314
|
+
gsub(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+?\.(?:png|jpg|gif)) .+?#{Mx[:lnk_c]}image/,' [ \1 ]').
|
|
315
|
+
gsub(/(?:^|[^_\\])\{\s*\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"\s*\}\S+/,'[image: "\1"]')
|
|
316
|
+
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
317
|
+
p_num=''
|
|
318
|
+
#ocn
|
|
319
|
+
if dob.is==:heading \
|
|
320
|
+
or dob.is==:para
|
|
321
|
+
plaintext_structure(dob,p_num)
|
|
322
|
+
elsif dob.is==:group \
|
|
323
|
+
or dob.is==:block \
|
|
324
|
+
or dob.is==:verse \
|
|
325
|
+
or dob.is==:code \
|
|
326
|
+
or dob.is==:table
|
|
327
|
+
@plaintext[:body] << dob.obj + p_num << break_line
|
|
328
|
+
elsif dob.is==:break
|
|
329
|
+
sp=' '
|
|
330
|
+
ln='-'
|
|
331
|
+
@plaintext[:body] <<=if dob.obj==Mx[:br_page] \
|
|
332
|
+
or dob.obj==Mx[:br_page_new] \
|
|
333
|
+
or dob.obj==Mx[:br_page_line]
|
|
334
|
+
"#{break_line}#{ln*40}#{break_line*2}"
|
|
335
|
+
elsif dob.obj ==Mx[:br_obj]
|
|
336
|
+
"#{break_line}#{sp*20}* * *#{break_line*2}"
|
|
337
|
+
end # following empty line (break_line) missing, fix
|
|
338
|
+
end
|
|
339
|
+
dob='' if (dob.obj =~/<a name="n\d+">/ \
|
|
340
|
+
and dob.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
|
|
341
|
+
if dob ## Clean Prepared Text
|
|
342
|
+
dob.obj=dob.obj.gsub(/<!.+!>/,' ').
|
|
343
|
+
gsub(/<:\S+>/,' ')
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
@plaintext
|
|
348
|
+
end
|
|
349
|
+
def publish(plaintext)
|
|
350
|
+
divider='='
|
|
351
|
+
content=[]
|
|
352
|
+
content << plaintext[:open]
|
|
353
|
+
content << plaintext[:head]
|
|
354
|
+
content << plaintext[:body]
|
|
355
|
+
content << @@endnotes[:end] if @@endnotes_
|
|
356
|
+
content << "#{break_line}#{divider*@wrap_width}#{break_line}"
|
|
357
|
+
content << plaintext[:metadata]
|
|
358
|
+
content << "#{break_line}#{divider*@wrap_width}#{break_line}" if @md.stmp =~/\w+/ #not used?
|
|
359
|
+
content << plaintext[:tail]
|
|
360
|
+
outputfile=SiSU_Env::FileOp.new(@md).write_file.textile
|
|
361
|
+
Txt_Output::Output.new.document(content,outputfile)
|
|
362
|
+
@@endnotes={ para: [], end: [] }
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
__END__
|