- Of interest is the ease of streaming documents to a relational database, at an object (roughly paragraph) level and the potential for increased precision in the presentation of matches that results thereby. The ability to serialise html, LaTeX, XML, SQL, (whatever) is also inherent in / incidental to the design. For a description see the
-
- abandoned U.S. provisional patent application
-
-
- Note: the placement of SiSU documents on the Net predate the release of SiSU.
-
-
-
-
-SiSU Short Description
-
-
-SiSU is a comprehensive future-proofing electronic document management system. Built-in search capabilities allow you to search across multiple documents and highlight matches in an easy-to-follow format. Paragraph numbering system allows you to cite your electronic documents in a consistent manner across multiple file formats. Multiple format outputs allow you to display your documents in plain text, PDF (portrait and horizontal), OpenDocument format, HTML, or e-book reading format (EPUB). Word mapping allows you to easily create word indexes for your documents. Future-proofing flexibility allows you to quickly adapt your documents to newer output formats as needed. All these and many other features are achieved with little or no additional work on your documents - by marking up the documents with a super simplistic markup language, leaving the SiSU engine to handle the heavy-lifting processing.
-
-
-Potential users of SiSU include individual authors who want to publish their books or articles electronically to reach a broad audience, web publishers who want to provide multiple channels of access to their electronic documents, or any organizations which centrally manage a medium or large set of electronic documents, especially governmental organizations which may prefer to keep their documents in easily accessible yet non-proprietary formats.
-
-(i) markup syntax:
-(a)
-simpler than html,
-(b)
-mnemonic, influenced by mail/messaging/wiki markup practices,
-(c) human readable, and easily writable,
-
(ii)
-(a)
-minimal markup requirement,
-(b)
-single file marked up for multiple outputs,
-
-notes
-
-
-*
-documents are prepared in a single UTF-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional.
-
-
-*
-markup is easily readable/parsed by the human eye, (basic markup is simpler and more sparse than the most basic html), [this may also be converted to XML representations of the same input/source document].
-
-
-*
-markup defines document structure (this may be done once in a header pattern-match description, or for heading levels individually); basic text attributes (bold, italics, underscore, strike-through etc.) as required; and semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions.
-
-
(iii)
-(a)
-multiple outputs primarily industry established and institutionally accepted open standard formats, include amongst others: plaintext (UTF-8); html; (structured) XML; ODF (Open Document text); EPUB; LaTeX; PDF (via LaTeX); SQL type databases (currently PostgreSQL and SQLite). Also produces: concordance files; document content certificates (md5 or sha256 digests of headings, paragraphs, images etc.) and html manifests (and sitemaps of content).
-
-(b)
-
-takes advantage of the strengths implicit in these very different output types, (e.g. PDFs produced using typesetting of LaTeX, databases populated with documents at an individual object/paragraph level, making possible granular search (and related possibilities))
-
(iv)
-outputs share a common numbering system (dubbed "object citation numbering" (ocn)) that is meaningful (to man and machine) across various digital outputs whether paper, screen, or database oriented, (PDF, html, XML, EPUB, sqlite, postgresql), this numbering system can be used to reference content.
-
-(v)
-SQL databases are populated at an object level (roughly headings, paragraphs, verse, tables) and become searchable with that degree of granularity, the output information provides the object/paragraph numbers which are relevant across all generated outputs; it is also possible to look at just the matching paragraphs of the documents in the database; [output indexing also work well with search indexing tools like hyperesteier].
-
-(vi)
- use of semantic meta-tags in headers permit the addition of semantic information on documents, (the available fields are easily extended)
-
-(vii)
-creates organised directory/file structure for (file-system) output, easily mapped with its clearly defined structure, with all text objects numbered, you know in advance where in each document output type, a bit of text will be found (e.g. from an SQL search, you know where to go to find the prepared html output or PDF etc.)... there is more; easy directory management and document associations, the document preparation (sub-)directory may be used to determine output (sub-)directory and the SQL database used,
-
-(viii)
-"Concordance file" wordmap, consisting of all the words in a document and their (text/ object) locations within the text, (and the possibility of adding vocabularies),
-
-(ix)
-document content certification and comparison considerations:
-(a)
-the document and each object within it stamped with an md5 hash making it possible to easily check or guarantee that the substantive content of a document is unchanged,
-(b)
-version control, documents integrated with time based source control system, default RCS or CVS with use of $Id$ tag, which SiSU checks
-
-
-(x)
-SiSU's minimalist markup makes for meaningful "diffing" of the substantive content of markup-files,
-
-(xi)
-modifiable document appearance on a project/site wide, directory wide, or document instance level easily controlled/changed,
-
-(xii)
-in many cases a regular expression may be used (once in the document header) to define all or part of a documents structure obviating or reducing the need to provide structural markup within the document,
-
-(xiii)
-prepared files may be batch process, documents produced are static files so this needs to be done only once but may be repeated for various reasons as desired (updated content, addition of new output formats, updated technology document presentations/representations)
-
-(xiv)
-possible to pre-process, which permits: the easy creation of standard form documents, and templates/term-sheets, or; building of composite documents (master documents) from other sisu marked up documents, or marked up parts, i.e. import documents or parts of text into a main document should this be desired
-
-there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added.
-
-
-(xv)
-there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added:
-(a)
-modular, (thanks in no small part to Ruby) another output format required, write another module....
-(b) easy to update output formats (eg html, XHTML, LaTeX/PDF produced can be updated in program and run against whole document set),
-(c) easy to add, modify, or have alternative syntax rules for input, should you need to,
-
-(xvi)
-scalability, dependent on your file-system (ext3, Reiserfs, XFS, whatever) and on the relational database used (currently Postgresql and SQLite), and your hardware,
-
-(xvii)
-only marked up files need be backed up, to secure the larger document set produced,
-
-(xviii)
-document management,
-
-(xix)
-Syntax highlighting for SiSU markup is available for a number of text editors.
-
(xx) remote operations:
-(a)
-run SiSU on a remote server, (having prepared sisu markup documents locally or on that server, i.e. this solution where sisu is installed on the remote server, would work whatever type of machine you chose to prepare your markup documents on),
-(b)
-generated document outputs may be posted by sisu to remote sites (using rsync/scp)
-(c)
-document source (plaintext utf-8) if shared on the net may be identified by its url and processed locally to produce the different document outputs.
-
-(xxi)
-document source may be bundled together (automatically) with associated documents (multiple language versions or master document with inclusions) and images and sent as a zip file called a sisupod, if shared on the net these too may be processed locally to produce the desired document outputs, these may be downloaded, shared as email attachments, or processed by running sisu against them, either using a url or the filename.
-
-
-(xxii)
-for basic document generation, the only software dependency is Ruby, and a few standard Unix tools (this covers plaintext, html, XML, ODF, EPUB, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to PDF, a LaTeX processor like tetex or texlive.
-
-
-as a developers tool it is flexible and extensible
-
-SiSU ("SiSU information Structuring Universe" or "Structured information, Serialized Units"),1 is a Unix command line oriented framework for document structuring, publishing and search. Featuring minimalistic markup, multiple standard outputs, a common citation system, and granular search.
-
-
- Using markup applied to a document, SiSU can produce plain text, HTML, XHTML, XML, OpenDocument, LaTeX or PDF files, and populate an SQL database with objects2 (equating generally to paragraph-sized chunks) so searches may be performed and matches returned with that degree of granularity (e.g. your search criteria is met by these documents and at these locations within each document). Document output formats share a common object numbering system for locating content. This is particularly suitable for "published" works (finalized texts as opposed to works that are frequently changed or updated) for which it provides a fixed means of reference of content.
-
-
-
-How it works
-
-
-SiSU markup is fairly minimalistic, it consists of: a (largely optional) document header, made up of information about the document (such as when it was published, who authored it, and granting what rights) and any processing instructions; and markup within text which is related to document structure and typeface. SiSU must be able to discern the structure of a document, (text headings and their levels in relation to each other), either from information provided in the instruction header or from markup within the text (or from a combination of both). Processing is done against an abstraction of the document comprising of information on the document's structure and its objects,2 which the program serializes (providing the object numbers) and which are assigned hash sum values based on their content. This abstraction of information about document structure, objects, (and hash sums), provides considerable flexibility in representing documents different ways and for different purposes (e.g. search, document layout, publishing, content certification, concordance etc.), and makes it possible to take advantage of some of the strengths of established ways of representing documents, (or indeed to create new ones).
-
-1. also chosen for the meaning of the Finnish term "sisu".
-
-
-2 objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced.
-SiSU was developed in relation to legal documents, and is strong across a wide variety of texts (law, literature...(humanities, law and part of the social sciences)). SiSU handles images but is not suitable for formulae/ statistics, or for technical writing at this time.
-
-SiSU has been developed and has been in use for several years. Requirements to cover a wide range of documents within its use domain have been explored.
- #{v[:project]}, developed using
-
- Ruby
-
- on
-
- Debian/Gnu/Linux
-
- software infrastructure,
- with the usual GPL (or OSS) suspects.
-
- Better - "performance, reliability, scalability, security & total cost of ownership"
- [not to mention flexibility & choice] use of and adherence to open standards (where practical and fair) and it is software libré.
-
- Get With the Future
-
- Way Better!
-
-
-
-
-
-
- WOK
- end
- WOK_SQL
- end
- def main1
- <<-'WOK_SQL'
- @tail=tail
- @counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0
- @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','',''
- FCGI.each_cgi do |cgi|
- begin # all code goes in begin section
- @search={ text: [], endnotes: [] }
- q=CGI.new
- @db=if cgi['db'] =~/\S+/
- @stub=/#{@db_name_prefix}(\S+)/.match(cgi['db'])[1]
- cgi['db']
- else
- @stub='sisu'
- "#{@db_name_prefix}#{@stub}"
- end
- checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','',''
- result_type=(cgi['view']=~/text/) \
- ? result_type={ index: '', text: 'checked'}
- : result_type={ index: 'checked', text: ''}
- @@limit=if cgi['sql_match_limit'].to_s=~/2500/
- checked_sql_limit={ l1000: '', l2500: 'checked'}
- '2500'
- else
- checked_sql_limit={ l1000: 'checked', l2500: ''}
- '1000'
- end
- checked_echo='checked' if cgi['echo'] =~/\S/
- checked_stats='checked' if cgi['stats'] =~/\S/
- checked_url='checked' if cgi['url'] =~/\S/ or cgi['u'].to_i==1
- checked_searched='checked' if cgi['searched'] =~/\S/
- checked_tip='checked' if cgi['tip'] =~/\S/
- checked_case='checked' if cgi['casesense'] =~/\S/
- checked_sql='checked' if cgi['sql'] =~/\S/
- if cgi['checks'] =~/check_all/ or cgi['check_all'] =~/\S/ or cgi['a'].to_i==1
- checked_all='checked'
- checked_echo=checked_stats=checked_url=checked_searched=checked_tip=checked_sql='checked'
- checked_none=''
- elsif cgi['checks'] =~/check_none/
- checked_none='checked'
- checked_all=checked_url=checked_stats=checked_searched=checked_tip=checked_echo=checked_sql=''
- elsif cgi['checks'] =~/check_selected/
- checked_selected='checked'
- elsif cgi['checks'] =~/check_default/
- checked_default='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- else
- checked_selected='checked'
- checked_echo=checked_stats=checked_url='checked'
- checked_searched=checked_tip=checked_case=checked_sql=''
- end
- WOK_SQL
- end
- def main2
- <<-'WOK_SQL'
- search_field=cgi['find'] if cgi['find'] # =~/\S+/
- @search_for=SearchRequest.new(search_field,q) #.analyze #% search_for
- #% searches
- #Canned_search.new(@base,@search_for.text1,cgi)
- if @search_for.text1=~/\S+/ or @search_for.fulltext=~/\S+/ or @search_for.author=~/\S+/ or @search_for.topic_register=~/\S+/ #and search_field =~/\S/
- s1='s1=' + CGI.escape(@search_for.text1) if @search_for.text1=~/\S/
- ft='&ft=' + CGI.escape(@search_for.fulltext) if @search_for.fulltext=~/\S/
- key='key=' + CGI.escape(@search_for.keywords) if @search_for.keywords=~/\S/
- ti='&ti=' + CGI.escape(@search_for.title) if @search_for.title=~/\S/
- au='&au=' + CGI.escape(@search_for.author) if @search_for.author=~/\S/
- tr='&tr=' + CGI.escape(@search_for.topic_register) if @search_for.topic_register=~/\S/
- sj='&sj=' + CGI.escape(@search_for.subject) if @search_for.subject=~/\S/
- dsc='&dsc=' + CGI.escape(@search_for.description) if @search_for.description=~/\S/
- pb='&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher=~/\S/
- edt='&edt=' + CGI.escape(@search_for.editor) if @search_for.editor=~/\S/
- cntr='&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor=~/\S/
- dt='&dt=' + CGI.escape(@search_for.date) if @search_for.date=~/\S/
- ty='&ty=' + CGI.escape(@search_for.type) if @search_for.type=~/\S/
- id='&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier=~/\S/
- src='&src=' + CGI.escape(@search_for.source) if @search_for.source=~/\S/
- lang='&lang=' + CGI.escape(@search_for.language) if @search_for.language=~/\S/
- rel='&rel=' + CGI.escape(@search_for.relation) if @search_for.relation=~/\S/
- cov='&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage=~/\S/
- cr='&cr=' + CGI.escape(@search_for.rights) if @search_for.rights=~/\S/
- co='&co=' + CGI.escape(@search_for.comment) if @search_for.comment=~/\S/
- ab='&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract=~/\S/
- dtc='&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created=~/\S/
- dti='&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued=~/\S/
- dtm='&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified=~/\S/
- dta='&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available=~/\S/
- dtv='&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid=~/\S/
- fns='&fns=' + CGI.escape(@search_for.filename) if @search_for.filename=~/\S/
- @@canned_search_url=(checked_all =~/checked/) \
- ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
- : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
- mod=ft=~/\S+/ ? (ft.gsub(/ft/,'s1')) : s1
- @canned_base_url="#{@base}?#{mod}&db=#{cgi['db']}"
- if checked_case=~/\S/
- @search[:text][1]=%{doc_objects.clean~'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~'#{@search_for.text1}'} #s1
- else
- @search[:text][1]=%{doc_objects.clean~*'#{@search_for.text1}'} #s1
- @search[:endnotes][1]=%{endnotes.clean~*'#{@search_for.text1}'} #s1
- end
- canned_note='search url:'
- else
- @@canned_search_url="#{@base}?db=#{@db}&view=index"
- canned_note='search url example:'
- end
- if search_field =~/\S+/
- analyze_format=search_field.gsub(/\s*\n/,'; ')
- elsif checked_all =~/checked/ or checked_url =~/checked/
- canned_search=@@canned_search_url.scan(/(?:s1|ft|au|ti|fns|tr)=[^&]+/)
- af=canned_search.join('; ')
- af=af.gsub(/s1=/,'text: ').
- gsub(/ft=/,'fulltxt: ').
- gsub(/au=/,'author: ').
- gsub(/ti=/,'title: ').
- gsub(/fns=/,'filename: ').
- gsub(/tr=/,'topic_register: ').
- gsub(/%2B/,' ')
- analyze_format=af
- st=af.split(/\s*;\s*/)
- search_field=st.join("\n")
- end
- green=%{}
- canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
- the_can=%{#{canned_note} #{canned_search_url_txt} }
- p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_editor=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename=''
- p_filename=%{filename: #{green}#{@search_for.filename} } if @search_for.filename =~/\S+/
- p_text=%{text: #{green}#{@search_for.text1} } if @search_for.text1 =~/\S+/
- p_fulltext=%{fulltxt: #{green}#{@search_for.fulltext} } if @search_for.fulltext =~/\S+/
- p_title=%{title: #{green}#{@search_for.title} } if @search_for.title =~/\S+/
- p_author=%{author: #{green}#{@search_for.author} } if @search_for.author =~/\S+/
- p_editor=%{editor: #{green}#{@search_for.editor} } if @search_for.editor=~/\S+/
- p_contributor=%{contributor: #{green}#{@search_for.contributor} } if @search_for.contributor =~/\S+/
- p_date=%{date: #{green}#{@search_for.date} } if @search_for.date =~/\S+/
- p_rights=%{rights: #{green}#{@search_for.rights} } if @search_for.rights =~/\S+/
- p_topic_register=%{topic_register: #{green}#{@search_for.topic_register} } if @search_for.topic_register =~/\S+/
- p_subject=%{subject: #{green}#{@search_for.subject} } if @search_for.subject =~/\S+/
- p_keywords=%{keywords: #{green}#{@search_for.keywords} } if @search_for.keywords =~/\S+/
- p_identifier=%{identifier: #{green}#{@search_for.identifier} } if @search_for.identifier =~/\S+/
- p_type=%{type: #{green}#{@search_for.type} } if @search_for.type =~/\S+/
- p_format=%{format: #{green}#{@search_for.format} } if @search_for.format =~/\S+/
- p_relation=%{relation: #{green}#{@search_for.relation} } if @search_for.relation =~/\S+/
- p_coverage=%{coverage: #{green}#{@search_for.coverage} } if @search_for.coverage =~/\S+/
- p_description=%{description: #{green}#{@search_for.description} } if @search_for.description =~/\S+/
- p_abstract=%{abstract: #{green}#{@search_for.abstract} } if @search_for.abstract =~/\S+/
- p_comment=%{comment: #{green}#{@search_for.comment} } if @search_for.comment =~/\S+/
- p_publisher=%{publisher: #{green}#{@search_for.publisher} } if @search_for.publisher =~/\S+/
- p_source=%{source: #{green}#{@search_for.source} } if @search_for.source =~/\S+/
- p_language=%{language: #{green}#{@search_for.language} } if @search_for.language =~/\S+/
- search_note=<<-WOK
-
- database: #{green}#{@db}; selected view: #{green}#{cgi['view']}
- search string: "#{green}#{analyze_format}"
- #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_editor} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
-
- WOK
- #eg = %{canned search e.g.: #{url} find: #{analyze} database: #{database}}
- #% dbi_canning
- @header=Form.new(@base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
- unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
- print "Content-type: text/html\n\n"
- puts (@header+@tail)
- else #% searches
- s1=(@search_for.text1 =~/\S/) \
- ? @search_for.text1
- : 'Unavailable'
- if checked_case=~/\S/
- @search[:text]<<%{doc_objects.clean~'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~'#{CGI.unescape(s1)}'}
- else
- @search[:text]<<%{doc_objects.clean~*'#{CGI.unescape(s1)}'}
- @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}
- end
- #% dbi_request
- dbi_statement=DBI_SearchStatement.new(@conn,@search_for,q,checked_case)
- @text_search_flag=false
- @text_search_flag=dbi_statement.text_search_flag
- s_contents=dbi_statement.contents
- s_endnotes=dbi_statement.endnotes
- @body_main,@endnotes='',''
- @search_regx=nil
- oldtid=0
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- sql_select_endnotes=dbi_statement.sql_select_endnotes_format
- else sql_select_body,sql_select_endnotes='',''
- end
- @body_main << ' Main Text: ' << sql_select_body
- @endnotes << ' Endnotes: ' << sql_select_endnotes
- else
- end
- @hostpath="#{@hosturl_files}/#{@stub}"
- @ln='en'
- WOK_SQL
- end
- def dir_structure
- case @opt.dir_structure_by
- when :language
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/#{ln}/manifest/#{fn}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/#{ln}/html/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{@hostpath}/#{ln}/html/#{fn}.html"
- end
- WOK_SQL
- when :filetype
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/manifest/#{fn}.#{ln}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/html/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.#{ln}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.#{ln}.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{@hostpath}/html/#{fn}.#{ln}.html"
- end
- WOK_SQL
- else
- <<-'WOK_SQL'
- def path_manifest(fn,ln=nil)
- "#{@hostpath}/#{fn}/sisu_manifest.#{ln}.html"
- end
- def path_html_seg(fn,ln=nil)
- "#{@hostpath}/#{fn}"
- end
- def path_toc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- end
- def path_filename(fn,seg,ln=nil)
- "#{path_html_seg(fn,ln)}/#{seg}.#{ln}.html"
- end
- def path_endnotes(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/endnotes.#{ln}.html"
- end
- def path_html_doc(fn,ln=nil)
- "#{path_html_seg(fn,ln)}/scroll.#{ln}.html"
- end
- WOK_SQL
- end
- end
- def main3
- <<-'WOK_SQL'
- #% text_objects_body
- s_contents.each do |c| #% text body
- location=c['src_filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
- file_suffix=c['src_filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #% metadata_found_body
- if c['tid'].to_i != oldtid.to_i
- ti=c['title']
- can_txt_srch=(cgi['view']=~/index/) \
- ? %{ }
- : %{ }
- title=%{ #{ti} [#{c['language_document_char']}] by #{c['creator_author']} #{can_txt_srch} } if file_suffix=~/s/ #hmm watch file_suffix
- title=@text_search_flag \
- ? ' '+title
- : ' '+title
- @counter_txt_doc+=1
- oldtid=c['tid'].to_i
- else title=''
- end
- if @text_search_flag
- if cgi['view']=~/text/ \
- or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt body
- text=if c['suffix'] !~/1/ #seg
- if @search_for.text1 =~/\S+/ \
- or q['s1'] =~/\S+/ #% only this branch is working !!
- unescaped_search=if @search_for.text1 =~/\S+/
- CGI.unescape(@search_for.text1)
- elsif q['s1'] =~/\S+/
- CGI.unescape(q['s1'])
- else nil
- end
- @search_regx=if unescaped_search #check
- search_regex=[]
- build=unescaped_search.scan(/\S+/).each do |g|
- (g.to_s =~/(AND|OR)/) \
- ? (search_regex << '|')
- : (search_regex << %{#{g.to_s}})
- end
- search_regex=search_regex.join(' ')
- search_regex=search_regex.gsub(/\s*\|\s*/,'|')
- Regexp.new(search_regex, Regexp::IGNORECASE)
- else nil
- end
- else nil
- end
- matched_para=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \
- ? (c['body'].gsub(/(<\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{\\1}))
- : c['body']
- %{
ocn #{c['ocn']}:#{c['body']}}
- end
- @counter_txt_ocn+=1
- output=title+text
- else #elsif cgi['view']=~/index/ #% idx body
- if c['suffix'] !~/1/ #seg
- index=%{#{c['ocn']}, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc #FIX
- index=%{#{c['ocn']}, }
- end
- if c['seg'] =~/\S+/
- if @text_search_flag
- @counter_txt_ocn+=1
- output=title+index
- end
- else
- @counter_txt_ocn+=1
- output=c['suffix'] !~/1/ \
- ? title+index
- : %{#{title}#{c['ocn'].sort}, }
- end
- end
- else output=title
- end
- @counters_txt=if @counter_txt_doc > 0
- if checked_stats =~/\S/
- @@lt_t=(@counter_txt_ocn==dbi_statement.sql_match_limit.to_i) ? true : false
- start=(@@offset.to_i+1).to_s
- range=(@@offset.to_i+@counter_txt_ocn.to_i).to_s
- %{Found #{@counter_txt_ocn} times in the main body of #{@counter_txt_doc} documents [ matches #{start} to #{range} ] }
- else ''
- end
- else ''
- end
- @body_main << output #+ details
- end
- #text_objects_endnote
- oldtid = 0
- s_endnotes.each do |e| #% endnotes
- location=e['src_filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
- file_suffix=e['src_filename'][/.+?\.(_?sst|ssm)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #metadata_found_endnotes
- if @text_search_flag
- if e['metadata_tid'].to_i != oldtid.to_i
- ti=e['title']
- can_txt_srch=(cgi['view']=~/index/) \
- ? %{ }
- : %{ }
- title=%{ #{ti} [#{e['language_document_char']}] by #{e['creator_author']} #{can_txt_srch} } if file_suffix=~/s/
- @counter_endn_doc+=1
- oldtid=e['metadata_tid'].to_i
- else title = ''
- end
- if cgi['view']=~/text/ \
- or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt endnotes
- @counter_endn_ocn+=1
- matched_endnote=(@search_regx.to_s.is_a?(String) \
- && @search_regx.to_s=~/\S\S+/) \
- ? (matched=e['body'].gsub(/(<\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{\\1}))
- : e['body']
- output=%{#{title}note #{e['nr']} referred to from ocn #{e['ocn']}: #{matched_endnote}}
- else #elsif cgi['view']=~/index/ #doc #FIX #% idx endnotes
- @counter_endn_ocn+=1
- output=%{#{title}#{e['nr']} [§ #{e['ocn']}], }
- end
- @counters_endn=if @counter_endn_doc > 0
- if checked_stats =~/\S/
- @@lt_e=@counter_endn_ocn==dbi_statement.sql_match_limit.to_i \
- ? true
- : false
- start=(@@offset.to_i+1).to_s
- range=(@@offset.to_i+@counter_endn_ocn.to_i).to_s
- %{Found #{@counter_endn_ocn} times in the endnotes of #{@counter_endn_doc} documents [ matches #{start} to #{range} ] }
- else ''
- end
- end
- @endnotes << output #+ details
- else @endnotes='' #does not take out yet
- end
- end
- offset=dbi_statement.sql_offset.to_s
- limit=dbi_statement.sql_match_limit.to_s
- @@lt_t ||=false; @@lt_e ||=false
- canned=(@@lt_t or @@lt_e) \
- ? dbi_statement.pre_next(true,@image_src).to_s
- : dbi_statement.pre_next(false,@image_src).to_s
- limit=dbi_statement.sql_match_limit.to_s
- cgi.out{@header.force_encoding("UTF-8") + @counters_txt.force_encoding("UTF-8") + @counters_endn.force_encoding("UTF-8") + canned.force_encoding("UTF-8") + @body_main.force_encoding("UTF-8") + @endnotes.force_encoding("UTF-8") + canned.force_encoding("UTF-8") + @tail.force_encoding("UTF-8")} #% print cgi_output_header+counters+body+endnotes
- end
- rescue Exception => e
- s='
' + CGI::escapeHTML(e.backtrace.reverse.join("\n"))
- s << CGI::escapeHTML(e.message) + '
'
- cgi.out{s}
- next
- ensure # eg. disconnect from server
- @conn.disconnect if @conn
- end
- end
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/cgi_sqlite.rb b/lib/sisu/v3/cgi_sqlite.rb
deleted file mode 100644
index e56fa359..00000000
--- a/lib/sisu/v3/cgi_sqlite.rb
+++ /dev/null
@@ -1,218 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite)
-
-=end
-module SiSU_CGI_SQLite #% database building documents
- require_relative 'sysenv' # sysenv.rb
- require_relative 'cgi_sql_common' # cgi_sql_common.rb
- include SiSU_CGI_SQL
- class SearchSQLite < CGI_Common
- def initialize(opt,webserv)
- @opt,@webserv=opt,webserv
- @env=SiSU_Env::InfoEnv.new('',opt)
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @common=SiSU_CGI_SQL::CGI_Common.new(@webserv,@opt,@image_src,@env)
- @cgi_file_name="#{Db[:name_prefix_db]}by_#{opt.dir_structure_by.to_s}_sqlite.cgi"
- end
- def sqlite
- serve=[]
- Dir.foreach(@env.path.webserv) do |x|
- if x !~/^\./ \
- and FileTest.directory?("#{@env.path.webserv}/#{x}")
- if FileTest.file?("#{@env.path.webserv}/#{x}/sisu_sqlite.db")
- serve << x unless x =~/^_\S+/
- end
- end
- end
- serve=serve.sort
- f1,f2,f3='','',''
- serve.each do |x|
- f1 << %{ \n}
- end
- f2 << %{ selected_db=case cgi['db']\n}
- serve.each do |x|
- f2 << %{ when /#{Db[:name_prefix]}#{x}/; ''\n}
- end
- f2 << " end\n"
- f3 << %{ db_name='sisu_sqlite.db'\n}
- f3 << %{ db_sqlite=case cgi['db']\n}
- serve.each do |x|
- f3 << %{ when /#{Db[:name_prefix]}#{x}/; "#{@env.path.webserv}/#{x}/sisu_sqlite.db"\n}
- end
- f3 << %{ else '#{@env.path.webserv}/#{serve[0]}/sisu_sqlite.db'\n end\n}
- if FileTest.writable?('.')
- output=File.open(@cgi_file_name,'w')
- output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << f3 << dbi_connect << @common.main2 << @common.dir_structure << @common.main3
- a=%{ generated sisu_sqlite.cgi,
- BASED ON ALREADY CREATED sisu_sqlite.db OUTPUT, (-d)
- }
- SiSU_Screen::Ansi.new(@opt.cmd,a).print_grey
- c=case @webserv
- when /pwd/; ''
- else "if necessary make the directory /usr/lib/cgi-bin :
- sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.
- sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
- sudo ln -s /usr/lib/cgi-bin/#{@cgi_file_name} /usr/lib/cgi-bin/sisu_sqlite.cgi
- (copy #{@cgi_file_name} to your cgi directory) set file permissions to 755, and make symbolic link to sisu_sqlite.cgi"
- end
- a=%{#{c}
- #{@env.webserv_base_cgi}/cgi-bin/sisu_sqlite.cgi
- }
- b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
- SiSU_Screen::Ansi.new(@opt.cmd,a,b).warn
- else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"
- end
- end
- def header0
- <<-WOK_SQL
-#!/usr/bin/env ruby
-=begin
-#{about}
- * Description: generates naive cgi search form for search of sisu database (sqlite)
-#{gpl}
-=end
- require 'cgi'
- require 'fcgi'
- require 'dbi'
- @version='sisu_sqlite'
- @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"
- @hosturl_db="#{@env.url.webserv_base_cgi}"
- @hosturl_files="#{@env.url.webserv_files_from_db}"
- @db_name_prefix="#{Db[:name_prefix]}"
- WOK_SQL
- end
- def search_statement
- <<-'WOK_SQL'
- class DBI_SearchString
- def initialize(l,t,q,cse=false)
- @l,@t,@q=l,t,q
- end
- def string
- search={ search: [], flag: false }
- if @t =~/\S+/ or @q =~/\S+/
- if @t =~/\S+/ then unescaped_search=CGI.unescape(@t)
- elsif @q =~/\S+/ then unescaped_search=CGI.unescape(@q)
- end
- search_construct=[]
- unescaped_search=unescaped_search.gsub(/\s*(AND|OR)\s*/,"%' \) \\1 #{@l} LIKE \( '%").
- gsub(/(.+)/,"#{@l} LIKE \( '%\\1%' \)")
- search_construct << unescaped_search
- search_construct=search_construct.join(' ')
- search[:search] << search_construct
- search[:flag]=true
- search
- end
- search
- end
- end
- WOK_SQL
- end
- def search_query1
- <<-'WOK_SQL'
- @search_text,@search_endnotes='',''
- @search_text=search[:text].flatten.join(' AND ')
- @search_text=@search_text.gsub(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- @search_endnotes=search[:endnotes].flatten.join(' AND ')
- @search_endnotes=@search_endnotes.gsub(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
- end
- WOK_SQL
- end
- def search_query2
- <<-'WOK_SQL'
- def sql_select_body
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:body]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, metadata_and_text.notes_suffix, doc_objects.body, doc_objects.seg, doc_objects.ocn, metadata_and_text.tid FROM doc_objects, metadata_and_text WHERE #{@search_text} AND doc_objects.metadata_tid = metadata_and_text.tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, doc_objects.ocn}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:body] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_endnotes
- limit ||=@@limit
- offset ||=@@offset
- @sql_statement[:endnotes]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata_and_text, endnotes WHERE #{@search_endnotes} AND metadata_and_text.tid = endnotes.metadata_tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, endnotes.nr}
- @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
- select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range]
- select
- end
- def sql_select_body_format
- %{#{sql_select_body}}
- end
- def sql_select_endnotes_format
- %{#{sql_select_endnotes}}
- end
- def contents
- @conn.select_all(sql_select_body)
- end
- def endnotes
- @conn.select_all(sql_select_endnotes)
- end
- end
- WOK_SQL
- end
- def dbi_connect
- <<-'WOK_SQL'
- @dbi="DBI:SQLite3:#{db_sqlite}" #sqlite3 ?
- @conn=DBI.connect(@dbi)
- WOK_SQL
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/composite.rb b/lib/sisu/v3/composite.rb
deleted file mode 100644
index 3923799c..00000000
--- a/lib/sisu/v3/composite.rb
+++ /dev/null
@@ -1,284 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: composite documents, assemble/build documents from other
- documents or parts of marked up text
-
-=end
-module SiSU_Assemble
- require_relative 'sysenv' # sysenv.rb
- class RemoteImage
- def initialize
- @env=SiSU_Env::InfoEnv.new
- end
- def image(dir)
- images=[]
- images[0]=dir
- images
- end
- def download_images(images_info)
- path="#{@env.processing_path.processing}/external_document/image"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=images_info.shift
- images_info.each do |i|
- image="#{path}/#{i}"
- imagefile=File.new(image,'w+')
- open("#{download_from}/#{i}") do |g|
- imagefile << g.read
- end
- imagefile.close
- end
- output_path="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external"
- FileUtils::mkdir_p(output_path) unless FileTest.directory?(output_path)
- SiSU_Env::SystemCall.new("#{path}/*",output_path,'q').rsync
- end
- def download_doc_skin(doc_skin) #first element in array is source url
- path="#{@env.processing_path.processing}/external_document/skin/doc"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=doc_skin.shift
- doc_skin.each do |i|
- skin="#{path}/#{i}.rb"
- unless FileTest.exists?(skin)
- skinfile=File.new(skin,'w+')
- open("#{download_from}/#{i}.rb") do |g|
- skinfile << g.read
- end
- skinfile.close
- end
- end
- end
- end
- class Composite
- @@imager={}
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- begin
- pwd=Dir.pwd
- Dir.chdir(@opt.f_pth[:pth])
- @fns_array=IO.readlines(@opt.fno,'')
- assembled=insertions?
- write(assembled)
- Dir.chdir(pwd)
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def write(assembled)
- assembled_file=File.new("#{@env.processing_path.composite_file}/#{@opt.fnb}.ssm.sst",'w+')
- assembled.each {|a| assembled_file << a }
- assembled_file.close
- end
- def download_images(download_from,images_array)
- path="#{@env.processing_path.processing}/external_document/image"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- images_array.each do |i|
- image="#{path}/#{i}"
- unless FileTest.exists?(image)
- imagefile=File.new(image,'w+')
- open("#{download_from}/#{i}") do |g|
- imagefile << g.read
- end
- imagefile.close
- end
- end
- end
- def download_doc_skin(doc_skin) #first element in array is source url
- path="#{@env.processing_path.processing}/external_document/skin/doc"
- FileUtils::mkdir_p(path) unless FileTest.directory?(path)
- download_from=doc_skin.shift
- doc_skin.each do |i|
- skin="#{path}/#{i}.rb"
- unless FileTest.exists?(skin)
- skinfile=File.new(skin,'w+')
- open("#{download_from}/#{i}.rb") do |g|
- skinfile << g.read
- end
- skinfile.close
- end
- end
- end
- def insertion(fni,insert_array)
- file={ prepared: [], images: [] }
- rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
- file[:prepared] << "\n% |#{fni}|@|^|>>ok\n"
- @code_flag=false
- insert_array.each do |i|
- @code_flag=if i =~/^code\{/ then true
- elsif i =~/^\}code/ then false
- else @code_flag
- end
- if not @code_flag \
- and i !~/^%+\s/
- i=i.gsub(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax)
- if i =~/^@\S+?:/
- i=i.gsub(/\n/m,"\n% ").
- gsub(/\n%\s+$/m,'').
- gsub(/^@\S+?:/m,"\n% [imported header:] ") #off imported headers
- end
- end
- file[:prepared] << i
- if i !~/^%+\s/ \
- and i =~rgx_image
- file[:images] << i.scan(rgx_image).uniq
- end
- end
- file[:prepared] << "\n% end import" << "\n\n"
- if file[:images].length > 0
- file[:images]=file[:images].flatten.uniq
- file[:images].delete_if {|x| x =~/https?:\/\// }
- end
- file
- end
- def insertions?
- data=@fns_array
- tuned_file,imagedir=[],[]
- SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',"[#{@opt.f_pth[:lng_is]}] #{@opt.fno}").grey_title_hi unless @opt.cmd =~/q/
- para=data.each do |para|
- if para =~/^<<\s+(\S+?\.ss[it])$/ \
- or para =~/^<<\{(\S+?\.ss[it])\}$/ \
- or para =~/^(?:<<\s*)\|(\S+?)\|@\|.+?\|(?:req(?:quire)?\b|\s*\})?/ \
- or para =~/^r\{(.+?)\}/ #depreciated
- loadfile=$1.strip
- SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile).txt_grey if @opt.cmd =~/[MVv]/
- tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest
- imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch
- require 'uri'
- image_uri=URI.parse(imagedir)
- require 'open-uri'
- require 'pp'
- insert=open(loadfile)
- insert_array=insert.dup
- insert.close
- file=insertion(loadfile,insert_array)
- @@imager[image_uri] ||=[]
- @@imager[image_uri] << file[:images]
- file[:prepared]
- elsif loadfile =~ /\.ss[ti]$/ \
- and FileTest.file?(loadfile)
- insert_array=IO.readlines(loadfile,'')
- file=insertion(loadfile,insert_array)
- file[:prepared]
- else
- cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- STDERR.puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}"
- para
- end
- else tuned_file << para
- end
- tuned_file=tuned_file.flatten.compact
- end
- if @@imager.length >0
- @@imager.each do |d,i|
- i=i.flatten.uniq
- image_info=d + i
- download_images(image_info.flatten)
- end
- end
- tuned_file
- end
- end
- class CompositeFileList
- @@imager={}
- def initialize(opt)
- @opt=opt
- @env=SiSU_Env::InfoEnv.new
- end
- def read
- begin
- @opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm') #FIX earlier, hub
- @fns_array=IO.readlines(@opt.fns,'')
- files=insertions?
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def insertions?
- data=@fns_array
- tuned_file,imagedir=[],[]
- SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',@opt.fno).grey_title_hi unless @opt.cmd =~/q/
- @ssm=[@opt.fns]
- para=data.each do |para|
- if para =~/^<<\s+(\S+?\.ss[it])$/
- loadfile=$1.strip
- SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile).txt_grey if @opt.cmd =~/[MVv]/
- tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/
- @ssm << loadfile
- elsif loadfile =~ /\.ss[ti]$/ \
- and FileTest.file?(loadfile)
- @ssm << loadfile
- else
- cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- STDERR.puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}"
- para
- end
- end
- end
- @ssm
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/concordance.rb b/lib/sisu/v3/concordance.rb
deleted file mode 100644
index 6a984454..00000000
--- a/lib/sisu/v3/concordance.rb
+++ /dev/null
@@ -1,380 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: concordance file (html concordance, wordmap, linked index of
- words in document)
-
-=end
-module SiSU_Concordance
- require_relative 'particulars' # particulars.rb
- include SiSU_Particulars
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'defaults' # defaults.rb
- include SiSU_Viz
- require_relative 'html_format' # html_format.rb
- include SiSU_HTML_Format
- require_relative 'html_minitoc' # html_minitoc.rb
- class Source
- def initialize(opt)
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- end
- def read
- begin
- @env,@md=@particulars.env,@particulars.md
- loc=@env.url.output_tell
- unless @md.opt.cmd =~/q/
- tool=(@md.opt.cmd =~/[MVv]/) \
- ? "#{@env.program.web_browser} #{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}"
- : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}"
- @md.opt.cmd=~/[MVvz]/ \
- ? SiSU_Screen::Ansi.new(@opt.cmd,"Concordance",tool).grey_title_hi
- : SiSU_Screen::Ansi.new(@opt.cmd,'Concordance',tool).green_title_hi
- end
- wordmax=@env.concord_max
- unless @md.wc_words.nil?
- if @md.wc_words < wordmax
- SiSU_Concordance::Source::Words.new(@particulars).songsheet
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"concordance skipped, large document has over #{wordmax} words (#{@md.wc_words})").warn unless @md.opt.cmd =~/q/
- end
- else
- SiSU_Screen::Ansi.new(@md.opt.cmd,"wc (word count) is off, concordance will be processed for all files including those over the max set size of: #{wordmax} words").warn unless @md.opt.cmd =~/q/
- SiSU_Concordance::Source::Words.new(@particulars).songsheet
- end
- rescue
- SiSU_Errors::InfoError.new($!,$@,@md.opt.cmd,@md.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- SiSU_Env::CreateSite.new(@opt.cmd).cp_css
- end
- end
- private
- class DocTitle
- include SiSU_Viz
- #revisit, both requires (html & shared_xml) needed for stand alone operation (sisu -w [filename])
- require_relative 'shared_xml' # shared_xml.rb
- require_relative 'html' # html.rb
- def initialize(particulars)
- @particulars,@md=particulars,particulars.md
- @data=SiSU_HTML::Source::HTML_Environment.new(particulars).tuned_file_instructions
- @file=SiSU_Env::FileOp.new(@md)
- @vz=SiSU_Env::GetInit.instance.skin
- txt_path=%{#{@md.dir_out}}
- SiSU_Env::InfoSkin.new(@md).select
- @fnb=@md.fnb
- @lex_button=%{}
- @doc_details =<
Word index links are to html versions of the text the segmented version followed by the scroll (single document) version. [For segmented text references [T1], [T2] or [T3] appearing without a link, indicates that the word appears in a title (or subtitle) of the text (that is identifiable by the appended object citation number).]
-
(The word listing/index is Case sensitive: Capitalized words appear before lower case)
-
- word (number of occurences) linked references to word within document
- [if number of occurences exceed number of references - word occurs more than once in at least one reference. Footnote/endnotes are either assigned to the paragraph from which they are referenced or ignored, so it is relevant to check the footnotes referenced from within a paragraph as well.]
-
-
- (After the page is fully loaded) you can jump directly to a word by appending a hash (#) and the word to the url for this text, (do not forget that words are case sensitive, and may be listed twice (starting with and without an upper case letter)), #your_word # [ http://[web host]/#{@fnb}/concordance.html#your_word ]
-
-WOK
- end
- end
- class Word
- @@word_previous=''
- def initialize(word,freq)
- @word,@freq=word,freq
- end
- def html
- w=if @word.capitalize==@@word_previous
- %{\n
#{@word}
(#{@freq})
\n\t
}
- else n=@word.strip.gsub(/\s+/,'_') #also need to convert extended character set to html
- %{\n
}
- for word in @freq.keys.sort! {|a,b| a.downcase<=>b.downcase}
- f=/^(\S)/.match(word)[1]
- if letter < f.upcase
- while letter < f.upcase
- if alph.length > 0
- letter=alph.shift
- @file_concordance << %{\n
}
- the_idx.each do |i|
- i.each do |x|
- if x.is_a?(String)
- f=/^(\S)/.match(x)[1]
- if letter < f
- while letter < f
- if alph.length > 0
- letter=alph.shift
- idx[:html] << %{\n
'
- idx[:xhtml][@r]=idx[:xhtml][@r] + ''
- end
- end
- end
- idx
- @x +=1
- end
- end
- end
- print "\n" if @md.opt.cmd =~/V/
- idx
- end
- def screen_print(the_idx)
- the_idx.each do |i|
- i.each do |x|
- if x.is_a?(String)
- print "\n" + x + ', '
- elsif x.is_a?(Array)
- p 'array error? -->'
- print x
- elsif x.is_a?(Hash)
- if x['term_node_lev1'].is_a?(Array)
- x['term_node_lev1'].each do |a|
- if a[:range]
- print a[:range] + ', '
- elsif a[:ocn]
- print a[:ocn] + ', '
- else p 'error'
- end
- end
- end
- if x['term_node_lev2']
- m=x['term_node_lev2']
- m=m.sort
- m.each do |k,y|
- if k !~/term_node_lev1/
- print "\n\t" + k + ', '
- y.each do |z|
- if z[:range]
- print z[:range] + ', '
- elsif z[:ocn]
- print z[:ocn] + ', '
- else p 'error'
- end
- end
- end
- end
- end
- end
- end
- end
- end
- def output_idx(idx)
- if @md.book_idx
- path="#{@env.path.output}/#{@md.fnb}"
- Dir.mkdir(path) unless FileTest.directory?(path)
- puts "#{path}/#{@md.fn[:book_idx_html]} #{__FILE__}::#{__LINE__}"
- html_index_file=File.new("#{path}/#{@md.fn[:book_idx_html]}",'w')
- idx[:html].each {|x| html_index_file << x }
- html_index_file.close
- end
- end
- def clean_and_insert_index(data,sisu_markup_idx)
- tuned_file=[]
- data.each do |dob|
- tuned_file << dob
- if dob.obj =~/#{Mx[:br_endnotes]}/ \
- and sisu_markup_idx
- sisu_markup_idx.each do |idx|
- tuned_file << idx
- end
- end
- end
- tuned_file
- end
- def clean_index(data) #check on use of dob
- tuned_file=[]
- data.each do |para|
- para=para.gsub(/\n*#{@rgx_idx}/m,'')
- tuned_file << para
- end
- tuned_file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dal_images.rb b/lib/sisu/v3/dal_images.rb
deleted file mode 100644
index 2c867c1c..00000000
--- a/lib/sisu/v3/dal_images.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Images
- class Images
- #require 'RMagick'
- #include Magick
- def initialize(md,data)
- @md,@data=md,data
- end
- def images
- data=@data
- tuned_file=[]
- @rmgk=false
- imagemagick_=true #imagemagick_=SiSU_Env::InfoSettings.new.program?('rmagick')
- if imagemagick_
- begin
- @rmgk=SiSU_Env::Load.new('RMagick').prog
- rescue
- @rmgk=false
- end
- else
- if @md.opt.cmd =~/[vVM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'*WARN* use of RMagick is not enabled in sisurc.yml').warn
- end
- end
- data.each do |dob|
- unless dob.is ==:table
- dob.obj=dob.obj.strip
- if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- if dob.obj !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+/
- m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/
- if imagemagick_
- imgs=dob.obj.scan(m).flatten
- img_col=img_row=nil
- images=imgs.each do |image|
- dir=SiSU_Env::InfoEnv.new(@md.fns)
- path_image=[dir.path.image_source_include_local,dir.path.image_source_include_remote,dir.path.image_source_include]
- image_path=nil
- path_image.each do |img_pth|
- image_path=img_pth
- break if FileTest.exist?("#{img_pth}/#{image}")
- end
- if FileTest.exist?("#{image_path}/#{image}")
- if @rmgk
- img=Magick::ImageList.new("#{image_path}/#{image}")
- img_col,img_row=img.columns,img.rows
- else
- if @md.opt.cmd =~/[vVM]/
- SiSU_Screen::Ansi.new(@md.opt.cmd,'*WARN* RMagick not present, will attempt to use imagemagick (identify) directly').warn
- end
- imgk=SiSU_Env::SystemCall.new.imagemagick
- gmgk=SiSU_Env::SystemCall.new.graphicksmagick
- if imgk or gmgk
- if imgk
- imgsys=`identify #{image_path}/#{image}`.strip #system call
- elsif gmgk
- imgsys=`gm identify #{image_path}/#{image}`.strip #system call
- end
- img_col,img_row=/(\d+)x(\d+)/m.match(imgsys)[1,2]
- img_col,img_row=img_col.to_i,img_row.to_i
- end
- end
- row=((img && defined? img.rows) ? img.rows : img_row)
- col=((img && defined? img.columns) ? img.columns : img_col)
- if img_col > img_row #landscape
- if img_col> 640
- img_col=640
- img_row=((1.00*img_col/col)*row).round
- end
- else #portrait
- if img_col> 640
- img_col=640
- img_row=((1.00*img_col/col)*row).round
- end
- if img_row > 640
- img_row=640
- img_col=((1.00*img_row/row)*col).round
- end
- end
- dob.obj=dob.obj.gsub(/(#{image})/,"#{image} #{img_col}x#{img_row}")
- else dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}(#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/,'[ \1 (\2 missing) ]')
- end
- end
- else
- images=dob.obj.scan(m) do |image|
- SiSU_Screen::Ansi.new(@md.opt.cmd,'*WARN* where image dimensions have not been provided RMagick or imagemagick is required',image).warn #unless @opt.cmd =~/q/
- end
- end
- end
- end
- if dob.obj =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
- dob.obj=dob.obj.gsub(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ')
- end
- end
- tuned_file << dob unless dob.nil?
- end
- tuned_file
- end
- end
-end
-__END__
-imgsys=`identify #{image_path}/#{image}`.strip
diff --git a/lib/sisu/v3/dal_metadata.rb b/lib/sisu/v3/dal_metadata.rb
deleted file mode 100644
index 4dbfe175..00000000
--- a/lib/sisu/v3/dal_metadata.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Metadata
- class Metadata
- def initialize(md,metad)
- @md,@metadata=md,metad
- l=SiSU_Env::StandardiseLanguage.new(@md.opt.lng).language
- language=l[:n]
- @tr=SiSU_Translate::Source.new(md,language)
- end
- def make_para(obj,ocn)
- h={ obj: obj, ocn: 0 }
- SiSU_DAL_DocumentStructure::ObjectPara.new.paragraph(h)
- end
- def make_heading(obj,ocn,name,lv,ln)
- h={ lv: lv, ln: ln, name: name, obj: obj, ocn: 0 }
- SiSU_DAL_DocumentStructure::ObjectHeading.new.heading(h)
- end
- def metadata
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dal_numbering.rb b/lib/sisu/v3/dal_numbering.rb
deleted file mode 100644
index 21ada29f..00000000
--- a/lib/sisu/v3/dal_numbering.rb
+++ /dev/null
@@ -1,473 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_Numbering
- class Numbering
- attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment
- def initialize(md,data)
- @md,@data=md,data
- @obj=@type=@ocn=@lv=@name=@index=@comment=nil
- end
- def numbering_song
- data=@data
- data=number_plaintext_para(data)
- data=auto_number_heading_ie_title(data.compact) #tr issue
- data=ocn(data.compact) #watch
- data=xml(data.compact)
- data=minor_numbering(data.compact)
- data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
- data=set_heading_top(data) unless @md.set_heading_top
- [data,tags_map,ocn_html_seg_map]
- end
- def number_plaintext_para(data)
- @tuned_file=[]
- data.each do |dob|
- if (dob.of !=:block \
- && dob.of !=:comment \
- && dob.of !=:layout) \
- && dob.ocn_ #and dob.obj !~ /#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ #FIX
- dob.obj=dob.obj.gsub(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks
- end
- unless dob.obj.is_a?(Array)
- dob.obj=dob.obj.gsub(/^\s+/,'').
- gsub(/\s$/,"\n")
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- def number_sub_heading(dob,num,title_no)
- unless dob.obj =~/\d+\.|(?:chapter|article|section|clause)\s+\d+/i #name selection arbitrary, fix
- dob.obj=case dob.name
- when /-/; dob.obj.gsub(/^/,"#{title_no} ")
- when /^#/; dob.obj.gsub(/^/,"#{title_no} ")
- when /^[a-z_\.]+/; dob.obj.gsub(/^/,"#{title_no} ")
- else
- dob.name=title_no if dob.name=~/^$/ #where title contains title number
- dob.obj.gsub(/^/,"#{title_no} ") if title_no =~/\d+/ #main, where title number is to be provided #watch changed placement
- end
- if @md.toc_lev_limit \
- and @md.toc_lev_limit < num
- dob.obj=dob.obj.gsub(/^/,'!_ ') #bold line, watch
- end
- end
- dob
- end
- def heading_tag_clean(heading_tag)
- heading_tag=heading_tag.gsub(/[ ]+/,'_').
- gsub(/["']/,'').
- gsub(/[\/]/,'-').
- gsub(/#{Mx[:fa_bold_o]}|#{Mx[:fa_bold_c]}/,'').
- gsub(/#{Mx[:fa_italics_o]}|#{Mx[:fa_italics_c]}/,'').
- gsub(/#{Mx[:fa_underscore_o]}|#{Mx[:fa_underscore_c]}/,'').
- gsub(/#{Mx[:fa_cite_o]}|#{Mx[:fa_cite_c]}/,'').
- gsub(/#{Mx[:fa_insert_o]}|#{Mx[:fa_insert_c]}/,'').
- gsub(/#{Mx[:fa_strike_o]}|#{Mx[:fa_strike_c]}/,'').
- gsub(/#{Mx[:fa_superscript_o]}|#{Mx[:fa_superscript_c]}/,'').
- gsub(/#{Mx[:fa_subscript_o]}|#{Mx[:fa_subscript_c]}/,'').
- gsub(/#{Mx[:fa_hilite_o]}|#{Mx[:fa_hilite_c]}/,'').
- gsub(/#{Mx[:gl_bullet]}/,'')
- end
- def auto_number_heading_ie_title(data) #also does some segment naming
- @tuned_file=[]
- if defined? @md.make.num_top \
- and @md.make.num_top \
- and @md.make.num_top !~/^$/
- input||=@md.make.num_top
- end
- num_top=(input ? input.to_i : nil)
- t_no1=t_no2=t_no3=t_no4=0
- if num_top
- no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3)
- end
- t_not=0
- chapter_number_counter=0
- data=data.compact
- data.each do |dob| #@md.seg_names << [additions to segment names]
- title_no=nil
- dob=SiSU_DAL_DocumentStructureExtract::Structure.new(@md,dob).structure_markup #must happen earlier, node info etc. require
- if dob.is ==:heading \
- && dob.autonum_ \
- and defined? @md.make.num_top \
- and @md.make.num_top !~/^$/
- if dob.lv=='1' \
- and dob.obj =~/^#\s|\s#(?:\s|$)/
- chapter_number_counter +=1
- dob.obj=dob.obj.gsub(/^#\s/,"#{chapter_number_counter} ").
- gsub(/#([:,]?\s|[.]?$)/,"#{chapter_number_counter}\\1")
- end
- if dob.ln==no1
- @subnumber=1
- @subnumber=0 if dob.ln==no1
- end
- if dob.ln.to_s =~/^[1-6]/ \
- and not dob.toc_ \
- and dob.obj !~/#{Mx[:fa_o]}(?:~#|-#)#{Mx[:fa_c]}/ # <-- fix
- if dob.ln==no1
- t_no1+=1; t_no2=0; t_no3=0
- title_no="#{t_no1}"
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(title_no)
- if dob.ln==no1
- dob.name="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
- tag=heading_tag_clean(tag)
- dob.tags=[tag,dob.tags].flatten if tag !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
- ? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
- : (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
- end
- if dob.ln !=no1 \
- and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
- dob.name ="#{title_no}" if not dob.name
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
- end
- @md.seg_names << title_no
- end
- if dob.ln!=no1 \
- and dob.name!~/^[a-z_\.]+$/ \
- and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
- dob.tags=[title_no,dob.tags].flatten if title_no !~/^\d+$/ #check whether will work across file types with stop signs
- dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
- end
- end
- if dob.ln==no1 #watch because here you change dob.name
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- end
- if dob.ln==no2 #watch because here you change dob.name
- t_no2+=1; t_no3=0
- title_no="#{t_no1}.#{t_no2}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- dob=number_sub_heading(dob,no2,title_no)
- end
- if dob.ln==no3 #watch because here you change dob.name
- t_no3+=1
- title_no="#{t_no1}.#{t_no2}.#{t_no3}"
- dob.tags=["h#{title_no}",dob.tags].flatten #check whether will work across file types with stop signs
- dob=number_sub_heading(dob,no3,title_no)
- end
- elsif dob.ln.to_s =~/^[1-6]/ \
- and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
- end
- elsif dob.is ==:heading \
- and dob.autonum_ \
- and @md.markup =~/num_extract/ #AS DANGEROUS force enable with document, note already does this type of numbering for cisg, locate and coordinate logic, is currently misplaced in code, chengwei inspired 2004w23/4
- #here lies a bug, as is nil when run from -Dv --update, FIX
- if (dob.name.nil? or dob.name.empty?) \
- and dob.ln.to_s =~/^[1-9]/ \
- and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
- dob.name=$1
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- end
- if @md.toc_lev_limit
- end
- elsif defined? dob.name \
- and dob.name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- end
- dob.tags=dob.tags.uniq if defined? dob.tags
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- def ocn(data) #and auto segment numbering increment
- @tuned_file=SiSU_DAL_DocumentStructureExtract::OCN.new(@md,data).ocn
- @tuned_file
- end
- def xml(data)
- @tuned_file=SiSU_DAL_DocumentStructureExtract::XML.new(@md,data).dom
- @tuned_file
- end
- def minor_numbering(data) #and auto segment numbering increment
- @tuned_file=[]
- number_small,letter_small=0,0
- letter=%w( 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 )
- data.each do |dob|
- if dob.of ==:heading \
- || dob.of ==:heading_insert \
- || dob.of ==:para \
- || dob.of ==:block
- if dob.is ==:heading \
- and dob.ln.to_s=~/^[1-9]/ #% sub-number system, (baby numbering) reset with any change of major number (more obviously should be placed in number titles, but that is conditionally executed, check and move later)
- number_small,letter_small=0,0
- elsif dob.is ==:para
- if dob.obj =~/^#[ 1]/ \
- and dob.obj !~/^#\s+(?:~#)?$/
- letter_small=0
- number_small=0 if dob.obj =~ /^#1/
- number_small+=1
- dob.obj=dob.obj.gsub(/^#[ 1]/,"#{number_small}. ")
- end
- if dob.obj =~/^_# /
- dob.obj=dob.obj.gsub(/^_# /,"#{letter[letter_small]}. ")
- dob.indent='1'
- letter_small+=1
- end
- end
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- def name_para_seg_filename(data) #segment naming, remaining
- # paragraph name/numbering rules
- # manual naming overrides, manual naming may be
- # alpha-numeric characters mixed,
- # numeric only (a number), if
- # all segments have been named,
- # the numbers used are over 1000 or
- # it is not minded that auto-numbering uses a funny scheme for naming segments (not yet implemented)
- # [for now a warning is printed for such documents on use of maintenance or very-verbose flag]
- # auto-naming takes the form of giving numbers to segments
- # the rules for which are as follows
- # if the title/heading text starts with a numeric, then that is used (1 3.1 3rd etc.)
- # otherwise the level 4 segment number from the embedded document structure info is used
- # if there is none a sequential number is designated, preceded by an underscore
- @tuned_file,@unique_auto_name=[],[]
- tags={}
- art_filename_auto=1
- @counter=1
- if not @md.seg_autoname_safe and @md.opt.cmd =~/[MV]/
- puts 'manual segment names, numbers used as names, risk warning (segmented html)'
- end
- ocn_html_seg=[]
- data.each do |dob|
- if dob.is==:heading \
- && dob.ln \
- and dob.ln.to_s =~/^[456]/
- if dob.ln==4 \
- and not dob.name \
- and not @md.set_heading_seg
- @md.set_heading_seg=true
- end
- if dob.name !~/^\S+/ \
- and dob.obj =~/^\s*(?:\S+\s+)?([\d.,:-]+)/m #heading starts with a recognised numeric or word followed by a recognised numerical construct, use that as name
- possible_seg_name=$1
- possible_seg_name=possible_seg_name.gsub(/(?:[:,-]|\W)/,'.').
- gsub(/\.$/,'')
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(possible_seg_name)
- dob.name=possible_seg_name
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
- @md.seg_names << possible_seg_name
- else puts 'warn, there may be a conflicting numbering scheme' if @md.opt.cmd =~/[VM]/
- end
- end
- if dob.ln==4 \
- and dob.name #extract segment name from embedded document structure info
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(dob.name)
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/
- @md.seg_names << dob.name
- end
- end
- if dob.ln==4 \
- and not dob.name #if still no segment name, provide a numerical one
- pf='_' #pg='' #may use e.g. '' or '~' or '_'
- segn_auto="#{pf}#{art_filename_auto.to_s}"
- if @md.seg_names.is_a?(Array) \
- and not @md.seg_names.include?(segn_auto)
- dob.name=segn_auto
- dob.tags=[dob.name,dob.tags].flatten if dob.name !~/^\d+$/ #check whether will work across file types with stop signs
- @md.seg_names << segn_auto
- else puts 'segment name (numbering) error'
- end
- art_filename_auto+=1
- end
- if dob.ln==4 \
- and not dob.name #should not occur
- puts "e r r o r -\t#{__FILE__}::#{__LINE__}\n#{dob.inspect}"
- end
- end
- if (dob.is ==:heading \
- || dob.is ==:heading_insert) \
- && dob.ln==4
- @seg=dob.name
- end
- @tuned_file << if dob.is==:heading \
- && (@md.pagenew || @md.pagebreak)
- m=dob.ln.to_s
- dob_tmp=[]
- if @md.pagenew.inspect =~/#{m}/
- dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) << dob
- elsif @md.pagebreak.inspect =~/#{m}/
- dob_tmp << SiSU_DAL_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) << dob
- end
- para_result=unless dob_tmp.length > 0; dob
- else dob_tmp
- end
- else dob
- end
- if defined? dob.ocn \
- and dob.ocn
- @segname=((dob.is==:heading || dob.is==:heading_insert) && dob.ln==4 && (defined? dob.name)) \
- ? (dob.name)
- : @segname
- tags["#{dob.ocn}"]={ segname: @segname }
- ocn_html_seg[dob.ocn]=if (dob.is==:heading || dob.is==:heading_insert)
- x=if dob.ln =~/[1-3]/
- { seg: nil, level: dob.ln }
- else #elsif dob.ln =~/[4-6]/
- { seg: @seg, level: dob.ln }
- end
- else
- { seg: @seg, level: nil }
- end
- end
- dob.tags=dob.tags.uniq if defined? dob.tags
- if defined? dob.tags \
- and dob.tags.length > 0
- #@segname=((dob.is=='heading'|| dob.is=='heading_insert') && dob.ln==4 && (defined? dob.name)) \
- #? (dob.name) \
- #: @segname
- dob.tags.each do |x|
- tags[x]={ ocn: dob.ocn.to_s, segname: @segname }
- end
- end
- dob
- end
- ocn_html_seg.each_with_index do |ocn,i|
- if ocn \
- and ocn[:level].to_s=~/[1-3]/
- ocn_seg=nil
- (1..4).each do |x|
- if ocn_html_seg[i+x] and ocn_html_seg[i+x][:level]==4
- ocn[:seg]=ocn_html_seg[i+x][:seg]
- end
- end
- end
- end
- if @md.seg_names.length > 0
- @md.set_heading_seg=true
- end
- tuned_file=@tuned_file.flatten
- [tuned_file,tags,ocn_html_seg]
- end
- def set_heading_top(data) #% make sure no false positives
- unless @md.set_heading_top
- puts "\tdocument contains no top level heading, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |t_o|
- unless @md.set_heading_top
- if t_o !~/^(?:#{Rx[:meta]}|@\S+:)\s/m \
- and t_o !~/\A\s*\Z/m
- @md.set_heading_top=true
- if defined? @md.title \
- and @md.title \
- and defined? @md.title.full \
- and defined? @md.creator \
- and @md.creator
- head=@md.title.main ? ([@lv='1',@obj=@md.title.main]) : ([@lv='1',@obj='[no title provided]'])
- @tuned_file << head
- end
- end
- end
- @tuned_file << t_o
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- def set_heading_seg(data) #% make sure no false positives
- unless @md.set_heading_seg
- puts "\tdocument contains no segment level, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |dob|
- unless @md.set_heading_seg
- if defined? dob.ln and dob.ln.to_s !~/^[123]/m \
- and dob.obj !~/\A\s*\Z/m \
- and dob.is !=:layout
- @md.set_heading_seg=true
- head=@md.title.main \
- ? (dob.ln,dob.name,dob.obj=4,'seg',@md.title.main)
- : (dob.ln,dob.name,dob.obj=4,'seg','[segment]')
- @tuned_file << head
- end
- end
- @tuned_file << dob
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- def set_header_title(data) #% make sure no false positives
- unless @md.set_header_title
- puts "\t no document title provided, (will have to manufacture one)" if @md.opt.cmd =~/[MV]/
- @tuned_file=[]
- data.each do |t_o|
- unless @md.set_header_title
- if t_o !~/^%{1,2}\s/m \
- and t_o !~/\A\s*\Z/m
- @tuned_file << "#{Mx[:meta_o]}title#{Mx[:meta_c]} #{@md.heading_seg_first}"
- @md.title.main=@md.heading_seg_first
- @md.set_header_title=true
- end
- end
- @tuned_file << t_o
- end
- @tuned_file=@tuned_file.flatten
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dal_substitutions_and_insertions.rb b/lib/sisu/v3/dal_substitutions_and_insertions.rb
deleted file mode 100644
index 847f917a..00000000
--- a/lib/sisu/v3/dal_substitutions_and_insertions.rb
+++ /dev/null
@@ -1,159 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DAL_SubstituteAndInsert
- class SI
- def initialize(md,data)
- @md,@data=md,data
- @skin=SiSU_Env::InfoSkin.new(@md)
- end
- def substitutions_and_insertions?
- data=@data
- data_expand=[]
- if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it)
- data[0]=data[0].gsub(/^#!\s*\/usr\/bin\/sisu/,'').
- gsub(/^#!\s*\/usr\/bin\/env sisu/,'')
- end
- if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier
- data[0]=data[0].gsub(/^(SiSU\s*[\d.]*)$/,'% \1').
- gsub(/^(sisu-[\d.]+)$/,'% \1')
- end
- data.each do |para|
- if para =~/<:(insert\d+)!?>/ \
- and para !~/^%\s+/
- @skin.select
- ins=SiSU_Viz::Inserts.new
- case para
- when /^\s*<:(insert1)>\s*$/
- i=$1
- if defined? ins.insert1
- para=[]
- ins.insert1.split(/\n\n/).each {|x| para << x }
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert2)>\s*$/
- i=$1
- if defined? ins.insert2
- para=[]
- ins.insert2.split(/\n\n/).each {|x| para << x }
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert3)>\s*$/
- i=$1
- if defined? ins.insert3
- para=[]
- ins.insert3.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert4)>\s*$/
- i=$1
- if defined? ins.insert4
- para=[]
- ins.insert4.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert5)>\s*$/
- i=$1
- if defined? ins.insert5
- para=[]
- ins.insert5.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert6)>\s*$/
- i=$1
- if defined? ins.insert6
- para=[]
- ins.insert6.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- when /^\s*<:(insert7)>\s*$/
- i=$1
- if defined? ins.insert7
- para=[]
- ins.insert7.split(/\n\n/).each {|x| para << x << "\n"}
- else p "skin #{i} not found in #{@skin.select}"
- end
- end
- para.each {|x| data_expand << x }
- else data_expand << para
- end
- data_expand=data_expand.flatten.compact
- end
- data_new=[]
- data_expand.each do |para|
- para=if @md.markup_version.determined >= 0.38
- SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_markup_normalize
- else
- SiSU_DAL_DocumentStructureExtract::Structure.new(@md,para).structure_marks
- end
- para=para.gsub(/^(:?A~)\s*$/,'\1~ @title @author'). #conditional header
- gsub(/^((?:[1-9]|:?[A-C])~\S*)\s*$/,'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12
- if para =~/^@\S+?:/
- para=para.gsub(/^@(\S+?):(\s+|$)/,"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}\\2").
- gsub(/^@(\S+?):([+-])(\s+|$)/,"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}\\3")
- end
- data_new << para
- end
- data_new
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dal_syntax.rb b/lib/sisu/v3/dal_syntax.rb
deleted file mode 100644
index a43ca005..00000000
--- a/lib/sisu/v3/dal_syntax.rb
+++ /dev/null
@@ -1,608 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: Syntax for markup, input markup syntaxes, determined here
-
-=end
-module SiSU_DAL_Syntax
- class Words
- def initialize(line,md,mkp)
- @line,@md,@mkp=line,md,mkp
- end
- end
- class Markup
- def initialize(md='',data='')
- @data,@md=data,md
- @vz=SiSU_Env::GetInit.instance.skin
- @data_new=[]
- url_and_stub=SiSU_Env::InfoEnv.new.url
- @output_url="#{url_and_stub.remote}"
- @env=SiSU_Env::InfoEnv.new
- emph_set=if defined? @md.make.emphasis \
- and not @md.make.emphasis.nil?
- @md.make.emphasis
- else @env.markup_emphasis
- end
- @emph=case emph_set
- when /bold/
- emph_italics=false
- { o: Mx[:fa_bold_o], c: Mx[:fa_bold_c] }
- when /italics/
- emph_italics=true
- { o: Mx[:fa_italics_o], c: Mx[:fa_italics_c] }
- when /underscore/
- emph_italics=false
- { o: Mx[:fa_underscore_o], c: Mx[:fa_underscore_c] }
- else p __LINE__.to_s + '::' + __FILE__
- end
- @http_m=%r{\{.+?\}https?://\S+|https?:\S+|:\S+|\.\.\/\S+|#\S+|\S+?\.png\b|[*]~\S+|^#{Mx[:meta_o]}.+|#{Mx[:gr_o]}(?:code|block|group|alt|verse)(?:-end)?#{Mx[:gr_c]}|#{Mx[:fa_o]}:br#{Mx[:fa_c]}}
- @manmkp_ital=emph_italics \
- ? '[i/*]\\{.+?\\}[i/*]'
- : '[i/]\\{.+?\\}[i/]'
- tail_m_ital=%q{(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$)}
- tail_m_bold=%{(?:(?:#{Mx[:fa_italics_c]})?(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$))?}
- bold_line=%{^!_\s.+?(?:#{Mx[:br_line]}|\n|$)}
- ital_line=%{^/_\s.+?(?:#{Mx[:br_line]}|\n|$)}
- @line_scan_ital=if defined? @md.make.italics[:str] \
- and defined? @vz.markup_make_italic[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|(?:#{@md.make.italics[:str]}|#{@vz.markup_make_italic[:str]})#{tail_m_ital}|\S+|\n/i
- elsif defined? @md.make.italics[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|#{@md.make.italics[:str]}#{tail_m_ital}|\S+|\n/i
- elsif defined? @vz.markup_make_italic[:str]
- /#{@http_m}|#{bold_line}|#{@manmkp_ital}#{tail_m_ital}|#{@vz.markup_make_italic[:str]}#{tail_m_ital}|\S+|\n/i
- end
- @manmkp_bold=emph_italics \
- ? '^!_\s.+?(?:\n|$)|[!b]\\{.+?\\}[*!b]|[*!][a-zA-Z0-9\-_]+[!]'
- : '^!_\s.+?(?:\n|$)|[*!b]\\{.+?\\}[*!b]|[*!][a-zA-Z0-9\-_]+[*!]'
- @line_scan_bold=if (defined? @md.make.bold[:str] \
- and @md.make.bold[:str]) \
- and (defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str])
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@md.make.bold[:str]}|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/i
- elsif defined? @md.make.bold[:str] \
- and @md.make.bold[:str]
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@md.make.bold[:str]})#{tail_m_bold}|\S+|\n/i
- elsif defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str]
- /#{@http_m}|#{bold_line}|(?:#{@manmkp_bold}|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/i
- end
- end
- def songsheet
- @data=@data.compact
- @data.each do |dob|
- dob=breaks(dob)
- dob=if @md.sem_tag then sem(dob) else dob end #revisit
- dob=line_actions(dob)
- dob=paragraph_set(dob)
- dob=substitutions(dob)
- dob=wordlist_italics(dob)
- dob=wordlist_bold(dob)
- dob=bodymarkup(dob)
- @data_new << dob unless dob.nil?
- end
- @data_new
- end
- def sem(dob) #revisit
- dob=SiSU_Sem::Tags.new(dob,@md).rm.all
- end
- def breaks(dob)
- if dob.is !=:meta \
- && dob.is !=:comment \
- && dob.is !=:code \
- && dob.is !=:table
- dob.obj=dob.obj.gsub(/^-\\\\-\s*$/,"#{Mx[:br_page]}").
- gsub(/^=\\\\=\s*$/,"#{Mx[:br_page_new]}").
- gsub(/ \\\\(?: |$)/,"#{Mx[:br_line]}").
- gsub(/(?:<:?pb>)/,"#{Mx[:br_page]}"). # depreciated
- gsub(/(?:<:?pn>)/,"#{Mx[:br_page_new]}"). # depreciated
- gsub(/(?:<:?br>| )/,"#{Mx[:br_line]}") # depreciated
- end
- dob
- end
- def wordlist_italics(dob)
- dob=dob.dup
- if (defined? @md.make.italics[:str] \
- and @md.make.italics[:str]) \
- or (defined? @vz.markup_make_italic[:str] \
- and @vz.markup_make_italic[:str])
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment
- word=dob.obj.scan(@line_scan_ital)
- word=word.flatten.compact
- line_array=[]
- word.each do |w|
- unless /#{@manmkp_ital}|#{@http_m}/.match(w)
- if defined? @md.make.italics[:regx] \
- and @md.make.italics[:regx]
- w=w.gsub(@md.make.italics[:regx],
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- elsif defined? @vz.markup_make_italic \
- and @vz.markup_make_italic
- w=w.gsub(@vz.markup_make_italic,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- else w
- end
- end
- line_array << w
- end
- line_array.join(' ')
- else dob.obj
- end
- end
- dob
- end
- def embolden(given)
- given=given.gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}\\2").
- gsub(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})https?:\/\/\S+.*)/,
- "#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2").
- gsub(/(?:^!_\s+|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]}\s*)(.*)?\s*$/,
- "#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- end
- def italicise(given)
- given=given.gsub(/^\/_\s*(.+?)([#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}])/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s*(.+?)\s+((?:[*]~\S+\s*)+)/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s*(.+?)\s*([~-]#)$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2").
- gsub(/^\/_\s+(.*)?\s*$/,
- "#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}")
- end
- def line_actions(dob)
- dob.obj=if (dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:comment \
- && dob.is !=:meta) \
- and dob.obj =~ /^!_\s+/
- embolden(dob.obj)
- elsif dob.obj =~ /^\/_\s+/
- italicise(dob.obj)
- else dob.obj
- end
- dob
- end
- def paragraph_set(dob)
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- dob.obj.gsub(/\n/m,' ').
- gsub(/ \s+/m,' ')
- else dob.obj
- end
- dob
- end
- def substitutions(dob)
- dob=dob.dup
- dob=if defined? @md.make.substitute[:match_and_replace] \
- and @md.make.substitute[:match_and_replace].is_a?(Array)
- dob=if dob.is !=:meta \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- if dob.obj =~/#{@md.make.substitute[:matches]}/
- @md.make.substitute[:match_and_replace].each do |x|
- dob.obj=if x[:case_s]==:i
- dob.obj.gsub(/#{x[:match]}/mi,x[:replace])
- else
- dob.obj.gsub(/#{x[:match]}/m,x[:replace])
- end
- end
- end
- dob
- else dob
- end
- dob
- else dob
- end
- end
- def wordlist_bold(dob)
- dob=dob.dup
- if (defined? @md.make.bold[:str] \
- and @md.make.bold[:str]) \
- or (defined? @vz.markup_make_bold[:str] \
- and @vz.markup_make_bold[:str])
- dob.obj=if dob.is !=:meta \
- && dob.is !=:heading \
- && dob.is !=:heading_insert \
- && dob.is !=:code \
- && dob.is !=:comment \
- && dob.is !=:table
- line_array=[]
- word=dob.obj.scan(@line_scan_bold)
- word=word.flatten.compact
- word.each do |w|
- unless /#{@manmkp_bold}|#{@http_m}/.match(w)
- if defined? @md.make.bold[:regx] \
- and @md.make.bold[:regx] #document header: @bold: [bold word list]
- w=w.gsub(@md.make.bold[:regx],"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- elsif defined? @vz.markup_make_bold \
- and @vz.markup_make_bold #defaults and skin adjusted bold word list
- w=w.gsub(@vz.markup_make_bold,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}")
- end
- else
- w=if w =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/
- embolden(w) #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost!
- elsif w =~/^\/_\s+/
- italicise(w)
- else w
- end
- end
- line_array << w
- end
- line_array.join(' ')
- else dob.obj
- end
- else
- dob.obj=if dob.is==:heading \
- and dob.ln.to_s =~/[7-9]/
- embolden(dob.obj)
- else dob.obj
- end
- end
- dob
- end
- def fontface(dob)
- dob.obj=dob.obj.gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)\*\{(.+?)\}\*/m,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)!\{(.+?)\}!/m,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\(|\>)\/\{(.+?)\}\//m,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)_\{(.+?)\}_/m,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|#{Mx[:br_line]}|#{Mx[:br_paragraph]}|[\(\[\{]|\>)#\{(.+?)\}#/m,
- "\\1#{Mx[:fa_monospace_o]}\\2#{Mx[:fa_monospace_c]}"). #monospace
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/m,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite /blockquote?
- gsub(/(^|[^\\])\^\{(.+?)\}\^/m,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #superscript
- gsub(/(^|[^\\]),\{(.+?)\},/m,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}"). #subscript
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/m,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}"). #inserted text
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/m,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}"). #strikethrough - deleted text
- gsub(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>|\d+)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript single word, watch digit added
- dob
- end
- def bodymarkup(dob)
- # << http://www.jus.uio.no/sisu/sisu_markup_table/markup >>
- # See: data/sisu/sample/document_samples_sisu_markup/
- ## fontface
- # *{emphasis}* e{emphasis}e emphasis
- # !{bold text}! b{bold}b bold text
- # _{underline}_ u{underline}u underline
- # /{italics}/ i{italics}i italics
- # "{citation}" c{citation}c citation #blockquote?
- # ^{superscript}^ superscript
- # ,{subscript}, subscript
- # +{inserted text}+ inserted text
- # -{deleted text}- deleted text
- # #{monospace text}#
- #
- # {url address}:url
- # {image.png}imageurl
- # {image.png}png
- # ~{endnote}~
- # !_ #bold/emphasise paragraph
- # _" #blockquote paragraph
- # _1 <:i1> #indent paragraph 1 step
- # _2 <:i2> #indent paragraph 2 steps
- # _3 <:i3> #indent paragraph 3 steps
- # _4 <:i4> #indent paragraph 4 steps
- # _* #bullet (list) ●
- # _1* #bullet (list) indented
- # _1* #bullet (list) indented
- # # #numbered (list) level 1
- # _# #numbered (list) level 2
- dob=dob.dup
- if dob.is !=:meta \
- && dob.is !=:comment \
- && dob.is !=:code \
- && dob.is !=:table
- line_array=[]
- word=dob.obj.scan(/\S+|\n/) #unless line =~/^(?:#{Mx[:meta_o]}|%+\s)/ #visit
- if word
- word.each do |w| # _ - / # | : ! ^ ~
- unless w =~/~\{|\}~|~\[|\]~|^\^~|~\^|\*~\S+|~#|\{t?~|\{table|https?:\/\/\S+/ # do something earlier about table!!
- w=w.gsub(/\\?~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character
- end
- w=w.gsub(/^\<$/,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}").gsub(/^\>$/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character
- line_array << w
- end
- dob.obj=line_array.join(' ')
- dob.obj=dob.obj.strip
- end
- dob.obj=dob.obj.gsub(/^([*#-.]{1,12})$/,'\1 ~#'). #ocn off for these paragraph separators
- gsub(/~\{(.+?)\}~/m,Mx[:en_a_o] + '\1' + Mx[:en_a_c]).
- gsub(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]). #default if markup does not specify
- gsub(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c])
- if dob.is ==:heading \
- and dob.ln ==1
- dob.obj=dob.obj.gsub(/\s*@title\b/," #{@md.title.full}")
- dob.obj=if defined? @md.creator.author \
- and @md.creator.author
- dob.obj.gsub(/\s+(?:@creator|@author)/,",#{Mx[:br_line]}#{@md.creator.author}")
- else dob.obj.gsub(/\s+(?:@creator|@author)/,'')
- end
- end
- if defined? @md.title \
- and @md.title \
- and defined? @md.title.full \
- and defined? @md.creator \
- and @md.creator
- if dob.is ==:heading
- dob.obj=dob.obj.gsub(/^\s*@title\s*$/,@md.title.full) if dob.lv =~/1/
- dob.obj=if dob.lv =~/[23]/ \
- and defined? @md.creator.author \
- and @md.creator.author
- dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.creator.author}")
- else dob.obj.gsub(/^\s*(?:(by\s+)?(?:@creator|@author))\s*$/,'\1')
- end
- end
- end
- dob.obj=dob.obj.gsub(/<(https?:\/\/\S+?)>/,'< \1 >'). #catch problem markup
- gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image').
- gsub(//,'<:\1>'). #escaped special character
- gsub(/ /,"#{Mx[:nbsp]}"). #escaped special character
- gsub(/\\~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\{/,"#{Mx[:gl_o]}#123#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\}/,"#{Mx[:gl_o]}#125#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\<,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\>>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\_/,"#{Mx[:gl_o]}#095#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\-/,"#{Mx[:gl_o]}#045#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\+/,"#{Mx[:gl_o]}#043#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\//,"#{Mx[:gl_o]}#047#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\#/,"#{Mx[:gl_o]}#035#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\&/,"#{Mx[:gl_o]}#038#{Mx[:gl_c]}"). #& #escaped special character
- gsub(/\\\|/,"#{Mx[:gl_o]}#124#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\:/,"#{Mx[:gl_o]}#058#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\^/,"#{Mx[:gl_o]}#094#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\,/,"#{Mx[:gl_o]}#044#{Mx[:gl_c]}"). #not really a sisu special character but made available as possibility
- gsub(/\\\\/,"#{Mx[:gl_o]}#092#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\*/,"#{Mx[:gl_o]}#042#{Mx[:gl_c]}"). #escaped special character
- gsub(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #escaped special character
- if dob.obj=~/(?:https?:|ftp:|\{([^{}]+?)\}(?:#|:|[.]{1,2}\/))\S+/m
- if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ ([^}]+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3 #{Mx[:en_a_o]}\\3 \\4#{Mx[:en_a_c]}") # watch
- end
- if dob.obj=~/(?:^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (?:.+?)\s*\}(?:(?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:nbsp]} ])\{~\^ (.+?)\s*\}((?:https?:|ftp:|:|[.]{1,2}\/)\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4 #{Mx[:en_a_o]}\\3#{Mx[:en_a_c]} ")
- end
- dob.obj=dob.obj.gsub(/(^|[^#])\{\s*([^{}]+?)\s*\}((?:https?:|:|[.]{2}\/|#)\S+?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3"). #linked (text or image, however text cannot include modified face, e.g. bold, ital, underline)
- gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])((?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3}).
- gsub(/#{Mx[:lnk_c]}#(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}\\1#{Mx[:rel_c]}\\2}).
- gsub(/#{Mx[:lnk_c]}:(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2}).
- gsub(/#{Mx[:lnk_c]}[.]{2}\/(\S+?[^>< ]+?)([()\[\]]*[,.;:!?'"]{0,2})(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{#{Mx[:lnk_c]}#{Mx[:rel_o]}:\\1#{Mx[:rel_c]}\\2})
- end
- if dob.obj=~/_(?:https?|ftp):\S+/m # _http://url #CHECK
- dob.obj=dob.obj.gsub(/(^|[#{Mx[:gl_c]}#{Mx[:lnk_c]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}(\s])(_(?:https?|ftp):\/\/\S+?\.[^>< ]+?)([,.;'"]?)(?=[\s#{Mx[:en_a_c]}#{Mx[:en_b_c]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}]|$)/m,
- %{\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3})
- end
- dob=fontface(dob)
- dob.obj=dob.obj.gsub(/<[:e]\s+(.+?)!?>/,
- "#{Mx[:en_a_o]}\\1#{Mx[:en_a_c]}"). #not tested
- gsub(/(^|#{Mx[:br_nl]})\s*_\*\s*/,
- "\\1#{Mx[:gl_bullet]}"). #bullets, shortcut
- gsub(/=\{(.+?)\}/,
- "#{Mx[:idx_o]}\\1#{Mx[:idx_c]}").
- gsub(/^\s*_([1-9])\*\s*/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}"). #bullets, shortcut
- gsub(/^\s*_([1-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}"). #indent
- gsub(/^\s*_([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #indent bold
- gsub(/^\s*__([1-9])\s+/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}"). #hang
- gsub(/^\s*__([1-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i0:\\1#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]} "). #hangdef
- gsub(/^\s*_([0-9])_([0-9])\s+/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}"). #hang
- gsub(/^\s*_([0-9])_([0-9])!\s+(.+?)\s*$/,
- "#{Mx[:pa_o]}:i\\1:\\2#{Mx[:pa_c]}#{Mx[:fa_bold_o]}\\3#{Mx[:fa_bold_c]} "). #hangdef
- gsub(/<:hi>/,"#{Mx[:fa_hilite_o]}"). #'') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200)
- gsub(/<:\/hi>/,"#{Mx[:fa_hilite_c]}"). #'')
- gsub(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n").
- gsub(/[ ]+($)/,'\1').
- gsub(/\{\s*(.+?)\s*\}(https?:\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:url_o]}\\2#{Mx[:url_c]}\\3"). #any remaining linked text or image
- gsub(/\{\s*(.+?)\s*\}(#{Mx[:url_o]}\S+?#{Mx[:url_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image
- gsub(/(^|\s)([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)/,"\\1#{Mx[:url_o]}\\2#{Mx[:url_c]}").
- gsub(/(^|[ ])\{\s*(.+?)\s*\}(\S+?)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4"). #any remaining linked text or image
- gsub(/\{\s*(.+?)\s*\}#([a-zA-Z0-9][a-zA-Z0-9_-]*)([;,.]?)(?=\s|[#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:br_nl]}#{Mx[:en_a_o]}#{Mx[:en_b_o]}]|$)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}#{Mx[:rel_o]}\\2#{Mx[:rel_c]}\\3"). #any remaining linked text or image, check need
- gsub(/\{\s*(.+?)\s*\}(#{Mx[:rel_o]}\S+?#{Mx[:rel_c]})/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2"). #any remaining linked text or image, check need
- gsub(/\{\s*(.+?)\s*\}(image)/,
- "#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked image
- elsif dob.is==:table
- dob=fontface(dob)
- elsif dob.is ==:code
- dob.obj=dob.obj.gsub(/#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}\s*/,'@\1: ').
- gsub(/(^|#{Mx[:gl_c]}|\s)<(br(?: \/)?)>([\s,.]|$)/,'\1<\2>\3') #convert
back, clumsy
- if dob.number_
- codeline=[]
- ln=1
- dob.obj.split(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}| |\n/).each_with_index do |cl,i|
- unless i == 0
- cl=cl.gsub(Mx[:br_nl],'')
- w=3-ln.to_s.length
- cl = "#{ln}#{Mx[:nbsp]*w}#{Mx[:vline]}#{cl}#{Mx[:br_nl]}"
- ln +=1
- end
- codeline << cl
- end
- codeline= codeline.join("")
- dob.obj=codeline
- else
- dob.obj=dob.obj.gsub(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/,"\n")
- end
- dob
- else # @\S+?:
- end
- dob
- end
- def tech #script markup planned to be more strict for technical documents
- # *{emphasis}* e{emphasis}e emphasis
- # !{bold text}! b{bold}b bold text
- # _{underline}_ u{underline}u underline
- # /{italics}/ i{italics}i italics
- # "{citation}" c{citation}c citation
- # ^{superscript}^ superscript
- # ,{subscript}, subscript
- # +{inserted text}+ inserted text
- # -{deleted text}- deleted text
- # #{monospace text}#
- # {url address}:url
- # {image.png}imageurl
- # {image.png}png
- # ~{endnote}~
- # +1
- # +2
- puts 'tech'
- @data.each do |line|
- line=line.gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)e\{(.+?)\}e/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)b\{(.+?)\}b/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)u\{(.+?)\}u/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)c\{(.+?)\}c/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}"). #cite
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)i\{(.+?)\}i/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)!\{(.+?)\}!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)\*\{(.+?)\}\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)_\{(.+?)\}_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}"). #italics
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,
- "\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^\{(.+?)\}\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)9\{(.+?)\}9/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>),\{(.+?)\},/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,
- "\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,
- "\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,
- "\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}").
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,
- "\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasise single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,
- "\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}"). #bold single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([ ,.;:'"~$]|[^a-zA-Z0-9])/,
- "\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3"). #italics single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_/,
- "\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}"). #underscore single word, watch
- gsub(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^(\S+?)\^/,
- "\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}"). #check #superscript single word, watch digit added
- gsub(/^\s*_\([1-9]\)\(\*\+\)\s*/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}"). #bullets, shortcut
- gsub(/^\s*_\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}"). #watch
- gsub(/^\s*__\([1-9]\)\s+/,
- "#{Mx[:pa_o]}:h\\1#{Mx[:pa_c]}"). #watch
- #line.gsub(/^\s*__\([1-9]\)!\s+/,
- # "#{Mx[:pa_o]}:hd\\1#{Mx[:pa_c]}"). #watch
- gsub(/#{Mx[:br_line]}\s*_[12]\s+/,
- "#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub(/(?: | )\s*_([12])\s+/,' <:i\1> ')
- end
- @data
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_columns.rb b/lib/sisu/v3/db_columns.rb
deleted file mode 100644
index 02adf4c1..00000000
--- a/lib/sisu/v3/db_columns.rb
+++ /dev/null
@@ -1,2111 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbColumns
- require_relative 'sysenv' # sysenv.rb
- require_relative 'db_sqltxt' # db_sqltxt.rb
- class Columns < SiSU_DbText::Prepare
- def initialize(md=nil)
- @md=md
- @db=SiSU_Env::InfoDb.new #watch
- @lang ||=SiSU_i18n::Languages.new
- if defined? md.opt.mod \
- and md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(md.fns)
- txt_arr=IO.readlines(md.fns,'')
- src=txt_arr.join("\n")
- if @db.share_source?
- @sisutxt=special_character_escape(src)
- else @sisutxt=''
- end
- @fulltext=clean_searchable_text(txt_arr)
- else @sisutxt,@fulltext='',''
- end
- end
-#% structures
- #def column_define
- # def varchar(name,size)
- # "#{name} VARCHAR(#{size}) NULL,"
- # end
- #end
-=begin
-#% title
-@title:
- :subtitle:
- :short:
- :edition:
- :language:
- :note:
-=end
- def column
- def title # DublinCore 1 - title
- def name
- 'title'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata full document title [DC1]';}
- end
- def tuple
- t=if defined? @md.title.full \
- and @md.title.full=~/\S+/
- txt=@md.title.full
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_main
- def name
- 'title_main'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata main document title';}
- end
- def tuple
- t=if defined? @md.title.main \
- and @md.title.main=~/\S+/
- txt=@md.title.main
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_sub
- def name
- 'title_sub'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document subtitle';}
- end
- def tuple
- t=if defined? @md.title.sub \
- and @md.title.sub=~/\S+/
- txt=@md.title.sub
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_short
- def name
- 'title_short'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document short title if any';}
- end
- def tuple
- t=if defined? @md.title.short \
- and @md.title.short=~/\S+/
- txt=@md.title.short
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_edition
- def name
- 'title_edition'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_title_edition]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document edition (version)';}
- end
- def tuple
- t=if defined? @md.title.edition \
- and @md.title.edition=~/\S+/
- txt=@md.title.edition
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_note
- def name
- 'title_note'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes associated with title';}
- end
- def tuple
- t=if defined? @md.title.note \
- and @md.title.note=~/\S+/
- txt=@md.title.note
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_language
- def name
- 'title_language'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language [DC12]';}
- end
- def tuple
- t=if @lang.list[@md.opt.lng][:n]
- txt=@lang.list[@md.opt.lng][:n]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def title_language_char # consider
- def name
- 'title_language_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language iso code';}
- end
- def tuple
- t=if defined? @md.opt.lng \
- and @md.opt.lng=~/\S+/
- txt=@md.opt.lng
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% creator
-@creator:
- :author:
- :editor:
- :contributor:
- :illustrator:
- :photographer:
- :translator:
- :prepared_by:
- :digitized_by:
- :audio:
- :video:
-=end
- def creator_author # DublinCore 2 - creator/author (author)
- def name
- 'creator_author'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document author (creator) [DC2]';}
- end
- def tuple
- t=if defined? @md.creator.author_detail \
- and @md.creator.author_detail.is_a?(Array) \
- and @md.creator.author_detail.length > 0
- txt=''
- @md.creator.author_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_author_honorific # consider
- def name
- 'creator_author_hon'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document author honorific (title e.g, Ms. Dr. Prof.)';}
- end
- def tuple
- t=if defined? @md.creator.author_hon \
- and @md.creator.author_hon=~/\S+/
- txt=@md.creator.author_hon
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_author_nationality # consider
- def name
- 'creator_author_nationality'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata nationality of document author (creator)';}
- end
- def tuple
- t=if defined? @md.creator.author_nationality_detail \
- and @md.creator.author_nationality=~/\S+/
- txt=@md.creator.author_nationality_detail
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_editor
- def name
- 'creator_editor'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document editor name(s)';}
- end
- def tuple
- t=if defined? @md.creator.editor_detail \
- and @md.creator.editor_detail.is_a?(Array) \
- and @md.creator.editor_detail.length > 0
- txt=@md.creator.editor_detail #dc
- txt=''
- @md.creator.editor_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_contributor # DublinCore 6 - contributor
- def name
- 'creator_contributor'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document contributor name(s) [DC6]';}
- end
- def tuple
- t=if defined? @md.creator.contributor_detail \
- and @md.creator.contributor_detail.is_a?(Array) \
- and @md.creator.contributor_detail.length > 0
- txt=@md.creator.contributor_detail #dc
- txt=''
- @md.creator.contributor_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_illustrator
- def name
- 'creator_illustrator'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document illustrator name(s)';}
- end
- def tuple
- t=if defined? @md.creator.illustrator_detail \
- and @md.creator.illustrator_detail.is_a?(Array) \
- and @md.creator.illustrator_detail.length > 0
- txt=@md.creator.illustrator_detail
- txt=''
- @md.creator.illustrator_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_photographer
- def name
- 'creator_photographer'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document photographer name(s)';}
- end
- def tuple
- t=if defined? @md.creator.photographer_detail \
- and @md.creator.photographer_detail.is_a?(Array) \
- and @md.creator.photographer_detail.length > 0
- txt=@md.creator.photographer_detail
- txt=''
- @md.creator.photographer_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_translator
- def name
- 'creator_translator'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document translator name(s)';}
- end
- def tuple
- t=if defined? @md.creator.translator_detail \
- and @md.creator.translator_detail.is_a?(Array) \
- and @md.creator.translator_detail.length > 0
- txt=''
- @md.creator.translator_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_prepared_by
- def name
- 'creator_prepared_by'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document prepared by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.prepared_by_detail \
- and @md.creator.prepared_by_detail.is_a?(Array) \
- and @md.creator.prepared_by_detail.length > 0
- txt=@md.creator.prepared_by_detail
- txt=''
- @md.creator.prepared_by_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_digitized_by
- def name
- 'creator_digitized_by'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document digitized by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.digitized_by_detail \
- and @md.creator.digitized_by_detail.is_a?(Array) \
- and @md.creator.digitized_by_detail.length > 0
- txt=@md.creator.digitized_by_detail
- txt=''
- @md.creator.digitized_by_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_audio
- def name
- 'creator_audio'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document audio by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.audio_detail \
- and @md.creator.audio_detail.is_a?(Array) \
- and @md.creator.audio_detail.length > 0
- txt=@md.creator.audio_detail
- txt=''
- @md.creator.audio_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def creator_video
- def name
- 'creator_video'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document video by name(s)';}
- end
- def tuple
- t=if defined? @md.creator.video_detail \
- and @md.creator.video_detail.is_a?(Array) \
- and @md.creator.video_detail.length > 0
- txt=''
- @md.creator.video_detail.each do |h|
- txt=txt + %{#{h[:the]}, #{h[:others]}; }
- end
- txt=txt.gsub(/[;, ]+\s*$/,'')
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% language
-#taken from other fields
-@title:
- :language:
-@original:
- :language:
-#not available -->
-#@language:
-# :document:
-# :original:
-=end
- def language_document
- def name
- 'language_document'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- t=if @lang.list[@md.opt.lng][:n]
- txt=@lang.list[@md.opt.lng][:n]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_document_char
- def name
- 'language_document_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- #modify check, is now required, SiSUv3d_
- t=if defined? @md.opt.lng \
- and @md.opt.lng=~/\S+/
- txt=@md.opt.lng
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_original
- def name
- 'language_original'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata original document/text language';}
- end
- def tuple
- t=if defined? @md.language.original \
- and @md.language.original=~/\S+/
- txt=@md.language.original
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def language_original_char
- def name
- 'language_original_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document language';}
- end
- def tuple
- t=if defined? @md.language.original_char \
- and @md.language.original_char=~/\S+/
- txt=@md.language.original_char
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% date
-@date:
- :added_to_site:
- :available:
- :created:
- :issued:
- :modified:
- :published:
- :valid:
- :translated:
- :original_publication:
-=end
- def date_added_to_site
- def name
- 'date_added_to_site'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- #"#{name} DATE,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date added to site';}
- end
- def tuple
- t=if defined? @md.date.added_to_site \
- and @md.date.added_to_site=~/\S+/
- txt=@md.date.added_to_site
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_available
- def name
- 'date_available'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date added to site [DC]';}
- end
- def tuple
- t=if defined? @md.date.available \
- and @md.date.available=~/\S+/
- txt=@md.date.available
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_created
- def name
- 'date_created'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date created [DC]';}
- end
- def tuple
- t=if defined? @md.date.created \
- and @md.date.created=~/\S+/
- txt=@md.date.created
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_issued
- def name
- 'date_issued'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date issued [DC]';}
- end
- def tuple
- t=if defined? @md.date.issued \
- and @md.date.issued=~/\S+/
- txt=@md.date.issued
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_modified
- def name
- 'date_modified'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date modified [DC]';}
- end
- def tuple
- t=if defined? @md.date.modified \
- and @md.date.modified=~/\S+/
- txt=@md.date.modified
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_published
- def name
- 'date_published'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date published [DC7]';}
- end
- def tuple
- t=if defined? @md.date.published \
- and @md.date.published=~/\S+/
- txt=@md.date.published
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_valid
- def name
- 'date_valid'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date valid [DC]';}
- end
- def tuple
- t=if defined? @md.date.valid \
- and @md.date.valid=~/\S+/
- txt=@md.date.valid
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_translated
- def name
- 'date_translated'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date translated';}
- end
- def tuple
- t=if defined? @md.date.translated \
- and @md.date.translated=~/\S+/
- txt=@md.date.translated
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_original_publication
- def name
- 'date_original_publication'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date of original publication';}
- end
- def tuple
- t=if defined? @md.date.original_publication \
- and @md.date.original_publication=~/\S+/
- txt=@md.date.original_publication
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def date_generated
- def name
- 'date_generated'
- end
- def create_column #choose other representation of time
- "#{name} VARCHAR(30) NULL,"
- #"#{name} VARCHAR(10) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata date of sisu generation of document, automatically populated';}
- end
- def tuple #choose other representation of time
- t=if defined? @md.generated \
- and @md.generated.to_s=~/\S+/
- txt=@md.generated.to_s
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% publisher
-@publisher:
-=end
- def publisher
- def name
- 'publisher'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document publisher [DC5]';}
- end
- def tuple
- t=if defined? @md.publisher \
- and @md.publisher=~/\S+/
- txt=@md.publisher
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-##% current
-# def current_publisher
-# def name
-# 'current_publisher'
-# end
-# def size
-# 10
-# end
-# def create_column
-# "#{name} VARCHAR(#{current_publisher.size}) NULL,"
-# end
-# def tuple
-# t=if defined? @md.current.publisher \
-# and @md.current.publisher=~/\S+/
-# txt=@md.current.publisher
-# txt=special_character_escape(txt)
-# "'#{txt}', "
-# end
-# end
-# self
-# end
-=begin
-#% original
-@original:
- :publisher:
- #:date: #repeated under date
- :language:
- :institution:
- :nationality:
- :source:
-=end
- def original_publisher
- def name
- 'original_publisher'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original publisher [DC5]';}
- end
- def tuple
- t=if defined? @md.original.publisher \
- and @md.original.publisher=~/\S+/
- txt=@md.original.publisher
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_language
- def name
- 'original_language'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original language';}
- end
- def tuple
- t=if defined? @md.original.language \
- and @md.original.language=~/\S+/
- txt=@md.original.language
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_language_char # consider
- def name
- 'original_language_char'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original language iso character';}
- end
- def tuple
- t=if defined? @md.original.language_char \
- and @md.original.language_char=~/\S+/
- txt=@md.original.language_char
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_source
- def name
- 'original_source'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original source [DC11]';}
- end
- def tuple
- t=if defined? @md.original.source \
- and @md.original.source=~/\S+/
- txt=@md.original.source
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_institution
- def name
- 'original_institution'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original institution';}
- end
- def tuple
- t=if defined? @md.original.institution \
- and @md.original.institution=~/\S+/
- txt=@md.original.institution
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def original_nationality
- def name
- 'original_nationality'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document original nationality';}
- end
- def tuple
- t=if defined? @md.original.nationality \
- and @md.original.nationality=~/\S+/
- txt=@md.original.nationality
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% rights
-@rights:
- #:copyright: #mapped to :text: used where no other copyrights and included in :all:
- :text:
- :translation:
- :illustrations:
- :photographs:
- :preparation:
- :digitization:
- :audio:
- :video:
- :license:
- :all:
-=end
- def rights_all
- def name
- 'rights'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata rights associated with document (composite) [DC15]';}
- end
- def tuple
- t=if defined? @md.rights.all \
- and @md.rights.all=~/\S+/
- txt=@md.rights.all
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_text
- def name
- 'rights_copyright_text'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text';}
- end
- def tuple
- t=if defined? @md.rights.copyright_text \
- and @md.rights.copyright_text=~/\S+/
- txt=@md.rights.copyright_text
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_translation
- def name
- 'rights_copyright_translation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text translation (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_translation \
- and @md.rights.copyright_translation=~/\S+/
- txt=@md.rights.copyright_translation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_illustrations
- def name
- 'rights_copyright_illustrations'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text illustrations (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_illustrations \
- and @md.rights.copyright_illustrations=~/\S+/
- txt=@md.rights.copyright_illustrations
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_photographs
- def name
- 'rights_copyright_photographs'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text photographs (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_photographs \
- and @md.rights.copyright_photographs=~/\S+/
- txt=@md.rights.copyright_photographs
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_preparation
- def name
- 'rights_copyright_preparation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text preparation (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_preparation \
- and @md.rights.copyright_preparation=~/\S+/
- txt=@md.rights.copyright_preparation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_digitization
- def name
- 'rights_copyright_digitization'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text digitization (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_digitization \
- and @md.rights.copyright_digitization=~/\S+/
- txt=@md.rights.copyright_digitization
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_audio
- def name
- 'rights_copyright_audio'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text audio (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_audio \
- and @md.rights.copyright_audio=~/\S+/
- txt=@md.rights.copyright_audio
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_copyright_video
- def name
- 'rights_copyright_video'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata copyright associated for document text video (if any)';}
- end
- def tuple
- t=if defined? @md.rights.copyright_video \
- and @md.rights.copyright_video=~/\S+/
- txt=@md.rights.copyright_video
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def rights_license
- def name
- 'rights_license'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata license granted for use of document if any)';}
- end
- def tuple
- t=if defined? @md.rights.license \
- and @md.rights.license=~/\S+/
- txt=@md.rights.license
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% classify
-@classify:
- :topic_register:
- :coverage:
- :format:
- :identifier:
- :keywords:
- :relation:
- :subject:
- :type:
- :loc:
- :dewey:
- :pg:
- :isbn:
-=end
- def classify_topic_register
- def name
- 'classify_topic_register'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document topic register (semi-structured document subject information)';}
- end
- def tuple
- t=if defined? @md.classify.topic_register \
- and @md.classify.topic_register=~/\S+/
- txt=@md.classify.topic_register
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_subject
- def name
- 'classify_subject'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document subject matter [DC3]';}
- end
- def tuple
- t=if defined? @md.classify.subject \
- and @md.classify.subject=~/\S+/
- txt=@md.classify.subject
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_type #check
- def name
- 'classify_type'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document type [DC8]';}
- end
- def tuple
- t=if defined? @md.classify.type \
- and @md.classify.type=~/\S+/
- txt=@md.classify.type
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_loc
- def name
- 'classify_loc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Library of Congress';}
- end
- def tuple
- t=if defined? @md.classify.loc \
- and @md.classify.loc=~/\S+/
- txt=@md.classify.loc
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_dewey
- def name
- 'classify_dewey'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Dewey';}
- end
- def tuple
- t=if defined? @md.classify.dewey \
- and @md.classify.dewey=~/\S+/
- txt=@md.classify.dewey
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_oclc
- def name
- 'classify_oclc'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_library]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document Online Computer Library Center number';}
- end
- def tuple
- t=if defined? @md.classify.oclc \
- and @md.classify.oclc=~/\S+/
- txt=@md.classify.oclc
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_pg
- def name
- 'classify_pg'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_small]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document project gutenberg (if any)';}
- end
- def tuple
- t=if defined? @md.classify.pg \
- and @md.classify.pg=~/\S+/
- txt=@md.classify.pg
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_isbn
- def name
- 'classify_isbn'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_small]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document isbn (if any)';}
- end
- def tuple
- t=if defined? @md.classify.isbn \
- and @md.classify.isbn=~/\S+/
- txt=@md.classify.isbn
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_format
- def name
- 'classify_format'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document format [DC9]';}
- end
- def tuple
- t=if defined? @md.classify.format \
- and @md.classify.format=~/\S+/
- txt=@md.classify.format
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_identifier
- def name
- 'classify_identifier'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_identify]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document identifier [DC10]';}
- end
- def tuple
- t=if defined? @md.classify.identifier \
- and @md.classify.identifier=~/\S+/
- txt=@md.classify.identifier
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_relation
- def name
- 'classify_relation'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document relation [DC13]';}
- end
- def tuple
- t=if defined? @md.classify.relation \
- and @md.classify.relation=~/\S+/
- txt=@md.classify.relation
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_coverage
- def name
- 'classify_coverage'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document coverage [DC14]';}
- end
- def tuple
- t=if defined? @md.classify.coverage \
- and @md.classify.coverage=~/\S+/
- txt=@md.classify.coverage
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def classify_keywords
- def name
- 'classify_keywords'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata classify document keywords';}
- end
- def tuple
- t=if defined? @md.classify.keywords \
- and @md.classify.keywords=~/\S+/
- txt=@md.classify.keywords
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% notes
-@notes:
- :abstract:
- :comment:
- :description:
- :history:
- :prefix:
- :prefix_a:
- :prefix_b:
- :suffix:
-=end
- def notes_abstract
- def name
- 'notes_abstract'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes abstract';}
- end
- def tuple
- t=if defined? @md.notes.abstract \
- and @md.notes.abstract=~/\S+/
- txt=@md.notes.abstract
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_comment
- def name
- 'notes_comment'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes comment';}
- end
- def tuple
- t=if defined? @md.notes.comment \
- and @md.notes.comment=~/\S+/
- txt=@md.notes.comment
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_description
- def name
- 'notes_description'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes description [DC4]';}
- end
- def tuple
- t=if defined? @md.notes.description \
- and @md.notes.description=~/\S+/
- txt=@md.notes.description
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_history #check, consider removal
- def name
- 'notes_history'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_classify_txt_short]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes history';}
- end
- def tuple
- t=if defined? @md.notes.history \
- and @md.notes.history=~/\S+/
- txt=@md.notes.history
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix
- def name
- 'notes_prefix'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix';}
- end
- def tuple
- t=if defined? @md.notes.prefix \
- and @md.notes.prefix=~/\S+/
- txt=@md.notes.prefix
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix_a
- def name
- 'notes_prefix_a'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix_a';}
- end
- def tuple
- t=if defined? @md.notes.prefix_a \
- and @md.notes.prefix_a=~/\S+/
- txt=@md.notes.prefix_a
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_prefix_b
- def name
- 'notes_prefix_b'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes prefix_b';}
- end
- def tuple
- t=if defined? @md.notes.prefix_b \
- and @md.notes.prefix_b=~/\S+/
- txt=@md.notes.prefix_b
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def notes_suffix
- def name
- 'notes_suffix'
- end
- def create_column # keep text
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document notes suffix';}
- end
- def tuple
- t=if defined? @md.notes.suffix \
- and @md.notes.suffix=~/\S+/
- txt=@md.notes.suffix
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% src
-=end
- def src_filename
- def name
- 'src_filename'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filename]}) NOT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text filename';}
- end
- def tuple
- t=if defined? @md.fns \
- and @md.fns=~/\S+/
- txt=@md.fns
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_fingerprint
- def name
- 'src_fingerprint' #hash/digest, sha256 or md5
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_digest]}) NULL,"
- #"#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text fingerprint, hash digest sha256 (or md5)';}
- end
- def tuple
- t=if defined? @md.dgst \
- and @md.dgst.is_a?(Array) \
- and @md.dgst[1]=~/\S+/
- txt=@md.dgst[1]
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_filesize
- def name
- 'src_filesize'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filesize]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text file size';}
- end
- def tuple
- t=if defined? @md.filesize \
- and @md.filesize=~/\S+/
- txt=@md.filesize
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_word_count
- def name
- 'src_word_count'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text word count';}
- end
- def tuple
- t=if defined? @md.wc_words \
- and @md.wc_words=~/\S+/
- txt=@md.wc_words
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def src_txt # consider naming sisusrc
- def name
- 'src_text'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'sisu markup source text (if shared)';}
- end
- def tuple
- t=if @md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@sisutxt}', "]
- else ['','']
- end
- end
- self
- end
-=begin
-#% misc
-@make:
- :skin:
-@links:
-=end
- def fulltext
- def name
- 'fulltext'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'document full text clean, searchable';}
- end
- def tuple
- t=if @md.opt.mod.inspect=~/import|update/ \
- and FileTest.exist?(@md.fns)
- ["#{name}, ","'#{@fulltext}', "]
- else ['','']
- end
- end
- self
- end
- def skin_name #check
- def name
- 'skin_name'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_filename]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin name';}
- end
- def tuple
- t=if defined? @md.skin_name \
- and @md.skin_name=~/\S+/
- txt=@md.skin_name
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def skin_fingerprint #check
- def name
- 'skin_fingerprint'
- end
- def create_column
- "#{name} VARCHAR(#{Db[:col_digest]}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin fingerprint';}
- end
- def tuple
- t=if defined? @md.dgst_skin \
- and @md.dgst_skin.is_a?(Array) \
- and @md.dgst_skin[1]=~/\S+/
- txt=@md.dgst_skin[1]
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def skin # you likely want a separate table for skins
- def name
- 'skin'
- end
- def create_column
- "#{name} TEXT NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'source text skin';}
- end
- def tuple
- t=if defined? @md.skin \
- and @md.skin=~/\S+/
- txt=@md.skin
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- def links
- def name
- 'links'
- end
- def create_column
- "#{name} TEXT NULL,"
- #"#{name} VARCHAR(#{links.size}) NULL,"
- end
- def column_comment
- %{COMMENT ON COLUMN metadata_and_text.#{name}
- IS 'metadata document links';}
- end
- def tuple
- t=if defined? @md.links \
- and @md.links=~/\S+/
- txt=@md.links
- txt=special_character_escape(txt)
- ["#{name}, ","'#{txt}', "]
- else ['','']
- end
- end
- self
- end
- self
- end
- end
- class ColumnSize
- def document_clean # restriction not necessary
- 60000
- end
- def document_body
- 16000
- end
- def document_seg
- 120
- end
- def document_seg_full
- 120
- end
- def endnote_clean # restriction not necessary
- 60000
- end
- def endnote_body
- 16000
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_create.rb b/lib/sisu/v3/db_create.rb
deleted file mode 100644
index 5df72a2a..00000000
--- a/lib/sisu/v3/db_create.rb
+++ /dev/null
@@ -1,626 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbCreate
- require_relative 'db_columns' # db_columns.rb
- class Create < SiSU_DbColumns::Columns
- require_relative 'sysenv' # sysenv.rb
- @@dl=nil
- def initialize(opt,conn,file,sql_type='pg')
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- @comment=(@sql_type=='pg') \
- ? (SiSU_DbCreate::Comment.new(@conn,@sql_type))
- : nil
- @@dl ||=SiSU_Env::InfoEnv.new.digest.length
- end
- def available
- DBI.available_drivers.each do |driver|
- puts "Driver: #{driver}"
- DBI.data_sources(driver).each do |dsn|
- puts "\tDatasource: #{dsn}"
- end
- end
- end
- def create_db
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- tell=(@sql_type=='sqlite') \
- ? SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create Sqlite db tables in:',%{"#{@file}"})
- : SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create PG db tables in:',%{"#{Db[:name_prefix]}#{@env.path.stub_pwd}"})
- tell.colorize if @opt.cmd =~/[vVM]/
- SiSU_Env::SystemCall.new.create_pg_db(@env.path.stub_pwd) if @sql_type=='pg' #watch use of path.stub_pwd instead of stub
- end
- def output_dir?
- dir=SiSU_Env::InfoEnv.new('')
- if @opt.cmd =~/d/
- dir.path.webserv_stub_ensure
- end
- end
- def create_table
- def metadata_and_text
- print %{
- currently using sisu dbi module
- to be populated from document files
- create tables metadata_and_text
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_metadata_and_text=%{
- CREATE TABLE metadata_and_text (
- tid BIGINT PRIMARY KEY,
- /* title */
- #{column.title.create_column}
- #{column.title_main.create_column}
- #{column.title_sub.create_column}
- #{column.title_short.create_column}
- #{column.title_edition.create_column}
- #{column.title_note.create_column}
- #{column.title_language.create_column}
- #{column.title_language_char.create_column}
- /* creator */
- #{column.creator_author.create_column}
- #{column.creator_author_honorific.create_column}
- #{column.creator_author_nationality.create_column}
- #{column.creator_editor.create_column}
- #{column.creator_contributor.create_column}
- #{column.creator_illustrator.create_column}
- #{column.creator_photographer.create_column}
- #{column.creator_translator.create_column}
- #{column.creator_prepared_by.create_column}
- #{column.creator_digitized_by.create_column}
- #{column.creator_audio.create_column}
- #{column.creator_video.create_column}
- /* language */
- #{column.language_document.create_column}
- #{column.language_document_char.create_column}
- #{column.language_original.create_column}
- #{column.language_original_char.create_column}
- /* date */
- #{column.date_added_to_site.create_column}
- #{column.date_available.create_column}
- #{column.date_created.create_column}
- #{column.date_issued.create_column}
- #{column.date_modified.create_column}
- #{column.date_published.create_column}
- #{column.date_valid.create_column}
- #{column.date_translated.create_column}
- #{column.date_original_publication.create_column}
- #{column.date_generated.create_column}
- /* publisher */
- #{column.publisher.create_column}
- /* original */
- #{column.original_publisher.create_column}
- #{column.original_language.create_column}
- #{column.original_language_char.create_column}
- #{column.original_source.create_column}
- #{column.original_institution.create_column}
- #{column.original_nationality.create_column}
- /* rights */
- #{column.rights_all.create_column}
- #{column.rights_copyright_text.create_column}
- #{column.rights_copyright_translation.create_column}
- #{column.rights_copyright_illustrations.create_column}
- #{column.rights_copyright_photographs.create_column}
- #{column.rights_copyright_preparation.create_column}
- #{column.rights_copyright_digitization.create_column}
- #{column.rights_copyright_audio.create_column}
- #{column.rights_copyright_video.create_column}
- #{column.rights_license.create_column}
- /* classify */
- #{column.classify_topic_register.create_column}
- #{column.classify_subject.create_column}
- #{column.classify_type.create_column}
- #{column.classify_loc.create_column}
- #{column.classify_dewey.create_column}
- #{column.classify_oclc.create_column}
- #{column.classify_pg.create_column}
- #{column.classify_isbn.create_column}
- #{column.classify_format.create_column}
- #{column.classify_identifier.create_column}
- #{column.classify_relation.create_column}
- #{column.classify_coverage.create_column}
- #{column.classify_keywords.create_column}
- /* notes */
- #{column.notes_abstract.create_column}
- #{column.notes_comment.create_column}
- #{column.notes_description.create_column}
- #{column.notes_history.create_column}
- #{column.notes_prefix.create_column}
- #{column.notes_prefix_a.create_column}
- #{column.notes_prefix_b.create_column}
- #{column.notes_suffix.create_column}
- /* src */
- #{column.src_filename.create_column}
- #{column.src_fingerprint.create_column}
- #{column.src_filesize.create_column}
- #{column.src_word_count.create_column}
- #{column.src_txt.create_column}
- /* misc */
- #{column.fulltext.create_column}
- #{column.skin_name.create_column}
- #{column.skin_fingerprint.create_column}
- #{column.skin.create_column}
- #{column.links.create_column.gsub(/,$/,'')}
-/* subj VARCHAR(64) NULL, */
-/* contact VARCHAR(100) NULL, */
-/* information VARCHAR(100) NULL, */
-/* types CHAR(1) NULL, */
-/* writing_focus_nationality VARCHAR(100) NULL, */
- );
- }
- @conn.execute(create_metadata_and_text)
- @comment.psql.metadata_and_text if @comment
- end
- def doc_objects # create doc_objects base
- print %{
- to be populated from documents files
- create tables doc_objects
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_doc_objects=%{
- CREATE TABLE doc_objects (
- lid BIGINT PRIMARY KEY,
- metadata_tid BIGINT REFERENCES metadata_and_text,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- clean TEXT NULL,
- body TEXT NULL,
- book_idx TEXT NULL,
- seg VARCHAR(256) NULL,
- lev_an VARCHAR(1),
- lev SMALLINT NULL,
- lev1 SMALLINT,
- lev2 SMALLINT,
- lev3 SMALLINT,
- lev4 SMALLINT,
- lev5 SMALLINT,
- lev6 SMALLINT,
- en_a SMALLINT NULL,
- en_z SMALLINT NULL,
- en_a_asterisk SMALLINT NULL,
- en_z_asterisk SMALLINT NULL,
- en_a_plus SMALLINT NULL,
- en_z_plus SMALLINT NULL,
- t_of VARCHAR(16),
- t_is VARCHAR(16),
- node VARCHAR(16) NULL,
- parent VARCHAR(16) NULL,
- digest_clean CHAR(#{@@dl}),
- digest_all CHAR(#{@@dl}),
- types CHAR(1) NULL
- );
- }
- @conn.execute(create_doc_objects)
- @comment.psql.doc_objects if @comment
- end
- def endnotes
- print %{
- to be populated from document files
- create tables endnotes
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_endnotes=%{
- CREATE TABLE endnotes (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- }
- @conn.execute(create_endnotes)
- @comment.psql.endnotes if @comment
- end
- def endnotes_asterisk
- print %{
- to be populated from document files
- create tables endnotes_asterisk
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_endnotes_asterisk=%{
- CREATE TABLE endnotes_asterisk (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- }
- @conn.execute(create_endnotes_asterisk)
- @comment.psql.endnotes_asterisk if @comment
- end
- def endnotes_plus
- print %{
- to be populated from document files
- create tables endnotes_plus
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_endnotes_plus=%{
- CREATE TABLE endnotes_plus (
- nid BIGINT PRIMARY KEY,
- document_lid BIGINT REFERENCES doc_objects,
- nr SMALLINT,
- clean TEXT NULL,
- body TEXT NULL,
- ocn SMALLINT,
- ocnd VARCHAR(6),
- ocns VARCHAR(6),
- digest_clean CHAR(#{@@dl}),
- metadata_tid BIGINT REFERENCES metadata_and_text
- );
- }
- @conn.execute(create_endnotes_plus)
- @comment.psql.endnotes_plus if @comment
- end
- def urls # create doc_objects file links mapping
- print %{
- currently using sisu dbi module
- to be populated from doc_objects files
- create tables urls
- data import through ruby transfer
- } if @opt.cmd =~/[VM]/
- create_urls=%{
- CREATE TABLE urls (
- metadata_tid BIGINT REFERENCES metadata_and_text,
- plaintext varchar(512),
- html_toc varchar(512),
- html_doc varchar(512),
- xhtml varchar(512),
- xml_sax varchar(512),
- xml_dom varchar(512),
- odf varchar(512),
- pdf_p varchar(512),
- pdf_l varchar(512),
- concordance varchar(512),
- latex_p varchar(512),
- latex_l varchar(512),
- digest varchar(512),
- manifest varchar(512),
- markup varchar(512),
- sisupod varchar(512)
- );
- }
- @conn.execute(create_urls)
- @comment.psql.urls if @comment
- end
- self
- end
- end
- class Comment < SiSU_DbColumns::Columns
- def initialize(conn,sql_type='pg')
- @conn=conn
- if sql_type =~ /pg/; psql
- end
- end
- def psql
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def metadata_and_text
- sql_arr=[
- %{COMMENT ON Table metadata_and_text
- IS 'contains SiSU metadata and fulltext for search (including source .sst if shared)';},
- %{COMMENT ON COLUMN metadata_and_text.tid
- IS 'unique';},
- %{#{column.title.column_comment}},
- %{#{column.title_main.column_comment}},
- %{#{column.title_sub.column_comment}},
- %{#{column.title_short.column_comment}},
- %{#{column.title_edition.column_comment}},
- %{#{column.title_note.column_comment}},
- %{#{column.title_language.column_comment}},
- %{#{column.title_language_char.column_comment}},
- %{#{column.creator_author.column_comment}},
- %{#{column.creator_author_honorific.column_comment}},
- %{#{column.creator_author_nationality.column_comment}},
- %{#{column.creator_editor.column_comment}},
- %{#{column.creator_contributor.column_comment}},
- %{#{column.creator_illustrator.column_comment}},
- %{#{column.creator_photographer.column_comment}},
- %{#{column.creator_translator.column_comment}},
- %{#{column.creator_prepared_by.column_comment}},
- %{#{column.creator_digitized_by.column_comment}},
- %{#{column.creator_audio.column_comment}},
- %{#{column.creator_video.column_comment}},
- %{#{column.language_document.column_comment}},
- %{#{column.language_document_char.column_comment}},
- %{#{column.language_original.column_comment}},
- %{#{column.language_original_char.column_comment}},
- %{#{column.date_added_to_site.column_comment}},
- %{#{column.date_available.column_comment}},
- %{#{column.date_created.column_comment}},
- %{#{column.date_issued.column_comment}},
- %{#{column.date_modified.column_comment}},
- %{#{column.date_published.column_comment}},
- %{#{column.date_valid.column_comment}},
- %{#{column.date_translated.column_comment}},
- %{#{column.date_original_publication.column_comment}},
- %{#{column.date_generated.column_comment}},
- %{#{column.publisher.column_comment}},
- %{#{column.original_publisher.column_comment}},
- %{#{column.original_language.column_comment}},
- %{#{column.original_language_char.column_comment}},
- %{#{column.original_source.column_comment}},
- %{#{column.original_institution.column_comment}},
- %{#{column.original_nationality.column_comment}},
- %{#{column.rights_all.column_comment}},
- %{#{column.rights_copyright_text.column_comment}},
- %{#{column.rights_copyright_translation.column_comment}},
- %{#{column.rights_copyright_illustrations.column_comment}},
- %{#{column.rights_copyright_photographs.column_comment}},
- %{#{column.rights_copyright_preparation.column_comment}},
- %{#{column.rights_copyright_digitization.column_comment}},
- %{#{column.rights_copyright_audio.column_comment}},
- %{#{column.rights_copyright_video.column_comment}},
- %{#{column.rights_license.column_comment}},
- %{#{column.classify_topic_register.column_comment}},
- %{#{column.classify_subject.column_comment}},
- %{#{column.classify_type.column_comment}},
- %{#{column.classify_loc.column_comment}},
- %{#{column.classify_dewey.column_comment}},
- %{#{column.classify_oclc.column_comment}},
- %{#{column.classify_pg.column_comment}},
- %{#{column.classify_isbn.column_comment}},
- %{#{column.classify_format.column_comment}},
- %{#{column.classify_identifier.column_comment}},
- %{#{column.classify_relation.column_comment}},
- %{#{column.classify_coverage.column_comment}},
- %{#{column.classify_keywords.column_comment}},
- %{#{column.notes_abstract.column_comment}},
- %{#{column.notes_comment.column_comment}},
- %{#{column.notes_description.column_comment}},
- %{#{column.notes_history.column_comment}},
- %{#{column.notes_prefix.column_comment}},
- %{#{column.notes_prefix_a.column_comment}},
- %{#{column.notes_prefix_b.column_comment}},
- %{#{column.notes_suffix.column_comment}},
- %{#{column.src_filename.column_comment}},
- %{#{column.src_fingerprint.column_comment}},
- %{#{column.src_filesize.column_comment}},
- %{#{column.src_word_count.column_comment}},
- %{#{column.src_txt.column_comment}},
- %{#{column.fulltext.column_comment}},
- %{#{column.skin_name.column_comment}},
- %{#{column.skin_fingerprint.column_comment}},
- %{#{column.skin.column_comment}},
- %{#{column.links.column_comment}},
- ]
- conn_execute_array(sql_arr)
- end
- def doc_objects
- sql_arr=[
- %{COMMENT ON Table doc_objects
- IS 'contains searchable text of SiSU document objects';},
- %{COMMENT ON COLUMN doc_objects.lid
- IS 'unique';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text';},
- %{COMMENT ON COLUMN doc_objects.lev_an
- IS 'doc level A-C 1-6';},
- %{COMMENT ON COLUMN doc_objects.lev
- IS 'doc level 1-6 \d\~';},
- %{COMMENT ON COLUMN doc_objects.seg
- IS 'segment name from level number 4 (lv 1)';},
- %{COMMENT ON COLUMN doc_objects.ocn
- IS 'object citation number';},
- %{COMMENT ON COLUMN doc_objects.en_a
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_a_asterisk
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_asterisk to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z_asterisk
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_asterisk to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_a_plus
- IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_plus to create range)';},
- %{COMMENT ON COLUMN doc_objects.en_z_plus
- IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_plus to create range)';},
- %{COMMENT ON COLUMN doc_objects.types
- IS 'document types seg scroll';},
- %{COMMENT ON COLUMN doc_objects.clean
- IS 'text object - substantive text: clean, stripped of markup';},
- %{COMMENT ON COLUMN doc_objects.body
- IS 'text object - substantive text: light html markup';},
- %{COMMENT ON COLUMN doc_objects.book_idx
- IS 'book index creation information for paragraph, if provided';},
- %{COMMENT ON COLUMN doc_objects.lev1
- IS 'document structure, level number 1';},
- %{COMMENT ON COLUMN doc_objects.lev2
- IS 'document structure, level number 2';},
- %{COMMENT ON COLUMN doc_objects.lev3
- IS 'document structure, level number 3';},
- %{COMMENT ON COLUMN doc_objects.lev4
- IS 'document structure, level number 4';},
- %{COMMENT ON COLUMN doc_objects.lev5
- IS 'document structure, level number 5';},
- %{COMMENT ON COLUMN doc_objects.lev6
- IS 'document structure, level number 6';},
- %{COMMENT ON COLUMN doc_objects.t_of
- IS 'document structure, type of object (object is of)';},
- %{COMMENT ON COLUMN doc_objects.t_is
- IS 'document structure, object is';},
- %{COMMENT ON COLUMN doc_objects.node
- IS 'document structure, object node if heading';},
- %{COMMENT ON COLUMN doc_objects.parent
- IS 'document structure, object parent (is a heading)';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes
- sql_arr=[
- %{COMMENT ON Table endnotes
- IS 'contains searchable text of SiSU documents endnotes';},
- %{COMMENT ON COLUMN endnotes.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes.nr
- IS 'endnote number ';},
- %{COMMENT ON COLUMN endnotes.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes_asterisk
- sql_arr=[
- %{COMMENT ON Table endnotes_asterisk
- IS 'contains searchable text of SiSU documents endnotes marked with asterisk';},
- %{COMMENT ON COLUMN endnotes_asterisk.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes_asterisk.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes_asterisk.nr
- IS 'endnote number ';},
- %{COMMENT ON COLUMN endnotes_asterisk.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes_asterisk.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes_asterisk.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';}
- ]
- conn_execute_array(sql_arr)
- end
- def endnotes_plus
- sql_arr=[
- %{COMMENT ON Table endnotes_plus
- IS 'contains searchable text of SiSU documents endnotes marked with plus';},
- %{COMMENT ON COLUMN endnotes_plus.nid
- IS 'unique';},
- %{COMMENT ON COLUMN endnotes_plus.document_lid
- IS 'ties to text block from which referenced';},
- %{COMMENT ON COLUMN endnotes_plus.nr
- IS 'endnote number ';},
- %{COMMENT ON COLUMN endnotes_plus.clean
- IS 'endnote substantive content, stripped of markup';},
- %{COMMENT ON COLUMN endnotes_plus.body
- IS 'endnote substantive content';},
- %{COMMENT ON COLUMN endnotes_plus.ocn
- IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document';},
- ]
- conn_execute_array(sql_arr)
- end
- def urls
- sql_arr=[
- %{COMMENT ON Table urls
- IS 'contains base url links to different SiSU output';},
- %{COMMENT ON COLUMN doc_objects.metadata_tid
- IS 'tie to title in metadata_and_text - unique for each document, the mapping of rows is one to one';},
- %{COMMENT ON COLUMN urls.plaintext
- IS 'plaintext utf-8';},
- %{COMMENT ON COLUMN urls.html_toc
- IS 'table of contents for segmented html document';},
- %{COMMENT ON COLUMN urls.html_doc
- IS 'html document (scroll)';},
- %{COMMENT ON COLUMN urls.xhtml
- IS 'xhtml document (scroll)';},
- %{COMMENT ON COLUMN urls.xml_sax
- IS 'xml sax oriented document (scroll)';},
- %{COMMENT ON COLUMN urls.xml_dom
- IS 'xml dom oriented document (scroll)';},
- %{COMMENT ON COLUMN urls.odf
- IS 'opendocument format text';},
- %{COMMENT ON COLUMN urls.pdf_p
- IS 'pdf portrait';},
- %{COMMENT ON COLUMN urls.pdf_l
- IS 'pdf landscape';},
- %{COMMENT ON COLUMN urls.concordance
- IS 'rudimentary document index linked to html';},
- %{COMMENT ON COLUMN urls.latex_p
- IS 'latex portrait';},
- %{COMMENT ON COLUMN urls.latex_l
- IS 'latex_landscape';},
- %{COMMENT ON COLUMN urls.markup
- IS 'markup';},
- %{COMMENT ON COLUMN urls.sisupod
- IS 'SiSU document format .tgz (all SiSU information on document)';},
- ]
- conn_execute_array(sql_arr)
- end
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_dbi.rb b/lib/sisu/v3/db_dbi.rb
deleted file mode 100644
index 0164ceb5..00000000
--- a/lib/sisu/v3/db_dbi.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbDBI
- require_relative 'db_columns' # db_columns.rb
- require_relative 'db_tests' # db_tests.rb
- require_relative 'db_create' # db_create.rb
- require_relative 'db_select' # db_select.rb
- require_relative 'db_indexes' # db_indexes.rb
- require_relative 'db_drop' # db_drop.rb
- require_relative 'db_remove' # db_remove.rb
- require_relative 'db_load_tuple' # db_load_tuple.rb
- require_relative 'db_import' # db_import.rb
- class ColumnSize < SiSU_DbColumns::ColumnSize # db_columns.rb
- end
- class Test < SiSU_DbTests::Test # db_tests.rb
- end
- class Create .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbDrop
- class Drop
- require_relative 'response' # response.rb
- def initialize(opt,conn,db_info,sql_type='')
- @opt,@conn,@db_info,@sql_type=opt,conn,db_info,sql_type
- @ans=SiSU_Response::Response.new
- case @sql_type
- when /sqlite/
- cascade=''
- else
- cascade='CASCADE'
- end
- @drop_table=[
- "DROP TABLE metadata_and_text #{cascade};",
- "DROP TABLE doc_objects #{cascade};",
- "DROP TABLE urls #{cascade};",
- "DROP TABLE endnotes #{cascade};",
- "DROP TABLE endnotes_asterisk #{cascade};",
- "DROP TABLE endnotes_plus #{cascade};",
- ]
- end
- def drop
- def tables #% drop all tables
- begin
- msg_sqlite="as not all disk space is recovered after dropping the database << #{@db_info.sqlite.db} >>, you may be better off deleting the file, and recreating it as necessary"
- case @sql_type
- when /sqlite/
- puts msg_sqlite
- ans=@ans.response?('remove sql database?')
- if ans \
- and File.exist?(@db_info.sqlite.db)
- @conn.close
- File.unlink(@db_info.sqlite.db)
- db=SiSU_Env::InfoDb.new
- conn=db.sqlite.conn_sqlite3
- sdb=SiSU_DbDBI::Create.new(@opt,conn,@db_info,@sql_type)
- sdb_index=SiSU_DbDBI::Index.new(@opt,conn,@db_info,@sql_type)
- sdb.output_dir?
- begin
- sdb.create_db
- sdb.create_table.metadata_and_text
- sdb.create_table.doc_objects
- sdb.create_table.endnotes
- sdb.create_table.endnotes_asterisk
- sdb.create_table.endnotes_plus
- sdb.create_table.urls
- sdb_index.create_indexes
- rescue
- SiSU_Errors::InfoError.new($!,$@,'-D').error do
- __LINE__.to_s + ':' + __FILE__
- end
- sdb.output_dir?
- end
- exit
- else
- @conn.transaction
- @drop_table.each do |d|
- @conn.execute(d)
- end
- @conn.commit
- end
- else
- @drop_table.each do |d|
- @conn.execute(d)
- end
- end
- rescue
- case @sql_type
- when /sqlite/
- ans=@ans.response?('remove sql database?')
- if ans and File.exist?(@db_info.sqlite.db); File.unlink(@db_info.sqlite.db)
- end
- else
- @drop_table.each do |d|
- @conn.execute(d)
- end
- end
- ensure
- end
- end
- def indexes
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def base #% drop base indexes
- print "\n drop documents common indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{DROP INDEX idx_title;},
- %{DROP INDEX idx_author;},
- %{DROP INDEX idx_filename;},
- %{DROP INDEX idx_topics;},
- %{DROP INDEX idx_ocn;},
- %{DROP INDEX idx_digest_clean;},
- %{DROP INDEX idx_digest_all;},
- %{DROP INDEX idx_lev1;},
- %{DROP INDEX idx_lev2;},
- %{DROP INDEX idx_lev3;},
- %{DROP INDEX idx_lev4;},
- %{DROP INDEX idx_lev5;},
- %{DROP INDEX idx_lev6;},
- %{DROP INDEX idx_endnote_nr;},
- %{DROP INDEX idx_digest_en;},
- %{DROP INDEX idx_endnote_nr_asterisk;},
- %{DROP INDEX idx_endnote_asterisk;},
- %{DROP INDEX idx_digest_en_asterisk;},
- %{DROP INDEX idx_endnote_nr_plus;},
- %{DROP INDEX idx_endnote_plus;},
- %{DROP INDEX idx_digest_en_plus},
- ]
- conn_execute_array(sql_arr)
- end
- def text #% drop TEXT indexes, sqlite
- print "\n drop documents TEXT indexes\n" unless @opt.cmd =~/q/
- sql_arr=[
- %{DROP INDEX idx_clean;},
- %{DROP INDEX idx_endnote},
- ]
- conn_execute_array(sql_arr)
- end
- self
- end
- indexes.base
- @opt.cmd=~/D/ || ((@opt.mod=~/psql/) ? '' : indexes.text)
- self
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_import.rb b/lib/sisu/v3/db_import.rb
deleted file mode 100644
index 530e23df..00000000
--- a/lib/sisu/v3/db_import.rb
+++ /dev/null
@@ -1,718 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbImport
- require_relative 'db_columns' # db_columns.rb
- require_relative 'db_load_tuple' # db_load_tuple.rb
- require_relative 'db_sqltxt' # db_sqltxt.rb
- require_relative 'shared_html_lite' # shared_html_lite.rb
- require 'sqlite3'
- class Import < SiSU_DbText::Prepare
- include SiSU_Param
- include SiSU_Screen
- @@dl=nil
- @@hname=nil
- attr_accessor :tp
- def initialize(opt,conn,file_maint,sql_type='pg')
- @opt,@conn,@file_maint,@sql_type=opt,conn,file_maint,sql_type
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- @dal="#{@env.processing_path.dal}"
- @fnb=if @opt.fns.empty? \
- or @opt.cmd.empty?
- ''
- else
- @md=SiSU_Param::Parameters.new(@opt).get
- @md.fnb
- end
- @suffix=@opt.fns[/(?:.+?)(?:\.ssm\.sst|\.-?sst)/,1]
- @fnc="#{@dal}/#{@opt.fns}.content.rbm"
- @@seg,@@seg_full='','' #create? consider placing field just before clean text as opposed to seg which contains seg(.html) name info seg_full would contain seg info for levels 5 & 6 where available eg seg_full may be 7.3 (level 5) and 7.3.1 (level 6) where seg is 7
- @col=Hash.new('')
- @col[:ocn]=''
- @counter={}
- @db=SiSU_Env::InfoDb.new
- if @sql_type=='sqlite'
- @driver_sqlite3=(@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \
- ? true
- : false
- end
- sql='SELECT MAX(lid) FROM doc_objects'
- begin
- @col[:lid] ||=0
- @col[:lid]=@driver_sqlite3 \
- ? @conn.execute( sql ).join.to_i
- : @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- rescue
- puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/
- end
- @col[:lid]=0 if @col[:lid].nil? or @col[:lid].to_s.empty?
- sql='SELECT MAX(nid) FROM endnotes'
- begin
- @id_n=@driver_sqlite3 \
- ? @conn.execute( sql ).join.to_i
- : @id_n=@conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- @id_n ||=0
- rescue
- puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/
- end
- @id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty?
- @col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0
- @db=SiSU_Env::InfoDb.new
- @pdf_fn=SiSU_Env::FileOp.new(@md).base_filename
- @@dl ||=SiSU_Env::InfoEnv.new.digest.length
- end
- def marshal_load
- require_relative 'dal' # dal.rb
- @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here
- SiSU_Screen::Ansi.new(@opt.cmd,"#{@db.psql.db}::#{@opt.fns}").puts_blue if @opt.cmd =~/vVM/
- SiSU_Screen::Ansi.new(@opt.cmd,'Marshal Load',@fnc).puts_grey if @opt.cmd =~/v/
-#%
- select_first_match=%{
- SELECT metadata_and_text.tid
- FROM metadata_and_text
- WHERE metadata_and_text.src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;}
- file_exist=@sql_type=~/sqlite/ \
- ? @conn.get_first_value(select_first_match)
- : @conn.select_one(select_first_match)
- if not file_exist
- t_d=[] # transaction_data
- t_d << db_import_metadata
- t_d << db_import_documents(@dal_array)
- t_d << db_import_urls(@dal_array,@fnc) #import OID on/off
- t_d=t_d.flatten
- if @opt.cmd =~/[MV]/
- puts @conn.class if defined? @conn.class
- puts @conn.driver_name if defined? @conn.driver_name
- puts @conn.driver if defined? @conn.driver
- end
- begin
- sql=''
- if @sql_type=~/sqlite/
- @conn.transaction do |conn|
- t_d.each do |sql|
- conn.execute(sql)
- end
- end
- #also 'execute' works for sqlite
- #@conn.execute("BEGIN")
- # t_d.each do |sql|
- # @conn.execute(sql)
- # end
- #@conn.execute("COMMIT")
- else
- #'do' works for postgresql
- @conn.do("BEGIN")
- t_d.each do |sql|
- @conn.do(sql)
- end
- @conn.do("COMMIT")
- end
- rescue DBI::DatabaseError => e
- STDERR.puts "Error code: #{e.err}"
- STDERR.puts "Error message: #{e.errstr}"
- STDERR.puts "Error SQLSTATE: #{e.state}"
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
- sql=File.new(sqlfn,'w')
- t_d.each {|i| sql.puts i}
- p sqlfn
- if @opt.cmd =~/M/
- puts sql
- p @conn.methods.sort
- puts "#{__FILE__}:#{__LINE__}"
- end
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- sqlfn="#{@env.processing_path.sql}/#{@md.fnb}.sql"
- sql=File.new(sqlfn,'w')
- t_d.each {|i| sql.puts i}
- p sqlfn
- if @opt.cmd =~/M/
- puts sql
- p @conn.methods.sort
- puts "#{__FILE__}:#{__LINE__}"
- end
- ensure
- end
- else
- if file_exist
- @db=SiSU_Env::InfoDb.new
- puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} in language code #{cX.blue}#{@opt.lng}#{cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}"
- end
- end
- end
- def pf_db_import_transaction_open
- end
- def pf_db_import_transaction_close
- end
- def db_import_metadata #% import documents - populate database
- print %{ #{@cX.grey}import documents dbi_unit #{@cX.off} } if @opt.cmd =~/vVM/
- @tp={}
- @md=SiSU_Param::Parameters.new(@opt).get
-#% sisutxt & fulltxt
- if FileTest.exist?(@md.fns)
- txt_arr=IO.readlines(@md.fns,'')
- src=txt_arr.join("\n")
- src=special_character_escape(src)
- @tp[:sisutxt_f],@tp[:sisutxt_i]='sisutxt, ',"'#{src}', "
- txt=clean_searchable_text(txt_arr)
- #txt=special_character_escape(txt)
- @tp[:fulltxt_f],@tp[:fulltxt_i]='fulltxt, ',"'#{txt}', "
- end
-#% title
- if defined? @md.title.full \
- and @md.title.full=~/\S+/ # DublinCore 1 - title
- #@tp[:title]=@md.title.full
- #special_character_escape(@tp[:title])
- #@tp[:title_f],@tp[:title_i]='title, ',"'#{@tp[:title]}', "
- sql='SELECT MAX(tid) FROM metadata_and_text;'
- begin
- @@id_t ||=0
- id_t=if @driver_sqlite3
- @conn.execute( sql ).join.to_i # { |x| id_t=x.join.to_i }
- else
- @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }
- end
- @@id_t=id_t if id_t
- rescue
- puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/
- end
- @@id_t+=1 #bug related, needs to be performed once at start of file, but consider moving, as, placed here it means program will fail if document header lacks @title:
- puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} if @opt.cmd =~/vVM/
- end
- ################ CLEAR ##############
- SiSU_DbDBI::Test.new(self,@opt).verify #% import title names, filenames (tuple)
- t=SiSU_DbTuple::LoadMetadata.new(@conn,@@id_t,@md,@file_maint)
- tuple=t.tuple
- tuple
- end
- def db_import_documents(dal_array) #% import documents - populate main database table, import into substantive database tables (tuple)
- begin
- @col[:tid]=@@id_t
- @en,@en_ast,@en_pls,@tuple_array=[],[],[],[]
- @col[:en_a],@col[:en_z]=nil,nil
- dal_array.each do |data|
- data.obj.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,'\1')
- data.obj.gsub!(/#{Mx[:gl_o]}(●)#{Mx[:gl_c]}\s*/,'\1 ')
- data.obj.gsub!(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,'') #check
- @col[:seg]=@@seg
- if data.of ==:para \
- || :heading \
- || :heading_insert \
- || :block \
- || :group # regular text what of code-blocks grouped text etc.
- notedata=data.obj.dup
- #% :headings
- if data.is==:heading \
- && (data.ln.inspect=~/[123]/)
- @col[:lev],txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.ln,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @col[:lid]+=1
- txt=endnotes(txt).extract_any
- body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_minus
- @col[:body]=special_character_escape(body)
- plaintext=@col[:body].dup
- plaintext=strip_markup(plaintext)
- @col[:plaintext]=clean_searchable_text(plaintext)
- book_idx=data.idx ? data.idx : ''
- @col[:book_idx]=clean_searchable_text(book_idx)
- if @en[0] then @en_a,@en_z=@en[0].first,@en[0].last
- end
- if @en_ast[0] then @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last
- end
- if @en_pls[0] then @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last
- end
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
- @tuple_array << t.tuple
- case @col[:lev]
- when /1/; @col[:lv1]+=1
- when /2/; @col[:lv2]+=1
- when /3/; @col[:lv3]+=1
- end
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==4
- @@seg,txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.name,data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @col[:seg]=@@seg
- @col[:lv4]+=1
- @col[:lid]+=1
- @col[:lev]=4
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(body)
- plaintext=@col[:body].dup
- plaintext=strip_markup(plaintext)
- @col[:plaintext]=clean_searchable_text(plaintext)
- book_idx=data.idx ? data.idx : ''
- @col[:book_idx]=clean_searchable_text(book_idx)
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==5
- txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is==:heading \
- && data.ln==5 \
- && data.name #check data.name
- @@seg ||='' #nil # watch
- @col[:seg]=@@seg
- @col[:lv5]+=1
- @col[:lid]+=1
- @col[:lev]=5
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(body)
- plaintext=@col[:body].dup
- plaintext=strip_markup(plaintext)
- @col[:plaintext]=clean_searchable_text(plaintext)
- book_idx=data.idx ? data.idx : ''
- @col[:book_idx]=clean_searchable_text(book_idx)
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- elsif data.is==:heading \
- && data.ln==6
- txt,@col[:ocn],@col[:lev_an],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.lv,data.odv,data.osp,data.of,data.is,data.node,data.parent,'',''
- @@seg_full=data.name if data.is==:heading && data.ln==6 && data.name #check data.name
- @@seg ||='' #nil # watch
- @col[:seg]=@@seg
- @col[:lv6]+=1
- @col[:lid]+=1
- @col[:lev]=6
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- body=SiSU_FormatShared::CSS_Format.new(@md,data).lev4_plus
- @col[:body]=special_character_escape(body)
- plaintext=@col[:body].dup
- plaintext=strip_markup(plaintext)
- @col[:plaintext]=clean_searchable_text(plaintext)
- book_idx=data.idx ? data.idx : ''
- @col[:book_idx]=clean_searchable_text(book_idx)
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
- @tuple_array << t.tuple
- @col[:lev]=@col[:plaintext]=@col[:body]=''
- #% :structure :layout :comment
- elsif data.of==:structure \
- || data.of==:layout \
- || data.of==:comment
- #added watch
- #% :
- else #% regular text
- @col[:lid]+=1
- txt=''
- txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:t_of],@col[:t_is],@col[:node],@col[:parent],@col[:digest_clean],@col[:digest_all]=data.obj,data.ocn,data.odv,data.osp,data.of,data.is,'',data.parent,'',''
- @hname=if @col[:seg] \
- and not @col[:seg].to_s.empty?
- @@hname=@col[:seg].to_s
- else @@hname
- end
- @env=SiSU_Env::InfoEnv.new(@md.fns)
- @base_url="#{@env.url.root}/#{@md.fnb}/#{@hname}.html"
- txt=endnotes(txt).extract_any
- if @sql_type=~/pg/ \
- and txt.size > (SiSU_DbColumns::ColumnSize.new.document_clean - 1) # examine pg build & remove limitation
- puts "\n\nTOO LARGE (TXT - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nTEXT BODY\n#{@col[:body].size} object #{@col[:ocn]} -> #{@col[:body].slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
- @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
- @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last if @en_pls[0]
- body=if data.is==:table
- SiSU_FormatShared::CSS_Format.new(@md,data).html_table
- elsif data.is==:code
- SiSU_FormatShared::CSS_Format.new(@md,data).code
- elsif defined? data.indent \
- and defined? data.hang \
- and data.indent =~/[1-9]/ \
- and data.indent == data.hang
- SiSU_FormatShared::CSS_Format.new(@md,data).indent(data.indent)
- elsif defined? data.indent \
- and defined? data.hang \
- and data.hang =~/[0-9]/ \
- and data.indent != data.hang
- SiSU_FormatShared::CSS_Format.new(@md,data).hang_indent(data.hang,data.indent)
- else
- SiSU_FormatShared::CSS_Format.new(@md,data).norm
- end
- @col[:body]=special_character_escape(body)
- plaintext=@col[:body].dup
- plaintext=strip_markup(plaintext)
- @col[:plaintext]=clean_searchable_text(plaintext)
- book_idx=data.idx ? data.idx : ''
- @col[:book_idx]=clean_searchable_text(book_idx)
- t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
- @tuple_array << t.tuple
- @en,@en_ast,@en_pls=[],[],[]
- @col[:en_a]=@col[:en_z]=nil
- @col[:lev]=@col[:plaintext]=@col[:body]=@col[:words]=''
- end
- if notedata =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_a_o]}\d+.+?#{Mx[:en_a_c]}/]
- if inf[/#{Mx[:en_a_o]}(\d+)(.+?)#{Mx[:en_a_c]}/]
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file_maint)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- if notedata =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_b_o]}\*\d+.+?#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- if inf[/#{Mx[:en_b_o]}[*](\d+)(.+?)#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes_asterisk',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file_maint)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- if notedata =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables
- endnote_array=notedata.scan(/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/)
- endnote_array.each do |inf|
- if inf[/#{Mx[:en_b_o]}\+\d+.+?#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- if inf[/#{Mx[:en_b_o]}[+](\d+)(.+?)#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1
- nr,txt,digest_clean=$1,$2.strip,0
- end
- @id_n+=1
- txt=special_character_escape(txt)
- body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt)
- txt=strip_markup(txt)
- if txt.size > (SiSU_DbColumns::ColumnSize.new.endnote_clean - 1)
- puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n"
- open("#{Dir.pwd}/pg_documents_error_log",'a') do |error|
- error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}")
- end
- txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}
- end
- if txt
- en={
- type: 'endnotes_plus',
- id: @id_n,
- lid: @col[:lid],
- nr: nr,
- txt: txt,
- body: body,
- ocn: @col[:ocn],
- ocnd: @col[:ocnd],
- ocns: @col[:ocns],
- id_t: @@id_t,
- hash: digest_clean
- }
- t=SiSU_DbTuple::LoadEndnotes.new(@conn,en,@opt,@file_maint)
- @tuple_array << t.tuple
- end
- end
- end
- word_mode=notedata.scan(/\S+/)
- end
- end
- end
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- @tuple_array
- end
- def endnotes(txt)
- @txt=txt
- def extract_any
- if @txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/
- endnotes(@txt).range
- @en << endnotes(@txt).standard if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/
- @en_ast << endnotes(@txt).asterisk if @txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/
- @en_pls << endnotes(@txt).plus if @txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/
- @txt=endnotes(@txt).clean_text
- end
- @txt
- end
- def standard
- x=(@txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/) \
- ? @txt.scan(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/)
- : nil
- end
- def asterisk
- x=(@txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/) \
- ? @txt.scan(/#{Mx[:en_b_o]}[*](\d+).+?#{Mx[:en_b_c]}/)
- : nil
- end
- def plus
- x=(@txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/) \
- ? @txt.scan(/#{Mx[:en_b_o]}[+](\d+).+?#{Mx[:en_b_c]}/)
- : nil
- end
- def clean_text(base_url=nil)
- @txt=if base_url
- @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,%{\\1}).
- gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,%{\\1}).
- gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,%{\\1})
- else
- @txt.gsub(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,'\1').
- gsub(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,'\1').
- gsub(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,'\1')
- end
- @txt
- end
- def range
- @col[:en_a]=@col[:en_z]=nil
- if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}|#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/
- word_array=@txt.scan(/\S+/)
- word_array.each do |w|
- if w[/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/] # not tested since change 2003w31
- @col[:en_a]=$1 unless @col[:en_a]
- @col[:en_z]=@col[:en_a].dup unless @col[:en_a]
- @col[:en_z]=$1 if @col[:en_a]
- end
- end
- end
- @col
- end
- self
- end
- def db_import_urls(dbi_unit,content) #% import documents OID - populate database
- begin
- @fnc=content
- @env=SiSU_Env::InfoEnv.new(@opt.fns)
- base=@env.url.root
- out=@env.path.output
- f,u={},{}
- if @fnb.empty? \
- or @fnb.nil?
- p 'file output path error' #remove
- end
- if FileTest.file?("#{@md.file.output_path.txt.dir}/#{@md.file.base_filename.txt}")==true
- f[:txt],u[:txt]='plaintext,', "'#{@md.file.output_path.txt.url}/#{@md.file.base_filename.txt}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_seg.dir}/#{@md.file.base_filename.html_seg}")==true
- f[:html_toc],u[:html_toc]='html_toc,', "'#{@md.file.output_path.html_seg.url}/#{@md.file.base_filename.html_seg}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_scroll.dir}/#{@md.file.base_filename.html_scroll}")==true
- f[:html_doc],u[:html_doc]='html_doc,', "'#{@md.file.output_path.html_scroll.url}/#{@md.file.base_filename.html_scroll}',"
- end
- if FileTest.file?("#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}")==true
- f[:xhtml],u[:xhtml]='xhtml,', "'#{@md.file.output_path.xhtml.url}/#{@md.file.base_filename.xhtml}',"
- end
- if FileTest.file?("#{@md.file.output_path.xml_sax.dir}/#{@md.file.base_filename.xml_sax}")==true
- f[:xml_sax],u[:xml_sax]='xml_sax,', "'#{@md.file.output_path.xml_sax.url}/#{@md.file.base_filename.xml_sax}',"
- end
- if FileTest.file?("#{@md.file.output_path.xml_dom.dir}/#{@md.file.base_filename.xml_dom}")==true
- f[:xml_dom],u[:xml_dom]='xml_dom,', "'#{@md.file.output_path.xml_dom.url}/#{@md.file.base_filename.xml_dom}',"
- end
- if FileTest.file?("#{@md.file.output_path.epub.dir}/#{@md.file.base_filename.epub}")==true
- f[:epub],u[:epub]='epub,', "'#{@md.file.output_path.epub.url}/#{@md.file.base_filename.epub}',"
- end
- if FileTest.file?("#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}")==true
- f[:odf],u[:odf]='odf,', "'#{@md.file.output_path.odt.url}/#{@md.file.base_filename.odt}',"
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_a4}")==true #\
- #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_p_letter}")==true
- f[:pdf_p],u[:pdf_p]='pdf_p,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_p_a4}',"
- end
- if FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_a4}")==true #\
- #or FileTest.file?("#{@md.file.output_path.pdf.dir}/#{@pdf_fn.pdf_l_letter}")==true
- f[:pdf_l],u[:pdf_l]='pdf_l,', "'#{@md.file.output_path.pdf.url}/#{@pdf_fn.pdf_l_a4}',"
- end
- if FileTest.file?("#{@md.file.output_path.html_concordance.dir}/#{@md.file.base_filename.html_concordance}")==true
- f[:concordance],u[:concordance]='concordance,', "'#{@md.file.output_path.html_concordance.url}/#{@md.file.base_filename.html_concordance}',"
- end
- #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
- # f[:latex_p],u[:latex_p]='latex_p,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
- #end
- ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.tex")==true
- ## f[:latex_p],u[:latex_p]='latex_p,', "'#{base}/#{@fnb}/#{@opt.fns}.tex',"
- ##end
- #if FileTest.file?("#{@md.file.output_path.x.dir}/#{@md.file.base_filename.x}")==true
- # f[:latex_l],u[:latex_l]='latex_l,', "'#{@md.file.output_path.x.url}/#{@md.file.base_filename.x}',"
- #end
- ##if FileTest.file?("#{out}/#{@fnb}/#{@opt.fns}.landscape.tex")==true
- ## f[:latex_l],u[:latex_l]='latex_l,', "'#{base}/#{@fnb}/#{@opt}.fns}.landscape.tex',"
- ##end
- if FileTest.file?("#{@md.file.output_path.digest.dir}/#{@md.file.base_filename.digest}")==true
- f[:digest],u[:digest]='digest,', "'#{@md.file.output_path.digest.url}/#{@md.file.base_filename.digest}',"
- end
- if FileTest.file?("#{@md.file.output_path.manifest.dir}/#{@md.file.base_filename.manifest}")==true #revisit, was to be text, this is html
- f[:manifest],u[:manifest]='manifest,', "'#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}',"
- end
- if FileTest.file?("#{@md.file.output_path.src.dir}/#{@md.file.base_filename.src}")==true
- f[:markup],u[:markup]='markup,', "'#{@md.file.output_path.src.url}/#{@md.file.base_filename.src}',"
- end
- if FileTest.file?("#{@md.file.output_path.sisupod.dir}/#{@md.file.base_filename.sisupod}")==true
- f[:sisupod],u[:sisupod]='sisupod,', "'#{@md.file.output_path.sisupod.url}/#{@md.file.base_filename.sisupod}',"
- end
- t=SiSU_DbTuple::LoadUrls.new(@conn,f,u,@@id_t,@opt,@file_maint)
- tuple=t.tuple
- rescue
- SiSU_Errors::InfoError.new($!,$@,@opt.cmd,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- tuple
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_indexes.rb b/lib/sisu/v3/db_indexes.rb
deleted file mode 100644
index beae0aa1..00000000
--- a/lib/sisu/v3/db_indexes.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbIndex
- class Index # create documents Indexes def initialize(opt,conn='',sql_type='')
- def initialize(opt,conn,file,sql_type='')
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- end
- def create_indexes # check added from pg not tested
- def conn_execute_array(sql_arr)
- @conn.transaction do |conn|
- sql_arr.each do |sql|
- conn.execute(sql)
- end
- end
- end
- def base
- print "\n create documents common indexes\n" if @opt.cmd =~/[VM]/
- sql_arr=[
- %{CREATE INDEX idx_ocn ON doc_objects(ocn);},
- %{CREATE INDEX idx_digest_clean ON doc_objects(digest_clean);},
- %{CREATE INDEX idx_digest_all ON doc_objects(digest_all);},
- %{CREATE INDEX idx_lev1 ON doc_objects(lev1);},
- %{CREATE INDEX idx_lev2 ON doc_objects(lev2);},
- %{CREATE INDEX idx_lev3 ON doc_objects(lev3);},
- %{CREATE INDEX idx_lev4 ON doc_objects(lev4);},
- %{CREATE INDEX idx_lev5 ON doc_objects(lev5);},
- %{CREATE INDEX idx_lev6 ON doc_objects(lev6);},
- %{CREATE INDEX idx_endnote_nr ON endnotes(nr);},
- %{CREATE INDEX idx_digest_en ON endnotes(digest_clean);},
- %{CREATE INDEX idx_endnote_nr_asterisk ON endnotes_asterisk(nr);},
- %{CREATE INDEX idx_endnote_asterisk ON endnotes_asterisk(clean);},
- %{CREATE INDEX idx_digest_en_asterisk ON endnotes_asterisk(digest_clean);},
- %{CREATE INDEX idx_endnote_nr_plus ON endnotes_plus(nr);},
- %{CREATE INDEX idx_endnote_plus ON endnotes_plus(clean);},
- %{CREATE INDEX idx_digest_en_plus ON endnotes_plus(digest_clean);},
- %{CREATE INDEX idx_title ON metadata_and_text(title);},
- %{CREATE INDEX idx_author ON metadata_and_text(creator_author);},
- %{CREATE INDEX idx_filename ON metadata_and_text(src_filename);},
- %{CREATE INDEX idx_language ON metadata_and_text(language_document_char);},
- %{CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register)},
- ]
- conn_execute_array(sql_arr)
- end
- def text
- print "\n create documents TEXT indexes\n" if @opt.cmd =~/[VM]/
- sql_arr=[
- %{CREATE INDEX idx_clean ON doc_objects(clean);},
- %{CREATE INDEX idx_endnote ON endnotes(clean);}
- ]
- conn_execute_array(sql_arr)
- end
- base
- @opt.cmd=~/D/ || ((@opt.mod=~/psql/) ? '' : text)
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_load_tuple.rb b/lib/sisu/v3/db_load_tuple.rb
deleted file mode 100644
index d615fcab..00000000
--- a/lib/sisu/v3/db_load_tuple.rb
+++ /dev/null
@@ -1,336 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbTuple
- require_relative 'db_columns' # db_columns.rb
- class LoadDocuments
- require_relative 'param' # param.rb
- include SiSU_Param
- def initialize(conn,col,opt,file_maint)
- @conn,@col,@opt,@file_maint=conn,col,opt,file_maint
- @col[:lev]=@col[:lev].to_i
- unless @col[:lev]=~/^[1-6]/ \
- or @col[:lev]==1 \
- or @col[:lev]==2 \
- or @col[:lev]==3 \
- or @col[:lev]==4 \
- or @col[:lev]==5 \
- or @col[:lev]==6 #changed from \d+ ??
- @col[:lev]=0
- end
- @col[:ocn]=0 unless @col[:ocn].inspect=~/\d+/
- @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX
- end
- def tuple #% import line
- sql_entry=if @col[:en_a]
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
- else
- "INSERT INTO doc_objects (lid, metadata_tid, lev, lev_an, clean, body, book_idx, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, t_of, t_is, node, parent, digest_clean, digest_all) " +
- "VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:lev_an]}', '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:book_idx]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:t_of]}', '#{@col[:t_is]}', '#{@col[:node]}', '#{@col[:parent]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');"
- end
- if @opt.cmd =~/M/
- if @opt.cmd =~/V/
- puts @file_maint.inspect
- puts sql_entry
- end
- @file_maint.puts sql_entry
- else
- if @opt.cmd =~/V/
- puts sql_entry
- @file_maint.puts sql_entry
- end
- end
- if @opt.cmd =~/v/
- if @col[:lev].inspect =~/[12356789]/
- lev=case @col[:lev].inspect
- when /1/; ':A'
- when /2/; ':B'
- when /3/; ':C'
- when /5/; ' 2'
- when /6/; ' 3'
- end
- puts %{#{lev}>\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}}
- elsif @col[:lev].inspect =~/[4]/
- puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:node]}\t#{@col[:ocns]}\t#{@col[:seg]}}
- end
- end
- sql_entry
- end
- end
- class LoadMetadata #< SiSU_DbColumns::Columns
- def initialize(conn,id,md,file_maint)
- @conn,@id,@md,@file_maint=conn,id,md,file_maint
- @tp=SiSU_DbColumns::Columns.new(md)
- end
- def tuple
- sql_entry="INSERT INTO metadata_and_text (
-#{@tp.column.title.tuple[0]}
-#{@tp.column.title_main.tuple[0]}
-#{@tp.column.title_sub.tuple[0]}
-#{@tp.column.title_short.tuple[0]}
-#{@tp.column.title_edition.tuple[0]}
-#{@tp.column.title_note.tuple[0]}
-#{@tp.column.title_language.tuple[0]}
-#{@tp.column.title_language_char.tuple[0]}
-#{@tp.column.creator_author.tuple[0]}
-#{@tp.column.creator_author_honorific.tuple[0]}
-#{@tp.column.creator_author_nationality.tuple[0]}
-#{@tp.column.creator_editor.tuple[0]}
-#{@tp.column.creator_contributor.tuple[0]}
-#{@tp.column.creator_illustrator.tuple[0]}
-#{@tp.column.creator_photographer.tuple[0]}
-#{@tp.column.creator_translator.tuple[0]}
-#{@tp.column.creator_prepared_by.tuple[0]}
-#{@tp.column.creator_digitized_by.tuple[0]}
-#{@tp.column.creator_audio.tuple[0]}
-#{@tp.column.creator_video.tuple[0]}
-#{@tp.column.language_document.tuple[0]}
-#{@tp.column.language_document_char.tuple[0]}
-#{@tp.column.language_original.tuple[0]}
-#{@tp.column.language_original_char.tuple[0]}
-#{@tp.column.date_added_to_site.tuple[0]}
-#{@tp.column.date_available.tuple[0]}
-#{@tp.column.date_created.tuple[0]}
-#{@tp.column.date_issued.tuple[0]}
-#{@tp.column.date_modified.tuple[0]}
-#{@tp.column.date_published.tuple[0]}
-#{@tp.column.date_valid.tuple[0]}
-#{@tp.column.date_translated.tuple[0]}
-#{@tp.column.date_original_publication.tuple[0]}
-#{@tp.column.date_generated.tuple[0]}
-#{@tp.column.publisher.tuple[0]}
-#{@tp.column.original_publisher.tuple[0]}
-#{@tp.column.original_language.tuple[0]}
-#{@tp.column.original_language_char.tuple[0]}
-#{@tp.column.original_source.tuple[0]}
-#{@tp.column.original_institution.tuple[0]}
-#{@tp.column.original_nationality.tuple[0]}
-#{@tp.column.rights_all.tuple[0]}
-#{@tp.column.rights_copyright_text.tuple[0]}
-#{@tp.column.rights_copyright_translation.tuple[0]}
-#{@tp.column.rights_copyright_illustrations.tuple[0]}
-#{@tp.column.rights_copyright_photographs.tuple[0]}
-#{@tp.column.rights_copyright_preparation.tuple[0]}
-#{@tp.column.rights_copyright_digitization.tuple[0]}
-#{@tp.column.rights_copyright_audio.tuple[0]}
-#{@tp.column.rights_copyright_video.tuple[0]}
-#{@tp.column.rights_license.tuple[0]}
-#{@tp.column.classify_topic_register.tuple[0]}
-#{@tp.column.classify_subject.tuple[0]}
-#{@tp.column.classify_type.tuple[0]}
-#{@tp.column.classify_loc.tuple[0]}
-#{@tp.column.classify_dewey.tuple[0]}
-#{@tp.column.classify_oclc.tuple[0]}
-#{@tp.column.classify_pg.tuple[0]}
-#{@tp.column.classify_isbn.tuple[0]}
-#{@tp.column.classify_format.tuple[0]}
-#{@tp.column.classify_identifier.tuple[0]}
-#{@tp.column.classify_relation.tuple[0]}
-#{@tp.column.classify_coverage.tuple[0]}
-#{@tp.column.classify_keywords.tuple[0]}
-#{@tp.column.notes_abstract.tuple[0]}
-#{@tp.column.notes_comment.tuple[0]}
-#{@tp.column.notes_description.tuple[0]}
-#{@tp.column.notes_history.tuple[0]}
-#{@tp.column.notes_prefix.tuple[0]}
-#{@tp.column.notes_prefix_a.tuple[0]}
-#{@tp.column.notes_prefix_b.tuple[0]}
-#{@tp.column.notes_suffix.tuple[0]}
-#{@tp.column.src_filename.tuple[0]}
-#{@tp.column.src_fingerprint.tuple[0]}
-#{@tp.column.src_filesize.tuple[0]}
-#{@tp.column.src_word_count.tuple[0]}
-#{@tp.column.src_txt.tuple[0]}
-#{@tp.column.fulltext.tuple[0]}
-#{@tp.column.skin_name.tuple[0]}
-#{@tp.column.skin_fingerprint.tuple[0]}
-#{@tp.column.skin.tuple[0]}
-#{@tp.column.links.tuple[0]}
-tid)
-" +
- "VALUES (
-#{@tp.column.title.tuple[1]}
-#{@tp.column.title_main.tuple[1]}
-#{@tp.column.title_sub.tuple[1]}
-#{@tp.column.title_short.tuple[1]}
-#{@tp.column.title_edition.tuple[1]}
-#{@tp.column.title_note.tuple[1]}
-#{@tp.column.title_language.tuple[1]}
-#{@tp.column.title_language_char.tuple[1]}
-#{@tp.column.creator_author.tuple[1]}
-#{@tp.column.creator_author_honorific.tuple[1]}
-#{@tp.column.creator_author_nationality.tuple[1]}
-#{@tp.column.creator_editor.tuple[1]}
-#{@tp.column.creator_contributor.tuple[1]}
-#{@tp.column.creator_illustrator.tuple[1]}
-#{@tp.column.creator_photographer.tuple[1]}
-#{@tp.column.creator_translator.tuple[1]}
-#{@tp.column.creator_prepared_by.tuple[1]}
-#{@tp.column.creator_digitized_by.tuple[1]}
-#{@tp.column.creator_audio.tuple[1]}
-#{@tp.column.creator_video.tuple[1]}
-#{@tp.column.language_document.tuple[1]}
-#{@tp.column.language_document_char.tuple[1]}
-#{@tp.column.language_original.tuple[1]}
-#{@tp.column.language_original_char.tuple[1]}
-#{@tp.column.date_added_to_site.tuple[1]}
-#{@tp.column.date_available.tuple[1]}
-#{@tp.column.date_created.tuple[1]}
-#{@tp.column.date_issued.tuple[1]}
-#{@tp.column.date_modified.tuple[1]}
-#{@tp.column.date_published.tuple[1]}
-#{@tp.column.date_valid.tuple[1]}
-#{@tp.column.date_translated.tuple[1]}
-#{@tp.column.date_original_publication.tuple[1]}
-#{@tp.column.date_generated.tuple[1]}
-#{@tp.column.publisher.tuple[1]}
-#{@tp.column.original_publisher.tuple[1]}
-#{@tp.column.original_language.tuple[1]}
-#{@tp.column.original_language_char.tuple[1]}
-#{@tp.column.original_source.tuple[1]}
-#{@tp.column.original_institution.tuple[1]}
-#{@tp.column.original_nationality.tuple[1]}
-#{@tp.column.rights_all.tuple[1]}
-#{@tp.column.rights_copyright_text.tuple[1]}
-#{@tp.column.rights_copyright_translation.tuple[1]}
-#{@tp.column.rights_copyright_illustrations.tuple[1]}
-#{@tp.column.rights_copyright_photographs.tuple[1]}
-#{@tp.column.rights_copyright_preparation.tuple[1]}
-#{@tp.column.rights_copyright_digitization.tuple[1]}
-#{@tp.column.rights_copyright_audio.tuple[1]}
-#{@tp.column.rights_copyright_video.tuple[1]}
-#{@tp.column.rights_license.tuple[1]}
-#{@tp.column.classify_topic_register.tuple[1]}
-#{@tp.column.classify_subject.tuple[1]}
-#{@tp.column.classify_type.tuple[1]}
-#{@tp.column.classify_loc.tuple[1]}
-#{@tp.column.classify_dewey.tuple[1]}
-#{@tp.column.classify_oclc.tuple[1]}
-#{@tp.column.classify_pg.tuple[1]}
-#{@tp.column.classify_isbn.tuple[1]}
-#{@tp.column.classify_format.tuple[1]}
-#{@tp.column.classify_identifier.tuple[1]}
-#{@tp.column.classify_relation.tuple[1]}
-#{@tp.column.classify_coverage.tuple[1]}
-#{@tp.column.classify_keywords.tuple[1]}
-#{@tp.column.notes_abstract.tuple[1]}
-#{@tp.column.notes_comment.tuple[1]}
-#{@tp.column.notes_description.tuple[1]}
-#{@tp.column.notes_history.tuple[1]}
-#{@tp.column.notes_prefix.tuple[1]}
-#{@tp.column.notes_prefix_a.tuple[1]}
-#{@tp.column.notes_prefix_b.tuple[1]}
-#{@tp.column.notes_suffix.tuple[1]}
-#{@tp.column.src_filename.tuple[1]}
-#{@tp.column.src_fingerprint.tuple[1]}
-#{@tp.column.src_filesize.tuple[1]}
-#{@tp.column.src_word_count.tuple[1]}
-#{@tp.column.src_txt.tuple[1]}
-#{@tp.column.fulltext.tuple[1]}
-#{@tp.column.skin_name.tuple[1]}
-#{@tp.column.skin_fingerprint.tuple[1]}
-#{@tp.column.skin.tuple[1]}
-#{@tp.column.links.tuple[1]}
-#{@id}
-);"
- if @md.opt.cmd =~/M/
- puts "maintenance mode on: creating sql transaction file (for last transaction set (document) only):\n\t#{@file_maint.inspect}"
- @file_maint.puts sql_entry
- else
- @file_maint.puts sql_entry if @md.opt.cmd =~/V/
- end
- sql_entry
- end
- end
- class LoadUrls
- def initialize(conn,f,u,id,opt,file_maint)
- @conn,@f,@u,@id,@opt,@file_maint=conn,f,u,id,opt,file_maint
- end
- def tuple
- sql_entry="INSERT INTO urls (#{@f[:txt]} #{@f[:html_toc]} #{@f[:html_doc]} #{@f[:xhtml]} #{@f[:xml_sax]} #{@f[:xml_dom]} #{@f[:odf]} #{@f[:pdf_p]} #{@f[:pdf_l]} #{@f[:concordance]} #{@f[:latex_p]} #{@f[:latex_l]} #{@f[:manifest]} #{@f[:digest]} #{@f[:markup]} #{@f[:sisupod]} metadata_tid) " +
- "VALUES (#{@u[:txt]} #{@u[:html_toc]} #{@u[:html_doc]} #{@u[:xhtml]} #{@u[:xml_sax]} #{@u[:xml_dom]} #{@u[:odf]} #{@u[:pdf_p]} #{@u[:pdf_l]} #{@u[:concordance]} #{@u[:latex_p]} #{@u[:latex_l]} #{@u[:manifest]} #{@u[:digest]} #{@u[:markup]} #{@u[:sisupod]} #{@id});"
- if @opt.cmd =~/M/
- @file_maint.puts sql_entry
- else
- @file_maint.puts sql_entry if @opt.cmd =~/V/
- end
- sql_entry
- end
- end
- class LoadEndnotes
- def initialize(conn,en,opt,file_maint)
- @conn,@en,@opt,@file_maint=conn,en,opt,file_maint
- end
- def tuple
- sql_entry="INSERT INTO #{@en[:type]} (nid, document_lid, nr, clean, body, ocn, ocnd, ocns, metadata_tid, digest_clean) " +
- "VALUES ('#{@en[:id]}', '#{@en[:lid]}', '#{@en[:nr]}', '#{@en[:txt]}', '#{@en[:body]}', '#{@en[:ocn]}', '#{@en[:ocnd]}', '#{@en[:ocns]}', '#{@en[:id_t]}', '#{@en[:hash]}');"
- if @opt.cmd =~/M/
- @file_maint.puts sql_entry
- else
- @file_maint.puts sql_entry if @opt.cmd =~/V/
- end
- sql_entry
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_remove.rb b/lib/sisu/v3/db_remove.rb
deleted file mode 100644
index de579832..00000000
--- a/lib/sisu/v3/db_remove.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbRemove
- class Remove
- def initialize(opt,conn,file,sql_type)
- @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
- @md=SiSU_Param::Parameters.new(@opt).get
- @fnb=@md.fnb
- @db=SiSU_Env::InfoDb.new
- end
- def remove
- driver_sqlite3=if @sql_type=='sqlite'
- (@conn.inspect.match(/^(.{10})/)[1]==@db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1]) \
- ? true
- : false
- end
- del_id=if driver_sqlite3
- remove_selected=%{
- SELECT tid
- FROM metadata_and_text
- WHERE src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;}
- @conn.get_first_value(remove_selected).to_i
- else
- remove_selected=%{
- SELECT metadata_and_text.tid
- FROM metadata_and_text
- WHERE metadata_and_text.src_filename = '#{@opt.fns}'
- AND metadata_and_text.language_document_char = '#{@opt.lng}'
- ;}
- x=@conn.select_one(remove_selected)
- x ? (x.join.to_i) : nil
- end
- if del_id
- sql_entry=[
- "DELETE FROM endnotes WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM endnotes_asterisk WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM endnotes_plus WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM doc_objects WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM urls WHERE metadata_tid = '#{del_id}';",
- "DELETE FROM metadata_and_text WHERE metadata_and_text.tid = '#{del_id}';",
- ]
- if driver_sqlite3
- @conn.transaction
- sql_entry.each do |s|
- @conn.execute(s)
- end
- @conn.commit if driver_sqlite3
- else
- sql_entry.each do |s|
- @conn.execute(s)
- end
- end
- if @opt.cmd =~/M/
- @file.puts sql_entry if @opt.cmd =~/M/
- end
- else
- SiSU_Screen::Ansi.new(@opt.cmd,"no such file in database #{@db.psql.db}::#{@opt.fns}").puts_grey if @opt.cmd =~/vVM/
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_select.rb b/lib/sisu/v3/db_select.rb
deleted file mode 100644
index efa1e7bd..00000000
--- a/lib/sisu/v3/db_select.rb
+++ /dev/null
@@ -1,227 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbSelect
- class Case
- def initialize(opt,conn='',sql_type='pg')
- @opt,@conn,@sql_type=opt,conn,sql_type
- @db=SiSU_Env::InfoDb.new
- @file_maint=sql_maintenance_file
- @sdb=SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) # db_dbi.rb
- @sdb_index=SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) # db_dbi.rb
- @sdb_no=SiSU_DbDBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb
- if @opt.mod.inspect =~/update|import/
- @sdb_import=SiSU_DbDBI::Import.new(@opt,@conn,@file_maint,@sql_type)
- @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@sql_type)
- elsif @opt.mod.inspect =~/remove/
- @sdb_remove_doc=SiSU_DbDBI::Remove.new(@opt,@conn,@file_maint,@sql_type)
- end
- end
- def db_exist?
- if @sql_type=='sqlite' \
- and (not (FileTest.file?(@db.sqlite.db)) or FileTest.zero?(@db.sqlite.db))
- puts %{no connection with #{@sql_type} database established, createdb "#{@db.sqlite.db}"?}
- exit
- end
- if @conn.is_a?(NilClass)
- db=@sql_type=='sqlite' \
- ? @db.sqlite.db
- : @db.psql.db
- puts %{no connection with #{@sql_type} database established, createdb "#{db}"?}
- exit
- end
- end
- def sql_maintenance_file
- file=if @opt.inspect =~/M/
- x=if @opt.fns and not @opt.fns.empty?
- @env=SiSU_Env::InfoEnv.new(@opt.fns) if @opt.fns
- puts "\n#{@env.processing_path.sqlite}/#{@opt.fns}.sql" if @sql_type =~/sqlite/ and @opt.cmd =~/M/
- @db=SiSU_Env::InfoDb.new
- @job="sqlite3 #{@db.sqlite.db} < #{@env.processing_path.sqlite}/#{@opt.fns}.sql"
- File.new("#{@env.processing_path.sqlite}/#{@opt.fns}.sql",'w+')
- elsif @opt.fns \
- and @opt.fns.inspect =~/create/
- nil #sort variations later
- else nil
- end
- else nil
- end
- file
- end
- def cases
- @opt.mod.each do |mod|
- case mod
- when /^--createdb$/
- @sdb.output_dir?
- begin
- @sdb.create_db
- rescue; @sdb.output_dir?
- end
- when /^--(?:init(?:ialize)?|create(?:all)?)$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue
- SiSU_Errors::InfoError.new($!,$@,'-D').error; @sdb.output_dir? do
- __LINE__.to_s + ':' + __FILE__
- end
- end
- when /^--createtables?$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; @sdb.output_dir?
- end
- when /^--recreate$/
- @sdb.output_dir?
- begin
- @sdb_no.drop.tables
- @sdb.create_table.metadata_and_text
- @sdb.create_table.doc_objects
- @sdb.create_table.endnotes
- @sdb.create_table.endnotes_asterisk
- @sdb.create_table.endnotes_plus
- @sdb.create_table.urls
- @sdb_index.create_indexes
- rescue; @sdb.output_dir?
- end
- when /^--cr(eate)?lex$/
- @sdb.output_dir?
- begin
- @sdb.create_table.doc_objects
- rescue; @sdb.output_dir?
- end
- when /^--cr(eate)?metadata$/
- @sdb.output_dir?
- begin
- @sdb.create_table.metadata_and_text
- rescue; @sdb.output_dir?
- end
- when /^--import$/
- db_exist?
- @sdb_import.marshal_load
- tell=case @sql_type
- when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?")
- when /pg/; SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")
- else '???'
- end
- tell.puts_grey if @opt.cmd =~/v/
- when /^--update$/
- db_exist?
- @sdb_remove_doc.remove
- @sdb_import.marshal_load
- tell=case @sql_type
- when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?")
- when /pg/; SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")
- else '???'
- end
- tell.puts_grey if @opt.cmd =~/v/
- when /^--remove$/
- db_exist?
- @sdb_remove_doc.remove
- when /^--index$/
- db_exist?
- @sdb_index.create_indexes
- when /^--droptable(s)?$/
- db_exist?
- @sdb_no.drop.tables
- when /^--dropindex(es)?$/
- db_exist?
- @sdb_no.drop.indexes
- when /^--(?:dropall|drop)$/
- db_exist?
- @sdb_no.drop.tables
- when /^--(?:db=)?(?:(?:sq)?lite|pg(?:sql)?|my(?:sql)?)$/
- when /^--(?:v\d+|dev)$/
- else
- #help=SiSU_Help::Help.new
- #help.summary
- #help.commands
- end
- if @opt.cmd =~/M/ \
- and @opt.cmd =~/d/
- puts @job
- end
- end
- if @opt.act[:psql][:set]==:on \
- and @opt.mod.inspect !~/--(?:createdb|init(?:ialize)?|create(?:all)?|createtables?|recreate|cr(eate)?lex|cr(eate)?metadata|import|update|remove|index|droptable(s)?|dropindex(es)?|dropall|drop)/
- SiSU_Screen::Ansi.new(@opt.cmd,"--pg requires further instruction").warn unless @opt.cmd =~/[q]/
- end
- begin
- rescue; @sdb.output_dir?
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/db_sqltxt.rb b/lib/sisu/v3/db_sqltxt.rb
deleted file mode 100644
index 91c775f8..00000000
--- a/lib/sisu/v3/db_sqltxt.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: system environment, resource control and configuration details
-
-=end
-module SiSU_DbText
- class Prepare
- def special_character_escape(str)
- str=str.gsub(/'/,"''"). #string.gsub!(/'/,"\047") #string.gsub!(/'/,"\\'")
- gsub(/(\\)/m,'\1\1'). #ok but with warnings, double backslash on sqlite #str.gsub!(/[\\]/m,'\\x5C') #ok but with warnings, but not for sqlite #str.gsub!(/(\\)/m,'\1') #ok for sqlite not for pgsql
- gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}/," \n").
- gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,''). #check
- gsub(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)#{Mx[:lnk_c]}\S+/,'[image: \1] \2').
- gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}(?:file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2').
- gsub(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,'\1')
- end
- def clean_searchable_text(arr) #produce clean, searchable, plaintext from document source
- txt_arr,en=[],[]
- arr=(arr.is_a?(String)) ? arr.split(/\n+/m) : arr
- arr.each do |s|
- s=s.gsub(/([*\/_-])\{(.+?)\}\1/m,'\2').
- gsub(/^(?:block|group|poem|code)\{/m,'').gsub(/^\}(?:block|group|poem|code)/m,'').
- gsub(/\A(?:@\S+:\s+.+)\Z/m,'')
- if s =~/^:A~/
- if defined? @md.creator \
- and defined? @md.creator.author \
- and not @md.creator.author.empty?
- s=s.gsub(/@author/,@md.creator.author)
- else
- SiSU_Screen::Ansi.new('v','WARNING Document Author information missing; provide @creator: :author:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
- end
- if defined? @md.title \
- and defined? @md.title.full \
- and not @md.title.full.empty?
- s=s.gsub(/@title/,@md.title.full)
- else
- SiSU_Screen::Ansi.new('v','WARNING Document Title missing; provide @title:',@md.fnb).warn unless @md.opt.cmd.inspect =~/q/
- end
- end
- s=s.gsub(/^(?:_[1-9]\*?|_\*)\s+/m,'').
- gsub(/^(?:[1-9]\~(\S+)?)\s+/m,'').
- gsub(/^(?::?[A-C]\~(\S+)?)\s+/m,'').
- gsub(/^%{1,3} .+/m,''). #removed even if contained in code block
- gsub(/ /m,' ')
- en << s.scan(/~\{\s*(.+?)\s*\}~/m)
- s=s.gsub(/~\{.+?\}~/m,'').
- gsub(/ \s+/m,' ')
- #special_character_escape(s)
- s
- end
- txt_arr << arr << en
- #txt_arr=txt_arr.flatten
- txt=txt_arr.flatten.join("\n")
- txt=special_character_escape(txt)
- txt
- end
- def strip_markup(str) #define rules, make same as in dal clean
- str=str.gsub(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]').
- gsub(/(?: \\;|#{Mx[:nbsp]})+/,' ').
- gsub(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}\d+(.+)#{Mx[:tc_c]}/u,'\1'). #tables
- gsub(/#{Mx[:tc_p]}#{Mx[:tc_p]}\d+#{Mx[:tc_p]}/u,' '). #tables
- gsub(/#{Mx[:tc_p]}/u,' '). #tables tidy later
- gsub(/<.+?>/,'').
- gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:file|ftp)\/\/:\S+ /,' [image] '). # else image names found in search
- gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/,' [image]'). # else image names found in search
- gsub(/\s\s+/,' ').
- strip
- end
- def unique_words(str)
- a=str.scan(/[a-zA-Z0-9\\\/_-]{2,}/) #a=str.scan(/\S+{2,}/)
- str=a.uniq.sort.join(' ')
- str
- end
- end
-end
-__END__
-
diff --git a/lib/sisu/v3/db_tests.rb b/lib/sisu/v3/db_tests.rb
deleted file mode 100644
index 33762987..00000000
--- a/lib/sisu/v3/db_tests.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: modules shared by the different db types, dbi, postgresql,
- sqlite
-
-=end
-module SiSU_DbTests
- class Test
- def initialize(info,opt)
- @ck,@opt=info,opt
- unless @opt.cmd =~/q/
- puts @ck.tp[:fns] if @ck.tp[:fns] and not @ck.tp[:fns].empty?
- puts @ck.tp[:title] if @ck.tp[:title] and not @ck.tp[:title].empty?
- puts @ck.tp[:creator] if @ck.tp[:creator] and not @ck.tp[:creator].empty?
- end
- end
- def verify
- unless @opt.cmd =~/q/
- puts @ck.tp[:fns].length.to_s + ' checklength ' + @ck.tp[:fns] if @ck.tp[:fns] and @ck.tp[:fns].length >@ck.lt_filename
- puts @ck.tp[:title].length.to_s + ' checklength ' + @ck.tp[:title] if @ck.tp[:title] and @ck.tp[:title].length >@ck.lt_title
- puts @ck.tp[:subtitle].length.to_s + ' checklength ' + @ck.tp[:subtitle] if @ck.tp[:subtitle] and @ck.tp[:subtitle].length >@ck.lt_subtitle
- puts @ck.tp[:creator].length.to_s + ' checklength ' + @ck.tp[:creator] if @ck.tp[:creator] and @ck.tp[:creator].length >@ck.lt_creator
- puts @ck.tp[:author_title].length.to_s + ' checklength ' + @ck.tp[:author_title] if @ck.tp[:author_title] and @ck.tp[:author_title].length >@ck.lt_author_title
- puts @ck.tp[:illustrator].length.to_s + ' checklength ' + @ck.tp[:illustrator] if @ck.tp[:illustrator] and @ck.tp[:illustrator].length >@ck.lt_illustrator
- puts @ck.tp[:translator].length.to_s + ' checklength ' + @ck.tp[:translator] if @ck.tp[:translator] and @ck.tp[:translator].length >@ck.lt_translator
- puts @ck.tp[:prepared_by].length.to_s + ' checklength ' + @ck.tp[:prepared_by] if @ck.tp[:prepared_by] and @ck.tp[:prepared_by].length >@ck.lt_prepared_by
- puts @ck.tp[:digitized_by].length.to_s + ' checklength ' + @ck.tp[:digitized_by] if @ck.tp[:digitized_by] and @ck.tp[:digitized_by].length >@ck.lt_digitized_by
- puts @ck.tp[:subject].length.to_s + ' checklength ' + @ck.tp[:subject] if @ck.tp[:subject] and @ck.tp[:subject].length >@ck.lt_subject
- puts @ck.tp[:description].length.to_s + ' checklength ' + @ck.tp[:description] if @ck.tp[:description] and @ck.tp[:description].length >@ck.lt_description
- puts @ck.tp[:publisher].length.to_s + ' checklength ' + @ck.tp[:publisher] if @ck.tp[:publisher] and @ck.tp[:publisher].length >@ck.lt_publisher
- puts @ck.tp[:contributor].length.to_s + ' checklength ' + @ck.tp[:contributor] if @ck.tp[:contributor] and @ck.tp[:contributor].length >@ck.lt_contributor
- puts @ck.tp[:date].length.to_s + ' checklength ' + @ck.tp[:date] if @ck.tp[:date] and @ck.tp[:date].length >@ck.lt_date
- puts @ck.tp[:date_created].length.to_s + ' checklength ' + @ck.tp[:date_created] if @ck.tp[:date_created] and @ck.tp[:date_created].length >@ck.lt_date
- puts @ck.tp[:date_issued].length.to_s + ' checklength ' + @ck.tp[:date_issued] if @ck.tp[:date_issued] and @ck.tp[:date_issued].length >@ck.lt_date
- puts @ck.tp[:date_valid].length.to_s + ' checklength ' + @ck.tp[:date_valid] if @ck.tp[:date_valid] and @ck.tp[:date_valid].length >@ck.lt_date
- puts @ck.tp[:date_available].length.to_s + ' checklength ' + @ck.tp[:date_available] if @ck.tp[:date_available] and @ck.tp[:date_available].length >@ck.lt_date
- puts @ck.tp[:date_modified].length.to_s + ' checklength ' + @ck.tp[:date_modified] if @ck.tp[:date_modified] and @ck.tp[:date_modified].length >@ck.lt_date
- puts @ck.tp[:date_translated].length.to_s + ' checklength ' + @ck.tp[:date_translated] if @ck.tp[:date_translated] and @ck.tp[:date_translated].length >@ck.lt_date
- puts @ck.tp[:date_added_to_site].length.to_s + ' checklength ' + @ck.tp[:date_added_to_site] if @ck.tp[:date_added_to_site] and @ck.tp[:date_added_to_site].length >@ck.lt_date
- puts @ck.tp[:type].length.to_s + ' checklength ' + @ck.tp[:type] if @ck.tp[:type] and @ck.tp[:type].length >@ck.lt_type
- puts @ck.tp[:format].length.to_s + ' checklength ' + @ck.tp[:format] if @ck.tp[:format] and @ck.tp[:format].length >@ck.lt_format
- puts @ck.tp[:identifier].length.to_s + ' checklength ' + @ck.tp[:identifier] if @ck.tp[:identifier] and @ck.tp[:identifier].length >@ck.lt_identifier
- puts @ck.tp[:source].length.to_s + ' checklength ' + @ck.tp[:source] if @ck.tp[:source] and @ck.tp[:source].length >@ck.lt_source
- puts @ck.tp[:language].length.to_s + ' checklength ' + @ck.tp[:language] if @ck.tp[:language] and @ck.tp[:language].length >@ck.lt_language
- puts @ck.tp[:language_original].length.to_s + ' checklength ' + @ck.tp[:language_original] if @ck.tp[:language_original] and @ck.tp[:language_original].length >@ck.lt_language_original
- puts @ck.tp[:relation].length.to_s + ' checklength ' + @ck.tp[:relation] if @ck.tp[:relation] and @ck.tp[:relation].length >@ck.lt_relation
- puts @ck.tp[:coverage].length.to_s + ' checklength ' + @ck.tp[:coverage] if @ck.tp[:coverage] and @ck.tp[:coverage].length >@ck.lt_coverage
- puts @ck.tp[:rights].length.to_s + ' checklength ' + @ck.tp[:rights] if @ck.tp[:rights] and @ck.tp[:rights].length >@ck.lt_rights
- puts @ck.tp[:copyright].length.to_s + ' checklength ' + @ck.tp[:copyright] if @ck.tp[:copyright] and @ck.tp[:copyright].length >@ck.lt_copyright
- puts @ck.tp[:owner].length.to_s + ' checklength ' + @ck.tp[:owner] if @ck.tp[:owner] and @ck.tp[:owner].length >@ck.lt_owner
- puts @ck.tp[:keywords].length.to_s + ' checklength ' + @ck.tp[:keywords] if @ck.tp[:keywords] and @ck.tp[:keywords].length >@ck.lt_keywords
- puts @ck.tp[:abstract].length.to_s + ' checklength ' + @ck.tp[:abstract] if @ck.tp[:abstract] and @ck.tp[:abstract].length >@ck.lt_abstract
- puts @ck.tp[:comment].length.to_s + ' checklength ' + @ck.tp[:comment] if @ck.tp[:comment] and @ck.tp[:comment].length >@ck.lt_comment
- puts @ck.tp[:loc].length.to_s + ' checklength ' + @ck.tp[:loc] if @ck.tp[:loc] and @ck.tp[:loc].length >@ck.lt_loc
- puts @ck.tp[:dewey].length.to_s + ' checklength ' + @ck.tp[:dewey] if @ck.tp[:dewey] and @ck.tp[:dewey].length >@ck.lt_dewey
- puts @ck.tp[:isbn].length.to_s + ' checklength ' + @ck.tp[:isbn] if @ck.tp[:isbn] and @ck.tp[:isbn].length >@ck.lt_isbn
- puts @ck.tp[:pg].length.to_s + ' checklength ' + @ck.tp[:pg] if @ck.tp[:pg] and @ck.tp[:pg].length >@ck.lt_pg
- puts @ck.tp[:topic_register].length.to_s + ' checklength ' + @ck.tp[:topic_register] if @ck.tp[:topic_register] and @ck.tp[:topci_register].length >@ck.lt_topic_register
- puts @ck.tp[:date] if @ck.tp[:date] and not @ck.tp[:date].empty? and @ck.tp[:date] !~/\d\d-\d\d-\d\d/
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dbi.rb b/lib/sisu/v3/dbi.rb
deleted file mode 100644
index 9521edbc..00000000
--- a/lib/sisu/v3/dbi.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: postgresql module, dbi import frame
-
-=end
-module SiSU_DBI #% database building
- require_relative 'help' # help.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'db_dbi' # db_dbi.rb
- include SiSU_DbDBI
- require_relative 'shared_html_lite' # shared_html_lite.rb
- include SiSU_FormatShared
- class SQL
- def initialize(opt)
- SiSU_Env::Load.new('dbi',true).prog
- @opt=opt
- @db=SiSU_Env::InfoDb.new
- if @opt.cmd =~/[Dd]/ \
- or @opt.mod.inspect =~/--(pg(?:sql)?|(?:sq)?lite)/
- @sql_type=if @opt.cmd=~/D/ \
- or @opt.mod.inspect =~/--pg(?:sql)?/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'pg'
- elsif @opt.cmd =~/d/ \
- and @opt.mod.inspect =~/--(?:db[=-])?pg(?:sql)?/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'pg'
- elsif @opt.cmd=~/d/ \
- or @opt.mod.inspect =~/--(?:sq)?lite/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- elsif @opt.cmd =~/d/ \
- and @opt.mod.inspect =~/--(?:db[=-])?(?:sq)?lite/
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- else
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- 'sqlite'
- end
- end
- end
- def maintenance_check(opt,file,line)
- p opt.mod
- p opt.cmd
- p "at #{file} #{line}"
- end
- def read_psql
- begin
- @conn=@db.psql.conn_dbi
- rescue
- if @opt.mod.inspect=~/--(createall|create)/
- puts %{manually create the database: "#{@db.db}" if it does not yet exist}
- #sudo su -p postgres; createdb #{@db.db}; #[createuser?]
- end
- ensure
- end
- end
- def read_sqlite
- begin
- sql_type='sqlite'
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
- end
- end
- def connect
- case @sql_type
- when /pg/; read_psql
- when /sqlite/; read_sqlite
- end
- SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#{@sql_type}) #{@opt.mod}",@opt.fno).dbi_title unless @opt.cmd =~/q/
- begin
- SiSU_DbDBI::Case.new(@opt,@conn,@sql_type).cases
- rescue
- SiSU_Errors::InfoError.new($!,$@,@cf,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- begin
- rescue
- connect
- end
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/dbi_discrete.rb b/lib/sisu/v3/dbi_discrete.rb
deleted file mode 100644
index b8e8f6ef..00000000
--- a/lib/sisu/v3/dbi_discrete.rb
+++ /dev/null
@@ -1,186 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: postgresql module, dbi import frame
-
-=end
-module SiSU_DBI_Discrete #% database building
- require_relative 'help' # help.rb
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env; include SiSU_Screen
- require_relative 'param' # param.rb
- include SiSU_Param
- require_relative 'db_dbi' # db_dbi.rb
- include SiSU_DbDBI
- require_relative 'shared_html_lite' # shared_html_lite.rb
- include SiSU_FormatShared
- require 'fileutils'
- include FileUtils::Verbose
- class SQL
- def initialize(opt)
- SiSU_Env::Load.new('dbi',true).prog
- @opt=opt
- @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
- @md=@particulars.md
- if @opt.cmd =~/[d]/ \
- or @opt.mod.inspect =~/--((?:sq)?lite)/
- @sql_type='sqlite'
- maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/
- end
- @output_path=@md.file.output_path.sqlite_discrete.dir
- @filename=@md.file.base_filename.sqlite_discrete
- @file_maint=sql_maintenance_file
- @file="#{@output_path}/#{@filename}"
- end
- def build
- prepare
- create_and_populate
- end
- def maintenance_check(opt,file,line)
- p opt.mod
- p opt.cmd
- p "at #{file} #{line}"
- end
- def prepare
- if not FileTest.directory?(@output_path)
- FileUtils::mkdir_p(@output_path)
- elsif @file
- FileUtils::rm_rf(@file)
- end
- end
- def db_exist?(db,conn)
- msg=%{no connection with sqlite database established, createdb "#{db.sqlite.db}"?}
- if (not (FileTest.file?(db.sqlite.db)) \
- or FileTest.zero?(db.sqlite.db))
- puts msg
- exit
- end
- if conn.is_a?(NilClass)
- puts msg
- exit
- end
- end
- def create_and_populate
- db=SiSU_Env::DbOp.new(@md)
- conn=db.sqlite_discrete.conn_sqlite3
- sdb=SiSU_DbDBI::Create.new(@opt,conn,@file,'sqlite')
- sdb_index=SiSU_DbDBI::Index.new(@opt,conn,@file,'sqlite')
- sdb.output_dir?
- begin
- SiSU_Screen::Ansi.new(@opt.cmd,'SQLite',"[#{@opt.f_pth[:lng_is]}] #{@opt.fno}").green_title_hi unless @opt.cmd =~/q/
- sdb.create_db
- sdb.create_table.metadata_and_text
- sdb.create_table.doc_objects
- sdb.create_table.endnotes
- sdb.create_table.endnotes_asterisk
- sdb.create_table.endnotes_plus
- sdb.create_table.urls
- sdb_index.create_indexes
- db_exist?(db,conn)
- sdb_import=SiSU_DbDBI::Import.new(@opt,conn,@file_maint,'sqlite')
- sdb_import.marshal_load
- tell=SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{db.sqlite.db} database?")
- tell.puts_grey if @opt.cmd =~/v/
- rescue
- SiSU_Errors::InfoError.new($!,$@,'-d').error do
- __LINE__.to_s + ':' + __FILE__
- end
- sdb.output_dir?
- end
- end
- def read_sqlite
- begin
- @conn=@db.sqlite.conn_sqlite3
- rescue
- ensure
- end
- end
- def connect
- begin
- sql_type='sqlite'
- SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#{@sql_type}) #{@opt.mod}",@opt.fns).dbi_title unless @opt.cmd =~/q/
- @db.sqlite_discrete.conn_sqlite3
- rescue
- SiSU_Errors::InfoError.new($!,$@,@cf,@opt.fns).error do
- __LINE__.to_s + ':' + __FILE__
- end
- ensure
- end
- end
- def populate
- end
- def sql_maintenance_file
- file=if @opt.inspect =~/M/
- x=if @opt.fns and not @opt.fns.empty?
- @env=SiSU_Env::InfoEnv.new(@opt.fns) if @opt.fns
- puts "\n#{@env.processing_path.sqlite}/#{@opt.fns}.sql" if @sql_type =~/sqlite/ and @opt.cmd =~/M/
- @db=SiSU_Env::InfoDb.new
- @job="sqlite3 #{@db.sqlite.db} < #{@env.processing_path.sqlite}/#{@opt.fns}.sql"
- File.new("#{@env.processing_path.sqlite}/#{@opt.fns}.sql",'w+')
- elsif @opt.fns \
- and @opt.fns.inspect =~/create/
- nil #sort variations later
- else nil
- end
- else nil
- end
- file
- end
- end
-end
-__END__
diff --git a/lib/sisu/v3/defaults.rb b/lib/sisu/v3/defaults.rb
deleted file mode 100644
index 416534d1..00000000
--- a/lib/sisu/v3/defaults.rb
+++ /dev/null
@@ -1,2196 +0,0 @@
-# encoding: utf-8
-=begin
-
- * Name: SiSU
-
- * Description: a framework for document structuring, publishing and search
-
- * Author: Ralph Amissah
-
- * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
-
- * License: GPL 3 or later:
-
- SiSU, a framework for document structuring, publishing and search
-
- Copyright (C) Ralph Amissah
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the Free
- Software Foundation, either version 3 of the License, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- more details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see .
-
- If you have Internet connection, the latest version of the GPL should be
- available at these locations:
-
-
-
-
-
- * SiSU uses:
- * Standard SiSU markup syntax,
- * Standard SiSU meta-markup syntax, and the
- * Standard SiSU object citation numbering and system
-
- * Hompages:
-
-
-
- * Download:
-
-
- * Git
-
-
-
- * Ralph Amissah
-
-
-
- ** Description: Default values (reset by skins)
-
-=end
-$latex_run=nil
-module SiSU_Viz
- require 'uri'
- require_relative 'sysenv' # sysenv.rb
- include SiSU_Env
- require_relative 'css' # css.rb
- include SiSU_Style
- class Skin
- def initialize
- @fonts='verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman' # 'verdana, arial, georgia, tahoma, sans-serif, helvetica, "times new roman", times, roman'
- @dir=SiSU_Env::InfoEnv.new
- @date=SiSU_Env::InfoDate.new #{@date.year}
- @v=SiSU_Env::InfoVersion.instance.get_version
- end
- #% glyph
- def glyph_bullet # •
- ' ' # [ flagged]
- end
- #% html
- def html_hardspace
- ' '
- end
- def semantic_tags
- def default
- {
- pub: 'publication',
- conv: 'convention',
- vol: 'volume',
- pg: 'page',
- cty: 'city',
- org: 'organization',
- uni: 'university',
- dept: 'department',
- fac: 'faculty',
- inst: 'institute',
- co: 'company',
- com: 'company',
- conv: 'convention',
- dt: 'date',
- y: 'year',
- m: 'month',
- d: 'day',
- ti: 'title',
- au: 'author',
- ed: 'editor', #editor?
- v: 'version', #edition
- n: 'name',
- fn: 'firstname',
- mn: 'middlename',
- ln: 'lastname',
- in: 'initials',
- qt: 'quote',
- ct: 'cite',
- ref: 'reference',
- ab: 'abreviation',
- def: 'define',
- desc: 'description',
- trans: 'translate',
- }
- end
- self
- end
- #% decorate
- def decorate_italics
- 'title|article|book|journal'
- end
- def decorate_bold
- end
- def decorate_uppercase
- 'surname'
- end
- #% semantic
- def sem_title #dc 1
- 'title'
- end
- def sem_article
- 'article'
- end
- def sem_book
- 'book'
- end
- def sem_journal
- 'journal'
- end
- def sem_fullname # (contains: firstname, surname) #issues arise as contains surname etc.
- 'fullname'
- end
- def sem_first
- 'first'
- end
- def sem_surname
- 'surname'
- end
- def sem_middle
- 'middle'
- end
- def sem_creator #dc 2 #==fullname (contains: firstname, surname)
- 'creator'
- end
- def sem_author #==fullname (contains: firstname, surname)
- 'author'
- end
- def sem_editor #==fullname (contains: firstname, surname)
- 'editor'
- end
- def sem_illustrator #==fullname (contains: firstname, surname)
- 'illustrator'
- end
- def sem_translator #==fullname (contains: firstname, surname)
- 'translator'
- end
- def sem_isbn # 10 or 13
- 'isbn'
- end
- def sem_isbn_10
- 'isbn10'
- end
- def sem_isbn_13
- 'isbn13'
- end
- def sem_loc # library of congress
- 'loc'
- end
- def sem_dewey
- 'dewey'
- end
- def sem_pg # project gutenberg number
- 'pg'
- end
- def sem_subject #dc 3
- 'subject'
- end
- def sem_date #dc 7
- 'date'
- end
- def sem_date_created
- 'date_created'
- end
- def sem_date_issued
- 'date_issued'
- end
- def sem_date_available
- 'date_available'
- end
- def sem_date_valid
- 'date_valid'
- end
- def sem_date_modified
- 'date_modified'
- end
- def sem_type #dc 8
- 'type'
- end
- def sem_description #dc 4
- 'description'
- end
- def sem_publisher #dc 5
- 'publisher'
- end
- def sem_contributor #dc 6
- 'contributor'
- end
- def sem_format #dc 9
- 'format'
- end
- def sem_identifier #dc 10
- 'identifier'
- end
- def sem_source #dc 11
- 'source'
- end
- def sem_language #dc 12
- 'language'
- end
- def sem_relation #dc 13
- 'source'
- end
- def sem_coverage #dc 14
- 'coverage'
- end
- def sem_rights #dc 15
- 'rights'
- end
- def sem_copyright
- 'copyright'
- end
- def sem_license
- 'license'
- end
- def sem_prepared_by
- 'prepared_by'
- end
- def sem_digitized_by
- 'digitized_by'
- end
- def sem_keywords
- 'keywords'
- end
- def sem_comments
- 'comments'
- end
- def sem_abstract
- 'abstract'
- end
- #% path
- def path_stylesheet_home
- %{ }
- end
- #% text #changed from txt to avoid naming conflicts #FOLLOW
- def txt_generator
- %{
- }
- end
- def txt_generator_comment
- %{ }
- end
- def txt_hp
- ' SiSU'
- end
- def txt_hp_alias
- 'SiSU'
- end
- def txt_home
- 'SiSU'
- end
- def txt_signature # used in latex/pdf footer
- 'SiSU'
- end
- #% url
- def url_urify(uri)
- URI.parse(uri)
- end
- def url_sisu
- 'http://www.sisudoc.org/'
- end
- def url_sisudoc
- 'http://www.sisudoc.org'
- end
- def url_footer_signature
- 'http://www.sisudoc.org/'
- end
- def url_root
- '/sisu' #watch
- end
- def url_root_http
- 'http://www.sisudoc.org/' #watch
- end
- def url_home
- 'http://www.sisudoc.org/' # used in pdf header
- end
- def url_site #used as stub... where there are subdirectories and is different from home
- url_home
- #'http://www.sisudoc.org/' # used in pdf header
- end
- def url_txt
- 'www.sisudoc.org/'
- end
- def url_path_image_base #used for html image display
- "#{Xx[:html_relative2]}_sisu/image"
- end
- def url_path_image #used for html image display
- "#{Xx[:html_relative2]}_sisu/image"
- end
- def url_path_image_sys #used for html image display
- "#{Xx[:html_relative2]}_sisu/image_sys"
- end
- def url_path_image_epub
- './image'
- end
- def url_path_ebook_dir
- './ebook'
- end
- def url_path_ebook_images
- '.'
- end
- def url_promo
- ''
- end
- def url_promo_home
- ''
- end
- def url_decoration
- def tex_open #'{\UseTextSymbol{OML}{<}}'
- Dx[:url_o]
- end
- def tex_close #'{\UseTextSymbol{OML}{>}}'
- Dx[:url_c]
- end
- def xml_open #'<'
- Dx[:url_o]
- end
- def xml_close #'>'
- Dx[:url_c]
- end
- def txt_open
- '<'
- end
- def txt_close
- '>'
- end
- self
- end
- def rel_decoration
- def tex_open #'{\UseTextSymbol{OML}{<}}'
- Dx[:rel_o]
- end
- def tex_close #'{\UseTextSymbol{OML}{>}}'
- Dx[:rel_c]
- end
- def xml_open #'<'
- Dx[:rel_o]
- end
- def xml_close #'>'
- Dx[:rel_c]
- end
- def txt_open
- '<'
- end
- def txt_close
- '>'
- end
- self
- end
- #% color
- def color_shadow
- '"4"'
- end
- def color_body
- %{}
- end
- def color_white
- '"#ffffff"'
- end
- def color_black
- '#000000'
- end
- def color_shadow #hmmm
- '"4"'
- end
- def color_blue_dark
- '#000099'
- end
- def color_blue
- 'blue'
- end
- def color_blue_base
- '#b9d4dd'
- end
- def color_blue_ink
- '#003399'
- end
- def color_blue_tinge
- '#e3ecef'
- end
- def color_blue_grey
- '#8faebf'
- end
- def color_blue_murky
- '#437389'
- end
- def color_beige
- '#f1e8de'
- end
- def color_subtleglow
- '#dddccc'
- end
- def color_glow
- '#fff0c3'
- end
- def color_rose
- '#ffdec9'
- end
- def color_turquoise
- '#1c869b'
- end
- def color_grey_pale
- '#eeeeee'
- end
- def color_grey_medium
- '#cccccc'
- end
- def color_grey
- '#999999'
- end
- def color_yellow_light
- '#fff3b6'
- end
- def color_yellow
- '#ffde14'
- end
- def color_yellow_dark
- '#ffcc00'
- end
- def color_green_light
- '#b7d398' # #e2efd5 #b7d398 #b1c999 # '#aed19e'
- end
- def color_green
- '#0a8400'
- end
- def color_green_dark
- '#086800'
- end
- def color_ruby
- '#a00000'
- end
- def color_maroon
- '#800000'
- end
- def color_paper
- %{"#{color_white}"}
- end
- def color_band1
- %{"#{color_white}"}
- end
- def color_band2
- %{"#{color_white}"}
- end
- def color_body
- %{}
- end
- def color_font_face #was font WATCH
- "#{color_black}"
- end
- def color_surround
- %{"#{color_white}"}
- end
- def color_band
- %{"#{color_white}"}
- end
- def color_table1
- 'ffffcc'
- end
- def color_table2
- 'c0d0f0'
- end
- def color_band1
- '"#ffffff"'
- end
- def color_band2
- '"#ffffff"'
- end
- #% icon
- def icon_ico
- 'rb7.ico'
- end
- def icon_sisu
- 'sisu.png'
- end
- def icon_manifest
- 'b_info.png'
- end
- def icon_doc
- 'b_doc.png'
- end
- def icon_toc
- 'b_toc.png'
- end
- def icon_wmp
- 'b_wmp.png'
- end
- def icon_odf
- 'b_odf.png'
- end
- def icon_epub
- 'b_epub.png'
- end
- def icon_pdf
- 'b_pdf.png'
- end
- def icon_pdf_portrait
- 'b_pdf.png'
- end
- def icon_pdf_landscape
- 'b_pdf.png'
- end
- def icon_status
- 'b_status.png'
- end
- def icon_external
- 'b_ext.png'
- end
- def icon_external_toc
- 'b_ext_toc.png'
- end
- def icon_seg_toc
- 'b_bluebell.png'
- end
- def icon_crosslink_toc
- 'b_amber.png'
- end
- def icon_mail
- 'b_mail.png'
- end
- def icon_para
- 'b_para.png'
- end
- def icon_pdf
- 'b_pdf.png'
- end
- def icon_ftp
- 'b_ftp.png'
- end
- def icon_gopher
- 'b_gopher.png'
- end
- def icon_choice
- 'b_choice.png'
- end
- def icon_new
- 'b_new.png'
- end
- def icon_book
- 'b_amber.png'
- # b_book.png
- end
- def icon_dot_clear
- 'dot_clear.png'
- end
- def icon_dot_white
- 'dot_white.png'
- end
- def icon_dot
- icon_dot_white
- end
- def icon_amber
- 'b_amber.png'
- end
- def icon_rose
- 'b_rose.png'
- end
- def icon_bluebell
- 'b_bluebell.png'
- end
- def icon_home_button
- 'sisu.png'
- end
- def icon_home_banner
- 'sisu.png'
- end
- def icon_site
- 'b_home.png'
- end
- def icon_bluedot
- 'blueband.png'
- end
- def icon_next
- 'arrow_next_red.png'
- end
- def icon_previous
- 'arrow_prev_red.png'
- end
- def icon_up
- 'arrow_up_red.png'
- end
- #% font
- def font_fonts
- @fonts
- end
- def font_face
- %{face="#{font_fonts}"}
- end
- def font_lmtoc_face
- %{face="#{font_fonts}"}
- end
- def font_ebook_face
- %{face="#{font_fonts}"}
- end
- def font_face_lmtoc
- %{face="#{font_fonts}"}
- end
- def font_color
- 'color="#000000"'
- end
- def font_size
- 'size="4"'
- end
- def font_size_txt
- 'size="4"'
- end
- def font_size_txt_00
- 'size="3"'
- end
- def font_size_endnote
- 'size="3"'
- end
- def font_small
- 'size="3"'
- end
- def font_tiny
- 'size="2"'
- end
- #% markup
- def markup_italics_list #regular expression of words to be italised
- end
- def markup_bold_list #regular expression of words to be made bold
- 'SiSU'
- end
- def markup_make_italic
- if defined? italics_list \
- and italics_list
- make={}
- if italics_list
- r=italics_list.dup
- x=case r
- when /\/i$/; 'i'
- else ''
- end
- r=r.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
- m='\b(' + r + ')\b'
- make[:str]
- make[:regx]=(x =~/i/) \
- ? (/#{m}/i)
- : (/#{m}/)
- else nil
- end
- end
- end
- def markup_make_bold
- if defined? bold_list \
- and not bold_list.empty?
- make={}
- if bold_list
- r=bold_list.dup
- x=case r
- when /\/i$/; 'i'
- else ''
- end
- r.gsub(/^\/(.+?)\/i?/,'\1').
- gsub(/\(/,'(?:') # avoid need to escape use of brackets within regex provided
- m='\b(' + r + ')\b'
- make[:str]
- make[:regx]=(x =~/i/) \
- ? (/#{m}/i)
- : (/#{m}/)
- else nil
- end
- make
- end
- end
- #% paragraph
- def paragraph_txt
- %{
}
- end
- def paragraph_txt_00
- %{
}
- end
- def paragraph_font_citation
- %{}
- end
- def paragraph_endnote
- %{
}
- end
- def paragraph_table
- %{
}
- end
- def paragraph_tiny
- %{
}
- end
- def paragraph_small
- %{
} # keep but not used?
- end
- def paragraph_font_tiny
- %{}
- end
- def paragraph_font_small
- %{}
- end
- def paragraph_heading_1
- %{
}
- end
- def paragraph_heading_1_center
- %{
}
- end
- #% table
- def table_close
- '
-'
- end
- def table_close_centered_table
- end
- def table_align_A
- end
- def table_align_B
- end
- def table_align_C
- end
- def table_width_1
- '"100%"'
- end
- def table_width_2
- '"99%"'
- end
- def table_width_3
- '"94%"'
- end
- def table_width_4
- '"90%"'
- end
- def table_width_txt
- '"94%"'
- end
- def table_width_txt_avgo
- '"100%"'
- end
- def table_width_txt_r
- '"96%"'
- end
- def table_cellpad_small_paper_margins
- '"6"'
- end
- def table_cellpad_paper_margins
- '"36"'
- end
- def table_cellpad_A
- '"0"'
- end
- def table_cellpad_B
- '"20"'
- end
- def table_cellpad_shadow
- '"4"'
- end
- def table_cellpad_band
- '"16"'
- end
- def table_cellpad_box
- '"20"'
- end
- def table_table_align_A
- '
'
- end
- def table_table_align_B
- '
'
- end
- def table_table_align_C
- ' '
- end
- #% table_do
- def table_do_table_paper
- %{#{table_align_C}
\n\n}
- end
- def table_do_table_surround
- %{
\n}
- end
- #% indent
- def indent_level_0
- '"1%"'
- end
- def indent_level_1
- '"4%"'
- end
- def indent_level_2
- '"6%"'
- end
- def indent_level_3
- '"8%"'
- end
- def indent_level_4
- '"10%"'
- end
- #% margin
- def margin_num
- '
'
- end
- def margin_numless
- '
'
- end
- def margin_num_css
- '
-
'
- end
- def margin_num_header
- '
-
'
- end
- def margin_txt_00_1
- %{
-
-
-
}
- end
- def margin_txt_w1
- %{
-
-
}
- end
- def margin_txt_w2
- %{
-
-
}
- end
- def margin_txt_0
- %{
-
-
}
- end
- def margin_txt_1
- %{
-
}
- end
- def margin_txt_2
- %{
-
-
-
}
- end
- def margin_txt_3
- %{
-
-
-
}
- end
- def margin_css #unused, check
- '
-
'
- end
- #% png
- def png_ico
- %{ }
- end
- def png_sisu #check url path
- %{
-
- }
- end
- def png_hp
- dir=SiSU_Env::InfoEnv.new #(@fns)
- %{
-
- }
- end
- def png_site
- %{}
- end
- def png_homepage
- png_site
- end
- def png_nav
- %{}
- end
- def png_manifest
- %{}
- end
- def png_doc
- %{}
- end
- def png_toc
- %{}
- end
- def png_odf
- %{}
- end
- def png_epub
- %{}
- end
- def png_pdf
- %{}
- end
- def png_pdf_portrait
- %{}
- end
- def png_pdf_landscape
- %{}
- end
- def png_wmp
- %{}
- end
- def png_para
- %{}
- end
- def png_status
- %{}
- end
- def png_mark
- %{}
- end
- def png_doc_tiny
- %{}
- end
- def png_toc_tiny
- %{}
- end
- def png_status_tiny
- %{}
- end
- def png_ftp
- %{}
- end
- def png_gopher
- %{}
- end
- def png_crosslink
- %{}
- end
- def png_crosslink_ext
- %{}
- end
- def png_home
- #dir=SiSU_Env::InfoEnv.new #(@fns)
- %{}
- #%{}
- end
- def png_home_button
- rel=@dir.path_rel_links.html_scroll_2
- %{}
- end
- def png_book
- %{}
- end
- #% png_nav #not currently used
- def png_nav_home
- end
- def png_nav_toc
- %{}
- end
- def png_nav_doc
- end
- def png_nav_previous
- %{}
- end
- def png_nav_next
- %{}
- end
- def png_nav_pre
- png_nav_previous
- end
- def png_nav_nxt
- png_nav_next
- end
- def epub_png_nav_previous
- %{}
- end
- def epub_png_nav_next
- %{}
- end
- def epub_png_nav_up
- %{}
- end
- def epub_png_nav_pre
- epub_png_nav_previous
- end
- def epub_png_nav_nxt
- epub_png_nav_next
- end
- def epub_png_nav_toc
- epub_png_nav_up
- end
- def png_nav_pdf
- %{}
- end
- def png_nav_pdf_portrait
- %{}
- end
- def png_nav_pdf_landscape
- %{}
- end
- def png_nav_dot_toc
- %{}
- end
- def png_nav_dot_previous
- %{}
- end
- def png_nav_dot_next
- %{}
- end
- def png_nav_dot_pre
- png_nav_dot_previous
- end
- def png_nav_dot_nxt
- png_nav_dot_next
- end
- #% nav_txt
- def nav_txt_home
- %{
- #{png_site}
- }
- end
- def nav_txt_home_button
- %{
- #{png_home_button}
- }
- end
- def nav_txt_homepage
- %{
- home
- }
- end
- def nav_txt_toc_link
- %{
- toc
- }
- end
- def nav_txt_toc_link_verbose
- %{
- #{png_toc} segments' toc
- }
- end
- def nav_txt_doc_link
- %{
- scroll
- }
- end
- def nav_txt_manifest
- #{png_manifest} document manifest
- %{
- [ document manifest ]
- }
- end
- def nav_txt_concordance
- %{
- A-Z
- }
- end
- def nav_txt_previous
- '
- << Previous
-
- Full Text '
- end
- def nav_txt_next
- %{
- Next >>
- }
- end
- def nav_txt_plaintext
- %{
- txt
- }
- end
- def nav_txt_odf
- %{
- odt
- }
- end
- def nav_txt_pdfs
- %{
- pdfs
- }
- end
- def nav_txt_epub
- %{
- epub
- }
- end
- def nav_txt_pdf_portrait
- %{
- pdf
- }
- end
- def nav_txt_pdf_landscape
- %{
- pdf
- }
- end
- #% banner
- def banner_home
- %{
-
- #{png_site}
-
-
-
- an
-
- ( international | transnational )
-
- commercial law & e-commerce
-
- infrastructure monitor