1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

Wikibase: Support bcp in language node

This commit is contained in:
gnosygnu
2018-10-21 21:50:17 -04:00
parent 62f41ebbd3
commit 4cadd6b89b
7 changed files with 45 additions and 28 deletions

View File

@@ -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());}

View File

@@ -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);}
}

View File

@@ -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();
}
}

View File

@@ -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)));
}
}