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

v2.11.1.1

This commit is contained in:
gnosygnu
2015-11-01 20:50:05 -05:00
parent 4f43f51b18
commit b990ec409f
858 changed files with 6758 additions and 4187 deletions

View File

@@ -85,5 +85,5 @@ public class Xow_ns_ {
public static final String Ns_name_wikipedia = "Wikipedia";
public static final byte[] Ns_name_main_bry = Bry_.new_a7(Key_main);
public static final byte[] Ns_prefix_main = Bry_.new_a7("Main:");
private static Xow_ns Canonical_new_(int id, String name) {return new Xow_ns(id, Xow_ns_case_.Id_1st, Bry_.new_a7(name), false);} // NOTE: for id/name reference only; case_match and alias does not matter;
private static Xow_ns Canonical_new_(int id, String name) {return new Xow_ns(id, Xow_ns_case_.Tid__1st, Bry_.new_a7(name), false);} // NOTE: for id/name reference only; case_match and alias does not matter;
}

View File

@@ -17,19 +17,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
public class Xow_ns_case_ {
public static final byte Id_all = 0, Id_1st = 1;
public static final String Key_all = "case-sensitive", Key_1st = "first-letter";
public static final byte[] Bry__all = Bry_.new_a7(Key_all), Bry__1st = Bry_.new_a7(Key_1st);
public static byte parse(String s) {
if (String_.Eq(s, Key_1st)) return Id_1st;
else if (String_.Eq(s, Key_all)) return Id_all;
public static final byte Tid__all = 0, Tid__1st = 1;
public static final String Key__all = "case-sensitive", Key__1st = "first-letter";
public static final byte[] Bry__all = Bry_.new_a7(Key__all), Bry__1st = Bry_.new_a7(Key__1st);
public static byte To_tid(String s) {
if (String_.Eq(s, Key__1st)) return Tid__1st;
else if (String_.Eq(s, Key__all)) return Tid__all;
else throw Err_.new_unhandled(s);
}
public static String To_str(byte uid) {
switch (uid) {
case Id_all: return Key_all;
case Id_1st: return Key_1st;
default: throw Err_.new_unhandled(uid);
public static String To_str(byte tid) {
switch (tid) {
case Tid__all: return Key__all;
case Tid__1st: return Key__1st;
default: throw Err_.new_unhandled(tid);
}
}
}

View File

@@ -71,15 +71,15 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
}
public Object Names_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get ns for a name with a ":"; EX: "Template:A" should return "Template" ns
int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end);
if (colon_pos == Bry_.NotFound) return null; // name does not have ":"; return;
if (colon_pos == Bry_find_.Not_found) return null; // name does not have ":"; return;
Object rv = name_hash.Get_by_mid(src, bgn, colon_pos);
return rv == null ? null : ((Xow_ns_mgr_name_itm)rv).Ns();
}
public int Tmpls_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get length of template name with a ":"; EX: "Template:A" returns 10; PERF
int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end);
if (colon_pos == Bry_.NotFound) return Bry_.NotFound;
if (colon_pos == Bry_find_.Not_found) return Bry_find_.Not_found;
Object o = tmpl_hash.Get_by_mid(src, bgn, colon_pos + 1); // +1 to include colon_pos
return o == null ? Bry_.NotFound : ((byte[])o).length;
return o == null ? Bry_find_.Not_found : ((byte[])o).length;
}
public void Aliases_clear() {aliases.Clear();}
public Xow_ns_mgr Aliases_add(int ns_id, String name) {
@@ -122,7 +122,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
}
private void Fix_project_talk(Xow_ns ns) {
byte[] ns_name = ns.Name_bry();
if (Bry_find_.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_.NotFound) return; // no $1 found; exit
if (Bry_find_.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_find_.Not_found) return; // no $1 found; exit
Xow_ns project_ns = ords[ns.Ord_subj_id()];
if (project_ns == null) return; // should warn or throw error; for now just exit
ns.Name_bry_(Bry_.Replace(ns_name, Project_talk_fmt_arg, project_ns.Name_bry()));
@@ -130,7 +130,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
private void Rebuild_hashes__add(Hash_adp_bry hash, Xow_ns ns, byte[] key) {
Xow_ns_mgr_name_itm ns_itm = new Xow_ns_mgr_name_itm(key, ns);
hash.Add_if_dupe_use_nth(key, ns_itm);
if (Bry_find_.Find_fwd(key, Byte_ascii.Underline) != Bry_.NotFound) // ns has _; add another entry for space; EX: Help_talk -> Help talk
if (Bry_find_.Find_fwd(key, Byte_ascii.Underline) != Bry_find_.Not_found) // ns has _; add another entry for space; EX: Help_talk -> Help talk
hash.Add_if_dupe_use_nth(Bry_.Replace(key, Byte_ascii.Underline, Byte_ascii.Space), ns_itm);
}
public Xow_ns_mgr Add_defaults() { // NOTE: needs to happen after File ns is added; i.e.: cannot be put in Xow_ns_mgr() {} ctor
@@ -140,7 +140,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
Aliases_add(gplx.xowa.xtns.scribunto.Scrib_xtn_mgr.Ns_id_module, "Module"); // always add "Module" ns; de.wikipedia.org has "Modul" defined in siteinfo.xml, but also uses Module
return this;
}
public Xow_ns_mgr Add_new(int nsId, String name) {return Add_new(nsId, Bry_.new_u8(name), Xow_ns_case_.Id_1st, false);} // for tst_ constructor
public Xow_ns_mgr Add_new(int nsId, String name) {return Add_new(nsId, Bry_.new_u8(name), Xow_ns_case_.Tid__1st, false);} // for tst_ constructor
public Xow_ns_mgr Add_new(int ns_id, byte[] name, byte caseMatchId, boolean alias) {
Bry_.Replace_all_direct(name, Byte_ascii.Space, Byte_ascii.Underline); // standardize on _; EX: User talk -> User_talk; DATE:2013-04-21
Xow_ns ns = new Xow_ns(ns_id, caseMatchId, name, alias);
@@ -155,7 +155,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
case Xow_ns_.Id_category:
ns_category = ns;
if (category_trie == null)
category_trie = Btrie_slim_mgr.new_(ns.Case_match() == Xow_ns_case_.Id_all);
category_trie = Btrie_slim_mgr.new_(ns.Case_match() == Xow_ns_case_.Tid__all);
category_trie.Add_obj(ns.Name_bry(), this);
break;
}
@@ -223,7 +223,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
}
}
private void Ords_sort_add(int ns_id) {
this.Add_new(ns_id, Bry_.new_by_int(ns_id), Xow_ns_case_.Id_1st, false); // NOTE: name and case_match are mostly useless defaults; note that in theory this proc should not be called (all siteInfos should be well-formed) but just in case, create items now so that Get_by_ord() does not fail
this.Add_new(ns_id, Int_.To_bry(ns_id), Xow_ns_case_.Tid__1st, false); // NOTE: name and case_match are mostly useless defaults; note that in theory this proc should not be called (all siteInfos should be well-formed) but just in case, create items now so that Get_by_ord() does not fail
}
public byte[] Bld_ttl_w_ns(Bry_bfr bfr, boolean text_form, boolean literalize, int ns_id, byte[] ttl) {
if (ns_id == Xow_ns_.Id_main) return ttl;

View File

@@ -54,7 +54,7 @@ class Xow_ns_fxt {
public Xow_ns_fxt Expd_id_subj_(boolean v) {expd_id_subj = v; return this;} private boolean expd_id_subj;
public Xow_ns_fxt Expd_id_talk_(boolean v) {expd_id_talk = v; return this;} private boolean expd_id_talk;
public void Test(int nsId) {
Xow_ns actl = new Xow_ns(nsId, Xow_ns_case_.Id_1st, Bry_.Empty, false);
Xow_ns actl = new Xow_ns(nsId, Xow_ns_case_.Tid__1st, Bry_.Empty, false);
Tfds.Eq(expd_id_subjId, actl.Id_subj_id());
Tfds.Eq(expd_id_talkId, actl.Id_talk_id());
Tfds.Eq(expd_id_subj, actl.Id_subj());