1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2015-08-03 00:10:03 -04:00
parent 9d63f03b3d
commit 34c34f227c
514 changed files with 4972 additions and 3910 deletions

View File

@@ -20,12 +20,12 @@ import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.langs
import gplx.xowa.xtns.scribunto.*;
public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
private Ordered_hash id_hash = Ordered_hash_.new_(); // hash for retrieval by id
private Hash_adp_bry name_hash; // hash for retrieval by name; note that ns names are case-insensitive "File:" == "fILe:"
private Hash_adp_bry tmpl_hash; // hash for retrieval by name; PERF for templates
private Hash_adp_bry name_hash; // hash for retrieval by name; note that ns names are case-insensitive "File:" == "fILe:"
private Hash_adp_bry tmpl_hash; // hash for retrieval by name; PERF for templates
private Ordered_hash aliases = Ordered_hash_.new_(); // hash to store aliases; used to populate name_hash;
public Xow_ns_mgr(Xol_case_mgr case_mgr) {
name_hash = Hash_adp_bry.ci_utf8_(case_mgr);
tmpl_hash = Hash_adp_bry.ci_utf8_(case_mgr);
name_hash = Hash_adp_bry.ci_u8(case_mgr);
tmpl_hash = Hash_adp_bry.ci_u8(case_mgr);
}
public Xow_ns_mgr Clear() {
name_hash.Clear();
@@ -222,7 +222,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_.XbyInt(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, 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
}
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;
@@ -254,7 +254,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
byte[] line = lines[i];
if (line.length == 0) continue;
byte[][] flds = Bry_.Split(line, Byte_ascii.Pipe);
int cur_id = Bry_.Xto_int_or(flds[0], Int_.MinValue);
int cur_id = Bry_.To_int_or(flds[0], Int_.MinValue);
this.Aliases_add(cur_id, String_.new_u8(flds[1]));
}
Ords_sort();

View File

