diff options
author | Ralph Amissah <ralph@amissah.com> | 2013-07-30 21:30:36 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2013-07-30 21:30:39 -0400 |
commit | 3e58296fa7761edaa59f807d4f8e87987ea8e921 (patch) | |
tree | d93286de4e7cba8462a71fa013d223cf84413e88 /lib/sisu/v5/sysenv.rb | |
parent | v5: output structure by, add monolingual alt for :filetype & :filename, step 1 (diff) |
v5: output structure by, monolingual alternative for :filetype or :filename
* filename without language code, if document is in default language
* set a default language, 'en' or as specified
* set in rc file or from command line instruction
* command line e.g.
sisu -hv --monolingual --by-filename sisu_markup.sst
sisu -3v --monolingual --by-filetype sisu_manual.ssm
* sisurc.yml lingual: 'mono' | 'multi'
lingual: 'mono'
* note: output by :filetype is roughly equivalent to what monolingual output
by :language would be
* allow command line setting of default language using language code
--default-language='en' --default-lang-en if used together with
--monolingual and --by-filetype or --by-filename the selected default
language document will not have a language code in the output filename
Diffstat (limited to 'lib/sisu/v5/sysenv.rb')
-rw-r--r-- | lib/sisu/v5/sysenv.rb | 680 |
1 files changed, 485 insertions, 195 deletions
diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb index dcf0a671..63981be3 100644 --- a/lib/sisu/v5/sysenv.rb +++ b/lib/sisu/v5/sysenv.rb @@ -470,27 +470,31 @@ module SiSU_Env def output_dir_structure def by? output_structure=:filename #set default output structure - output_structure=if 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) - :dump - elsif (@rc['output_dir_structure_by'] =~/redirect/) \ - or ((defined? @rc['output_structure']['redirect']) \ - && @rc['output_structure']['redirect'] ==true) - :redirect - elsif (@rc['output_dir_structure_by'] =~/language/) \ - or ((defined? @rc['output_structure']['by_language']) \ - && @rc['output_structure']['by_language'] ==true) - :language - elsif (@rc['output_dir_structure_by'] =~/filetype/) \ - or ((defined? @rc['output_structure']['by_filetype']) \ - && @rc['output_structure']['by_filetype'] ==true) - :filetype - elsif (@rc['output_dir_structure_by'] =~/filename/) \ - or ((defined? @rc['output_structure']['by_filename']) \ - && @rc['output_structure']['by_filename'] ==true) - :filename + if @rc + output_structure=if 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) + :dump + elsif (@rc['output_dir_structure_by'] =~/redirect/) \ + or ((defined? @rc['output_structure']['redirect']) \ + && @rc['output_structure']['redirect'] ==true) + :redirect + elsif (@rc['output_dir_structure_by'] =~/language/) \ + or ((defined? @rc['output_structure']['by_language']) \ + && @rc['output_structure']['by_language'] ==true) + :language + elsif (@rc['output_dir_structure_by'] =~/filetype/) \ + or ((defined? @rc['output_structure']['by_filetype']) \ + && @rc['output_structure']['by_filetype'] ==true) + :filetype + elsif (@rc['output_dir_structure_by'] =~/filename/) \ + or ((defined? @rc['output_structure']['by_filename']) \ + && @rc['output_structure']['by_filename'] ==true) + :filename + else #set default + :language + end else #set default :language end @@ -4657,245 +4661,531 @@ 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 + def i18n(f) + f=default_hash.merge(f) + (@md.opt.act[:i18n][:set]==:mono \ + || ((mono_multi_lingual? ==:mono)) \ + && (@md.opt.lng == default_language?)) \ + || f[:lng]==nil \ + ? f[:fn] + f[:ft] + : 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 - 'plain' + @md.lang_code_insert + ft - end - end - def html_scroll - ft='.html' - if output_dir_structure.by_language_code? - @md.fnb + ft + { + fn: @md.fnb, + lng: @md.lang_code_insert, + ft: sfx, + } + end + end + def txt(fh=nil) + fh=default_hash_build(fh,Sfx[:txt]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } + elsif output_dir_structure.by_filetype? + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: 'plain', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def html_scroll(fh=nil) + fh=default_hash_build(fh,Sfx[:html]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } else - 'scroll' + @md.lang_code_insert + ft - end - end - def html_seg_index - ft='.html' - if output_dir_structure.by_language_code? - 'index' + ft + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def html_seg_index(fh=nil) + fh=default_hash_build(fh,Sfx[:html]) + fnh=if output_dir_structure.by_language_code? + { + fn: 'index', + ft: fh[:ft], + } 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 + { + fn: 'index', + ft: fh[:ft], + lng: fh[:lng], + } + end + 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], + } elsif output_dir_structure.by_language_code? - 'toc' + ft + { + fn: 'toc', + ft: fh[:ft], + } else - 'toc' + @md.lang_code_insert + ft + { + fn: 'toc', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def html_seg(fh) + fh=default_hash_build(fh,Sfx[:html]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft] + } + elsif output_dir_structure.by_filetype? + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng] + } + else + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng] + } end + i18n(fnh) end def html_book_index - ft='.html' - if output_dir_structure.by_language_code? - 'book_index' + ft + ft=Sfx[:html] + fnh=if output_dir_structure.by_language_code? + { + fn: 'book_index', + ft: ft, + } else - 'book_index' + @md.lang_code_insert + ft + { + fn: 'book_index', + ft: ft, + lng: @md.lang_code_insert + } end + i18n(fnh) end def html_concordance - ft='.html' - if output_dir_structure.dump_or_redirect? + ft=Sfx[:html] + fnh=if output_dir_structure.dump_or_redirect? @md.fnb + '.concordance' + ft elsif output_dir_structure.by_language_code? - 'concordance' + ft + { + fn: 'concordance', + ft: ft, + } else - 'concordance' + @md.lang_code_insert + ft - end - end - def xhtml - ft= '.xhtml' - if output_dir_structure.by_language_code? - @md.fnb + ft + { + fn: 'concordance', + ft: ft, + lng: @md.lang_code_insert + } + end + i18n(fnh) + end + def xhtml(fh=nil) + fh=default_hash_build(fh,Sfx[:xhtml]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + 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: 'scroll', + ft: fh[:ft], + lng: fh[:lng] + } + end + i18n(fnh) + end + def epub(fh=nil) + fh=default_hash_build(fh,Sfx[:epub]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } else - @md.fnb + @md.lang_code_insert + ft - end - end - def odt - ft='.odt' - if output_dir_structure.by_language_code? - @md.fnb + ft + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def odt(fh=nil) + fh=default_hash_build(fh,Sfx[:odt]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + 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 + { + fn: 'opendocument', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def xml_sax(fh=nil) + fh=default_hash_build(fh,Sfx[:xml_sax]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + 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 + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def xml_dom(fh=nil) + fh=default_hash_build(fh,Sfx[:xml_dom]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } else - 'scroll' + @md.lang_code_insert + ft + { + fn: 'scroll', + ft: fh[:ft], + lng: fh[:lng], + } end + i18n(fnh) end - def pdf_p + def pdf_p(fh=nil) + fh=default_hash_build(fh,Sfx[:pdf]) if output_dir_structure.by_language_code? - @md.fnb + '.portrait.' - else 'portrait' + @md.lang_code_insert + '.' + fh[:fn] + '.portrait.' + else + (@md.opt.lingual==:mono \ + && (@md.opt.lng == default_language?)) \ + ? ('portrait' + '.') + : ('portrait' + fh[:lng] + '.') end end - def pdf_l + def pdf_l(fh=nil) + fh=default_hash_build(fh,Sfx[:pdf]) if output_dir_structure.by_language_code? - @md.fnb + '.landscape.' - else 'landscape' + @md.lang_code_insert + '.' + fh[:fn] + '.landscape.' + else + (@md.opt.lingual==:mono \ + && (@md.opt.lng == default_language?)) \ + ? ('landscape' + '.') + : ('landscape' + fh[:lng] + '.') + #'landscape' + @md.lang_code_insert + '.' end end - def pdf_p_a4 - pdf_p + @md.fn[:pdf_p_a4] + def pdf_p_a4(fh=nil) + pdf_p(fh) + @md.fn[:pdf_p_a4] end - def pdf_p_a5 - pdf_p + @md.fn[:pdf_p_a5] + def pdf_p_a5(fh=nil) + pdf_p(fh) + @md.fn[:pdf_p_a5] end - def pdf_p_b5 - pdf_p + @md.fn[:pdf_p_b5] + def pdf_p_b5(fh=nil) + pdf_p(fh) + @md.fn[:pdf_p_b5] end - def pdf_p_letter - pdf_p + @md.fn[:pdf_p_letter] + def pdf_p_letter(fh=nil) + pdf_p(fh) + @md.fn[:pdf_p_letter] end - def pdf_p_legal - pdf_p + @md.fn[:pdf_p_legal] + def pdf_p_legal(fh=nil) + pdf_p(fh) + @md.fn[:pdf_p_legal] end - def pdf_l_a4 - pdf_l + @md.fn[:pdf_l_a4] + def pdf_l_a4(fh=nil) + pdf_l(fh) + @md.fn[:pdf_l_a4] end - def pdf_l_a5 - pdf_l + @md.fn[:pdf_l_a5] + def pdf_l_a5(fh=nil) + pdf_l(fh) + @md.fn[:pdf_l_a5] end - def pdf_l_b5 - pdf_l + @md.fn[:pdf_l_b5] + def pdf_l_b5(fh=nil) + pdf_l(fh) + @md.fn[:pdf_l_b5] end - def pdf_l_letter - pdf_l + @md.fn[:pdf_l_letter] + def pdf_l_letter(fh=nil) + pdf_l(fh) + @md.fn[:pdf_l_letter] end - def pdf_l_legal - pdf_l + @md.fn[:pdf_l_legal] + def pdf_l_legal(fh=nil) + pdf_l(fh) + @md.fn[:pdf_l_legal] end - def manpage - ft='1' - if output_dir_structure.by_language_code? - @md.fnb + '.' + ft + def manpage(fh=nil) + fh=default_hash_build(fh,Sfx[:manpage]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } 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 + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def info(fh=nil) + fh=default_hash_build(fh,Sfx[:info]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } 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: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def texinfo(fh=nil) + fh=default_hash_build(fh,Sfx[:texinfo]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } 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: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def sqlite_discrete(fh=nil) + fh=default_hash_build(fh,Sfx[:sql]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[:ft], + } 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 + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def hash_digest(fh=nil) + fh=default_hash_build(fh,Sfx[:txt]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn] + '.hash_digest', + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + 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 + { + fn: 'digest', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def sitemap(fh=nil) + fh=default_hash_build(fh,Sfx[:xml]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn] + '.sitemap', + ft: fh[:ft], + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } else - 'sitemap' + @md.lang_code_insert + ft + { + fn: 'sitemap', + ft: fh[:ft], + lng: fh[:lng], + } end + i18n(fnh) end def qrcode_title + fn=@md.fnb ft='.title.png' - if output_dir_structure.by_language_code? - @md.fnb + ft + fnh=if output_dir_structure.by_language_code? + { + fn: fn, + ft: ft, + } elsif output_dir_structure.by_filetype? - @md.fnb + @md.lang_code_insert + ft - else #fix - 'sisu_manifest' + @md.lang_code_insert + ft + { + fn: fn, + ft: ft, + lng: @md.lang_code_insert + } + else + { + fn: 'sisu_manifest', + ft: ft, + lng: @md.lang_code_insert + } end + i18n(fnh) end def qrcode_md + fn=@md.fnb ft='.md.png' - if output_dir_structure.by_language_code? - @md.fnb + ft + fnh=if output_dir_structure.by_language_code? + { + fn: fn, + ft: 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 + { + fn: fn, + ft: ft, + lng: @md.lang_code_insert + } + else + { + fn: 'sisu_manifest', + ft: ft, + lng: @md.lang_code_insert + } + end + i18n(fnh) + end + def manifest_txt(fh=nil) + fh=default_hash_build(fh,Sfx[:txt]) + fnh=if output_dir_structure.by_language_code? + { + fn: fh[:fn], + ft: fh[: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 + { + fn: fh[:fn], + ft: fh[:ft], + lng: fh[:lng], + } + else + { + fn: 'sisu_manifest', + ft: fh[:ft], + lng: fh[:lng], + } + end + i18n(fnh) + end + def manifest(fh=nil) + fh=default_hash_build(fh,Sfx[:html]) + fnh=if output_dir_structure.dump_or_redirect? + { + fn: fh[:fn] + '.manifest', + ft: fh[:ft], + } elsif output_dir_structure.by_language_code? - @md.fnb + ft + { + fn: fh[:fn], + ft: fh[: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], + } + else + { + fn: 'sisu_manifest', + ft: fh[:ft], + lng: fh[:lng], + } end + i18n(fnh) end def src @md.fno |