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,893 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** metadata harvest, extract topics and associated writings from document set
|
|
8
|
+
(topics use topic_register header)
|
|
9
|
+
|
|
10
|
+
** Author: Ralph Amissah
|
|
11
|
+
<ralph@amissah.com>
|
|
12
|
+
<ralph.amissah@gmail.com>
|
|
13
|
+
|
|
14
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
15
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
16
|
+
All Rights Reserved.
|
|
17
|
+
|
|
18
|
+
** License: GPL 3 or later:
|
|
19
|
+
|
|
20
|
+
SiSU, a framework for document structuring, publishing and search
|
|
21
|
+
|
|
22
|
+
Copyright (C) Ralph Amissah
|
|
23
|
+
|
|
24
|
+
This program is free software: you can redistribute it and/or modify it
|
|
25
|
+
under the terms of the GNU General Public License as published by the Free
|
|
26
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
27
|
+
any later version.
|
|
28
|
+
|
|
29
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
30
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
31
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
32
|
+
more details.
|
|
33
|
+
|
|
34
|
+
You should have received a copy of the GNU General Public License along with
|
|
35
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
36
|
+
|
|
37
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
38
|
+
available at these locations:
|
|
39
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
40
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
41
|
+
|
|
42
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
43
|
+
|
|
44
|
+
** SiSU uses:
|
|
45
|
+
* Standard SiSU markup syntax,
|
|
46
|
+
* Standard SiSU meta-markup syntax, and the
|
|
47
|
+
* Standard SiSU object citation numbering and system
|
|
48
|
+
|
|
49
|
+
** Hompages:
|
|
50
|
+
<http://www.jus.uio.no/sisu>
|
|
51
|
+
<http://www.sisudoc.org>
|
|
52
|
+
|
|
53
|
+
** Git
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
55
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/harvest_topics.rb;hb=HEAD>
|
|
56
|
+
|
|
57
|
+
=end
|
|
58
|
+
module SiSU_HarvestTopics
|
|
59
|
+
require_relative 'html_harvest_author_format' # html_harvest_author_format.rb
|
|
60
|
+
require_relative 'html_parts' # html_parts.rb
|
|
61
|
+
class Songsheet
|
|
62
|
+
@@the_idx_topics={}
|
|
63
|
+
def initialize(opt,env)
|
|
64
|
+
@opt,@env=opt,env
|
|
65
|
+
@file_list=opt.files
|
|
66
|
+
end
|
|
67
|
+
def songsheet
|
|
68
|
+
idx_array={}
|
|
69
|
+
@opt.f_pths.each do |y|
|
|
70
|
+
lang_hash_file_array={}
|
|
71
|
+
name=y[:f]
|
|
72
|
+
filename=y[:pth] + '/' + y[:f]
|
|
73
|
+
File.open(filename,'r') do |file|
|
|
74
|
+
file.each_line("\n\n") do |line|
|
|
75
|
+
if line =~/^@(?:title|creator|classify):(?:\s|$)/m
|
|
76
|
+
lang_hash_file_array[y[:lng_is]] ||= []
|
|
77
|
+
lang_hash_file_array[y[:lng_is]] << line
|
|
78
|
+
elsif line =~/^@\S+?:(?:\s|$)/m \
|
|
79
|
+
or line =~/^(?:\s*\n|\s*$|%+ )/
|
|
80
|
+
else break
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
lang_hash_file_array.each_pair do |lang,a|
|
|
85
|
+
idx_array[lang] ||=[]
|
|
86
|
+
idx_array=SiSU_HarvestTopics::Harvest.new(
|
|
87
|
+
@opt,
|
|
88
|
+
@env,
|
|
89
|
+
a,
|
|
90
|
+
filename,
|
|
91
|
+
name,
|
|
92
|
+
idx_array,
|
|
93
|
+
lang
|
|
94
|
+
).extract_harvest
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
the_hash=SiSU_HarvestTopics::Index.new(
|
|
98
|
+
@opt,
|
|
99
|
+
@env,
|
|
100
|
+
idx_array,
|
|
101
|
+
@@the_idx_topics
|
|
102
|
+
).song
|
|
103
|
+
SiSU_HarvestTopics::OutputIndex.new(
|
|
104
|
+
@opt,
|
|
105
|
+
the_hash
|
|
106
|
+
).html_print.html_songsheet
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
class Mix
|
|
110
|
+
def spaces
|
|
111
|
+
Ax[:spaces]
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
class Harvest
|
|
115
|
+
def initialize(opt,env,data,filename,name,idx_array,lang)
|
|
116
|
+
@opt, @env,@data,@filename,@name,@idx_array,@lang=
|
|
117
|
+
opt,env, data, filename, name, idx_array, lang
|
|
118
|
+
end
|
|
119
|
+
def extract_harvest
|
|
120
|
+
data, filename, name, idx_array, lang=
|
|
121
|
+
@data,@filename,@name,@idx_array,@lang
|
|
122
|
+
@idx_lst=@title=@subtitle=@fulltitle=@author=@author_format=nil
|
|
123
|
+
rgx={}
|
|
124
|
+
rgx[:author]=/^@creator:(?:[ ]+|.+?:author:[ ]+)(.+?)(?:\||\n)/m
|
|
125
|
+
rgx[:title]=/^@title:[ ]+(.+)/
|
|
126
|
+
rgx[:subtitle]=/^@title:.+?:subtitle:[ ]+(.+?)\n/m
|
|
127
|
+
rgx[:idx]=/^@classify:.+?:topic_register:[ ]+(.+?)(?:\n\n|\n\s+:\S|\n%)/m
|
|
128
|
+
data.each do |para|
|
|
129
|
+
if para=~ rgx[:idx]
|
|
130
|
+
@idx_list=(rgx[:idx].match(para)[1]).split(/\s*\n\s*/).join
|
|
131
|
+
end
|
|
132
|
+
if para=~ rgx[:title]
|
|
133
|
+
@title=rgx[:title].match(para)[1]
|
|
134
|
+
end
|
|
135
|
+
if para=~ rgx[:subtitle]
|
|
136
|
+
@subtitle=rgx[:subtitle].match(para)[1]
|
|
137
|
+
end
|
|
138
|
+
if para=~ rgx[:author]
|
|
139
|
+
@author_format=rgx[:author].match(para)[1]
|
|
140
|
+
end
|
|
141
|
+
break if @title && @subtitle && @author && @idx_lst
|
|
142
|
+
end
|
|
143
|
+
@fulltitle=@subtitle ? (@title + ' - ' + @subtitle) : @title
|
|
144
|
+
if @title \
|
|
145
|
+
and @author_format \
|
|
146
|
+
and @idx_list
|
|
147
|
+
creator=SiSU_FormatAuthor::Author.new(@author_format.strip).author_details
|
|
148
|
+
@authors,@authorship=creator[:authors],creator[:authorship]
|
|
149
|
+
file=if name=~/~[a-z]{2,3}\.ss[mt]$/
|
|
150
|
+
name.sub(/~[a-z]{2,3}\.ss[mt]$/,'')
|
|
151
|
+
else
|
|
152
|
+
name.sub(/\.ss[mt]$/,'')
|
|
153
|
+
end
|
|
154
|
+
page=if @env.output_dir_structure.by? == :language
|
|
155
|
+
"#{lang}/sisu_manifest.html"
|
|
156
|
+
else
|
|
157
|
+
"sisu_manifest.#{lang}.html"
|
|
158
|
+
end
|
|
159
|
+
idx_array[lang] <<=if @idx_list =~/;/
|
|
160
|
+
g=@idx_list.scan(/[^;]+/)
|
|
161
|
+
g.each.map do |i|
|
|
162
|
+
i=i.strip
|
|
163
|
+
{
|
|
164
|
+
filename: filename,
|
|
165
|
+
file: file,
|
|
166
|
+
rough_idx: i,
|
|
167
|
+
title: @fulltitle,
|
|
168
|
+
author: creator,
|
|
169
|
+
page: page,
|
|
170
|
+
lang: lang
|
|
171
|
+
}
|
|
172
|
+
end
|
|
173
|
+
else {
|
|
174
|
+
filename: filename,
|
|
175
|
+
file: file,
|
|
176
|
+
rough_idx: @idx_list,
|
|
177
|
+
title: @fulltitle,
|
|
178
|
+
author: creator,
|
|
179
|
+
page: page,
|
|
180
|
+
lang: lang,
|
|
181
|
+
}
|
|
182
|
+
end
|
|
183
|
+
else
|
|
184
|
+
if (@opt.act[:verbose_plus][:set]==:on \
|
|
185
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
186
|
+
p "missing required field in #{@filename} - [title]: <<#{@title}>>; [author]: <<#{@author_format}>>; [idx]: <<#{@idx_list}>>"
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
idx_array[lang]=idx_array[lang].flatten
|
|
190
|
+
idx_array
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
class Index < Mix
|
|
194
|
+
def initialize(opt,env,idx_array,the_idx)
|
|
195
|
+
@opt, @env,@idx_array,@the_idx=
|
|
196
|
+
opt,env, idx_array, the_idx
|
|
197
|
+
@@the_idx_topics=@the_idx
|
|
198
|
+
end
|
|
199
|
+
def song
|
|
200
|
+
the_idx=construct_book_topic_keys
|
|
201
|
+
construct_book_topic_hash(the_idx)
|
|
202
|
+
end
|
|
203
|
+
def capital(txt)
|
|
204
|
+
txt_a=txt.scan(/\S+/)
|
|
205
|
+
tx=''
|
|
206
|
+
txt_a.each do |t|
|
|
207
|
+
tx += t[0].chr.capitalize + t[1,txt.length] + ' '
|
|
208
|
+
end
|
|
209
|
+
tx.strip
|
|
210
|
+
end
|
|
211
|
+
def capital_(txt)
|
|
212
|
+
txt[0].chr.capitalize + txt[1,txt.length]
|
|
213
|
+
end
|
|
214
|
+
def contents(idx,lang)
|
|
215
|
+
names=''
|
|
216
|
+
idx[:author][:last_first_format_a].each do |n|
|
|
217
|
+
s=n.sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_')
|
|
218
|
+
names=if @env.output_dir_structure.by? == :language
|
|
219
|
+
names += %{<a href="authors.html##{s}">#{n}</a>, }
|
|
220
|
+
else
|
|
221
|
+
names += %{<a href="authors.#{lang}.html##{s}">#{n}</a>, }
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
{
|
|
225
|
+
filename: idx[:filename],
|
|
226
|
+
file: idx[:file],
|
|
227
|
+
author: names,
|
|
228
|
+
title: idx[:title],
|
|
229
|
+
page: idx[:page]
|
|
230
|
+
}
|
|
231
|
+
end
|
|
232
|
+
def capital_(txt)
|
|
233
|
+
txt[0].chr.capitalize + txt[1,txt.length]
|
|
234
|
+
end
|
|
235
|
+
def key_create(c,alt)
|
|
236
|
+
x=nil
|
|
237
|
+
x=if c.length==6
|
|
238
|
+
c[0].to_s + '|' +
|
|
239
|
+
capital(c[1][0].to_s) + '|' +
|
|
240
|
+
capital(c[2][0].to_s) + '|' +
|
|
241
|
+
capital(c[3][0].to_s) + '|' +
|
|
242
|
+
capital(alt.to_s)
|
|
243
|
+
elsif c.length==5
|
|
244
|
+
c[0].to_s + '|' +
|
|
245
|
+
capital(c[1][0].to_s) + '|' +
|
|
246
|
+
capital(c[2][0].to_s) + '|' +
|
|
247
|
+
capital(alt.to_s)
|
|
248
|
+
elsif c.length==4
|
|
249
|
+
c[0].to_s + '|' +
|
|
250
|
+
capital(c[1][0].to_s) + '|' +
|
|
251
|
+
capital(alt.to_s)
|
|
252
|
+
elsif c.length==3
|
|
253
|
+
c[0].to_s + '|' +
|
|
254
|
+
capital(alt.to_s)
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
def construct_book_topic_keys
|
|
258
|
+
idx_array=@idx_array
|
|
259
|
+
@idx_a=[]
|
|
260
|
+
@the_a=[]
|
|
261
|
+
idx_array.each_pair do |lang,idx_arr|
|
|
262
|
+
@@the_idx_topics[lang] ||= {}
|
|
263
|
+
idx_arr.each do |idx|
|
|
264
|
+
if idx[:rough_idx]
|
|
265
|
+
idx_lst=idx[:rough_idx].scan(/[^:]+/)
|
|
266
|
+
else
|
|
267
|
+
puts "no topic register in: << #{idx[:filename]} >>"
|
|
268
|
+
next
|
|
269
|
+
end
|
|
270
|
+
idx_a=[]
|
|
271
|
+
idx_lst.each do |c|
|
|
272
|
+
idx_a << c.scan(/[^|\n]+/m)
|
|
273
|
+
end
|
|
274
|
+
idx_a << contents(idx,lang)
|
|
275
|
+
@idx_a << [lang] + idx_a
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
@idx_a.each do |c|
|
|
279
|
+
if c.length > 1 \
|
|
280
|
+
and c.is_a?(Array)
|
|
281
|
+
if c[2].is_a?(Hash)
|
|
282
|
+
c[1].each do |alt|
|
|
283
|
+
v=key_create(c,alt)
|
|
284
|
+
@the_a << [v, c[2]] if v
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
if c.length > 2 \
|
|
289
|
+
and c.is_a?(Array)
|
|
290
|
+
if c[3].is_a?(Hash)
|
|
291
|
+
c[2].each do |alt|
|
|
292
|
+
v=key_create(c,alt)
|
|
293
|
+
@the_a << [v, c[3]] if v
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
if c.length > 3 \
|
|
298
|
+
and c.is_a?(Array)
|
|
299
|
+
if c[4].is_a?(Hash)
|
|
300
|
+
c[3].each do |alt|
|
|
301
|
+
v=key_create(c,alt)
|
|
302
|
+
@the_a << [v, c[4]] if v
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
end
|
|
306
|
+
if c.length > 4 \
|
|
307
|
+
and c.is_a?(Array)
|
|
308
|
+
if c[5].is_a?(Hash)
|
|
309
|
+
c[4].each do |alt|
|
|
310
|
+
v=key_create(c,alt)
|
|
311
|
+
@the_a << [v, c[5]] if v
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
if c.length > 5 \
|
|
316
|
+
and c.is_a?(Array)
|
|
317
|
+
if c[6].is_a?(Hash)
|
|
318
|
+
c[5].each do |alt|
|
|
319
|
+
v=key_create(c,alt)
|
|
320
|
+
@the_a << [v, c[6]] if v
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
@the_a.sort_by { |x| x[0] } #; y.each {|z| puts z}
|
|
326
|
+
end
|
|
327
|
+
def construct_book_topic_hash(t)
|
|
328
|
+
@the_h={}
|
|
329
|
+
t.each do |z|
|
|
330
|
+
x=z[0].scan(/[^|]+/)
|
|
331
|
+
depth=x.length
|
|
332
|
+
extract=(depth-1)
|
|
333
|
+
k=case extract
|
|
334
|
+
when 4
|
|
335
|
+
{ x[0] => { x[1] => { x[2] => { x[3] => { x[4] => z[1] } } } } }
|
|
336
|
+
when 3
|
|
337
|
+
{ x[0] => { x[1] => { x[2] => { x[3] => z[1] } } } }
|
|
338
|
+
when 2
|
|
339
|
+
{ x[0] => { x[1] => { x[2] => z[1] } } }
|
|
340
|
+
when 1
|
|
341
|
+
{ x[0] => { x[1] => z[1] } }
|
|
342
|
+
when 0
|
|
343
|
+
{ x[0] => z[1] }
|
|
344
|
+
end
|
|
345
|
+
if extract >= 0
|
|
346
|
+
k.each_pair do |x0,y0|
|
|
347
|
+
if extract == 0
|
|
348
|
+
@the_h[x0] ||={ md: [] }
|
|
349
|
+
@the_h[x0][:md] << y0
|
|
350
|
+
else
|
|
351
|
+
@the_h[x0] ||={}
|
|
352
|
+
end
|
|
353
|
+
#puts spaces*0 + x0
|
|
354
|
+
if extract >= 1
|
|
355
|
+
y0.each_pair do |x1,y1|
|
|
356
|
+
if extract == 1
|
|
357
|
+
@the_h[x0][x1] ||={ md: [] }
|
|
358
|
+
@the_h[x0][x1][:md] << y1
|
|
359
|
+
else
|
|
360
|
+
@the_h[x0][x1] ||={}
|
|
361
|
+
end
|
|
362
|
+
#puts spaces*1 + x1
|
|
363
|
+
if extract >= 2
|
|
364
|
+
y1.each_pair do |x2,y2|
|
|
365
|
+
if extract == 2
|
|
366
|
+
@the_h[x0][x1][x2] ||={ md: [] }
|
|
367
|
+
@the_h[x0][x1][x2][:md] << y2
|
|
368
|
+
else
|
|
369
|
+
@the_h[x0][x1][x2] ||={}
|
|
370
|
+
end
|
|
371
|
+
#puts spaces*2 + x2
|
|
372
|
+
if extract >= 3
|
|
373
|
+
y2.each_pair do |x3,y3|
|
|
374
|
+
if extract == 3
|
|
375
|
+
@the_h[x0][x1][x2][x3] ||={ md: [] }
|
|
376
|
+
@the_h[x0][x1][x2][x3][:md] << y3
|
|
377
|
+
else
|
|
378
|
+
@the_h[x0][x1][x2][x3] ||={}
|
|
379
|
+
end
|
|
380
|
+
#puts spaces*3 + x3
|
|
381
|
+
if extract == 4
|
|
382
|
+
y3.each_pair do |x4,y4|
|
|
383
|
+
if extract == 4
|
|
384
|
+
@the_h[x0][x1][x2][x3][x4] ||={ md: [] }
|
|
385
|
+
@the_h[x0][x1][x2][x3][x4][:md] << y4
|
|
386
|
+
else
|
|
387
|
+
@the_h[x0][x1][x2][x3][x4] ||={}
|
|
388
|
+
end
|
|
389
|
+
#puts spaces*4 + x4
|
|
390
|
+
if extract == 5
|
|
391
|
+
y4.each_pair do |x5,y5|
|
|
392
|
+
if extract == 5
|
|
393
|
+
@the_h[x0][x1][x2][x3][x4][x5] ||={ md: [] }
|
|
394
|
+
@the_h[x0][x1][x2][x3][x4][x5][:md] << y5
|
|
395
|
+
end
|
|
396
|
+
#puts spaces*5 + x5
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
end
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
end
|
|
410
|
+
#@the_h.each_pair { |x,y| p x; p y }
|
|
411
|
+
@the_h
|
|
412
|
+
end
|
|
413
|
+
def traverse_base
|
|
414
|
+
@the_h.each_pair do |x0,y0|
|
|
415
|
+
puts spaces*0 + x0 if x0.is_a?(String)
|
|
416
|
+
if y0.is_a?(Hash)
|
|
417
|
+
y0.each_pair do |x1,y1|
|
|
418
|
+
puts spaces*1 + x1 if x1.is_a?(String)
|
|
419
|
+
if y1.is_a?(Hash)
|
|
420
|
+
y1.each_pair do |x2,y2|
|
|
421
|
+
puts spaces*2 + x2 if x2.is_a?(String)
|
|
422
|
+
if y2.is_a?(Hash)
|
|
423
|
+
y2.each_pair do |x3,y3|
|
|
424
|
+
puts spaces*3 + x3 if x3.is_a?(String)
|
|
425
|
+
if y3.is_a?(Hash)
|
|
426
|
+
y3.each_pair do |x4,y4|
|
|
427
|
+
puts spaces*4 + x4 if x4.is_a?(String)
|
|
428
|
+
if y4.is_a?(Hash)
|
|
429
|
+
y4.each_pair do |x5,y5|
|
|
430
|
+
puts spaces*5 + x5 if x5.is_a?(String)
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
end
|
|
434
|
+
end
|
|
435
|
+
end
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
end
|
|
440
|
+
end
|
|
441
|
+
end
|
|
442
|
+
end
|
|
443
|
+
def traverse
|
|
444
|
+
@the_h.each_pair do |x0,y0|
|
|
445
|
+
puts spaces*0 + x0 if x0.is_a?(String)
|
|
446
|
+
if y0.is_a?(Hash)
|
|
447
|
+
if y0.has_key?(:md)
|
|
448
|
+
y0[:md].each { |x| puts spaces*5 + x[:title] }
|
|
449
|
+
end
|
|
450
|
+
y0.each_pair do |x1,y1|
|
|
451
|
+
puts spaces*1 + x1 if x1.is_a?(String)
|
|
452
|
+
if y1.is_a?(Hash)
|
|
453
|
+
if y1.has_key?(:md)
|
|
454
|
+
y1[:md].each { |x| puts spaces*5 + x[:title] }
|
|
455
|
+
end
|
|
456
|
+
y1.each_pair do |x2,y2|
|
|
457
|
+
puts spaces*2 + x2 if x2.is_a?(String)
|
|
458
|
+
if y2.is_a?(Hash)
|
|
459
|
+
if y2.has_key?(:md)
|
|
460
|
+
y2[:md].each { |x| puts spaces*5 + x[:title] }
|
|
461
|
+
end
|
|
462
|
+
y2.each_pair do |x3,y3|
|
|
463
|
+
puts spaces*3 + x3 if x3.is_a?(String)
|
|
464
|
+
if y3.is_a?(Hash)
|
|
465
|
+
if y3.has_key?(:md)
|
|
466
|
+
y3[:md].each { |x| puts spaces*5 + x[:title] }
|
|
467
|
+
end
|
|
468
|
+
y3.each_pair do |x4,y4|
|
|
469
|
+
puts spaces*4 + x4 if x4.is_a?(String)
|
|
470
|
+
if y4.is_a?(Hash)
|
|
471
|
+
if y4.has_key?(:md)
|
|
472
|
+
y4[:md].each { |x| puts spaces*5 + x[:title] }
|
|
473
|
+
end
|
|
474
|
+
y4.each_pair do |x5,y5|
|
|
475
|
+
puts spaces*5 + x4 if x4.is_a?(String)
|
|
476
|
+
end
|
|
477
|
+
end
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
end
|
|
482
|
+
end
|
|
483
|
+
end
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
end
|
|
489
|
+
class OutputIndex < Mix
|
|
490
|
+
require_relative 'i18n' # i18n.rb
|
|
491
|
+
def initialize(opt,the_idx)
|
|
492
|
+
@opt,@the_idx=opt,the_idx
|
|
493
|
+
@env=SiSU_Env::InfoEnv.new
|
|
494
|
+
@rc=SiSU_Env::GetInit.new.sisu_yaml.rc
|
|
495
|
+
@alphabet_list=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
|
|
496
|
+
@alph=@alphabet_list.dup
|
|
497
|
+
@letter=@alph.shift
|
|
498
|
+
end
|
|
499
|
+
def html_file_open
|
|
500
|
+
@the_idx.keys.each do |lng|
|
|
501
|
+
@output ||={}
|
|
502
|
+
@output[lng] ||={}
|
|
503
|
+
harvest_pth,file='',''
|
|
504
|
+
if @env.output_dir_structure.by? == :language
|
|
505
|
+
harvest_pth=@env.path.webserv + '/' \
|
|
506
|
+
+ @opt.base_stub + '/' \
|
|
507
|
+
+ lng + '/' \
|
|
508
|
+
+ 'manifest'
|
|
509
|
+
file=harvest_pth + '/' + 'topics.html'
|
|
510
|
+
elsif @env.output_dir_structure.by? == :filetype
|
|
511
|
+
harvest_pth=@env.path.webserv + '/' \
|
|
512
|
+
+ @opt.base_stub + '/' \
|
|
513
|
+
+ 'manifest'
|
|
514
|
+
file=harvest_pth + '/' + 'topics.' + lng + '.html'
|
|
515
|
+
elsif @env.output_dir_structure.by? == :filename
|
|
516
|
+
harvest_pth=@env.path.webserv + '/' \
|
|
517
|
+
+ @opt.base_stub
|
|
518
|
+
file=harvest_pth + '/' + 'topics.' + lng + '.html'
|
|
519
|
+
end
|
|
520
|
+
FileUtils::mkdir_p(harvest_pth) \
|
|
521
|
+
unless FileTest.directory?(harvest_pth)
|
|
522
|
+
fileinfo=(@opt.act[:verbose][:set]==:on \
|
|
523
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
524
|
+
|| @opt.act[:urls_selected][:set]==:on \
|
|
525
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
526
|
+
? ("file://#{file}")
|
|
527
|
+
: ''
|
|
528
|
+
SiSU_Screen::Ansi.new(
|
|
529
|
+
@opt.act[:color_state][:set],
|
|
530
|
+
"harvest topics(#{@opt.files.length} files)",
|
|
531
|
+
fileinfo
|
|
532
|
+
).dark_grey_title_hi unless @opt.act[:quiet][:set]==:on
|
|
533
|
+
@output[lng][:html]=File.new(file,'w')
|
|
534
|
+
if @opt.act[:maintenance][:set]==:on
|
|
535
|
+
@output[lng][:html_mnt]=File.new("#{@env.path.pwd}/topics.html",'w')
|
|
536
|
+
end
|
|
537
|
+
end
|
|
538
|
+
end
|
|
539
|
+
def html_file_close
|
|
540
|
+
@the_idx.keys.each do |lng|
|
|
541
|
+
@output[lng][:html].close
|
|
542
|
+
@output[lng][:html_mnt].close if @output[lng][:html_mnt].is_a?(File)
|
|
543
|
+
end
|
|
544
|
+
end
|
|
545
|
+
def html_print
|
|
546
|
+
def html_songsheet
|
|
547
|
+
#traverse
|
|
548
|
+
html_file_open
|
|
549
|
+
html_head
|
|
550
|
+
html_alph
|
|
551
|
+
html_body_traverse
|
|
552
|
+
html_tail
|
|
553
|
+
html_file_close
|
|
554
|
+
end
|
|
555
|
+
def html_body_traverse
|
|
556
|
+
@the_idx.each_pair do |x0,y0|
|
|
557
|
+
lng=x0
|
|
558
|
+
if x0.is_a?(String)
|
|
559
|
+
#do_string_name(lng,'lev0',x0)
|
|
560
|
+
#puts spaces*0 + x0
|
|
561
|
+
end
|
|
562
|
+
if y0.is_a?(Hash)
|
|
563
|
+
if y0.has_key?(:md)
|
|
564
|
+
y0[:md].each do |x|
|
|
565
|
+
#do_hash(lng,attrib,x) #lv==0 ?
|
|
566
|
+
#puts spaces*5 + x[:title]
|
|
567
|
+
end
|
|
568
|
+
end
|
|
569
|
+
y0.each_pair do |x1,y1|
|
|
570
|
+
if x1.is_a?(String)
|
|
571
|
+
do_string_name(lng,'lev0',x1)
|
|
572
|
+
#puts spaces*1 + x1
|
|
573
|
+
end
|
|
574
|
+
if y1.is_a?(Hash)
|
|
575
|
+
if y1.has_key?(:md)
|
|
576
|
+
y1[:md].each do |x|
|
|
577
|
+
do_hash(lng,0,x)
|
|
578
|
+
#puts spaces*5 + x[:title]
|
|
579
|
+
end
|
|
580
|
+
end
|
|
581
|
+
y1.each_pair do |x2,y2|
|
|
582
|
+
if x2.is_a?(String)
|
|
583
|
+
do_string(lng,'lev1',x2)
|
|
584
|
+
#puts spaces*2 + x2
|
|
585
|
+
end
|
|
586
|
+
if y2.is_a?(Hash)
|
|
587
|
+
if y2.has_key?(:md)
|
|
588
|
+
y2[:md].each do |x|
|
|
589
|
+
do_hash(lng,1,x)
|
|
590
|
+
#puts spaces*5 + x[:title]
|
|
591
|
+
end
|
|
592
|
+
end
|
|
593
|
+
y2.each_pair do |x3,y3|
|
|
594
|
+
if x3.is_a?(String)
|
|
595
|
+
do_string(lng,'lev2',x3)
|
|
596
|
+
#puts spaces*3 + x3
|
|
597
|
+
end
|
|
598
|
+
if y3.is_a?(Hash)
|
|
599
|
+
if y3.has_key?(:md)
|
|
600
|
+
y3[:md].each do |x|
|
|
601
|
+
do_hash(lng,2,x)
|
|
602
|
+
#puts spaces*5 + x[:title]
|
|
603
|
+
end
|
|
604
|
+
end
|
|
605
|
+
y3.each_pair do |x4,y4|
|
|
606
|
+
if x4.is_a?(String)
|
|
607
|
+
do_string(lng,'lev3',x4)
|
|
608
|
+
#puts spaces*4 + x4
|
|
609
|
+
end
|
|
610
|
+
if y4.is_a?(Hash)
|
|
611
|
+
if y4.has_key?(:md)
|
|
612
|
+
y4[:md].each do |x|
|
|
613
|
+
do_hash(lng,3,x)
|
|
614
|
+
#puts spaces*5 + x[:title]
|
|
615
|
+
end
|
|
616
|
+
end
|
|
617
|
+
y4.each_pair do |x5,y5|
|
|
618
|
+
if x5.is_a?(String)
|
|
619
|
+
do_string(lng,'lev4',x5)
|
|
620
|
+
#puts spaces*5 + x5
|
|
621
|
+
end
|
|
622
|
+
end
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
end
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
end
|
|
632
|
+
end
|
|
633
|
+
end
|
|
634
|
+
def html_head_adjust(lng,type='')
|
|
635
|
+
css_path,authors='',''
|
|
636
|
+
if @env.output_dir_structure.by? == :language
|
|
637
|
+
css_path=(type !~/maintenance/) \
|
|
638
|
+
? '../../_sisu/css/harvest.css'
|
|
639
|
+
: 'harvest.css'
|
|
640
|
+
authors='authors.html'
|
|
641
|
+
elsif @env.output_dir_structure.by? == :filetype
|
|
642
|
+
css_path=(type !~/maintenance/) \
|
|
643
|
+
? '../_sisu/css/harvest.css'
|
|
644
|
+
: 'harvest.css'
|
|
645
|
+
authors="authors.#{lng}.html"
|
|
646
|
+
elsif @env.output_dir_structure.by? == :filename
|
|
647
|
+
css_path=(type !~/maintenance/) \
|
|
648
|
+
? './_sisu/css/harvest.css'
|
|
649
|
+
: 'harvest.css'
|
|
650
|
+
authors="authors.#{lng}.html"
|
|
651
|
+
end
|
|
652
|
+
ln=SiSU_i18n::Languages.new.language.list
|
|
653
|
+
harvest_languages=''
|
|
654
|
+
@the_idx.keys.each do |lg|
|
|
655
|
+
if @env.output_dir_structure.by? == :language
|
|
656
|
+
harvest_pth="../../#{lg}/manifest"
|
|
657
|
+
file=harvest_pth + '/' + 'topics.html'
|
|
658
|
+
elsif @env.output_dir_structure.by? == :filetype
|
|
659
|
+
harvest_pth='.'
|
|
660
|
+
file=harvest_pth + '/' + 'topics.' + lg + '.html'
|
|
661
|
+
elsif @env.output_dir_structure.by? == :filename
|
|
662
|
+
harvest_pth='.'
|
|
663
|
+
file=harvest_pth + '/topics.' + lg + '.html'
|
|
664
|
+
end
|
|
665
|
+
l=ln[lg][:t]
|
|
666
|
+
harvest_languages +=
|
|
667
|
+
%{<a href="#{file}">#{l}</a> }
|
|
668
|
+
end
|
|
669
|
+
sv=SiSU_Env::InfoVersion.instance.get_version
|
|
670
|
+
if @env.output_dir_structure.by? == :language
|
|
671
|
+
home_pth='../..'
|
|
672
|
+
output_structure_by='(output organised by language & filetype)'
|
|
673
|
+
elsif @env.output_dir_structure.by? == :filetype
|
|
674
|
+
home_pth='..'
|
|
675
|
+
output_structure_by='(output organised by filetype)'
|
|
676
|
+
elsif @env.output_dir_structure.by? == :filename
|
|
677
|
+
home_pth='.'
|
|
678
|
+
output_structure_by='(output organised by filename)'
|
|
679
|
+
else
|
|
680
|
+
home_pth='.'
|
|
681
|
+
output_structure_by='(output organised by ?)'
|
|
682
|
+
end
|
|
683
|
+
<<WOK
|
|
684
|
+
<!DOCTYPE html>
|
|
685
|
+
<html>
|
|
686
|
+
<head>
|
|
687
|
+
<meta charset="utf-8">
|
|
688
|
+
<title>SiSU Metadata Harvest - Topics</title>
|
|
689
|
+
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
690
|
+
<meta name="dc.title" content= "SiSU metadata harvest, Topics - SiSU information Structuring Universe, Structured information Serialised Units" />
|
|
691
|
+
<meta name="dc.subject" content= "document structuring, ebook, publishing, PDF, LaTeX, XML, ODF, SQL, postgresql, sqlite, electronic book, electronic publishing, electronic document, electronic citation, data structure, citation systems, granular search, digital library" />
|
|
692
|
+
<meta name="generator" content="#{sv.project} #{sv.version} of #{sv.date_stamp} (n*x and Ruby!)" />
|
|
693
|
+
<link rel="generator" href="http://www.jus.uio.no/sisu/SiSU" />
|
|
694
|
+
<link href="#{css_path}" rel="stylesheet">
|
|
695
|
+
<link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
|
|
696
|
+
</head>
|
|
697
|
+
<body lang="en" xml:lang="en">
|
|
698
|
+
<a name="top" id="top"></a>
|
|
699
|
+
<a name="up" id="up"></a>
|
|
700
|
+
<a name="start" id="start"></a>
|
|
701
|
+
<h1>SiSU Metadata Harvest - Topics #{output_structure_by}</h1>
|
|
702
|
+
<p>[<a href="#{home_pth}/index.html"> HOME </a>] also see <a href="#{authors}">SiSU Metadata Harvest - Authors</a></p>
|
|
703
|
+
<p>#{@env.widget_static.search_form}</p>
|
|
704
|
+
<hr />
|
|
705
|
+
<p class="tiny">#{harvest_languages}</p>
|
|
706
|
+
<hr />
|
|
707
|
+
WOK
|
|
708
|
+
end
|
|
709
|
+
def html_head
|
|
710
|
+
@the_idx.keys.each do |lng|
|
|
711
|
+
@output[lng][:html_mnt] \
|
|
712
|
+
<< html_head_adjust(lng,'maintenance') \
|
|
713
|
+
if @opt.act[:maintenance][:set]==:on
|
|
714
|
+
@output[lng][:html] << html_head_adjust(lng)
|
|
715
|
+
end
|
|
716
|
+
end
|
|
717
|
+
def html_alph
|
|
718
|
+
a=[]
|
|
719
|
+
a << '<p>'
|
|
720
|
+
@alph.each do |x|
|
|
721
|
+
a << ((x =~/[0-9]/) \
|
|
722
|
+
? ''
|
|
723
|
+
: %{<a href="##{x}">#{x}</a>, })
|
|
724
|
+
end
|
|
725
|
+
a=a.join
|
|
726
|
+
@the_idx.keys.each do |lng|
|
|
727
|
+
@output[lng][:html_mnt] << a \
|
|
728
|
+
if @opt.act[:maintenance][:set]==:on
|
|
729
|
+
@output[lng][:html] << a
|
|
730
|
+
end
|
|
731
|
+
end
|
|
732
|
+
def html_tail
|
|
733
|
+
a =<<WOK
|
|
734
|
+
<hr />
|
|
735
|
+
<a name="bottom" id="bottom"></a>
|
|
736
|
+
<a name="down" id="down"></a>
|
|
737
|
+
<a name="end" id="end"></a>
|
|
738
|
+
<a name="finish" id="finish"></a>
|
|
739
|
+
<a name="stop" id="stop"></a>
|
|
740
|
+
<a name="credits"></a>
|
|
741
|
+
#{SiSU_Proj_HTML::Bits.new.credits_sisu}
|
|
742
|
+
</body>
|
|
743
|
+
</html>
|
|
744
|
+
WOK
|
|
745
|
+
@the_idx.keys.each do |lng|
|
|
746
|
+
@output[lng][:html_mnt] << a \
|
|
747
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
748
|
+
@output[lng][:html] << a
|
|
749
|
+
end
|
|
750
|
+
end
|
|
751
|
+
def do_html(lng,html)
|
|
752
|
+
@output[lng][:html] << html
|
|
753
|
+
end
|
|
754
|
+
def do_html_maintenance(lng,html)
|
|
755
|
+
@output[lng][:html_mnt] << html \
|
|
756
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
757
|
+
end
|
|
758
|
+
def do_string(lng,attrib,string)
|
|
759
|
+
html=%{<p class="#{attrib}">#{string}</p>}
|
|
760
|
+
do_html(lng,html)
|
|
761
|
+
do_html_maintenance(lng,html) \
|
|
762
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
763
|
+
end
|
|
764
|
+
def do_string_default(lng,attrib,string)
|
|
765
|
+
html=%{<p class="#{attrib}">#{string}</p>}
|
|
766
|
+
do_html(lng,html)
|
|
767
|
+
end
|
|
768
|
+
def do_string_maintenance(lng,attrib,string)
|
|
769
|
+
html=%{<p class="#{attrib}">#{string}</p>}
|
|
770
|
+
do_html_maintenance(lng,html) \
|
|
771
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
772
|
+
end
|
|
773
|
+
def do_string_name(lng,attrib,string)
|
|
774
|
+
f=/^(\S)/.match(string)[1]
|
|
775
|
+
if @lng != lng
|
|
776
|
+
@alph=@alphabet_list.dup
|
|
777
|
+
@letter=@alph.shift
|
|
778
|
+
@lng = lng
|
|
779
|
+
end
|
|
780
|
+
if @letter < f
|
|
781
|
+
while @letter < f
|
|
782
|
+
if @alph.length > 0
|
|
783
|
+
@letter=@alph.shift
|
|
784
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
785
|
+
@output[lng][:html_mnt] \
|
|
786
|
+
<< %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
|
|
787
|
+
end
|
|
788
|
+
@output[lng][:html] \
|
|
789
|
+
<< %{\n<p class="letter"><a name="#{@letter}">#{@letter}</a></p><p class="book_index_lev1"><a name="#{@letter.downcase}"></a></p>}
|
|
790
|
+
else break
|
|
791
|
+
end
|
|
792
|
+
end
|
|
793
|
+
end
|
|
794
|
+
name=string.strip.gsub(/\s+/,'_')
|
|
795
|
+
html=%{<p class="#{attrib}"><a name="#{name}">#{string}</a></p>}
|
|
796
|
+
do_html(lng,html)
|
|
797
|
+
do_html_maintenance(lng,html) \
|
|
798
|
+
if @output[lng][:html_mnt].is_a?(File)
|
|
799
|
+
end
|
|
800
|
+
def do_array(lng,lv,array)
|
|
801
|
+
lv+=1
|
|
802
|
+
array.each do |b|
|
|
803
|
+
do_case(lng,lv,b)
|
|
804
|
+
end
|
|
805
|
+
end
|
|
806
|
+
def do_hash_md(lng,attrib,hash)
|
|
807
|
+
lang_code_insert=SiSU_Env::FilenameLanguageCodeInsert.new(@opt,lng).language_code_insert
|
|
808
|
+
manifest_at=if @env.output_dir_structure.by? == :language
|
|
809
|
+
hash[:file] + Sfx[:html]
|
|
810
|
+
elsif @env.output_dir_structure.by? == :filetype
|
|
811
|
+
hash[:file] + lang_code_insert + Sfx[:html]
|
|
812
|
+
elsif @env.output_dir_structure.by? == :filename
|
|
813
|
+
"./#{hash[:file]}/#{hash[:page]}"
|
|
814
|
+
else '' #error
|
|
815
|
+
end
|
|
816
|
+
html=%{<a href="#{manifest_at}">#{hash[:title]}</a> - #{hash[:author]}}
|
|
817
|
+
do_string_default(lng,attrib,html)
|
|
818
|
+
end
|
|
819
|
+
def do_hash_md_maintenance(lng,attrib,hash)
|
|
820
|
+
if @output[lng][:html_mnt].is_a?(File) #should not be run for presentation output
|
|
821
|
+
html=%{[<a href="#{hash[:file]}.sst">src</a>] <a href="file://#{@env.path.output}/#{hash[:file]}/#{hash[:page]}">#{hash[:title]}</a> - #{hash[:author]}}
|
|
822
|
+
do_string_maintenance(lng,attrib,html)
|
|
823
|
+
end
|
|
824
|
+
end
|
|
825
|
+
def do_hash(lng,lv,hash)
|
|
826
|
+
lv+=1
|
|
827
|
+
key=[]
|
|
828
|
+
hash.each_key do |m|
|
|
829
|
+
if m == :md
|
|
830
|
+
do_case(lng,lv,hash[m])
|
|
831
|
+
elsif m != :title \
|
|
832
|
+
and m != :author \
|
|
833
|
+
and m != :filename \
|
|
834
|
+
and m != :file \
|
|
835
|
+
and m != :rough_idx \
|
|
836
|
+
and m != :page
|
|
837
|
+
key << m
|
|
838
|
+
elsif m == :title
|
|
839
|
+
do_hash_md(lng,'work',hash)
|
|
840
|
+
do_hash_md_maintenance(lng,'work',hash)
|
|
841
|
+
end
|
|
842
|
+
end
|
|
843
|
+
if key.length > 0
|
|
844
|
+
key.sort.each do |m|
|
|
845
|
+
attrib="lev#{lv}"
|
|
846
|
+
lv==0 ? do_string_name(lng,attrib,m) : do_string(lng,attrib,m)
|
|
847
|
+
do_case(lng,lv,hash[m])
|
|
848
|
+
end
|
|
849
|
+
end
|
|
850
|
+
end
|
|
851
|
+
def do_case(lng,lv,a)
|
|
852
|
+
case a
|
|
853
|
+
when String
|
|
854
|
+
attrib="lev#{lv}"
|
|
855
|
+
if a=~/S/
|
|
856
|
+
lv==0 ? do_string_name(lng,attrib,a) : do_string(lng,attrib,a)
|
|
857
|
+
end
|
|
858
|
+
when Array
|
|
859
|
+
do_array(lng,lv,a)
|
|
860
|
+
when Hash
|
|
861
|
+
do_hash(lng,lv,a)
|
|
862
|
+
end
|
|
863
|
+
end
|
|
864
|
+
#def html_body
|
|
865
|
+
# the_idx=@the_idx
|
|
866
|
+
# the_idx.each_pair do |lng,lng_array|
|
|
867
|
+
# lng_array.sort.each do |a|
|
|
868
|
+
# do_case(lng,-1,a)
|
|
869
|
+
# end
|
|
870
|
+
# end
|
|
871
|
+
#end
|
|
872
|
+
self
|
|
873
|
+
end
|
|
874
|
+
end
|
|
875
|
+
end
|
|
876
|
+
__END__
|
|
877
|
+
terms -|_ t{tl1} -|_ {fa}[fa]{filenames and other details}
|
|
878
|
+
| |_ {tl2} -|_ {fa}[fa]{filenames and other details}
|
|
879
|
+
| | |_{tl3} -|_ {fa}[fa]{filenames and other details}
|
|
880
|
+
| | | |_{tl4} - {fa}[fa]{filenames and other details}
|
|
881
|
+
| | | |
|
|
882
|
+
| | | |_{tl4a} - {fa}[fa]{filenames and other details}
|
|
883
|
+
| | | |
|
|
884
|
+
| | | |_{tl4b} - {fa}[fa]{filenames and other details}
|
|
885
|
+
| | | |
|
|
886
|
+
| | | |_ ...
|
|
887
|
+
| | |
|
|
888
|
+
| | |_{tl3a} - {fa}[fa]{filenames and other details}
|
|
889
|
+
| |
|
|
890
|
+
| |_{tl2a} - {fa}[fa]{filenames and other details}
|
|
891
|
+
|
|
|
892
|
+
|_ t{tl1a} -|_ {fa}[fa]{filenames and other details}
|
|
893
|
+
|_ ...
|