@@ -35,7 +35,7 @@ public class Xow_ns_mgr_tst {
Tfds.Eq(10, fxt.Ns_mgr().Tmpls_get_w_colon(name, 0, name.length));
}
@Test public void Utf8() {// PURPOSE: handle different casings for ns_names; PAGE:ru.w:Портрет_итальянского_Ренессанса DATE:2014-07-04
Xow_ns_mgr ns_mgr = new Xow_ns_mgr(Xol_case_mgr_.Utf8());
Xow_ns_mgr ns_mgr = new Xow_ns_mgr(Xol_case_mgr_.U8());
ns_mgr.Add_new(1234, "Test");
ns_mgr.Add_new(1235, "файл");
fxt.Ns_mgr_(ns_mgr);
@@ -44,7 +44,7 @@ public class Xow_ns_mgr_tst {
}
}
class Xow_ns_mgr_fxt {
private Xow_ns_mgr ns_mgr = new Xow_ns_mgr(Xol_case_mgr_.Ascii());
private Xow_ns_mgr ns_mgr = new Xow_ns_mgr(Xol_case_mgr_.A7());
public Xow_ns_mgr Ns_mgr() {return ns_mgr;}
public void Ns_mgr_(Xow_ns_mgr v) {this.ns_mgr = v;}
public void Clear() {ns_mgr.Clear();}

View File

@@ -20,6 +20,7 @@ import gplx.core.primitives.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*;
import gplx.xowa.html.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.bridges.dbuis.tbls.*;
import gplx.xowa.urls.*;
public interface Xow_wiki extends Xow_ttl_parser {
boolean Type_is_edit();
Xoa_app App();
@@ -45,4 +46,5 @@ public interface Xow_wiki extends Xow_ttl_parser {
Xow_xwiki_mgr Xwiki_mgr();
Xow_wiki_props Props();
void Init_by_wiki();
Xoa_url_parser Utl__url_parser();
}

View File

@@ -25,11 +25,12 @@ public class Xow_wiki_props implements GfoInvkAble {
siteinfo_mainpage = main_page; // note that main_page came from <siteinfo>; store old value for record's sake
main_page = Xow_mainpage_finder.Find_or(wiki, siteinfo_mainpage); // get new main_page from mainpage_finder
}
public byte Protocol_tid() {return protocol_tid;} private final byte protocol_tid = gplx.core.net.Gfo_protocol_itm.Tid_https; // NOTE: default protocol to https; handles external links like [//a.org]; may need to be changed for wikia or other non-WMF wikis; DATE:2015-07-27
public byte[] Site_name() {return site_name;} private byte[] site_name = Bry_.Empty;
public byte[] ServerName() {return serverName;} public Xow_wiki_props ServerName_(byte[] v) {serverName = v; server = Bry_.Add(bry_http, v); return this;} private byte[] serverName = Bry_.new_a7("localhost");
public byte[] Server() {return server;} private byte[] server = Bry_.new_a7("http://localhost"); static final byte[] bry_http = Bry_.new_a7("http://");
public byte[] ArticlePath() {return articlePath;} public Xow_wiki_props ArticlePath_(byte[] v) {articlePath = v; return this;} private byte[] articlePath = Xoh_href_parser.Href_wiki_bry;
public byte[] ArticlePath() {return articlePath;} public Xow_wiki_props ArticlePath_(byte[] v) {articlePath = v; return this;} private byte[] articlePath = Xoh_href_.Bry__wiki;
public byte[] ScriptPath() {return scriptPath;} public Xow_wiki_props ScriptPath_(byte[] v) {scriptPath = v; return this;} private byte[] scriptPath = Bry_.new_a7("/wiki");
public byte[] StylePath() {return stylePath;} public Xow_wiki_props StylePath_(byte[] v) {stylePath = v; return this;} private byte[] stylePath = Bry_.new_a7("/wiki/skins");
public byte[] ContentLanguage() {return contentLanguage;} public Xow_wiki_props ContentLanguage_(byte[] v) {contentLanguage = v; return this;} private byte[] contentLanguage = Bry_.Empty;
@@ -49,10 +50,10 @@ public class Xow_wiki_props implements GfoInvkAble {
return this;
} private byte[] siteinfo_misc = Bry_.Empty;
public void Init_by_load(Xoa_app app, gplx.dbs.cfgs.Db_cfg_tbl cfg_tbl) {
if (app.Bldr__running()) return; // never load main_page during bldr; note that Init_by_load is called by bldr cmds like css; DATE:2015-07-24
this.main_page = cfg_tbl.Select_bry_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, null);
if (main_page == null) { // main_page not found
if (!app.Bldr__running()) // not building; note that Init_by_load is called by bldr cmds like css; DATE:2015-07-13
Xoa_app_.Usr_dlg().Warn_many("", "", "mw_props.load; main_page not found; conn=~{0}", cfg_tbl.Conn().Conn_info().Xto_api());
Xoa_app_.Usr_dlg().Warn_many("", "", "mw_props.load; main_page not found; conn=~{0}", cfg_tbl.Conn().Conn_info().Xto_api());
this.main_page = Xoa_page_.Main_page_bry;
}
}

View File

@@ -32,7 +32,7 @@ class Xow_wiki_fxt {
public void Test_getPageByTtl(String ttl_str, String expd) {
Xowe_wiki wiki = fxt.Wiki();
byte[] ttl_bry = Bry_.new_a7(ttl_str);
Xoa_url url = Xoa_url.blank_().Raw_(ttl_bry);
Xoa_url url = Xoa_url.new_(wiki.Domain_bry(), ttl_bry);
Xoa_ttl ttl = Xoa_ttl.parse_(wiki, ttl_bry);
Xoae_page actl = fxt.Wiki().Load_page_by_ttl(url, ttl);
if (expd == null) Tfds.Eq_true(actl.Missing());

View File

@@ -31,7 +31,7 @@ class Xowc_xtn_pages_fxt {
private Xow_ns_mgr ns_mgr;
private Xowc_xtn_pages cfg_pages;
public void Clear() {
ns_mgr = Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.Ascii());
ns_mgr = Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.A7());
cfg_pages = new Xowc_xtn_pages();
}
public Xowc_xtn_pages_fxt Init_ns(int id, String name) {

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa; import gplx.*;
public class Xowc_xtns implements GfoInvkAble {
private Hash_adp_bry hash = Hash_adp_bry.ci_ascii_();
private Hash_adp_bry hash = Hash_adp_bry.ci_a7();
public Xowc_xtns() {hash.Add(Xowc_xtn_pages.Xtn_key, itm_pages);}
public Xowc_xtn_pages Itm_pages() {return itm_pages;} private Xowc_xtn_pages itm_pages = new Xowc_xtn_pages();
public Object Get_by_key(byte[] key) {return hash.Get_by_bry(key);}

View File

@@ -26,12 +26,15 @@ import gplx.xowa.html.wtrs.*; import gplx.xowa.html.hzips.*; import gplx.xowa.ht
import gplx.xowa.setup.maints.*; import gplx.xowa.wikis.caches.*;
import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.tdbs.*;
public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
import gplx.xowa.urls.*;
public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj {
public Xowe_wiki(Xoae_app app, Xol_lang lang, Xow_ns_mgr ns_mgr, Xow_domain domain_itm, Io_url wiki_dir) {
this.ev_mgr = GfoEvMgr.new_(this);
this.app = app; this.lang = lang; this.ns_mgr = ns_mgr;
this.domain_itm = domain_itm; this.domain_str = domain_itm.Domain_str(); this.domain_bry = domain_itm.Domain_bry(); this.domain_tid = domain_itm.Domain_tid(); this.domain_abrv = Xow_wiki_alias.Build_alias(domain_itm);
fsys_mgr = new Xow_fsys_mgr(wiki_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str));
xwiki_mgr = new Xow_xwiki_mgr(this, app.Utl__url_parser().Url_parser());
this.url__parser = new Xoa_url_parser(this);
xwiki_mgr = new Xow_xwiki_mgr(this, url__parser.Url_parser());
xwiki_mgr.Add_full(domain_bry, domain_bry); // add full name to xwiki_mgr; needed for lookup in home ns; EX: [[en.wikipedia.org:Earth]]
this.html_mgr = new Xow_html_mgr(this);
this.html_mgr__hdump_rdr = new Xohd_hdump_rdr(app, this);
@@ -73,6 +76,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
maint_mgr = new Xow_maint_mgr(this);
cache_mgr = new Xow_cache_mgr(this);
}
public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr;
public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr;
public Xoa_ttl Ttl_parse(byte[] ttl) {return Xoa_ttl.parse_(this, ttl);}
public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) {return Xoa_ttl.parse_(this, ns_id, ttl);}
@@ -97,6 +101,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
public Xohd_hdump_rdr Html__hdump_rdr() {return html_mgr__hdump_rdr;} private final Xohd_hdump_rdr html_mgr__hdump_rdr;
public Xoh_page_wtr_mgr_base Html__page_wtr_mgr() {return html_mgr.Page_wtr_mgr();}
public boolean Html__css_installing() {return html__css_installing;} public void Html__css_installing_(boolean v) {html__css_installing = v;} private boolean html__css_installing;
public Xoa_url_parser Utl__url_parser() {return url__parser;} private final Xoa_url_parser url__parser;
public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private final Xow_xwiki_mgr xwiki_mgr;
public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props();
@@ -258,6 +263,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
log_bfr.Add("wiki.init.end");
app.Log_wtr().Log_to_session_direct(log_bfr.Xto_str());
init_in_process = false;
app.Api_root().Wikis().Get(domain_bry).Subscribe(this);
}
private void Html__hdump_enabled_(boolean v) {
this.html_mgr__hdump_enabled = v;
@@ -304,6 +310,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
else if (ctx.Match(k, Invk_domain)) return domain_str;
else if (ctx.Match(k, Invk_xtns)) return xtn_mgr;
else if (ctx.Match(k, Invk_hdump_enabled_)) this.html_mgr__hdump_enabled = m.ReadYn("v");
else if (ctx.Match(k, gplx.xowa.apis.xowa.wikis.langs.Xoap_lang_variants.Evt_current_changed)) lang.Vnt_mgr().Cur_vnt_(m.ReadBry("v"));
else return GfoInvkAble_.Rv_unhandled;
return this;
}