aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v3/sysenv.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v3/sysenv.rb')
-rw-r--r--lib/sisu/v3/sysenv.rb188
1 files changed, 121 insertions, 67 deletions
diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb
index 6f69296a..a1c6228b 100644
--- a/lib/sisu/v3/sysenv.rb
+++ b/lib/sisu/v3/sysenv.rb
@@ -58,6 +58,7 @@
=end
@@cX=nil
@@current_document=Dir.pwd #nil #''
+@@lang_info=nil
module SiSU_Env
require_relative 'constants' # constants.rb
require 'fileutils'
@@ -444,7 +445,7 @@ module SiSU_Env
end
self
end
- def document_language_versions_found
+ def document_language_versions_found #REVISIT
@fn={}
unless (@fns.nil? \
or @fns.empty?)
@@ -499,12 +500,12 @@ module SiSU_Env
fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"
fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
if FileTest.file?(fns_c)
- fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_c)
- lng=fn_set_lang[:l]
+ fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_c) #reconsider file_to_language
+ lng=fn_set_lang[:n]
fn=SiSU_Env::Env_call.new(fns_c).lang(fn_set_lang[:c])
@m << { m: fn[:manifest], l: lng }
elsif FileTest.file?(fns_l)
- fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_l)
+ fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_l) #reconsider file_to_language
@fnl=dir.i18n.lang_filename(fn_set_lang[:c])
fn=SiSU_Env::Env_call.new(fns_l).lang(fn_set_lang[:c])
@m << { m: fn[:manifest], l: lng }
@@ -790,68 +791,111 @@ module SiSU_Env
end
end
class Standardise_language
+ require_relative 'i18n' # i18n.rb
def initialize(l='')
@language=l
if @language.empty?
@language=Info_env.new.defaults[:language]
end
+ @r=%{(?:#{Px[:lng_lst].join('|')})}
+ @lang_info=SiSU_i18n::Languages.new
end
- def language #use ISO_639-2
- lang={}
+ def lang_lst # from i18n
+ @@lang_info ||=@lang_info.language.list
+ end
+ def lang(l='') # from i18n
+ x=if l =~/^#{@r}$/
+ @lang_info.language.list[l]
+ elsif @language =~/^#{@r}$/
+ @lang_info.language.list[@language]
+ else nil
+ end
+ end
+ def language
+ lng={}
case @language
- when /American|^us$/i; d,c,l=false,'en','American English' #depreciated, see iso 639-2
- when /English|^en$/i; d,c,l=false,'en','English'
- when /French|Francais|^fr$/i; d,c,l=false,'fr','French'
- when /German|^de$/i; d,c,l=false,'de','German'
- when /Italian|^it$/i; d,c,l=false,'it','Italian'
- when /Spanish|Espanol|^es$/i; d,c,l=false,'es','Spanish'
- when /Brazilian(?: Portuguese)?|^br$/i; d,c,l=false,'pt','Brazilian Portuguese' #depreciated, see iso 639-2
- when /Portuguese|^pt$/i; d,c,l=false,'pt','Portuguese'
- when /Swedish|Svensk|^sv$/i; d,c,l=false,'sv','Swedish'
- when /Danish|Dansk|^da$/i; d,c,l=false,'da','Danish'
- when /Finnish|Finsk|Suomi|^fi$/i; d,c,l=false,'fi','Finnish'
- when /Norwegian|Norsk|^no$/i; d,c,l=false,'no','Norwegian'
- when /Icelandic|^is$/i; d,c,l=false,'is','Icelandic'
- when /Dutch|^nl$/i; d,c,l=false,'nl','Dutch'
- when /Estonian|^et$/i; d,c,l=false,'et','Estonian'
- when /Hungarian|^hu$/i; d,c,l=false,'hu','Hungarian'
- when /Polish|^pl$/i; d,c,l=false,'pl','Polish'
- when /Romanian|^ro$/i; d,c,l=false,'ro','Romanian'
- when /Russian|^ru$/i; d,c,l=false,'ru','Russian'
- when /Greek|^el$/i; d,c,l=false,'el','Greek'
- when /Ukranian|^uk$/i; d,c,l=false,'uk','Ukranian'
- when /Turkish|^tr$/i; d,c,l=false,'tr','Turkish'
- #when /Serbian/i; d,c,l=false,'', 'Serbian'
- #when /Welsh/i; d,c,l=false,'', 'Welsh'
- #when /Basque/i; d,c,l=false,'', 'Basque'
- #when /Breton/i; d,c,l=false,'', 'Breton'
- #when /Catalan/i; d,c,l=false,'', 'Catalan'
- #when /Galician/i; d,c,l=false,'', 'Galician'
- #when /Saa?mi/i; d,c,l=false,'', 'Saami'
- #when /Hebrew/i; d,c,l=false,'', 'Hebrew'
- #when /Latin/i; d,c,l=false,'', 'Latin'
- #when /Esperanto/i; d,c,l=false,'', 'Esperanto'
- when /Slovenian|^sl$/i; d,c,l=false,'sl','Slovenian'
- when /Croatian|^hr$/i; d,c,l=false,'hr','Croatian'
- when /Slovak(?:ian)?|^sk$/i; d,c,l=false,'sk','Slovakian'
- when /Czech|^cs$/i; d,c,l=false,'cs','Czech'
- when /Bulgarian|^bg$/i; d,c,l=false,'bg','Bulgarian'
- else d,c,l=true,'en','English (default)'
- #else d,c,l=true,'xx','Default'
- end
- lang[:d],lang[:c],lang[:l]=d,c,l
- lang
+ when /^am$|Amharic/i; d,c,l=false,lang_lst['am'][:c], lang_lst['am'][:n]
+ when /^bg$|Bulgarian/i; d,c,l=false,lang_lst['bg'][:c], lang_lst['bg'][:n]
+ when /^bn$|Bengali/i; d,c,l=false,lang_lst['bn'][:c], lang_lst['bn'][:n]
+ when /^br$|Breton/i; d,c,l=false,lang_lst['br'][:c], lang_lst['br'][:n]
+ when /^ca$|Catalan/i; d,c,l=false,lang_lst['ca'][:c], lang_lst['ca'][:n]
+ when /^cs$|Czech/i; d,c,l=false,lang_lst['cs'][:c], lang_lst['cs'][:n]
+ when /^cy$|Welsh/i; d,c,l=false,lang_lst['cy'][:c], lang_lst['cy'][:n]
+ when /^da$|Danish|Dansk/i; d,c,l=false,lang_lst['da'][:c], lang_lst['da'][:n]
+ when /^de$|German/i; d,c,l=false,lang_lst['de'][:c], lang_lst['de'][:n]
+ when /^el$|Greek/i; d,c,l=false,lang_lst['el'][:c], lang_lst['el'][:n]
+ when /^en$|English/i; d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
+ when /^eo$|Esperanto/i; d,c,l=false,lang_lst['eo'][:c], lang_lst['eo'][:n]
+ when /^es$|Spanish|Espanol/i; d,c,l=false,lang_lst['es'][:c], lang_lst['es'][:n]
+ when /^et$|Estonian/i; d,c,l=false,lang_lst['et'][:c], lang_lst['et'][:n]
+ when /^eu$|Basque/i; d,c,l=false,lang_lst['eu'][:c], lang_lst['eu'][:n]
+ when /^fi$|Finnish|Finsk|Suomi/i; d,c,l=false,lang_lst['fi'][:c], lang_lst['fi'][:n]
+ when /^fr$|French|Francais/i; d,c,l=false,lang_lst['fr'][:c], lang_lst['fr'][:n]
+ when /^ga$|Irish/i; d,c,l=false,lang_lst['ga'][:c], lang_lst['ga'][:n]
+ when /^gl$|Galician/i; d,c,l=false,lang_lst['gl'][:c], lang_lst['gl'][:n]
+ when /^he$|Hebrew/i; d,c,l=false,lang_lst['he'][:c], lang_lst['he'][:n]
+ when /^hi$|Hindi/i; d,c,l=false,lang_lst['hi'][:c], lang_lst['hi'][:n]
+ when /^hr$|Croatian/i; d,c,l=false,lang_lst['hr'][:c], lang_lst['hr'][:n]
+ when /^hy$|Armenian/i; d,c,l=false,lang_lst['hy'][:c], lang_lst['hy'][:n]
+ when /^ia$|Interlingua/i; d,c,l=false,lang_lst['ia'][:c], lang_lst['ia'][:n]
+ when /^is$|Icelandic/i; d,c,l=false,lang_lst['is'][:c], lang_lst['is'][:n]
+ when /^it$|Italian/i; d,c,l=false,lang_lst['it'][:c], lang_lst['it'][:n]
+ when /^la$|Latin/i; d,c,l=false,lang_lst['la'][:c], lang_lst['la'][:n]
+ when /^lo$|Lao/i; d,c,l=false,lang_lst['lo'][:c], lang_lst['lo'][:n]
+ when /^lt$|Lithuanian/i; d,c,l=false,lang_lst['lt'][:c], lang_lst['lt'][:n]
+ when /^lv$|Latvian/i; d,c,l=false,lang_lst['lv'][:c], lang_lst['lv'][:n]
+ when /^ml$|Malayalam/i; d,c,l=false,lang_lst['ml'][:c], lang_lst['ml'][:n]
+ when /^mr$|Marathi/i; d,c,l=false,lang_lst['mr'][:c], lang_lst['mr'][:n]
+ when /^nl$|Dutch/i; d,c,l=false,lang_lst['nl'][:c], lang_lst['nl'][:n]
+ when /^no$|Norwegian|Norsk/i; d,c,l=false,lang_lst['no'][:c], lang_lst['no'][:n]
+ when /^nn$|Norwegian Nynorsk/i; d,c,l=false,lang_lst['nn'][:c], lang_lst['nn'][:n]
+ when /^oc$|Occitan/i; d,c,l=false,lang_lst['oc'][:c], lang_lst['oc'][:n]
+ when /^pl$|Polish/i; d,c,l=false,lang_lst['pl'][:c], lang_lst['pl'][:n]
+ when /^pt$|Portuguese/i; d,c,l=false,lang_lst['pt'][:c], lang_lst['pt'][:n]
+ when /^pt_BR$|Portuguese Brazil/i; d,c,l=false,lang_lst['pt_BR'][:c], lang_lst['pt_BR'][:n]
+ when /^ro$|Romanian/i; d,c,l=false,lang_lst['ro'][:c], lang_lst['ro'][:n]
+ when /^ru$|Russian/i; d,c,l=false,lang_lst['ru'][:c], lang_lst['ru'][:n]
+ when /^sa$|Sanskrit/i; d,c,l=false,lang_lst['sa'][:c], lang_lst['sa'][:n]
+ when /^se$|Sami/i; d,c,l=false,lang_lst['se'][:c], lang_lst['se'][:n]
+ when /^sk$|Slovak/i; d,c,l=false,lang_lst['sk'][:c], lang_lst['sk'][:n]
+ when /^sl$|Slovenian/i; d,c,l=false,lang_lst['sl'][:c], lang_lst['sl'][:n]
+ when /^sq$|Albanian/i; d,c,l=false,lang_lst['sq'][:c], lang_lst['sq'][:n]
+ when /^sr$|Serbian/i; d,c,l=false,lang_lst['sr'][:c], lang_lst['sr'][:n]
+ when /^sv$|Swedish|Svensk/i; d,c,l=false,lang_lst['sv'][:c], lang_lst['sv'][:n]
+ when /^ta$|Tamil/i; d,c,l=false,lang_lst['ta'][:c], lang_lst['ta'][:n]
+ when /^te$|Telugu/i; d,c,l=false,lang_lst['te'][:c], lang_lst['te'][:n]
+ when /^th$|Thai/i; d,c,l=false,lang_lst['th'][:c], lang_lst['th'][:n]
+ when /^tk$|Turkmen/i; d,c,l=false,lang_lst['tk'][:c], lang_lst['tk'][:n]
+ when /^tr$|Turkish/i; d,c,l=false,lang_lst['tr'][:c], lang_lst['tr'][:n]
+ when /^uk$|Ukranian/i; d,c,l=false,lang_lst['uk'][:c], lang_lst['uk'][:n]
+ when /^ur$|Urdu/i; d,c,l=false,lang_lst['ur'][:c], lang_lst['ur'][:n]
+ when /^us|American$|/i; d,c,l=false,lang_lst['en'][:c], lang_lst['en'][:n]
+ when /^vi$|Vietnamese/i; d,c,l=false,lang_lst['vi'][:c], lang_lst['vi'][:n]
+ else d,c,l=true, lang_lst['en'][:c], lang_lst['en'][:n] #default
+ end
+ lng[:d],lng[:c],lng[:n]=d,c,l
+ lng
end
def name
- language[:l].downcase
+ #lang(@language)[:n].downcase
+ #lang[@language][:n].downcase
+ #language[:n].downcase
+ language[:n].downcase
end
def title
- language[:l]
+ #lang(@language)[:n]
+ #lang[@language][:n]
+ language[:n]
end
def code
+ #lang[@language][:c]
+ #lang(@language)[:c]
language[:c]
end
- def file_to_language(file)
+ def tex_name
+ language[:xlp]
+ end
+ def file_to_language(file) # used, fix and remove
m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/
@language=if file =~m ; file[m,1]
else ''
@@ -859,7 +903,15 @@ module SiSU_Env
language
end
def codes
- codes=['us','en','fr','de','it','es','br','pt','sv','da','fi','no','is','nl','et','hu','pl','ro','ru','el','uk','tr','sk','hr','sl','cs','bg'] # remove us and br see iso-639-2
+ # Language List po4a
+ # <http://www.debian.org/international/l10n/po/>
+ # Px[:lng_lst]=%w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi]
+ # see polyglossia for subset
+ # <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
+ # also note ISO_639-2
+ # <http://en.wikipedia.org/wiki/ISO_639-2>
+ # <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
+ Px[:lng_lst] # constants.rb
end
end
class Info_env < Env_call
@@ -2091,7 +2143,7 @@ WOK
elsif defined? @rc['program_select']['console_web_browser'] \
and @rc['program_select']['console_web_browser'] =~/\S\S+/
@rc['program_select']['console_web_browser']
- else 'console-www-browser' #'lynx' 'links2' 'elinks' 'epiphany'
+ else 'console-www-browser' #'lynx' 'links' 'links2' 'elinks' 'w3m'
end
end
def console_www_browser
@@ -2104,7 +2156,7 @@ WOK
elsif defined? @rc['program_select']['epub_viewer'] \
and @rc['program_select']['epub_viewer'] =~/\S\S+/
@rc['program_select']['epub_viewer']
- else 'ebook-viewer' #'calibre' 'fbreader'
+ else 'ebook-viewer' #'calibre' 'fbreader'
end
end
def xml_viewer
@@ -2120,7 +2172,7 @@ WOK
((defined? @rc['program_select']['odf_viewer']) \
&& @rc['program_select']['odf_viewer'] =~/\S\S+/) \
? @rc['program_select']['odf_viewer'] \
- : 'libreoffice' #'odf-viewer','oowriter'
+ : 'lowriter' #'odf-viewer','oowriter'
end
def manpage_viewer
'man'
@@ -3382,14 +3434,9 @@ WOK
end
self
end
- def lang_part
- (@md.opt.f_pth[:lng]) \
- ? @md.opt.f_pth[:lng] \
- : @md.i18n[0]
- end
def set_path_abc(ft)
if @env.output_dir_structure.by_language_code?
- "#{output_path.base}/#{lang_part}/#{ft}"
+ "#{output_path.base}/#{@md.opt.lng}/#{ft}"
elsif @env.output_dir_structure.by_filetype?
"#{output_path.base}/#{ft}"
else
@@ -3398,14 +3445,14 @@ WOK
end
def set_path_ab(ft)
if @env.output_dir_structure.by_language_code?
- "#{output_path.base}/#{lang_part}/#{ft}"
+ "#{output_path.base}/#{@md.opt.lng}/#{ft}"
else
"#{output_path.base}/#{ft}"
end
end
def set_path_ab_src(ft)
if @env.output_dir_structure.by_language_code?
- "#{output_path.base}/#{ft}/#{lang_part}"
+ "#{output_path.base}/#{ft}/#{@md.opt.lng}"
else
"#{output_path.base}/#{ft}"
end
@@ -3429,14 +3476,14 @@ WOK
path=set_path_ab_src(ft)
end
def po
- "#{output_path.base}/po4a/#{@md.fnb}/po/#{lang_part}"
+ "#{output_path.base}/po4a/#{@md.fnb}/po/#{@md.opt.lng}"
end
def pot
"#{output_path.base}/po4a/#{@md.fnb}/pot"
end
def po_git
ft=Gt[:po]
- pth=@env.processing_path.git + '/' + @md.fnb + '/' + ft + '/' + lang_part
+ pth=@env.processing_path.git + '/' + @md.fnb + '/' + ft + '/' + @md.opt.lng
mkdir_p(pth) unless FileTest.directory?(pth)
pth
end
@@ -3512,6 +3559,9 @@ WOK
ft='sitemaps'
path=set_path_ab(ft)
end
+ def sqlite
+ path=output_path.base
+ end
self
end
end
@@ -3638,8 +3688,12 @@ WOK
@@pwd ||=Dir.pwd
@pwd=Dir.pwd
@env=SiSU_Env::Info_env.new
- m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
- @pwd_stub=@pwd[m,1]
+ #m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
+ #@pwd_stub=@pwd[m,1]
+ pt=Pathname.new(@pwd)
+ r=Px[:lng_lst].join('|')
+ u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
+ @pwd_stub=pt.realpath.to_s[u,1]
@rc=@@rc ||=Get_init.instance.sisu_yaml.rc
@defaults=Info_env.new.defaults
end