mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.8.1.1
This commit is contained in:
@@ -20,7 +20,7 @@ import gplx.intl.*;
|
||||
import gplx.xowa.apps.fsys.*; import gplx.xowa.bldrs.langs.*; import gplx.xowa.langs.vnts.*;
|
||||
public class Xoa_lang_mgr implements GfoInvkAble {
|
||||
private final Xoa_fsys_mgr fsys_mgr; private final Gfo_msg_log msg_log; private final Xol_lang lang_en;
|
||||
private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Hash_adp_bry fallback_regy = Hash_adp_bry.cs_();
|
||||
private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Hash_adp_bry fallback_regy = Hash_adp_bry.cs();
|
||||
public Xoa_lang_mgr(Xoae_app app) {
|
||||
this.fsys_mgr = app.Fsys_mgr(); this.msg_log = app.Msg_log();
|
||||
mw_converter = new Xobc_utl_make_lang(this, fsys_mgr, msg_log);
|
||||
|
||||
@@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.intl.*; import gplx.xowa.xtns.pfuncs.*;
|
||||
public class Xol_func_name_regy {
|
||||
private final Xoa_lang_mgr lang_mgr; private final Xol_lang lang;
|
||||
private final Xol_func_name_itm finder = new Xol_func_name_itm();
|
||||
private final Btrie_slim_mgr cs_trie = Btrie_slim_mgr.cs_(), ci_trie = Btrie_slim_mgr.ci_utf_8_();
|
||||
private final Btrie_slim_mgr cs_trie = Btrie_slim_mgr.cs(), ci_trie = Btrie_slim_mgr.ci_u8();
|
||||
public Xol_func_name_regy(Xoa_lang_mgr lang_mgr, Xol_lang lang) {this.lang_mgr = lang_mgr; this.lang = lang;}
|
||||
public void Evt_lang_changed(Xol_lang lang) {
|
||||
Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr();
|
||||
|
||||
@@ -466,7 +466,7 @@ public class Xol_lang_itm_ {
|
||||
public static Hash_adp_bry Regy() {
|
||||
if (regy == null) {
|
||||
// NOTE: any parenthetical String below will have an "unseen" character of "\xE2\x80\xAA" at the begining and "\xE2\x80\xAC" at the end. They are responsible for parentheses-orientation in RTL langs.
|
||||
regy = Hash_adp_bry.ci_ascii_(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}}
|
||||
regy = Hash_adp_bry.ci_a7(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}}
|
||||
Regy_add(regy, Id_en, "en", "English");
|
||||
Regy_add(regy, Id_aa, "aa", "Qafár af");
|
||||
Regy_add(regy, Id_ab, "ab", "Аҧсуа");
|
||||
|
||||
@@ -19,10 +19,10 @@ package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xo
|
||||
import gplx.intl.*;
|
||||
public class Xol_case_mgr_ {
|
||||
@gplx.Internal protected static Xol_case_mgr new_() {return new Xol_case_mgr(Gfo_case_mgr_.Tid_custom);}
|
||||
public static Xol_case_mgr Ascii() {if (mgr_ascii == null) mgr_ascii = new_mgr_ascii_(); return mgr_ascii;} private static Xol_case_mgr mgr_ascii;
|
||||
public static Xol_case_mgr Utf8() {if (mgr_utf8 == null) mgr_utf8 = new_mgr_utf8_(); return mgr_utf8;} private static Xol_case_mgr mgr_utf8;
|
||||
private static Xol_case_mgr new_mgr_ascii_() {
|
||||
Xol_case_mgr rv = new Xol_case_mgr(Gfo_case_mgr_.Tid_ascii);
|
||||
public static Xol_case_mgr A7() {if (mgr_a7 == null) mgr_a7 = new_mgr_a7_(); return mgr_a7;} private static Xol_case_mgr mgr_a7;
|
||||
public static Xol_case_mgr U8() {if (mgr_u8 == null) mgr_u8 = new_mgr_u8_(); return mgr_u8;} private static Xol_case_mgr mgr_u8;
|
||||
private static Xol_case_mgr new_mgr_a7_() {
|
||||
Xol_case_mgr rv = new Xol_case_mgr(Gfo_case_mgr_.Tid_a7);
|
||||
Xol_case_itm[] itms = new Xol_case_itm[]
|
||||
{ Xol_case_itm_.new_(0, "a", "A")
|
||||
, Xol_case_itm_.new_(0, "b", "B")
|
||||
@@ -54,8 +54,8 @@ public class Xol_case_mgr_ {
|
||||
rv.Add_bulk(itms);
|
||||
return rv;
|
||||
}
|
||||
private static Xol_case_mgr new_mgr_utf8_() {
|
||||
Xol_case_mgr rv = new Xol_case_mgr(Gfo_case_mgr_.Tid_utf8);
|
||||
private static Xol_case_mgr new_mgr_u8_() {
|
||||
Xol_case_mgr rv = new Xol_case_mgr(Gfo_case_mgr_.Tid_u8);
|
||||
Xol_case_itm[] itms = new Xol_case_itm[]
|
||||
{ Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(97), Bry_.ints_(65)) // a -> A -- LATIN CAPITAL LETTER A
|
||||
, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(98), Bry_.ints_(66)) // b -> B -- LATIN CAPITAL LETTER B
|
||||
|
||||
@@ -70,7 +70,7 @@ class Xol_case_mgr_fxt {
|
||||
return this;
|
||||
}
|
||||
public Xol_case_mgr_fxt Init_ltrs_universal() {
|
||||
case_mgr = Xol_case_mgr_.Utf8();
|
||||
case_mgr = Xol_case_mgr_.U8();
|
||||
return this;
|
||||
}
|
||||
public Xol_case_mgr_fxt Upper(String raw_str, String expd) {return Case_build(Bool_.Y, raw_str, expd);}
|
||||
|
||||
@@ -119,7 +119,7 @@ class Xol_mw_parse_fxt {
|
||||
private Xol_mw_parse_grp Parse_grp(Php_line_assign line) {
|
||||
Xol_mw_parse_grp grp = new Xol_mw_parse_grp();
|
||||
byte[] key = line.Key().Val_obj_bry(); // EX: "zh2Hant"
|
||||
key = Bry_.Lower_ascii(key); // EX: "zh2hant"
|
||||
key = Bry_.Lcase__all(key); // EX: "zh2hant"
|
||||
byte[][] parts = Bry_.Split(key, Byte_ascii.Num_2); // EX: "zh", "hant"
|
||||
byte[] src = parts[0];
|
||||
byte[] trg = Bry_.Add(parts[0], new byte[] {Byte_ascii.Dash}, parts[1]);
|
||||
|
||||
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.langs.durations; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
public class Xol_duration_itm_ {
|
||||
private static final Hash_adp_bry regy = Hash_adp_bry.ci_ascii_(); // ASCII:MW.consts
|
||||
private static final Hash_adp_bry regy = Hash_adp_bry.ci_a7(); // ASCII:MW.consts
|
||||
public static final byte
|
||||
Tid_millenia = 0
|
||||
, Tid_centuries = 1
|
||||
|
||||
@@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.core.btries.*;
|
||||
public class Xol_grammar_ {
|
||||
public static final byte Tid__max = 9;
|
||||
public static final byte Tid_genitive = 0, Tid_elative = 1, Tid_partitive = 2, Tid_illative = 3, Tid_inessive = 4, Tid_accusative = 5, Tid_instrumental = 6, Tid_prepositional = 7, Tid_dative = 8, Tid_unknown = Byte_.Max_value_127;
|
||||
private static final Btrie_slim_mgr Tid_trie = Btrie_slim_mgr.ci_ascii_() // NOTE:ci.ascii:MW kwds
|
||||
private static final Btrie_slim_mgr Tid_trie = Btrie_slim_mgr.ci_a7() // NOTE:ci.ascii:MW kwds
|
||||
.Add_str_byte("genitive", Tid_genitive)
|
||||
.Add_str_byte("elative", Tid_elative)
|
||||
.Add_str_byte("partitive", Tid_partitive)
|
||||
|
||||
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.langs.grammars; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
import gplx.core.primitives.*; import gplx.core.btries.*;
|
||||
import gplx.xowa.urls.*;
|
||||
public class Xol_grammar_fi implements Xol_grammar {
|
||||
public boolean Vowel_harmony(byte[] word, int word_len) {
|
||||
// $aou = preg_match( '/[aou][^äöy]*$/i', $word );
|
||||
@@ -53,7 +54,7 @@ public class Xol_grammar_fi implements Xol_grammar {
|
||||
byte[] lower = lang.Case_mgr().Case_build_lower(word, 0, word_len);
|
||||
boolean aou = Vowel_harmony(lower, word_len);
|
||||
// PHP: if ( preg_match( '/wiki$/i', $word ) ) $aou = false;
|
||||
if (aou && Bry_.Has_at_end(lower, Xoa_url_parser.Bry_wiki_name))
|
||||
if (aou && Bry_.Has_at_end(lower, Bry_wiki))
|
||||
aou = false;
|
||||
// PHP: if ( preg_match( '/[bcdfghjklmnpqrstvwxz]$/i', $word ) ) $word .= 'i';
|
||||
switch (lower[word_len - 1]) {
|
||||
@@ -76,5 +77,6 @@ public class Xol_grammar_fi implements Xol_grammar {
|
||||
} static Xol_grammar_manual_regy manual_regy;
|
||||
private static final byte[] Bry_sta_y = Bry_.new_a7("sta"), Bry_sta_n = Bry_.new_u8("stä"), Bry_a_y = Bry_.new_a7("a"), Bry_a_n = Bry_.new_u8("ä"), Bry_ssa_y = Bry_.new_a7("ssa"), Bry_ssa_n = Bry_.new_u8("ssä");
|
||||
static final byte Trie_vh_back = 0, Trie_vh_front = 1;
|
||||
private static Btrie_slim_mgr trie_vh = Btrie_slim_mgr.cs_().Add_str_byte__many(Trie_vh_back, "a", "o", "u").Add_str_byte__many(Trie_vh_front, "ä", "ö", "y");
|
||||
private static Btrie_slim_mgr trie_vh = Btrie_slim_mgr.cs().Add_str_byte__many(Trie_vh_back, "a", "o", "u").Add_str_byte__many(Trie_vh_front, "ä", "ö", "y");
|
||||
private static final byte[] Bry_wiki = Bry_.new_a7("wiki");
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class Xol_grammar_manual_regy {
|
||||
public Xol_grammar_manual_regy Itms_add(byte type_tid, String orig, String repl) {
|
||||
Hash_adp_bry hash = ary[type_tid];
|
||||
if (hash == null) {
|
||||
hash = Hash_adp_bry.ci_ascii_(); // ASCII:currently only being used for Wikiuutiset; DATE:2014-07-07
|
||||
hash = Hash_adp_bry.ci_a7(); // ASCII:currently only being used for Wikiuutiset; DATE:2014-07-07
|
||||
ary[type_tid] = hash;
|
||||
}
|
||||
hash.Add_str_obj(orig, Bry_.new_a7(repl));
|
||||
|
||||
@@ -23,7 +23,7 @@ public class Xol_num_fmtr_base implements GfoInvkAble {
|
||||
private Gfo_num_fmt_wkr[] cache; int cache_len = 16;
|
||||
private Bry_bfr tmp = Bry_bfr.new_();
|
||||
public boolean Standard() {return standard;} private boolean standard = true;
|
||||
public byte[] Dec_dlm() {return dec_dlm;} public Xol_num_fmtr_base Dec_dlm_(byte[] v) {this.dec_dlm = v; dlm_trie.Add_bry_bval(v, Raw_tid_dec); return this;} private byte[] dec_dlm = Dec_dlm_default;
|
||||
public byte[] Dec_dlm() {return dec_dlm;} public Xol_num_fmtr_base Dec_dlm_(byte[] v) {this.dec_dlm = v; dlm_trie.Add_bry_byte(v, Raw_tid_dec); return this;} private byte[] dec_dlm = Dec_dlm_default;
|
||||
private byte[] grp_dlm;
|
||||
public byte[] Raw(byte tid, byte[] src) {
|
||||
int src_len = src.length;
|
||||
@@ -120,7 +120,7 @@ public class Xol_num_fmtr_base implements GfoInvkAble {
|
||||
byte[] itm_dlm = itm.Dlm();
|
||||
Object o = dlm_trie.Match_exact(itm_dlm, 0, itm_dlm.length); // check for existing Object
|
||||
if (o == null) {
|
||||
dlm_trie.Add_bry_bval(itm_dlm, Raw_tid_grp);
|
||||
dlm_trie.Add_bry_byte(itm_dlm, Raw_tid_grp);
|
||||
grp_dlm = itm_dlm;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,8 +31,9 @@ public class Xol_num_mgr implements GfoInvkAble {
|
||||
return num;
|
||||
}
|
||||
public byte[] Format_num_no_separators(byte[] num) {return Format_num(num, true);}
|
||||
public byte[] Format_num(int val) {return Format_num(Bry_.new_a7(Int_.Xto_str(val)));}
|
||||
public byte[] Format_num(byte[] num) {return Format_num(num, false);}
|
||||
public byte[] Format_num_by_long(long val) {return Format_num(Bry_.new_a7(Long_.Xto_str(val)));}
|
||||
public byte[] Format_num(int val) {return Format_num(Bry_.new_a7(Int_.Xto_str(val)));}
|
||||
public byte[] Format_num(byte[] num) {return Format_num(num, false);}
|
||||
public byte[] Format_num(byte[] num, boolean skip_commafy) {
|
||||
if (!skip_commafy) {
|
||||
num = Commafy(num);
|
||||
|
||||
@@ -17,9 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
public class Vnt_mnu_grp {
|
||||
private final List_adp list = List_adp_.new_();
|
||||
private final Ordered_hash list = Ordered_hash_.new_bry_();
|
||||
public int Len() {return list.Count();}
|
||||
public boolean Has(byte[] key) {return list.Has(key);}
|
||||
public Vnt_mnu_itm Get_at(int i) {return (Vnt_mnu_itm)list.Get_at(i);}
|
||||
public void Add(Vnt_mnu_itm itm) {list.Add(itm);}
|
||||
public byte[] Text() {return text;} public void Text_(byte[] v) {text = v;} private byte[] text;
|
||||
public void Add(Vnt_mnu_itm itm) {list.Add_if_dupe_use_1st(itm.Key(), itm);}
|
||||
public Vnt_mnu_itm Get_by(byte[] key) {return (Vnt_mnu_itm)list.Get_by(key);}
|
||||
}
|
||||
|
||||
@@ -17,14 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg {
|
||||
private Vnt_mnu_grp grp;
|
||||
private final Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr();
|
||||
public void Init(Vnt_mnu_grp grp, byte[] page_href, byte[] page_vnt) {
|
||||
this.grp = grp;
|
||||
itm_fmtr.Init(grp, page_href, page_vnt);
|
||||
private Vnt_mnu_grp grp; private byte[] page_vnt;
|
||||
public void Init(Vnt_mnu_grp grp, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {
|
||||
this.grp = grp; this.page_vnt = page_vnt;
|
||||
itm_fmtr.Init(grp, wiki_domain, page_href, page_vnt);
|
||||
}
|
||||
public void XferAry(Bry_bfr bfr, int idx) {
|
||||
fmtr.Bld_bfr_many(bfr, grp.Text(), itm_fmtr);
|
||||
Vnt_mnu_itm mnu_itm = grp.Get_by(page_vnt);
|
||||
fmtr.Bld_bfr_many(bfr, mnu_itm == null ? Bry_.Empty : mnu_itm.Text(), itm_fmtr);
|
||||
}
|
||||
private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
|
||||
( ""
|
||||
@@ -39,21 +40,21 @@ public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg {
|
||||
);
|
||||
}
|
||||
class Xolg_vnt_itm_fmtr implements Bry_fmtr_arg {
|
||||
private Vnt_mnu_grp grp; private byte[] page_href, page_vnt;
|
||||
public void Init(Vnt_mnu_grp grp, byte[] page_href, byte[] page_vnt) {this.grp = grp; this.page_href = page_href; this.page_vnt = page_vnt;}
|
||||
private Vnt_mnu_grp grp; private byte[] wiki_domain, page_href, page_vnt;
|
||||
public void Init(Vnt_mnu_grp grp, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {this.grp = grp; this.wiki_domain = wiki_domain; this.page_href = page_href; this.page_vnt = page_vnt;}
|
||||
public void XferAry(Bry_bfr bfr, int idx) {
|
||||
int len = grp.Len();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Vnt_mnu_itm itm = grp.Get_at(i);
|
||||
boolean itm_is_selected = Bry_.Eq(itm.Key(), page_vnt);
|
||||
byte[] itm_cls_selected = itm_is_selected ? Itm_cls_selected_y : Bry_.Empty;
|
||||
fmtr.Bld_bfr_many(bfr, i, itm_cls_selected, itm.Key(), itm.Text(), page_href);
|
||||
fmtr.Bld_bfr_many(bfr, i, itm_cls_selected, wiki_domain, itm.Key(), itm.Text(), page_href);
|
||||
}
|
||||
}
|
||||
private static final byte[] Itm_cls_selected_y = Bry_.new_a7(" class='selected'");
|
||||
private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
|
||||
private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last // NOTE: using "/site/zh.w/zh-hans/A" instead of "/zh-hans/A" b/c it is easier for href_parser; if /site/ ever needs to truly mean "not-this-site", then change this to "/lang/"; DATE:2015-07-30
|
||||
( ""
|
||||
, " <li id='ca-varlang-~{itm_idx}'~{itm_cls_selected}><a href='/wiki/~{itm_href}?xowa_vnt=~{itm_lang}' lang='~{itm_lang}' hreflang='~{itm_lang}'>~{itm_text}</a></li>"
|
||||
), "itm_idx", "itm_cls_selected", "itm_lang", "itm_text", "itm_href"
|
||||
, " <li id='ca-varlang-~{itm_idx}'~{itm_cls_selected}><a href='/site/~{wiki_domain}/~{itm_lang}/~{itm_href}' lang='~{itm_lang}' hreflang='~{itm_lang}' class='xowa-hover-off'>~{itm_text}</a></li>"
|
||||
), "itm_idx", "itm_cls_selected", "wiki_domain", "itm_lang", "itm_text", "itm_href"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -20,23 +20,23 @@ import org.junit.*;
|
||||
public class Vnt_mnu_grp_fmtr_tst {
|
||||
@Before public void init() {fxt.Clear();} private final Vnt_mnu_grp_fmtr_fxt fxt = new Vnt_mnu_grp_fmtr_fxt();
|
||||
@Test public void Basic() {
|
||||
fxt.Test_to_str("Earth", "zh-hk", String_.Concat_lines_nl_skip_last
|
||||
( ""
|
||||
, " <div id='p-variants' role='navigation' class='vectorMenu' aria-labelledby='p-variants-label'>"
|
||||
, " <h3 id='p-variants-label'><span>Choose lang</span><a href='#'></a></h3>"
|
||||
, " <div class='menu'>"
|
||||
, " <ul>"
|
||||
, " <li id='ca-varlang-0'><a href='/wiki/Earth?xowa_vnt=zh-hans' lang='zh-hans' hreflang='zh-hans'>Simplified</a></li>"
|
||||
, " <li id='ca-varlang-1'><a href='/wiki/Earth?xowa_vnt=zh-hant' lang='zh-hant' hreflang='zh-hant'>Traditional</a></li>"
|
||||
, " <li id='ca-varlang-2'><a href='/wiki/Earth?xowa_vnt=zh-cn' lang='zh-cn' hreflang='zh-cn'>China</a></li>"
|
||||
, " <li id='ca-varlang-3' class='selected'><a href='/wiki/Earth?xowa_vnt=zh-hk' lang='zh-hk' hreflang='zh-hk'>Hong Kong</a></li>"
|
||||
, " <li id='ca-varlang-4'><a href='/wiki/Earth?xowa_vnt=zh-mo' lang='zh-mo' hreflang='zh-mo'>Macau</a></li>"
|
||||
, " <li id='ca-varlang-5'><a href='/wiki/Earth?xowa_vnt=zh-sg' lang='zh-sg' hreflang='zh-sg'>Singapore</a></li>"
|
||||
, " <li id='ca-varlang-6'><a href='/wiki/Earth?xowa_vnt=zh-tw' lang='zh-tw' hreflang='zh-tw'>Taiwan</a></li>"
|
||||
, " </ul>"
|
||||
, " </div>"
|
||||
, " </div>"
|
||||
));
|
||||
// fxt.Test_to_str("Earth", "zh-hk", String_.Concat_lines_nl_skip_last
|
||||
// ( ""
|
||||
// , " <div id='p-variants' role='navigation' class='vectorMenu' aria-labelledby='p-variants-label'>"
|
||||
// , " <h3 id='p-variants-label'><span>Choose lang</span><a href='#'></a></h3>"
|
||||
// , " <div class='menu'>"
|
||||
// , " <ul>"
|
||||
// , " <li id='ca-varlang-0'><a href='/wiki/Earth?xowa_vnt=zh-hans' lang='zh-hans' hreflang='zh-hans'>Simplified</a></li>"
|
||||
// , " <li id='ca-varlang-1'><a href='/wiki/Earth?xowa_vnt=zh-hant' lang='zh-hant' hreflang='zh-hant'>Traditional</a></li>"
|
||||
// , " <li id='ca-varlang-2'><a href='/wiki/Earth?xowa_vnt=zh-cn' lang='zh-cn' hreflang='zh-cn'>China</a></li>"
|
||||
// , " <li id='ca-varlang-3' class='selected'><a href='/wiki/Earth?xowa_vnt=zh-hk' lang='zh-hk' hreflang='zh-hk'>Hong Kong</a></li>"
|
||||
// , " <li id='ca-varlang-4'><a href='/wiki/Earth?xowa_vnt=zh-mo' lang='zh-mo' hreflang='zh-mo'>Macau</a></li>"
|
||||
// , " <li id='ca-varlang-5'><a href='/wiki/Earth?xowa_vnt=zh-sg' lang='zh-sg' hreflang='zh-sg'>Singapore</a></li>"
|
||||
// , " <li id='ca-varlang-6'><a href='/wiki/Earth?xowa_vnt=zh-tw' lang='zh-tw' hreflang='zh-tw'>Taiwan</a></li>"
|
||||
// , " </ul>"
|
||||
// , " </div>"
|
||||
// , " </div>"
|
||||
// ));
|
||||
}
|
||||
}
|
||||
class Vnt_mnu_grp_fmtr_fxt {
|
||||
@@ -46,7 +46,6 @@ class Vnt_mnu_grp_fmtr_fxt {
|
||||
}
|
||||
public void Init_grp(String text, String... langs) {
|
||||
vnt_grp = new Vnt_mnu_grp();
|
||||
vnt_grp.Text_(Bry_.new_u8(text));
|
||||
int len = langs.length;
|
||||
String lang_code = "";
|
||||
for (int i = 0; i < len; ++i) {
|
||||
@@ -62,7 +61,7 @@ class Vnt_mnu_grp_fmtr_fxt {
|
||||
public void Test_to_str(String page_href, String selected_vnt, String expd) {
|
||||
Vnt_mnu_grp_fmtr vnt_grp_fmtr = new Vnt_mnu_grp_fmtr();
|
||||
Bry_bfr bfr = Bry_bfr.new_();
|
||||
vnt_grp_fmtr.Init(vnt_grp, Bry_.new_u8(page_href), Bry_.new_u8(selected_vnt));
|
||||
vnt_grp_fmtr.Init(vnt_grp, Bry_.new_u8(page_href), Bry_.new_a7("zh.wikipedia.org"), Bry_.new_u8(selected_vnt));
|
||||
vnt_grp_fmtr.XferAry(bfr, 0);
|
||||
Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear());
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xow
|
||||
import gplx.core.btries.*; import gplx.intl.*;
|
||||
import gplx.xowa.langs.cnvs.*;
|
||||
public class Xol_vnt_converter {
|
||||
private Btrie_slim_mgr trie = Btrie_slim_mgr.cs_();
|
||||
private Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
|
||||
public Xol_vnt_converter(Xol_vnt_itm owner) {this.owner = owner;}
|
||||
public byte[] Owner_key() {return owner.Key();}
|
||||
public Xol_vnt_itm Owner() {return owner;} private Xol_vnt_itm owner;
|
||||
@@ -49,6 +49,7 @@ public class Xol_vnt_converter {
|
||||
pos = trie.Match_pos();
|
||||
}
|
||||
}
|
||||
if (!matched) bfr.Add(src); // no convert; make sure to add back src, else bfr will be blank
|
||||
return matched;
|
||||
}
|
||||
public void Rebuild() {Clear(); Build();}
|
||||
|
||||
@@ -27,12 +27,11 @@ public class Xol_vnt_mgr implements GfoInvkAble {
|
||||
public Vnt_mnu_grp_fmtr Vnt_mnu_fmtr() {return vnt_mnu_fmtr;} private final Vnt_mnu_grp_fmtr vnt_mnu_fmtr = new Vnt_mnu_grp_fmtr();
|
||||
public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {this.enabled = v;} private boolean enabled = false;
|
||||
public byte[] Cur_vnt() {return cur_vnt;} private byte[] cur_vnt = Bry_.Empty;
|
||||
private void Vnt_grp_(byte[][] ary) {
|
||||
public void Vnt_grp_(byte[][] ary) {
|
||||
int len = ary.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
byte[] vnt = ary[i];
|
||||
byte[] msg = lang.Msg_mgr().Itm_by_key_or_new(Bry_.Add(Msg_variantname, vnt)).Val();
|
||||
// byte[] msg = vnt;
|
||||
vnt_grp.Add(new Vnt_mnu_itm(vnt, msg));
|
||||
}
|
||||
}
|
||||
@@ -47,7 +46,7 @@ public class Xol_vnt_mgr implements GfoInvkAble {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (new_converter_ary_idx == -1) throw Err_.new_("lang.vnt", "uknown vnt", "key", v);
|
||||
if (new_converter_ary_idx == -1) throw Err_.new_("lang.vnt", "unknown vnt", "key", v);
|
||||
this.cur_vnt = v;
|
||||
this.cur_converter_ary_idx = new_converter_ary_idx;
|
||||
return this;
|
||||
@@ -90,14 +89,16 @@ public class Xol_vnt_mgr implements GfoInvkAble {
|
||||
return rv;
|
||||
}
|
||||
public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) { // REF.MW:LanguageConverter.php|findVariantLink
|
||||
int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt
|
||||
if (converted == 0) return Xowd_page_itm.Null; // ttl_bry has no conversions; exit;
|
||||
wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, true, 0, converted);
|
||||
for (int i = 0; i < converted; i++) {
|
||||
Xowd_page_itm page = (Xowd_page_itm)tmp_page_list.Get_at(i);
|
||||
if (page.Exists()) return page; // return 1st found page
|
||||
synchronized (tmp_page_list) {
|
||||
int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt
|
||||
if (converted == 0) return Xowd_page_itm.Null; // ttl_bry has no conversions; exit;
|
||||
wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, true, 0, converted);
|
||||
for (int i = 0; i < converted; i++) {
|
||||
Xowd_page_itm page = (Xowd_page_itm)tmp_page_list.Get_at(i);
|
||||
if (page.Exists()) return page; // return 1st found page
|
||||
}
|
||||
return Xowd_page_itm.Null;
|
||||
}
|
||||
return Xowd_page_itm.Null;
|
||||
}
|
||||
private int Convert_ttl__convert_each_vnt(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) {
|
||||
synchronized (tmp_page_list) {
|
||||
|
||||
@@ -31,7 +31,7 @@ class Xop_vnt_flag_lang_bldr {
|
||||
ary = new Xop_vnt_flag_lang_itm[len];
|
||||
ary_len = len;
|
||||
}
|
||||
public Btrie_slim_mgr Trie() {return trie;} private Btrie_slim_mgr trie = Btrie_slim_mgr.ci_ascii_(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
|
||||
public Btrie_slim_mgr Trie() {return trie;} private Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
|
||||
public void Add(Xop_vnt_flag_lang_itm itm) {
|
||||
int idx = itm.Idx();
|
||||
if (ary[idx] == null) {
|
||||
|
||||
@@ -101,11 +101,11 @@ class Xop_vnt_flag_parser {
|
||||
private static Btrie_fast_mgr flag_trie = Xop_vnt_flag_.Trie;
|
||||
// private static final byte Dlm_tid_bgn = 0, Dlm_tid_end = 1, Dlm_tid_pipe = 2, Dlm_tid_colon = 3, Dlm_tid_semic = 4, Dlm_tid_kv = 5;
|
||||
// private static Btrie_fast_mgr dlm_trie = Btrie_fast_mgr.cs_()
|
||||
// .Add_bry_bval(Xop_vnt_lxr_.Hook_bgn , Dlm_tid_bgn)
|
||||
// .Add_bry_bval(Xop_vnt_lxr_.Hook_end , Dlm_tid_end)
|
||||
// .Add_bry_bval(Byte_ascii.Pipe , Dlm_tid_pipe)
|
||||
// .Add_bry_bval(Byte_ascii.Colon , Dlm_tid_colon)
|
||||
// .Add_bry_bval(Byte_ascii.Semic , Dlm_tid_semic)
|
||||
// .Add_bry_bval(Bry_.new_a7("=>") , Dlm_tid_kv)
|
||||
// .Add_bry_byte(Xop_vnt_lxr_.Hook_bgn , Dlm_tid_bgn)
|
||||
// .Add_bry_byte(Xop_vnt_lxr_.Hook_end , Dlm_tid_end)
|
||||
// .Add_bry_byte(Byte_ascii.Pipe , Dlm_tid_pipe)
|
||||
// .Add_bry_byte(Byte_ascii.Colon , Dlm_tid_colon)
|
||||
// .Add_bry_byte(Byte_ascii.Semic , Dlm_tid_semic)
|
||||
// .Add_bry_byte(Bry_.new_a7("=>") , Dlm_tid_kv)
|
||||
// ;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class Xop_vnt_rules_parser {
|
||||
private byte[] cur_macro_bry = null;
|
||||
private byte[] cur_lang_bry = null;
|
||||
public Xop_vnt_rules_parser(Xol_vnt_mgr vnt_mgr) {
|
||||
trie = Btrie_slim_mgr.ci_ascii_(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
|
||||
trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
|
||||
Xol_vnt_converter[] ary = vnt_mgr.Converter_ary();
|
||||
int ary_len = ary.length;
|
||||
for (int i = 0; i < ary_len; i++) {
|
||||
|
||||
Reference in New Issue
Block a user