1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2025-06-02 07:24:19 +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|d;wikidata|www.wikidata.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"
, "0|oldwikisource|https://wikisource.org/wiki/~{0}|Old Wikisoure"
, "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 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)
lang_names_cached = name_loader.Load_as_hash();
@ -228,7 +233,7 @@ public class Xol_name_mgr {
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)
return returnMw;
}

View File

@ -33,10 +33,8 @@ public class Xow_domain_itm_ {
: new_other(raw);
}
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"
return Bry_.Match(raw, 0, dot_0, Xow_domain_tid_.Bry__wmforg)
? Xow_domain_itm.new_(raw, Xow_domain_tid_.Tid__wmfblog, Xol_lang_stub_.Key__unknown)
: new_other(raw);
if (dot_1 == Bry_find_.Not_found) { // 1 dot;
return new_other(raw);
}
// 2 dots
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) {
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)
default:
return new_other(raw);
@ -131,7 +130,7 @@ public class Xow_domain_itm_ {
, Str__mediawiki = "www.mediawiki.org"
, Str__meta = "meta.wikimedia.org"
, Str__incubator = "incubator.wikimedia.org"
, Str__wmforg = "wikimediafoundation.org"
, Str__wmforg = "foundation.wikimedia.org"
, Str__home = "home"
;
public static final byte[]

View File

@ -22,7 +22,7 @@ public class Xow_domain_regy {
, "incubator.wikimedia.org"
, "www.wikidata.org"
, "www.mediawiki.org"
, "wikimediafoundation.org"
, "foundation.wikimedia.org"
, "en.wikipedia.org"
, "en.wiktionary.org"
, "en.wikisource.org"
@ -335,9 +335,6 @@ public class Xow_domain_regy {
, "ak.wiktionary.org"
, "ak.wikibooks.org"
, "als.wikipedia.org"
, "als.wiktionary.org"
, "als.wikibooks.org"
, "als.wikiquote.org"
, "am.wikipedia.org"
, "am.wiktionary.org"
, "am.wikiquote.org"
@ -863,6 +860,9 @@ public class Xow_domain_regy {
, "zh.wikiversity.org"
};
//, "als.wikisource.org"
//, "als.wiktionary.org"
//, "als.wikibooks.org"
//, "als.wikiquote.org"
//, "als.wikinews.org"
//, "mo.wikipedia.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();
@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("CldrNameEn.php" , 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;
}
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
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));
// get file
Io_url url = (Io_url)urls_hash.Get_by_or_fail(lang_key);
byte[] json = Io_mgr.Instance.LoadFilBry(url);
if (json == null) {
Io_url url = (Io_url)urls_hash.Get_by(lang_key);
if (url == null) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "no cldrName file exists for lang; lang=~{lang}", lang_key);
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
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);
}
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);
}
}