1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2025-06-05 17:04:15 +00:00

TemplateStyles: Handle empty files

This commit is contained in:
gnosygnu 2018-10-21 22:25:11 -04:00
parent 4cadd6b89b
commit 0f89d3aa3a
7 changed files with 25 additions and 18 deletions

View File

@ -83,7 +83,7 @@ class Xoa_site_cfg_itm__interwikimap extends Xoa_site_cfg_itm__base {
, "1|species;wikispecies|species.wikimedia.org" , "1|species;wikispecies|species.wikimedia.org"
, "1|d;wikidata|www.wikidata.org" , "1|d;wikidata|www.wikidata.org"
, "1|mw;mediawikiwiki|www.mediawiki.org" , "1|mw;mediawikiwiki|www.mediawiki.org"
, "1|wmf;wikimedia;foundation|wikimediafoundation.org" , "1|wmf;wikimedia;foundation|foundation.wikimedia.org"
, "1|incubator|incubator.wikimedia.org" , "1|incubator|incubator.wikimedia.org"
, "0|oldwikisource|https://wikisource.org/wiki/~{0}|Old Wikisoure" , "0|oldwikisource|https://wikisource.org/wiki/~{0}|Old Wikisoure"
, "0|mail|https://lists.wikimedia.org/mailman/listinfo/~{0}|Wikitech Mailing List" , "0|mail|https://lists.wikimedia.org/mailman/listinfo/~{0}|Wikitech Mailing List"

View File

@ -70,7 +70,12 @@ public class Xol_name_mgr {
Byte_obj_val include_byte = (Byte_obj_val)fetchLanguageNamesUncachedEnum.Get_by(include_bry); Byte_obj_val include_byte = (Byte_obj_val)fetchLanguageNamesUncachedEnum.Get_by(include_bry);
byte include = include_byte == null ? fetchLanguageNamesUncached__all : include_byte.Val(); byte include = include_byte == null ? fetchLanguageNamesUncached__all : include_byte.Val();
Cldr_name_file cldr_file = cldr_loader.Load(String_.new_u8(inLanguage)); Cldr_name_file cldr_file = cldr_loader.Load_or_null(String_.new_u8(inLanguage));
if (cldr_file == null) {
ret = Ordered_hash_.New();
languageNameCache.Add(cacheKey, ret);
return ret;
}
if (lang_names_cached == null) if (lang_names_cached == null)
lang_names_cached = name_loader.Load_as_hash(); lang_names_cached = name_loader.Load_as_hash();
@ -228,7 +233,7 @@ public class Xol_name_mgr {
return namesMwFile; return namesMwFile;
} }
returnMw .Sort_by(Hash_kv_sorter.Instance); returnMw.Sort_by(Hash_kv_sorter.Instance);
// # 'mw' option; default if it's not one of the other two options (all/mwfile) // # 'mw' option; default if it's not one of the other two options (all/mwfile)
return returnMw; return returnMw;
} }

View File

