aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v4/sysenv.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v4/sysenv.rb')
-rw-r--r--lib/sisu/v4/sysenv.rb676
1 files changed, 456 insertions, 220 deletions
diff --git a/lib/sisu/v4/sysenv.rb b/lib/sisu/v4/sysenv.rb
index 5f764f9c..32e38ac6 100644
--- a/lib/sisu/v4/sysenv.rb
+++ b/lib/sisu/v4/sysenv.rb
@@ -441,10 +441,36 @@ module SiSU_Env
end
@fnn,@fnb,@fnt,@flv,@fnz=@@fnn,@@fnb,@@fnt,@@flv,@@fnz
end
+ def default_language?
+ if @rc \
+ && defined? @rc['language_default']
+ if (@rc['language_default'].is_a?(String)) \
+ && (@rc['language_default'] =~/#{Px[:lng_lst_rgx]}/)
+ @rc['language_default']
+ else 'en'
+ end
+ else 'en'
+ end
+ end
+ def mono_multi_lingual?
+ if @rc \
+ && defined? @rc['lingual']
+ if (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/mono(?:lingual)?/)
+ :mono
+ elsif (@rc['lingual'].is_a?(String)) \
+ && (@rc['lingual'] =~/multi(?:lingual)?/)
+ :multi
+ else :multi
+ end
+ else :multi
+ end
+ end
def output_dir_structure
def by?
output_structure=:filename #set default output structure
- output_structure=if defined? @rc['output_dir_structure_by']
+ if @rc \
+ && defined? @rc['output_dir_structure_by']
output_structure=if (@rc['output_dir_structure_by'] =~/dump/) \
or ((defined? @rc['output_structure']['dump']) \
&& @rc['output_structure']['dump'] ==true)
@@ -2489,8 +2515,8 @@ WOK
/(?:https?:\/\/\S+?)\/([^\/]+?\.cgi)$/.match(@rc['search']['sisu']['action'])[1]
else
(opt.mod.inspect =~/--db[=-]["']?sqlite/) \
- ? 'sisu_sqlite.cgi' \
- : 'sisu_pgsql.cgi'
+ ? "#{Db[:name_prefix_db]}sqlite.cgi" \
+ : "#{Db[:name_prefix_db]}pgsql.cgi"
end
end
def sample_search_form_title(organised_by=:language)
@@ -4631,245 +4657,433 @@ WOK
self
end
def base_filename
- def txt
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else
- 'plain' + @md.lang_code_insert + ft
- end
- end
- def html_scroll
- ft='.html'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ def i18n(f)
+ f=default_hash.merge(f)
+ f[:lng] ||=@md.lang_code_insert
+ f[:fn] + f[:lng] + f[:ft]
+ end
+ def default_hash
+ {
+ fn: @md.fnb,
+ lng: @md.lang_code_insert,
+ }
+ end
+ def default_hash_build(fh,sfx)
+ if fh.is_a?(Hash)
+ fh[:fn] ||=@md.fnb
+ fh[:lng] ||= @md.lang_code_insert
+ fh[:ft]=sfx
+ fh
else
- 'scroll' + @md.lang_code_insert + ft
+ {
+ fn: @md.fnb,
+ lng: @md.lang_code_insert,
+ ft: sfx,
+ }
end
end
- def html_seg_index
- ft='.html'
- if output_dir_structure.by_language_code?
- 'index' + ft
+ def lang_code?(lng)
+ (output_dir_structure.by_language_code?) \
+ ? ''
+ : (lng ||=@md.lang_code_insert)
+ end
+ def txt(fh=nil)
+ fh=default_hash_build(fh,Sfx[:txt])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'plain',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ else
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def html_scroll(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'scroll',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'index' + @md.lang_code_insert + ft
- end
- end
- def html_segtoc
- ft='.html'
- if output_dir_structure.dump_or_redirect?
- @md.fnb + '.toc' + ft
- elsif output_dir_structure.by_language_code?
- 'toc' + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def html_seg_index(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: 'index',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def html_segtoc(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fnh=if output_dir_structure.dump_or_redirect?
+ {
+ fn: fh[:fn] + '.toc',
+ ft: fh[:ft],
+ }
else
- 'toc' + @md.lang_code_insert + ft
- end
- end
- def html_book_index
- ft='.html'
- if output_dir_structure.by_language_code?
- 'book_index' + ft
+ {
+ fn: 'toc',
+ ft: fh[:ft],
+ lng: lang_code?(fh[:lng]),
+ }
+ end
+ i18n(fnh)
+ end
+ def html_seg(fh)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'scroll',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'book_index' + @md.lang_code_insert + ft
- end
- end
- def html_concordance
- ft='.html'
- if output_dir_structure.dump_or_redirect?
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def html_book_index(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: 'book_index',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def html_concordance(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.dump_or_redirect?
@md.fnb + '.concordance' + ft
- elsif output_dir_structure.by_language_code?
- 'concordance' + ft
else
- 'concordance' + @md.lang_code_insert + ft
- end
- end
- def xhtml
- ft= '.xhtml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: 'concordance',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def xhtml(fh=nil)
+ fh=default_hash_build(fh,Sfx[:xhtml])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'scroll',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def epub
- ft='.epub'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def epub(fh=nil)
+ fh=default_hash_build(fh,Sfx[:epub])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def odt(fh=nil)
+ fh=default_hash_build(fh,Sfx[:odt])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'opendocument',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- @md.fnb + @md.lang_code_insert + ft
- end
- end
- def odt
- ft='.odt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def xml_sax(fh=nil)
+ fh=default_hash_build(fh,Sfx[:xml_sax])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'scroll',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'opendocument' + @md.lang_code_insert + ft
- end
- end
- def xml_sax
- ft='.sax.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def xml_dom(fh=nil)
+ fh=default_hash_build(fh,Sfx[:xml_dom])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'scroll',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def xml_dom
- ft='.dom.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def pdf_p(fh=nil)
+ fh=default_hash_build(fh,Sfx[:pdf])
+ fh[:lng]=lang_code?(fh[:lng])
+ if output_dir_structure.by_filename?
+ 'portrait' + fh[:lng] + '.'
else
- 'scroll' + @md.lang_code_insert + ft
- end
- end
- def pdf_p
- if output_dir_structure.by_language_code?
- @md.fnb + '.portrait.'
- else 'portrait' + @md.lang_code_insert + '.'
- end
- end
- def pdf_l
- if output_dir_structure.by_language_code?
- @md.fnb + '.landscape.'
- else 'landscape' + @md.lang_code_insert + '.'
+ fh[:fn] + '.portrait' + fh[:lng] + '.'
end
end
- def pdf_p_a4
- pdf_p + @md.fn[:pdf_p_a4]
- end
- def pdf_p_a5
- pdf_p + @md.fn[:pdf_p_a5]
- end
- def pdf_p_b5
- pdf_p + @md.fn[:pdf_p_b5]
- end
- def pdf_p_letter
- pdf_p + @md.fn[:pdf_p_letter]
- end
- def pdf_p_legal
- pdf_p + @md.fn[:pdf_p_legal]
- end
- def pdf_l_a4
- pdf_l + @md.fn[:pdf_l_a4]
- end
- def pdf_l_a5
- pdf_l + @md.fn[:pdf_l_a5]
- end
- def pdf_l_b5
- pdf_l + @md.fn[:pdf_l_b5]
- end
- def pdf_l_letter
- pdf_l + @md.fn[:pdf_l_letter]
- end
- def pdf_l_legal
- pdf_l + @md.fn[:pdf_l_legal]
- end
- def manpage
- ft='1'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
+ def pdf_l(fh=nil)
+ fh=default_hash_build(fh,Sfx[:pdf])
+ fh[:lng]=lang_code?(fh[:lng])
+ if output_dir_structure.by_filename?
+ 'landscape' + fh[:lng] + '.'
else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def info
- ft='info'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
+ fh[:fn] + '.landscape' + fh[:lng] + '.'
+ end
+ end
+ def pdf_p_a4(fh=nil)
+ pdf_p(fh) + @md.fn[:pdf_p_a4]
+ end
+ def pdf_p_a5(fh=nil)
+ pdf_p(fh) + @md.fn[:pdf_p_a5]
+ end
+ def pdf_p_b5(fh=nil)
+ pdf_p(fh) + @md.fn[:pdf_p_b5]
+ end
+ def pdf_p_letter(fh=nil)
+ pdf_p(fh) + @md.fn[:pdf_p_letter]
+ end
+ def pdf_p_legal(fh=nil)
+ pdf_p(fh) + @md.fn[:pdf_p_legal]
+ end
+ def pdf_l_a4(fh=nil)
+ pdf_l(fh) + @md.fn[:pdf_l_a4]
+ end
+ def pdf_l_a5(fh=nil)
+ pdf_l(fh) + @md.fn[:pdf_l_a5]
+ end
+ def pdf_l_b5(fh=nil)
+ pdf_l(fh) + @md.fn[:pdf_l_b5]
+ end
+ def pdf_l_letter(fh=nil)
+ pdf_l(fh) + @md.fn[:pdf_l_letter]
+ end
+ def pdf_l_legal(fh=nil)
+ pdf_l(fh) + @md.fn[:pdf_l_legal]
+ end
+ def manpage(fh=nil)
+ fh=default_hash_build(fh,Sfx[:manpage])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def info(fh=nil)
+ fh=default_hash_build(fh,Sfx[:info])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def texinfo(fh=nil)
+ fh=default_hash_build(fh,Sfx[:texinfo])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def sqlite_discrete(fh=nil)
+ fh=default_hash_build(fh,Sfx[:sql])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh={
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ i18n(fnh)
+ end
+ def hash_digest(fh=nil)
+ fh=default_hash_build(fh,Sfx[:txt])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_language_code?
+ {
+ fn: fh[:fn] + '.hash_digest',
+ ft: fh[:ft],
+ }
+ elsif output_dir_structure.by_filetype?
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def texinfo
- ft='texinfo'
- if output_dir_structure.by_language_code?
- @md.fnb + '.' + ft
+ {
+ fn: 'digest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def sitemap(fh=nil)
+ fh=default_hash_build(fh,Sfx[:xml])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_language_code?
+ {
+ fn: fh[:fn] + '.sitemap',
+ ft: fh[:ft],
+ }
+ elsif output_dir_structure.by_filetype?
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- @md.fnb + '.' + @md.opt.f_pth[:lng_is] + '.' + ft
- end
- end
- def sqlite_discrete
- ft='.sql.db'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
+ {
+ fn: 'sitemap',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def qrcode_title(fh=nil)
+ fh=default_hash_build(fh,'.title.png')
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'sisu_manifest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- @md.fnb + @md.lang_code_insert + ft
- end
- end
- def hash_digest
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + '.hash_digest' + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def qrcode_md #check name below
+ fh=default_hash_build(fh,'.md.png')
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'sisu_manifest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'digest' + @md.lang_code_insert + ft
- end
- end
- def sitemap
- ft='.xml'
- if output_dir_structure.by_language_code?
- @md.fnb + '.sitemap' + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def manifest_txt(fh=nil)
+ fh=default_hash_build(fh,Sfx[:txt])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.by_filename?
+ {
+ fn: 'sisu_manifest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
else
- 'sitemap' + @md.lang_code_insert + ft
- end
- end
- def qrcode_title
- ft='.title.png'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def qrcode_md
- ft='.md.png'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def manifest_txt
- ft='.txt'
- if output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
- end
- end
- def manifest
- ft='.html'
- if output_dir_structure.dump_or_redirect?
- @md.fnb + '.manifest' + ft
- elsif output_dir_structure.by_language_code?
- @md.fnb + ft
- elsif output_dir_structure.by_filetype?
- @md.fnb + @md.lang_code_insert + ft
- else #fix
- 'sisu_manifest' + @md.lang_code_insert + ft
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ end
+ i18n(fnh)
+ end
+ def manifest(fh=nil)
+ fh=default_hash_build(fh,Sfx[:html])
+ fh[:lng]=lang_code?(fh[:lng])
+ fnh=if output_dir_structure.dump_or_redirect?
+ {
+ fn: fh[:fn] + '.manifest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ elsif output_dir_structure.by_filename?
+ {
+ fn: 'sisu_manifest',
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
+ else
+ {
+ fn: fh[:fn],
+ ft: fh[:ft],
+ lng: fh[:lng],
+ }
end
+ i18n(fnh)
end
def src
@md.fno
@@ -5703,6 +5917,28 @@ WOK
self
end
end
+ class FilenameLanguageCodeInsert
+ def initialize(opt,lng=nil)
+ @opt,@lng=opt,lng
+ @opt=opt
+ @lng=lng ||=@opt.lng
+ end
+ def language_code_insert
+ if @opt.dir_structure_by ==:language \
+ or ((@opt.dir_structure_by ==:filetype \
+ || @opt.dir_structure_by ==:filename) \
+ and (@opt.lingual ==:mono \
+ && @lng == @opt.act[:default_language][:code]))
+ ''
+ elsif (@opt.dir_structure_by ==:filetype \
+ || @opt.dir_structure_by ==:filename) \
+ and not @opt.lingual ==:mono
+ ".#{@lng}"
+ else
+ ".#{@lng}"
+ end
+ end
+ end
class CreateFile <InfoEnv #todo unify with FileOp
def initialize(fns)
begin