Wikibase: Support bcp in language node

pull/620/head
gnosygnu 6 years ago
parent 62f41ebbd3
commit 4cadd6b89b

@ -34,7 +34,7 @@ public class Console_adp__sys implements Console_adp {
Clear_tmp();
if (String_.Has(s, "\r")) s = String_.Replace(s, "\r", " ");
if (String_.Has(s, "\n")) s = String_.Replace(s, "\n", " ");
if (String_.Len(s) >= chars_per_line_max) s = String_.Mid(s, 0, chars_per_line_max - String_.Len("...") - 1) + "..."; // NOTE: >= and -1 needed b/c line needs to be 1 less than max; ex: default cmd is 80 width, but writing 80 chars will automatically create lineBreak
// if (String_.Len(s) >= chars_per_line_max) s = String_.Mid(s, 0, chars_per_line_max - String_.Len("...") - 1) + "..."; // NOTE: >= and -1 needed b/c line needs to be 1 less than max; ex: default cmd is 80 width, but writing 80 chars will automatically create lineBreak
tmp_txt = s;
Write_str_lang(s);
}

@ -351,18 +351,20 @@ public class Site_json_parser_tst {
( "{ 'languages':"
, " [ "
, " { 'code': 'aa'"
, " , 'bcp47': 'aa-bcp47'"
, " , '*': 'Qaf\u00e1r af'"
, " }"
, " , "
, " { 'code': 'ab'"
, " , 'bcp47': 'ab-bcp47'"
, " , '*': '\u0410\u04a7\u0441\u0448\u04d9\u0430'"
, " }"
, " ]"
, "}"
));
fxt.Test_language
( fxt.Make_language("aa" , "Qafár af")
, fxt.Make_language("ab" , "Аҧсшәа")
( fxt.Make_language("aa" , "aa-bcp47", "Qafár af")
, fxt.Make_language("ab" , "ab-bcp47", "Аҧсшәа")
);
}
// @Test public void Smoke() {
@ -409,7 +411,7 @@ class Site_json_parser_fxt {
public Site_skin_itm Make_skin(String code, boolean dflt, String name, boolean unusable) {return new Site_skin_itm(Bry_.new_u8_safe(code), dflt, Bry_.new_u8_safe(name), unusable);}
public Site_magicword_itm Make_magicword(String name, boolean case_match, String... aliases) {return new Site_magicword_itm(Bry_.new_u8_safe(name), case_match, Bry_.Ary(aliases));}
public Site_showhook_itm Make_showhook(String name, String scribunto, String... subscribers) {return new Site_showhook_itm(Bry_.new_u8_safe(name), Bry_.new_u8_safe(scribunto), Bry_.Ary(subscribers));}
public Site_language_itm Make_language(String code, String name) {return new Site_language_itm(Bry_.new_u8_safe(code), Bry_.new_u8_safe(name));}
public Site_language_itm Make_language(String code, String bcp47, String name) {return new Site_language_itm(Bry_.new_u8_safe(code), Bry_.new_u8(bcp47), Bry_.new_u8_safe(name));}
public void Test_general(Keyval... expd) {Tfds.Eq_ary_str(expd, (Keyval[])site_meta.General_list().To_ary(Keyval.class));}
public void Test_namespace(Site_namespace_itm... expd) {Tfds.Eq_ary_str(expd, (Site_namespace_itm[])site_meta.Namespace_list().To_ary(Site_namespace_itm.class));}
public void Test_statistic(Site_statistic_itm expd) {Tfds.Eq_str_intf(expd, site_meta.Statistic_itm());}

@ -15,8 +15,13 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
class Site_language_itm implements To_str_able {
public Site_language_itm(byte[] code, byte[] name) {this.code = code; this.name = name;}
public byte[] Code() {return code;} private final byte[] code;
public byte[] Name() {return name;} private final byte[] name;
public String To_str() {return String_.Concat_with_obj("|", code, name);}
public Site_language_itm(byte[] code, byte[] bcp47, byte[] name) {
this.code = code;
this.bcp47 = bcp47;
this.name = name;
}
public byte[] Code() {return code;} private final byte[] code;
public byte[] Bcp47() {return bcp47;} private final byte[] bcp47;
public byte[] Name() {return name;} private final byte[] name;
public String To_str() {return String_.Concat_with_obj("|", code, bcp47, name);}
}

@ -17,7 +17,7 @@ package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gpl
import gplx.dbs.*;
class Site_language_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_site_abrv, fld_code, fld_name;
private final String fld_site_abrv, fld_code, fld_name, fld_bcp47;
private final Db_conn conn;
private Db_stmt stmt_select, stmt_insert, stmt_delete;
public Site_language_tbl(Db_conn conn) {
@ -25,10 +25,11 @@ class Site_language_tbl implements Db_tbl {
this.fld_site_abrv = flds.Add_str("site_abrv", 255);
this.fld_code = flds.Add_str("code", 255);
this.fld_name = flds.Add_str("name", 255);
this.fld_bcp47 = flds.Add_str("bcp47", 255);
conn.Rls_reg(this);
}
public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_language";
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));}
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code, fld_bcp47)));}
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
public void Rls() {
stmt_select = Db_stmt_.Rls(stmt_select);
@ -44,6 +45,7 @@ class Site_language_tbl implements Db_tbl {
Site_language_itm itm = new Site_language_itm
( rdr.Read_bry_by_str(fld_code)
, rdr.Read_bry_by_str(fld_name)
, rdr.Read_bry_by_str(fld_bcp47)
);
list.Add(itm.Code(), itm);
}
@ -57,14 +59,15 @@ class Site_language_tbl implements Db_tbl {
int len = list.Count();
for (int i = 0; i < len; ++i) {
Site_language_itm itm = (Site_language_itm)list.Get_at(i);
Insert(site_abrv, itm.Code(), itm.Name());
Insert(site_abrv, itm.Code(), itm.Name(), itm.Bcp47());
}
}
private void Insert(byte[] site_abrv, byte[] code, byte[] name) {
private void Insert(byte[] site_abrv, byte[] code, byte[] name, byte[] bcp47) {
stmt_insert.Clear()
.Val_bry_as_str(fld_site_abrv , site_abrv)
.Val_bry_as_str(fld_code , code)
.Val_bry_as_str(fld_name , name)
.Val_bry_as_str(fld_bcp47 , bcp47)
.Exec_insert();
}
}

@ -252,7 +252,7 @@ class Site_meta_parser__showhook extends Json_parser__list_nde__base {
class Site_meta_parser__language extends Json_parser__list_nde__base {
private Ordered_hash list;
public Site_meta_parser__language() {
this.Ctor("code", "*");
this.Ctor("code", "bcp47", "*");
}
public void Parse(String context, Ordered_hash list, Json_ary nde) {
this.list = list;
@ -260,6 +260,6 @@ class Site_meta_parser__language extends Json_parser__list_nde__base {
}
@Override protected void Parse_hook_nde(Json_nde sub, Json_kv[] atrs) {
byte[] key = Kv__bry(atrs, 0);
list.Add(key, new Site_language_itm(key, Kv__bry(atrs, 1)));
list.Add(key, new Site_language_itm(key, Kv__bry(atrs, 1), Kv__bry(atrs, 2)));
}
}

@ -391,6 +391,7 @@ public class Xow_domain_regy {
, "bm.wikibooks.org"
, "bm.wikiquote.org"
, "bn.wikipedia.org"
, "bn.wikivoyage.org"
, "bn.wiktionary.org"
, "bn.wikisource.org"
, "bn.wikibooks.org"
@ -613,8 +614,6 @@ public class Xow_domain_regy {
, "mn.wikipedia.org"
, "mn.wiktionary.org"
, "mn.wikibooks.org"
, "mo.wikipedia.org"
, "mo.wiktionary.org"
, "mr.wikipedia.org"
, "mr.wiktionary.org"
, "mr.wikisource.org"
@ -839,28 +838,34 @@ public class Xow_domain_regy {
, "zu.wikipedia.org"
, "zu.wiktionary.org"
, "zu.wikibooks.org"
, "gom.wikipedia.org"
, "lrc.wikipedia.org"
, "azb.wikipedia.org"
, "ady.wikipedia.org"
, "jam.wikipedia.org"
, "tcy.wikipedia.org"
, "olo.wikipedia.org"
, "dty.wikipedia.org"
, "pa.wikisource.org"
, "atj.wikipedia.org"
, "kbp.wikipedia.org"
, "din.wikipedia.org"
, "dty.wikipedia.org"
, "eu.wikisource.org"
, "gom.wikipedia.org"
, "gor.wikipedia.org"
, "hi.wikiversity.org"
, "hi.wikivoyage.org"
, "hif.wiktionary.org"
, "inh.wikipedia.org"
, "jam.wikipedia.org"
, "kbp.wikipedia.org"
, "lrc.wikipedia.org"
, "lfn.wikipedia.org"
, "gor.wikipedia.org"
, "eu.wikisource.org"
, "olo.wikipedia.org"
, "pa.wikisource.org"
, "pms.wikisource.org"
, "ps.wikivoyage.org"
, "sat.wikipedia.org"
, "sah.wikiquote.org"
, "tcy.wikipedia.org"
, "zh.wikiversity.org"
};
//, "als.wikisource.org"
//, "als.wikinews.org"
//, "mo.wikipedia.org"
//, "mo.wiktionary.org"
//, "nds.wikinews.org"
//, "ba.wiktionary.org"
//, "tokipona.wikibooks.org"

@ -82,7 +82,9 @@ public class Cldr_name_loader {
}
}
private static Hash_adp Make_urls_hash(Io_url[] urls) {
// filenames will have format of CldrNamesEn.json; build a hash of (en, "CldrNamesEn.json"); needed for case-sensitive file-systems; DATE:2018-10-14
// filenames will have format of "CldrNamesEn.json" but scrib will pass in "en";
// this is not an issue for case-insensitive file-systems (WNT), but fails for case-sensitive ones (LNX)
// build a hash of ("en", "CldrNamesEn.json"); DATE:2018-10-14
Hash_adp rv = Hash_adp_.New();
for (Io_url url : urls) {
String name = url.NameAndExt();

Loading…
Cancel
Save