@ -33,10 +33,8 @@ public class Xow_domain_itm_ {
: new_other(raw); : new_other(raw);
} }
int dot_1 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, dot_0 + 1, raw_len); int dot_1 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, dot_0 + 1, raw_len);
if (dot_1 == Bry_find_.Not_found) { // 1 dot; check for "wikimediafoundation.org" if (dot_1 == Bry_find_.Not_found) { // 1 dot;
return Bry_.Match(raw, 0, dot_0, Xow_domain_tid_.Bry__wmforg) return new_other(raw);
? Xow_domain_itm.new_(raw, Xow_domain_tid_.Tid__wmfblog, Xol_lang_stub_.Key__unknown)
: new_other(raw);
} }
// 2 dots // 2 dots
int seg_1_tid = Xow_domain_tid_.Get_type_as_tid(raw, dot_0 + 1, dot_1); // parse middle; EX: ".wikipedia." int seg_1_tid = Xow_domain_tid_.Get_type_as_tid(raw, dot_0 + 1, dot_1); // parse middle; EX: ".wikipedia."
@ -62,6 +60,7 @@ public class Xow_domain_itm_ {
} }
switch (seg_0_tid) { switch (seg_0_tid) {
case Xow_domain_tid_.Tid__commons: case Xow_domain_tid_.Tid__species: case Xow_domain_tid_.Tid__meta: case Xow_domain_tid_.Tid__incubator: case Xow_domain_tid_.Tid__commons: case Xow_domain_tid_.Tid__species: case Xow_domain_tid_.Tid__meta: case Xow_domain_tid_.Tid__incubator:
case Xow_domain_tid_.Tid__wmfblog:
return Xow_domain_itm.new_(raw, seg_0_tid, Xol_lang_stub_.Key__unknown); // NOTE: seg_tids must match wiki_tids; NOTE: lang_key is "en" (really, "multi" but making things easier) return Xow_domain_itm.new_(raw, seg_0_tid, Xol_lang_stub_.Key__unknown); // NOTE: seg_tids must match wiki_tids; NOTE: lang_key is "en" (really, "multi" but making things easier)
default: default:
return new_other(raw); return new_other(raw);
@ -131,7 +130,7 @@ public class Xow_domain_itm_ {
, Str__mediawiki = "www.mediawiki.org" , Str__mediawiki = "www.mediawiki.org"
, Str__meta = "meta.wikimedia.org" , Str__meta = "meta.wikimedia.org"
, Str__incubator = "incubator.wikimedia.org" , Str__incubator = "incubator.wikimedia.org"
, Str__wmforg = "wikimediafoundation.org" , Str__wmforg = "foundation.wikimedia.org"
, Str__home = "home" , Str__home = "home"
; ;
public static final byte[] public static final byte[]

View File

@ -22,7 +22,7 @@ public class Xow_domain_regy {
, "incubator.wikimedia.org" , "incubator.wikimedia.org"
, "www.wikidata.org" , "www.wikidata.org"
, "www.mediawiki.org" , "www.mediawiki.org"
, "wikimediafoundation.org" , "foundation.wikimedia.org"
, "en.wikipedia.org" , "en.wikipedia.org"
, "en.wiktionary.org" , "en.wiktionary.org"
, "en.wikisource.org" , "en.wikisource.org"
@ -335,9 +335,6 @@ public class Xow_domain_regy {
, "ak.wiktionary.org" , "ak.wiktionary.org"
, "ak.wikibooks.org" , "ak.wikibooks.org"
, "als.wikipedia.org" , "als.wikipedia.org"
, "als.wiktionary.org"
, "als.wikibooks.org"
, "als.wikiquote.org"
, "am.wikipedia.org" , "am.wikipedia.org"
, "am.wiktionary.org" , "am.wiktionary.org"
, "am.wikiquote.org" , "am.wikiquote.org"
@ -863,6 +860,9 @@ public class Xow_domain_regy {
, "zh.wikiversity.org" , "zh.wikiversity.org"
}; };
//, "als.wikisource.org" //, "als.wikisource.org"
//, "als.wiktionary.org"
//, "als.wikibooks.org"
//, "als.wikiquote.org"
//, "als.wikinews.org" //, "als.wikinews.org"
//, "mo.wikipedia.org" //, "mo.wikipedia.org"
//, "mo.wiktionary.org" //, "mo.wiktionary.org"

View File

@ -19,7 +19,6 @@ public class Cldr_name_converter_tst {
private final Cldr_name_converter_fxt fxt = new Cldr_name_converter_fxt(); private final Cldr_name_converter_fxt fxt = new Cldr_name_converter_fxt();
@Test public void Extract_key_or_fail() { @Test public void Extract_key_or_fail() {
fxt.Test__Extract_key_or_fail("CldrNamesEn.php" , "En"); fxt.Test__Extract_key_or_fail("CldrNamesEn.php" , "En");
fxt.Test__Extract_key_or_fail("CldrNamesEn.php" , "en");
fxt.Test__Extract_key_or_fail("CldrNameEn.php" , null); fxt.Test__Extract_key_or_fail("CldrNameEn.php" , null);
fxt.Test__Extract_key_or_fail("CldrNamesEn.txt" , null); fxt.Test__Extract_key_or_fail("CldrNamesEn.txt" , null);
} }

View File

@ -26,7 +26,7 @@ public class Cldr_name_loader {
this.cldr_dir = cldr_dir; this.cldr_dir = cldr_dir;
} }
public Cldr_name_file Load(String lang_key) { public Cldr_name_file Load_or_null(String lang_key) {
// normalize to lc; scrib will pass lower_case, but underlying files are Title_case // normalize to lc; scrib will pass lower_case, but underlying files are Title_case
lang_key = String_.Lower(lang_key); lang_key = String_.Lower(lang_key);
@ -39,12 +39,16 @@ public class Cldr_name_loader {
urls_hash = Make_urls_hash(Io_mgr.Instance.QueryDir_fils(cldr_dir)); urls_hash = Make_urls_hash(Io_mgr.Instance.QueryDir_fils(cldr_dir));
// get file // get file
Io_url url = (Io_url)urls_hash.Get_by_or_fail(lang_key); Io_url url = (Io_url)urls_hash.Get_by(lang_key);
byte[] json = Io_mgr.Instance.LoadFilBry(url); if (url == null) {
if (json == null) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "no cldrName file exists for lang; lang=~{lang}", lang_key); Gfo_usr_dlg_.Instance.Warn_many("", "", "no cldrName file exists for lang; lang=~{lang}", lang_key);
return null; return null;
} }
byte[] json = Io_mgr.Instance.LoadFilBry(url);
if (Bry_.Len_eq_0(json)) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "json is empty; lang=~{lang}", lang_key);
return null;
}
// parse, cache and return // parse, cache and return
file = Parse(lang_key, json); file = Parse(lang_key, json);

View File

@ -31,7 +31,7 @@ class Cldr_name_loader_fxt {
Io_mgr.Instance.SaveFilStr(Io_url_.new_fil_(Dir_name + fil_name), txt); Io_mgr.Instance.SaveFilStr(Io_url_.new_fil_(Dir_name + fil_name), txt);
} }
public void Test__load_file_is_null(boolean expd, String lang_key) { public void Test__load_file_is_null(boolean expd, String lang_key) {
Cldr_name_file name_file = name_loader.Load(lang_key); Cldr_name_file name_file = name_loader.Load_or_null(lang_key);
Gftest.Eq__bool(expd, name_file == null); Gftest.Eq__bool(expd, name_file == null);
} }
} }