mirror of
https://github.com/gnosygnu/xowa.git
synced 2025-06-08 10:24:14 +00:00
Xomw: Complete conversion of XomwParser
This commit is contained in:
parent
dc87cdcb5e
commit
35bbd888ae
@ -1402,7 +1402,7 @@ public class XomwGlobalFunctions {
|
|||||||
*
|
*
|
||||||
* @see Message::__construct
|
* @see Message::__construct
|
||||||
*/
|
*/
|
||||||
public static XomwMessage wfMessage(Xomw_parser_env env, String key) {
|
public static XomwMessage wfMessage(XomwParserEnv env, String key) {
|
||||||
// function wfMessage( $key /*...*/ ) {
|
// function wfMessage( $key /*...*/ ) {
|
||||||
// $message = new Message( $key );
|
// $message = new Message( $key );
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import gplx.xowa.mediawiki.includes.parsers.lnkis.*;
|
|||||||
* P7: $html = HtmlArmor::getHtml($text);
|
* P7: $html = HtmlArmor::getHtml($text);
|
||||||
*/
|
*/
|
||||||
public class XomwLinker {
|
public class XomwLinker {
|
||||||
// private Xomw_parser_env env;
|
// private XomwParserEnv env;
|
||||||
private final Bry_bfr tmp = Bry_bfr_.New(), tmp_2 = Bry_bfr_.New();
|
private final Bry_bfr tmp = Bry_bfr_.New(), tmp_2 = Bry_bfr_.New();
|
||||||
private final Linker_rel_splitter splitter = new Linker_rel_splitter();
|
private final Linker_rel_splitter splitter = new Linker_rel_splitter();
|
||||||
private final XomwHtml html_utl = new XomwHtml();
|
private final XomwHtml html_utl = new XomwHtml();
|
||||||
@ -47,11 +47,11 @@ public class XomwLinker {
|
|||||||
, Img_class__thumbborder = Bry_.new_a7("thumbborder")
|
, Img_class__thumbborder = Bry_.new_a7("thumbborder")
|
||||||
, Img_class__thumbimage = Bry_.new_a7("thumbimage")
|
, Img_class__thumbimage = Bry_.new_a7("thumbimage")
|
||||||
;
|
;
|
||||||
private final Xomw_link_renderer link_renderer;
|
private final XomwLinkRenderer link_renderer;
|
||||||
public XomwLinker(Xomw_link_renderer link_renderer) {
|
public XomwLinker(XomwLinkRenderer link_renderer) {
|
||||||
this.link_renderer = link_renderer;
|
this.link_renderer = link_renderer;
|
||||||
}
|
}
|
||||||
public void Init_by_wiki(Xomw_parser_env env, Btrie_slim_mgr trie) {
|
public void Init_by_wiki(XomwParserEnv env, Btrie_slim_mgr trie) {
|
||||||
// this.env = env;
|
// this.env = env;
|
||||||
this.split_trail_trie = trie;
|
this.split_trail_trie = trie;
|
||||||
}
|
}
|
||||||
@ -331,7 +331,7 @@ public class XomwLinker {
|
|||||||
// @since 1.20
|
// @since 1.20
|
||||||
// @return String HTML for an image, with links, wrappers, etc.
|
// @return String HTML for an image, with links, wrappers, etc.
|
||||||
// XO.MW:SYNC:1.29; DATE:2017-02-08
|
// XO.MW:SYNC:1.29; DATE:2017-02-08
|
||||||
public void makeImageLink(Bry_bfr bfr, Xomw_parser_env env, Xomw_parser_ctx pctx, XomwParserIface parser, XomwTitle title, XomwFile file, Xomw_params_frame frameParams, Xomw_params_handler handlerParams, Object time, byte[] query, int widthOption) {
|
public void makeImageLink(Bry_bfr bfr, XomwParserEnv env, XomwParserCtx pctx, XomwParserIface parser, XomwTitle title, XomwFile file, Xomw_params_frame frameParams, Xomw_params_handler handlerParams, Object time, byte[] query, int widthOption) {
|
||||||
// XO.MW.HOOK:ImageBeforeProduceHTML
|
// XO.MW.HOOK:ImageBeforeProduceHTML
|
||||||
|
|
||||||
if (file != null && !file.allowInlineDisplay()) {
|
if (file != null && !file.allowInlineDisplay()) {
|
||||||
@ -534,7 +534,7 @@ public class XomwLinker {
|
|||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
// XO.MW:SYNC:1.29; DATE:2017-02-08
|
// XO.MW:SYNC:1.29; DATE:2017-02-08
|
||||||
private void makeThumbLink2(Bry_bfr bfr, Xomw_parser_env env, Xomw_parser_ctx pctx, XomwTitle title, XomwFile file, Xomw_params_frame frameParams, Xomw_params_handler handlerParams, Object time, byte[] query) {
|
private void makeThumbLink2(Bry_bfr bfr, XomwParserEnv env, XomwParserCtx pctx, XomwTitle title, XomwFile file, Xomw_params_frame frameParams, Xomw_params_handler handlerParams, Object time, byte[] query) {
|
||||||
boolean exists = file != null && file.exists();
|
boolean exists = file != null && file.exists();
|
||||||
|
|
||||||
int page = handlerParams.page;
|
int page = handlerParams.page;
|
||||||
|
@ -26,7 +26,7 @@ public class XomwLinker_NormalizeSubpageLinkTest {
|
|||||||
@Test public void Dot2__trailing() {fxt.Test__normalize_subpage_link("A/B/C" , "../../Z/" , "" , "A/Z" , "Z");}
|
@Test public void Dot2__trailing() {fxt.Test__normalize_subpage_link("A/B/C" , "../../Z/" , "" , "A/Z" , "Z");}
|
||||||
}
|
}
|
||||||
class XomwLinker_NormalizeSubpageLinkFxt {
|
class XomwLinker_NormalizeSubpageLinkFxt {
|
||||||
private final XomwLinker mgr = new XomwLinker(new gplx.xowa.mediawiki.includes.linkers.Xomw_link_renderer(new XomwSanitizer()));
|
private final XomwLinker mgr = new XomwLinker(new gplx.xowa.mediawiki.includes.linkers.XomwLinkRenderer(new XomwSanitizer()));
|
||||||
private final XomwLinker_NormalizeSubpageLink normalize_subpage_link = new XomwLinker_NormalizeSubpageLink();
|
private final XomwLinker_NormalizeSubpageLink normalize_subpage_link = new XomwLinker_NormalizeSubpageLink();
|
||||||
public void Test__normalize_subpage_link(String page_title_str, String link, String text, String expd_link, String expd_text) {
|
public void Test__normalize_subpage_link(String page_title_str, String link, String text, String expd_link, String expd_text) {
|
||||||
mgr.normalizeSubpageLink(normalize_subpage_link, XomwTitle.newFromText(Bry_.new_u8(page_title_str)), Bry_.new_u8(link), Bry_.new_u8(text));
|
mgr.normalizeSubpageLink(normalize_subpage_link, XomwTitle.newFromText(Bry_.new_u8(page_title_str)), Bry_.new_u8(link), Bry_.new_u8(text));
|
||||||
|
@ -21,13 +21,13 @@ public class XomwLinker_SplitTrailTest {
|
|||||||
@Test public void None() {fxt.Test__split_trail(" abc" , null , " abc");}
|
@Test public void None() {fxt.Test__split_trail(" abc" , null , " abc");}
|
||||||
}
|
}
|
||||||
class XomwLinker_SplitTrailFxt {
|
class XomwLinker_SplitTrailFxt {
|
||||||
private final XomwLinker linker = new XomwLinker(new gplx.xowa.mediawiki.includes.linkers.Xomw_link_renderer(new XomwSanitizer()));
|
private final XomwLinker linker = new XomwLinker(new gplx.xowa.mediawiki.includes.linkers.XomwLinkRenderer(new XomwSanitizer()));
|
||||||
private final Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
|
private final Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
|
||||||
public XomwLinker_SplitTrailFxt() {
|
public XomwLinker_SplitTrailFxt() {
|
||||||
String[] ary = new String[] {"a", "b", "c", "d", "e", "f"};
|
String[] ary = new String[] {"a", "b", "c", "d", "e", "f"};
|
||||||
for (String itm : ary)
|
for (String itm : ary)
|
||||||
trie.Add_str_str(itm, itm);
|
trie.Add_str_str(itm, itm);
|
||||||
linker.Init_by_wiki(new Xomw_parser_env(), trie);
|
linker.Init_by_wiki(new XomwParserEnv(), trie);
|
||||||
}
|
}
|
||||||
public void Test__split_trail(String trail_str, String expd_inside, String expd_trail) {
|
public void Test__split_trail(String trail_str, String expd_inside, String expd_trail) {
|
||||||
byte[][] split_trail = linker.splitTrail(Bry_.new_u8(trail_str));
|
byte[][] split_trail = linker.splitTrail(Bry_.new_u8(trail_str));
|
||||||
|
@ -1264,7 +1264,7 @@ public class XomwSanitizer {
|
|||||||
// * @return String
|
// * @return String
|
||||||
// * @private
|
// * @private
|
||||||
// */
|
// */
|
||||||
public void normalizeCharReferences(Xomw_parser_bfr pbfr) {
|
public void normalizeCharReferences(XomwParserBfr pbfr) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -21,7 +21,7 @@ public class XomwFile {
|
|||||||
* P8: normalizeExtension
|
* P8: normalizeExtension
|
||||||
* P8: normalizeTitle
|
* P8: normalizeTitle
|
||||||
*/
|
*/
|
||||||
private final Xomw_parser_env env;
|
private final XomwParserEnv env;
|
||||||
// // Bitfield values akin to the Revision deletion constants
|
// // Bitfield values akin to the Revision deletion constants
|
||||||
// static final DELETED_FILE = 1;
|
// static final DELETED_FILE = 1;
|
||||||
// static final DELETED_COMMENT = 2;
|
// static final DELETED_COMMENT = 2;
|
||||||
@ -265,7 +265,7 @@ public class XomwFile {
|
|||||||
// return strcmp(a.getName(), b.getName());
|
// return strcmp(a.getName(), b.getName());
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public XomwFile(Xomw_parser_env env, XomwTitle title, XomwFileRepo repo) {
|
public XomwFile(XomwParserEnv env, XomwTitle title, XomwFileRepo repo) {
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
// change title.getDBKey to normalizeTitle
|
// change title.getDBKey to normalizeTitle
|
||||||
|
@ -16,8 +16,8 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
package gplx.xowa.mediawiki.includes.filerepo.file; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.filerepo.*;
|
package gplx.xowa.mediawiki.includes.filerepo.file; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.filerepo.*;
|
||||||
import gplx.xowa.mediawiki.includes.parsers.*;
|
import gplx.xowa.mediawiki.includes.parsers.*;
|
||||||
public class XomwFileFinderMock implements XomwFileFinder {
|
public class XomwFileFinderMock implements XomwFileFinder {
|
||||||
private final Xomw_parser_env env;
|
private final XomwParserEnv env;
|
||||||
public XomwFileFinderMock(Xomw_parser_env env) {this.env = env;}
|
public XomwFileFinderMock(XomwParserEnv env) {this.env = env;}
|
||||||
private final Hash_adp_bry hash = Hash_adp_bry.cs();
|
private final Hash_adp_bry hash = Hash_adp_bry.cs();
|
||||||
public void Clear() {hash.Clear();}
|
public void Clear() {hash.Clear();}
|
||||||
public XomwFile Find_file(XomwTitle ttl) {
|
public XomwFile Find_file(XomwTitle ttl) {
|
||||||
|
@ -186,7 +186,7 @@ public class XomwLocalFile extends XomwFile {// static final VERSION = 10; // c
|
|||||||
// ];
|
// ];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public XomwLocalFile(Xomw_parser_env env, XomwTitle title, XomwFileRepo repo, int w, int h, byte[] mime) {super(env, title, repo);
|
public XomwLocalFile(XomwParserEnv env, XomwTitle title, XomwFileRepo repo, int w, int h, byte[] mime) {super(env, title, repo);
|
||||||
this.width = w;
|
this.width = w;
|
||||||
this.height = h;
|
this.height = h;
|
||||||
this.mime = mime;
|
this.mime = mime;
|
||||||
|
@ -28,7 +28,7 @@ import gplx.xowa.mediawiki.includes.htmls.*;
|
|||||||
* @see https://www.mediawiki.org/wiki/Manual:LinkRenderer
|
* @see https://www.mediawiki.org/wiki/Manual:LinkRenderer
|
||||||
* @since 1.28
|
* @since 1.28
|
||||||
*/
|
*/
|
||||||
public class Xomw_link_renderer {
|
public class XomwLinkRenderer {
|
||||||
/**
|
/**
|
||||||
* Whether to force the pretty article path
|
* Whether to force the pretty article path
|
||||||
*
|
*
|
||||||
@ -73,7 +73,7 @@ public class Xomw_link_renderer {
|
|||||||
// * @param TitleFormatter $titleFormatter
|
// * @param TitleFormatter $titleFormatter
|
||||||
// * @param LinkCache $linkCache
|
// * @param LinkCache $linkCache
|
||||||
// */
|
// */
|
||||||
public Xomw_link_renderer(XomwSanitizer sanitizer) { // TitleFormatter $titleFormatter, LinkCache $linkCache
|
public XomwLinkRenderer(XomwSanitizer sanitizer) { // TitleFormatter $titleFormatter, LinkCache $linkCache
|
||||||
// this.titleFormatter = $titleFormatter;
|
// this.titleFormatter = $titleFormatter;
|
||||||
// this.linkCache = $linkCache;
|
// this.linkCache = $linkCache;
|
||||||
this.sanitizer = sanitizer;
|
this.sanitizer = sanitizer;
|
@ -15,18 +15,18 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.linkers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.linkers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
// import org.junit.*;
|
// import org.junit.*;
|
||||||
// public class Xomw_link_renderer__tst {
|
// public class XomwLinkRendererTest {
|
||||||
// private final Xomw_link_renderer__fxt fxt = new Xomw_link_renderer__fxt();
|
// private final XomwLinkRendererFxt fxt = new XomwLinkRendererFxt();
|
||||||
/*
|
/*
|
||||||
Make_broken_link
|
Make_broken_link
|
||||||
target.Has_fragment()
|
target.Has_fragment()
|
||||||
*/
|
*/
|
||||||
// }
|
// }
|
||||||
// class Xomw_link_renderer__fxt {
|
// class XomwLinkRendererFxt {
|
||||||
// private final Xomw_link_renderer wkr = new Xomw_link_renderer(new Xomw_parser());
|
// private final XomwLinkRenderer wkr = new XomwLinkRenderer(new Xomw_parser());
|
||||||
// public void Test__parse(String src_str, String expd) {
|
// public void Test__parse(String src_str, String expd) {
|
||||||
// byte[] src_bry = Bry_.new_u8(src_str);
|
// byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
// wkr.Replace_external_links(new Xomw_parser_ctx(), pbfr.Init(src_bry));
|
// wkr.Replace_external_links(new XomwParserCtx(), pbfr.Init(src_bry));
|
||||||
// if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
// if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
||||||
// Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
// Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
||||||
// }
|
// }
|
@ -30,7 +30,7 @@ public class XomwImageHandlerTest {
|
|||||||
class XomwImageHandler_fxt {
|
class XomwImageHandler_fxt {
|
||||||
private final XomwImageHandler handler;
|
private final XomwImageHandler handler;
|
||||||
private final XomwFileRepo repo = new XomwFileRepo(Bry_.new_a7("/orig"), Bry_.new_a7("/thumb"));
|
private final XomwFileRepo repo = new XomwFileRepo(Bry_.new_a7("/orig"), Bry_.new_a7("/thumb"));
|
||||||
private final Xomw_parser_env env = new Xomw_parser_env();
|
private final XomwParserEnv env = new XomwParserEnv();
|
||||||
private XomwFile file;
|
private XomwFile file;
|
||||||
public XomwImageHandler_fxt() {
|
public XomwImageHandler_fxt() {
|
||||||
handler = new XomwTransformationalImageHandler(Bry_.new_a7("test_handler"));
|
handler = new XomwTransformationalImageHandler(Bry_.new_a7("test_handler"));
|
||||||
|
@ -261,11 +261,11 @@ public class XomwLinkHolderArray {
|
|||||||
*
|
*
|
||||||
* @param String $text
|
* @param String $text
|
||||||
*/
|
*/
|
||||||
public boolean replace(Xomw_parser_bfr pbfr) {
|
public boolean replace(XomwParserBfr pbfr) {
|
||||||
return this.replaceInternal(pbfr);
|
return this.replaceInternal(pbfr);
|
||||||
// $this->replaceInterwiki( $text );
|
// $this->replaceInterwiki( $text );
|
||||||
}
|
}
|
||||||
public byte[] replace(Xomw_parser_bfr pbfr, byte[] text) {
|
public byte[] replace(XomwParserBfr pbfr, byte[] text) {
|
||||||
boolean rv = this.replace(pbfr.Init(text));
|
boolean rv = this.replace(pbfr.Init(text));
|
||||||
return rv ? pbfr.Trg().To_bry_and_clear() : pbfr.Src().To_bry_and_clear();
|
return rv ? pbfr.Trg().To_bry_and_clear() : pbfr.Src().To_bry_and_clear();
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ public class XomwLinkHolderArray {
|
|||||||
* Replace @gplx.Internal protected links
|
* Replace @gplx.Internal protected links
|
||||||
* @param String $text
|
* @param String $text
|
||||||
*/
|
*/
|
||||||
private boolean replaceInternal(Xomw_parser_bfr pbfr) {
|
private boolean replaceInternal(XomwParserBfr pbfr) {
|
||||||
if (internals.Len() == 0) {
|
if (internals.Len() == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -285,7 +285,7 @@ public class XomwLinkHolderArray {
|
|||||||
// $colours = [];
|
// $colours = [];
|
||||||
// $linkCache = LinkCache::singleton();
|
// $linkCache = LinkCache::singleton();
|
||||||
// $output = this.parent->getOutput();
|
// $output = this.parent->getOutput();
|
||||||
Xomw_link_renderer linkRenderer = this.parent.getLinkRenderer();
|
XomwLinkRenderer linkRenderer = this.parent.getLinkRenderer();
|
||||||
//
|
//
|
||||||
// $dbr = wfGetDB( DB_REPLICA );
|
// $dbr = wfGetDB( DB_REPLICA );
|
||||||
//
|
//
|
||||||
|
@ -24,8 +24,8 @@ public class XomwLinkHolderArrayTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
class XomwLinkHolderArrayFxt {
|
class XomwLinkHolderArrayFxt {
|
||||||
private final XomwLinkHolderArray holders = new XomwLinkHolderArray(new Xomw_parser());
|
private final XomwLinkHolderArray holders = new XomwLinkHolderArray(new XomwParser());
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private boolean apos = true;
|
private boolean apos = true;
|
||||||
public XomwLinkHolderArrayFxt() {
|
public XomwLinkHolderArrayFxt() {
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
import gplx.core.btries.*;
|
import gplx.core.btries.*;
|
||||||
|
import gplx.core.net.*;
|
||||||
import gplx.xowa.mediawiki.includes.htmls.*;
|
import gplx.xowa.mediawiki.includes.htmls.*;
|
||||||
import gplx.xowa.mediawiki.includes.linkers.*;
|
import gplx.xowa.mediawiki.includes.linkers.*;
|
||||||
import gplx.xowa.mediawiki.includes.parsers.tables.*;
|
import gplx.xowa.mediawiki.includes.parsers.tables.*;
|
||||||
@ -252,11 +253,13 @@ public class XomwParser implements XomwParserIface {
|
|||||||
/**
|
/**
|
||||||
* @var LinkRenderer
|
* @var LinkRenderer
|
||||||
*/
|
*/
|
||||||
private Xomw_link_renderer mLinkRenderer;
|
private XomwLinkRenderer mLinkRenderer;
|
||||||
|
|
||||||
|
private int mMarkerIndex = 0;
|
||||||
|
|
||||||
// XOWA
|
// XOWA
|
||||||
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||||
private final Xomw_parser_env env = new Xomw_parser_env();
|
private final XomwParserEnv env = new XomwParserEnv();
|
||||||
private final XomwSanitizer sanitizer = new XomwSanitizer();
|
private final XomwSanitizer sanitizer = new XomwSanitizer();
|
||||||
private final Xomw_table_wkr tableWkr;
|
private final Xomw_table_wkr tableWkr;
|
||||||
private final Xomw_hr_wkr hrWkr = new Xomw_hr_wkr();
|
private final Xomw_hr_wkr hrWkr = new Xomw_hr_wkr();
|
||||||
@ -274,7 +277,10 @@ public class XomwParser implements XomwParserIface {
|
|||||||
private static Xomw_regex_boundary regex_boundary;
|
private static Xomw_regex_boundary regex_boundary;
|
||||||
private static Xomw_regex_url regex_url;
|
private static Xomw_regex_url regex_url;
|
||||||
private final Btrie_rv trv = new Btrie_rv();
|
private final Btrie_rv trv = new Btrie_rv();
|
||||||
// private int marker_index = 0;
|
private final Bry_bfr tmp = Bry_bfr_.New();
|
||||||
|
|
||||||
|
public XomwSanitizer Sanitizer() {return sanitizer;}
|
||||||
|
public XomwStripState Strip_state() {return mStripState;}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * @param array $conf
|
// * @param array $conf
|
||||||
@ -302,7 +308,7 @@ public class XomwParser implements XomwParserIface {
|
|||||||
// wfDebug(__CLASS__ . ": using preprocessor: {this.mPreprocessorClass}\n");
|
// wfDebug(__CLASS__ . ": using preprocessor: {this.mPreprocessorClass}\n");
|
||||||
// }
|
// }
|
||||||
private final Btrie_slim_mgr protocols_trie;
|
private final Btrie_slim_mgr protocols_trie;
|
||||||
public Xomw_parser_env Env() {return env;}
|
public XomwParserEnv Env() {return env;}
|
||||||
public Xomw_lnki_wkr Lnki_wkr() {return lnkiWkr;}
|
public Xomw_lnki_wkr Lnki_wkr() {return lnkiWkr;}
|
||||||
public XomwLinker Linker() {return linker;} private final XomwLinker linker;
|
public XomwLinker Linker() {return linker;} private final XomwLinker linker;
|
||||||
public byte[] Get_external_link_rel;
|
public byte[] Get_external_link_rel;
|
||||||
@ -318,9 +324,9 @@ public class XomwParser implements XomwParserIface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mLinkRenderer = new Xomw_link_renderer(sanitizer);
|
this.mLinkRenderer = new XomwLinkRenderer(sanitizer);
|
||||||
this.linker = new XomwLinker(mLinkRenderer);
|
this.linker = new XomwLinker(mLinkRenderer);
|
||||||
this.protocols_trie = Xomw_parser.Protocols__dflt();
|
this.protocols_trie = XomwParser.Protocols__dflt();
|
||||||
this.mLinkHolders = new XomwLinkHolderArray(this);
|
this.mLinkHolders = new XomwLinkHolderArray(this);
|
||||||
|
|
||||||
this.tableWkr = new Xomw_table_wkr(tmp_bfr, sanitizer, mStripState);
|
this.tableWkr = new Xomw_table_wkr(tmp_bfr, sanitizer, mStripState);
|
||||||
@ -458,8 +464,8 @@ public class XomwParser implements XomwParserIface {
|
|||||||
// $text, Title $title, ParserOptions $options,
|
// $text, Title $title, ParserOptions $options,
|
||||||
// $linestart = true, $clearState = true, $revid = null
|
// $linestart = true, $clearState = true, $revid = null
|
||||||
// ) {
|
// ) {
|
||||||
public void parse(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx,byte[] text, XomwTitle title, XomwParserOptions options) {this.parse(pbfr, pctx, text, title, options, true, true, -1);}
|
public void parse(XomwParserBfr pbfr, XomwParserCtx pctx,byte[] text, XomwTitle title, XomwParserOptions options) {this.parse(pbfr, pctx, text, title, options, true, true, -1);}
|
||||||
public void parse(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx,
|
public void parse(XomwParserBfr pbfr, XomwParserCtx pctx,
|
||||||
byte[] text, XomwTitle title, XomwParserOptions options,
|
byte[] text, XomwTitle title, XomwParserOptions options,
|
||||||
boolean linestart, boolean clearState, int revid
|
boolean linestart, boolean clearState, int revid
|
||||||
) {
|
) {
|
||||||
@ -985,14 +991,14 @@ public class XomwParser implements XomwParserIface {
|
|||||||
* @since 1.28
|
* @since 1.28
|
||||||
* @return LinkRenderer
|
* @return LinkRenderer
|
||||||
*/
|
*/
|
||||||
public Xomw_link_renderer getLinkRenderer() {
|
public XomwLinkRenderer getLinkRenderer() {
|
||||||
if (this.mLinkRenderer == null) {
|
if (this.mLinkRenderer == null) {
|
||||||
// this.mLinkRenderer = XomwMediaWikiServices.getInstance()
|
// this.mLinkRenderer = XomwMediaWikiServices.getInstance()
|
||||||
// .getLinkRendererFactory()->create();
|
// .getLinkRendererFactory()->create();
|
||||||
// this.mLinkRenderer->setStubThreshold(
|
// this.mLinkRenderer->setStubThreshold(
|
||||||
// this.getOptions()->getStubThreshold()
|
// this.getOptions()->getStubThreshold()
|
||||||
// );
|
// );
|
||||||
this.mLinkRenderer = new Xomw_link_renderer(sanitizer);
|
this.mLinkRenderer = new XomwLinkRenderer(sanitizer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.mLinkRenderer;
|
return this.mLinkRenderer;
|
||||||
@ -1092,23 +1098,23 @@ public class XomwParser implements XomwParserIface {
|
|||||||
// public function getStripList() {
|
// public function getStripList() {
|
||||||
// return this.mStripList;
|
// return this.mStripList;
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// /**
|
/**
|
||||||
// * Add an item to the strip state
|
* Add an item to the strip state
|
||||||
// * Returns the unique tag which must be inserted into the stripped text
|
* Returns the unique tag which must be inserted into the stripped text
|
||||||
// * The tag will be replaced with the original text in unstrip()
|
* The tag will be replaced with the original text in unstrip()
|
||||||
// *
|
*
|
||||||
// * @param String $text
|
* @param String $text
|
||||||
// *
|
*
|
||||||
// * @return String
|
* @return String
|
||||||
// */
|
*/
|
||||||
// public function insertStripItem($text) {
|
public byte[] Insert_strip_item(byte[] text) {
|
||||||
// $marker = self::MARKER_PREFIX . "-item-{this.mMarkerIndex}-" . self::MARKER_SUFFIX;
|
byte[] marker = tmp.Add_bry_many(MARKER_PREFIX, STRIP_ITEM).Add_int_variable(this.mMarkerIndex).Add(MARKER_SUFFIX).To_bry_and_clear();
|
||||||
// this.mMarkerIndex++;
|
this.mMarkerIndex++;
|
||||||
// this.mStripState->addGeneral($marker, $text);
|
this.mStripState.addGeneral(marker, text);
|
||||||
// return $marker;
|
return marker;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
/**
|
/**
|
||||||
* parse the wiki syntax used to render tables
|
* parse the wiki syntax used to render tables
|
||||||
*
|
*
|
||||||
@ -1132,8 +1138,8 @@ public class XomwParser implements XomwParserIface {
|
|||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
// isMain=tru
|
// isMain=tru
|
||||||
public void internalParse(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx, byte[] text) {internalParse(pbfr, pctx, text, true, false);}
|
public void internalParse(XomwParserBfr pbfr, XomwParserCtx pctx, byte[] text) {internalParse(pbfr, pctx, text, true, false);}
|
||||||
public void internalParse(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx, byte[] text, boolean isMain, boolean frame) {
|
public void internalParse(XomwParserBfr pbfr, XomwParserCtx pctx, byte[] text, boolean isMain, boolean frame) {
|
||||||
pbfr.Init(text);
|
pbfr.Init(text);
|
||||||
// $origText = text;
|
// $origText = text;
|
||||||
|
|
||||||
@ -1185,7 +1191,7 @@ public class XomwParser implements XomwParserIface {
|
|||||||
|
|
||||||
// replaceInternalLinks may sometimes leave behind
|
// replaceInternalLinks may sometimes leave behind
|
||||||
// absolute URLs, which have to be masked to hide them from replaceExternalLinks
|
// absolute URLs, which have to be masked to hide them from replaceExternalLinks
|
||||||
Xomw_parser_bfr_.Replace(pbfr, Bry__marker__noparse, Bry_.Empty); // $text = str_replace(self::MARKER_PREFIX . 'NOPARSE', '', $text);
|
XomwParserBfr_.Replace(pbfr, Bry__marker__noparse, Bry_.Empty); // $text = str_replace(self::MARKER_PREFIX . 'NOPARSE', '', $text);
|
||||||
|
|
||||||
magiclinksWkr.doMagicLinks(pctx, pbfr);
|
magiclinksWkr.doMagicLinks(pctx, pbfr);
|
||||||
// $text = $this->formatHeadings($text, $origText, $isMain);
|
// $text = $this->formatHeadings($text, $origText, $isMain);
|
||||||
@ -1200,7 +1206,7 @@ public class XomwParser implements XomwParserIface {
|
|||||||
* @param boolean $linestart
|
* @param boolean $linestart
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public void internalParseHalfParsed(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx, boolean isMain, boolean lineStart) {
|
public void internalParseHalfParsed(XomwParserBfr pbfr, XomwParserCtx pctx, boolean isMain, boolean lineStart) {
|
||||||
this.mStripState.unstripGeneral(pbfr);
|
this.mStripState.unstripGeneral(pbfr);
|
||||||
|
|
||||||
// MW.HOOK:ParserAfterUnstrip
|
// MW.HOOK:ParserAfterUnstrip
|
||||||
@ -4123,11 +4129,11 @@ public class XomwParser implements XomwParserIface {
|
|||||||
* @param String $text
|
* @param String $text
|
||||||
* @param int $options
|
* @param int $options
|
||||||
*/
|
*/
|
||||||
public void replaceLinkHolders(Xomw_parser_bfr pbfr) {
|
public void replaceLinkHolders(XomwParserBfr pbfr) {
|
||||||
// this.mLinkHolders.replace(text);
|
// this.mLinkHolders.replace(text);
|
||||||
this.mLinkHolders.replace(pbfr);
|
this.mLinkHolders.replace(pbfr);
|
||||||
}
|
}
|
||||||
private final Xomw_parser_bfr tmp_pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr tmp_pbfr = new XomwParserBfr();
|
||||||
public byte[] replaceLinkHolders(byte[] text) {
|
public byte[] replaceLinkHolders(byte[] text) {
|
||||||
// this.mLinkHolders.replace(text);
|
// this.mLinkHolders.replace(text);
|
||||||
this.mLinkHolders.replace(tmp_pbfr.Init(text));
|
this.mLinkHolders.replace(tmp_pbfr.Init(text));
|
||||||
@ -5325,7 +5331,25 @@ public class XomwParser implements XomwParserIface {
|
|||||||
// OutputPage::setupOOUI();
|
// OutputPage::setupOOUI();
|
||||||
// this.mOutput->setEnableOOUI(true);
|
// this.mOutput->setEnableOOUI(true);
|
||||||
// }
|
// }
|
||||||
private static final byte[] // Bry__strip_state_item = Bry_.new_a7("-item-")
|
public static final String MARKER_PREFIX_STR = "\u007f'\"`UNIQ-";
|
||||||
Bry__noparse = Bry_.new_a7("NOPARSE");
|
public static final byte[]
|
||||||
private static final byte[] Bry__marker__noparse = Bry_.Add(XomwStripState.Bry__marker__bgn, Bry__noparse);
|
MARKER_PREFIX = Bry_.new_a7(MARKER_PREFIX_STR)
|
||||||
|
, MARKER_SUFFIX = Bry_.new_a7("-QINU`\"'\u007f")
|
||||||
|
;
|
||||||
|
private static final byte[]
|
||||||
|
STRIP_ITEM = Bry_.new_a7("-item-")
|
||||||
|
, Bry__noparse = Bry_.new_a7("NOPARSE")
|
||||||
|
;
|
||||||
|
private static final byte[] Bry__marker__noparse = Bry_.Add(MARKER_PREFIX, Bry__noparse);
|
||||||
|
public static Btrie_slim_mgr Protocols__dflt() {
|
||||||
|
Btrie_slim_mgr rv = Btrie_slim_mgr.ci_a7();
|
||||||
|
Gfo_protocol_itm[] ary = Gfo_protocol_itm.Ary();
|
||||||
|
for (Gfo_protocol_itm itm : ary) {
|
||||||
|
byte[] key = itm.Text_bry(); // EX: "https://"
|
||||||
|
rv.Add_obj(key, key);
|
||||||
|
}
|
||||||
|
byte[] bry__relative = Bry_.new_a7("//");
|
||||||
|
rv.Add_obj(bry__relative, bry__relative); // REF.MW: "$this->mUrlProtocols = wfUrlProtocols();"; "wfUrlProtocols( $includeProtocolRelative = true )"
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,17 +14,17 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
|||||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
public class Xomw_parser_bfr { // manages 2 bfrs to eliminate multiple calls to new memory allocations ("return bfr.To_bry_and_clear()")
|
public class XomwParserBfr { // manages 2 bfrs to eliminate multiple calls to new memory allocations ("return bfr.To_bry_and_clear()")
|
||||||
private final Bry_bfr bfr_1 = Bry_bfr_.New(), bfr_2 = Bry_bfr_.New();
|
private final Bry_bfr bfr_1 = Bry_bfr_.New(), bfr_2 = Bry_bfr_.New();
|
||||||
private Bry_bfr src, trg;
|
private Bry_bfr src, trg;
|
||||||
public Xomw_parser_bfr() {
|
public XomwParserBfr() {
|
||||||
this.src = bfr_1;
|
this.src = bfr_1;
|
||||||
this.trg = bfr_2;
|
this.trg = bfr_2;
|
||||||
}
|
}
|
||||||
public Bry_bfr Src() {return src;}
|
public Bry_bfr Src() {return src;}
|
||||||
public Bry_bfr Trg() {return trg;}
|
public Bry_bfr Trg() {return trg;}
|
||||||
public Bry_bfr Rslt() {return src;}
|
public Bry_bfr Rslt() {return src;}
|
||||||
public Xomw_parser_bfr Init(byte[] text) {
|
public XomwParserBfr Init(byte[] text) {
|
||||||
// resize each bfr once by guessing that html_len = text_len * 2
|
// resize each bfr once by guessing that html_len = text_len * 2
|
||||||
int text_len = text.length;
|
int text_len = text.length;
|
||||||
int html_len = text_len * 2;
|
int html_len = text_len * 2;
|
@ -14,8 +14,8 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
|||||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
public class Xomw_parser_bfr_ {
|
public class XomwParserBfr_ {
|
||||||
public static void Replace(Xomw_parser_bfr pbfr, byte[] find, byte[] repl) {
|
public static void Replace(XomwParserBfr pbfr, byte[] find, byte[] repl) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
@ -15,7 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
import gplx.xowa.mediawiki.includes.parsers.lnkis.*;
|
import gplx.xowa.mediawiki.includes.parsers.lnkis.*;
|
||||||
public class Xomw_parser_ctx {
|
public class XomwParserCtx {
|
||||||
public XomwTitle Page_title() {return page_title;} private XomwTitle page_title;
|
public XomwTitle Page_title() {return page_title;} private XomwTitle page_title;
|
||||||
public Xomw_image_params Lnki_wkr__make_image__img_params = new Xomw_image_params();
|
public Xomw_image_params Lnki_wkr__make_image__img_params = new Xomw_image_params();
|
||||||
public byte[][] Lnki_wkr__make_image__match_magic_word = new byte[2][];
|
public byte[][] Lnki_wkr__make_image__match_magic_word = new byte[2][];
|
@ -15,7 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
||||||
import gplx.xowa.mediawiki.includes.filerepo.file.*; import gplx.xowa.mediawiki.includes.media.*;
|
import gplx.xowa.mediawiki.includes.filerepo.file.*; import gplx.xowa.mediawiki.includes.media.*;
|
||||||
public class Xomw_parser_env {
|
public class XomwParserEnv {
|
||||||
public byte[] Lang__align_end = Bry_.new_a7("right");
|
public byte[] Lang__align_end = Bry_.new_a7("right");
|
||||||
public int User__default__thumbsize = 220;
|
public int User__default__thumbsize = 220;
|
||||||
|
|
||||||
@ -28,5 +28,5 @@ public class Xomw_parser_env {
|
|||||||
public XomwFileFinder File_finder() {return file_finder;} private XomwFileFinder file_finder = new XomwFileFinderNoop();
|
public XomwFileFinder File_finder() {return file_finder;} private XomwFileFinder file_finder = new XomwFileFinderNoop();
|
||||||
public XomwMediaHandlerFactory MediaHandlerFactory() {return mediaHandlerFactory;} private final XomwMediaHandlerFactory mediaHandlerFactory = new XomwMediaHandlerFactory();
|
public XomwMediaHandlerFactory MediaHandlerFactory() {return mediaHandlerFactory;} private final XomwMediaHandlerFactory mediaHandlerFactory = new XomwMediaHandlerFactory();
|
||||||
|
|
||||||
public Xomw_parser_env File_finder_(XomwFileFinder v) {file_finder = v; return this;}
|
public XomwParserEnv File_finder_(XomwFileFinder v) {file_finder = v; return this;}
|
||||||
}
|
}
|
@ -19,7 +19,7 @@ import gplx.xowa.mediawiki.includes.linkers.*;
|
|||||||
public interface XomwParserIface {
|
public interface XomwParserIface {
|
||||||
int nextLinkID();
|
int nextLinkID();
|
||||||
XomwParserOptions getOptions();
|
XomwParserOptions getOptions();
|
||||||
Xomw_link_renderer getLinkRenderer();
|
XomwLinkRenderer getLinkRenderer();
|
||||||
|
|
||||||
byte[] armorLinks(Bry_bfr trg, byte[] src, int src_bgn, int src_end);
|
byte[] armorLinks(Bry_bfr trg, byte[] src, int src_bgn, int src_end);
|
||||||
Xomw_atr_mgr getExternalLinkAttribs(Xomw_atr_mgr atrs);
|
Xomw_atr_mgr getExternalLinkAttribs(Xomw_atr_mgr atrs);
|
||||||
|
@ -59,8 +59,8 @@ public class XomwParserTest {
|
|||||||
}
|
}
|
||||||
class XomwParserFxt {
|
class XomwParserFxt {
|
||||||
private final XomwParser parser = new XomwParser();
|
private final XomwParser parser = new XomwParser();
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
public XomwParserFxt() {
|
public XomwParserFxt() {
|
||||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||||
|
@ -125,10 +125,10 @@ public class XomwStripState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// XOWA
|
// XOWA
|
||||||
public void unstripGeneral(Xomw_parser_bfr pbfr) {unstripType(TYPE_GENERAL, pbfr);}
|
public void unstripGeneral(XomwParserBfr pbfr) {unstripType(TYPE_GENERAL, pbfr);}
|
||||||
public void unstripNoWiki(Xomw_parser_bfr pbfr) {unstripType(TYPE_NOWIKI , pbfr);}
|
public void unstripNoWiki(XomwParserBfr pbfr) {unstripType(TYPE_NOWIKI , pbfr);}
|
||||||
public void unstripBoth(Xomw_parser_bfr pbfr) {unstripType(TYPE_BOTH , pbfr);}
|
public void unstripBoth(XomwParserBfr pbfr) {unstripType(TYPE_BOTH , pbfr);}
|
||||||
private boolean unstripType(byte tid, Xomw_parser_bfr pbfr) {
|
private boolean unstripType(byte tid, XomwParserBfr pbfr) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -23,7 +23,7 @@ public class Xomw_block_level_pass {
|
|||||||
private int last_section;
|
private int last_section;
|
||||||
private byte[] find_colon_no_links__before, find_colon_no_links__after;
|
private byte[] find_colon_no_links__before, find_colon_no_links__after;
|
||||||
|
|
||||||
public void doBlockLevels(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr, boolean line_start) {
|
public void doBlockLevels(XomwParserCtx pctx, XomwParserBfr pbfr, boolean line_start) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -29,8 +29,8 @@ public class Xomw_block_level_pass__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_block_level_pass__fxt {
|
class Xomw_block_level_pass__fxt {
|
||||||
private final Xomw_block_level_pass block_level_pass = new Xomw_block_level_pass();
|
private final Xomw_block_level_pass block_level_pass = new Xomw_block_level_pass();
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private boolean apos = true;
|
private boolean apos = true;
|
||||||
public void Test__do_block_levels(String src, String expd) {
|
public void Test__do_block_levels(String src, String expd) {
|
||||||
if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
||||||
|
@ -1,329 +0,0 @@
|
|||||||
/*
|
|
||||||
XOWA: the XOWA Offline Wiki Application
|
|
||||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
|
||||||
|
|
||||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
|
||||||
or alternatively under the terms of the Apache License Version 2.0.
|
|
||||||
|
|
||||||
You may use XOWA according to either of these licenses as is most appropriate
|
|
||||||
for your project on a case-by-case basis.
|
|
||||||
|
|
||||||
The terms of each license can be found in the source code repository:
|
|
||||||
|
|
||||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
|
||||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|
||||||
*/
|
|
||||||
package gplx.xowa.mediawiki.includes.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*;
|
|
||||||
import gplx.core.btries.*; import gplx.core.net.*;
|
|
||||||
import gplx.xowa.mediawiki.includes.parsers.prepros.*; import gplx.xowa.mediawiki.includes.parsers.headings.*;
|
|
||||||
import gplx.xowa.mediawiki.includes.parsers.quotes.*; import gplx.xowa.mediawiki.includes.parsers.tables.*; import gplx.xowa.mediawiki.includes.parsers.hrs.*; import gplx.xowa.mediawiki.includes.parsers.nbsps.*;
|
|
||||||
import gplx.xowa.mediawiki.includes.parsers.lnkes.*; import gplx.xowa.mediawiki.includes.parsers.lnkis.*; import gplx.xowa.mediawiki.includes.parsers.magiclinks.*; import gplx.xowa.mediawiki.includes.parsers.doubleunders.*;
|
|
||||||
import gplx.xowa.mediawiki.includes.linkers.*;
|
|
||||||
import gplx.xowa.mediawiki.includes.htmls.*;
|
|
||||||
public class Xomw_parser implements XomwParserIface {
|
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
|
||||||
private final Xomw_table_wkr table_wkr;
|
|
||||||
private final Xomw_hr_wkr hr_wkr = new Xomw_hr_wkr();
|
|
||||||
private final Xomw_lnke_wkr lnke_wkr;
|
|
||||||
private final Xomw_nbsp_wkr nbsp_wkr = new Xomw_nbsp_wkr();
|
|
||||||
private final Xomw_block_level_pass block_wkr = new Xomw_block_level_pass();
|
|
||||||
private final Xomw_heading_wkr heading_wkr = new Xomw_heading_wkr();
|
|
||||||
private final Xomw_magiclinks_wkr magiclinks_wkr;
|
|
||||||
private final Xomw_doubleunder_wkr doubleunder_wkr = new Xomw_doubleunder_wkr();
|
|
||||||
private final Xomw_link_renderer link_renderer;
|
|
||||||
private final XomwLinkHolderArray holders;
|
|
||||||
private final Xomw_heading_cbk__html heading_wkr_cbk;
|
|
||||||
private final Btrie_slim_mgr protocols_trie;
|
|
||||||
private final Xomw_doubleunder_data doubleunder_data = new Xomw_doubleunder_data();
|
|
||||||
private static Xomw_regex_space regex_space;
|
|
||||||
private static Xomw_regex_boundary regex_boundary;
|
|
||||||
private static Xomw_regex_url regex_url;
|
|
||||||
private final Btrie_rv trv = new Btrie_rv();
|
|
||||||
private int marker_index = 0;
|
|
||||||
// private final Xomw_prepro_wkr prepro_wkr = new Xomw_prepro_wkr();
|
|
||||||
public Xomw_parser_env Env() {return env;} private final Xomw_parser_env env = new Xomw_parser_env();
|
|
||||||
public XomwParserOptions getOptions() {return options;} private final XomwParserOptions options = new XomwParserOptions();
|
|
||||||
public XomwStripState Strip_state() {return strip_state;} private final XomwStripState strip_state = new XomwStripState();
|
|
||||||
public XomwSanitizer Sanitizer() {return sanitizer;} private final XomwSanitizer sanitizer = new XomwSanitizer();
|
|
||||||
public XomwLinker Linker() {return linker;} private final XomwLinker linker;
|
|
||||||
public Bry_bfr Tmp() {return tmp;} private final Bry_bfr tmp = Bry_bfr_.New();
|
|
||||||
public Xomw_quote_wkr Quote_wkr() {return quote_wkr;} private final Xomw_quote_wkr quote_wkr;
|
|
||||||
public Xomw_lnki_wkr Lnki_wkr() {return lnki_wkr;} private final Xomw_lnki_wkr lnki_wkr;
|
|
||||||
public boolean Output_type__wiki() {return output_type__wiki;} private final boolean output_type__wiki = false;
|
|
||||||
|
|
||||||
private int mLinkID;
|
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public int nextLinkID() {
|
|
||||||
return this.mLinkID++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a LinkRenderer instance to make links with
|
|
||||||
*
|
|
||||||
* @since 1.28
|
|
||||||
* @return LinkRenderer
|
|
||||||
*/
|
|
||||||
public Xomw_link_renderer getLinkRenderer() {
|
|
||||||
// if ( !$this->mLinkRenderer ) {
|
|
||||||
// $this->mLinkRenderer = MediaWikiServices::getInstance()
|
|
||||||
// ->getLinkRendererFactory()->create();
|
|
||||||
// $this->mLinkRenderer->setStubThreshold(
|
|
||||||
// $this->getOptions()->getStubThreshold()
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
return link_renderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Xomw_parser() {
|
|
||||||
if (regex_space == null) {
|
|
||||||
synchronized (Type_adp_.ClassOf_obj(this)) {
|
|
||||||
regex_space = new Xomw_regex_space();
|
|
||||||
regex_boundary = new Xomw_regex_boundary(regex_space);
|
|
||||||
regex_url = new Xomw_regex_url(regex_space);
|
|
||||||
Atr__rel = Bry_.new_a7("rel");
|
|
||||||
Get_external_link_rel = Bry_.new_a7("nofollow");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.link_renderer = new Xomw_link_renderer(sanitizer);
|
|
||||||
this.linker = new XomwLinker(link_renderer);
|
|
||||||
this.protocols_trie = Xomw_parser.Protocols__dflt();
|
|
||||||
this.holders = new XomwLinkHolderArray(this);
|
|
||||||
this.table_wkr = new Xomw_table_wkr(tmp, sanitizer, strip_state);
|
|
||||||
this.quote_wkr = new Xomw_quote_wkr(tmp);
|
|
||||||
this.lnke_wkr = new Xomw_lnke_wkr(this, tmp, linker, sanitizer);
|
|
||||||
this.lnki_wkr = new Xomw_lnki_wkr(this, holders, link_renderer, protocols_trie, linker, quote_wkr, tmp, strip_state);
|
|
||||||
this.heading_wkr_cbk = new Xomw_heading_cbk__html();
|
|
||||||
this.magiclinks_wkr = new Xomw_magiclinks_wkr(this, sanitizer, linker, regex_boundary, regex_url);
|
|
||||||
}
|
|
||||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
|
||||||
linker.Init_by_wiki(env, wiki.Lang().Lnki_trail_mgr().Trie());
|
|
||||||
lnke_wkr.Init_by_wiki(protocols_trie, regex_url, regex_space);
|
|
||||||
lnki_wkr.Init_by_wiki(env, wiki);
|
|
||||||
doubleunder_wkr.Init_by_wiki(doubleunder_data, wiki.Lang());
|
|
||||||
magiclinks_wkr.Init_by_wiki();
|
|
||||||
}
|
|
||||||
public void Init_by_page(XomwTitle ttl) {
|
|
||||||
pctx.Init_by_page(ttl);
|
|
||||||
}
|
|
||||||
public void Internal_parse(Xomw_parser_bfr pbfr, byte[] text) {
|
|
||||||
pbfr.Init(text);
|
|
||||||
// $origText = text;
|
|
||||||
|
|
||||||
// MW.HOOK:ParserBeforeInternalParse
|
|
||||||
|
|
||||||
// if ($frame) {
|
|
||||||
// use frame depth to infer how include/noinclude tags should be handled
|
|
||||||
// depth=0 means this is the top-level document; otherwise it's an included document
|
|
||||||
// boolean for_inclusion = false;
|
|
||||||
// if (!$frame->depth) {
|
|
||||||
// $flag = 0;
|
|
||||||
// } else {
|
|
||||||
// $flag = Parser::PTD_FOR_INCLUSION;
|
|
||||||
// }
|
|
||||||
// text = prepro_wkr.Preprocess_to_xml(text, for_inclusion);
|
|
||||||
// text = $frame->expand($dom);
|
|
||||||
// } else {
|
|
||||||
// // if $frame is not provided, then use old-style replaceVariables
|
|
||||||
// text = $this->replaceVariables(text);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// MW.HOOK:InternalParseBeforeSanitize
|
|
||||||
// text = Sanitizer::removeHTMLtags(
|
|
||||||
// text,
|
|
||||||
// [ &$this, 'attributeStripCallback' ],
|
|
||||||
// false,
|
|
||||||
// array_keys($this->mTransparentTagHooks),
|
|
||||||
// [],
|
|
||||||
// [ &$this, 'addTrackingCategory' ]
|
|
||||||
// );
|
|
||||||
// MW.HOOK:InternalParseBeforeLinks
|
|
||||||
|
|
||||||
// Tables need to come after variable replacement for things to work
|
|
||||||
// properly; putting them before other transformations should keep
|
|
||||||
// exciting things like link expansions from showing up in surprising
|
|
||||||
// places.
|
|
||||||
table_wkr.doTableStuff(pctx, pbfr);
|
|
||||||
|
|
||||||
hr_wkr.replaceHrs(pctx, pbfr);
|
|
||||||
|
|
||||||
doubleunder_wkr.doDoubleUnderscore(pctx, pbfr); // DONE: DATE:2017-01-27
|
|
||||||
|
|
||||||
heading_wkr.doHeadings(pctx, pbfr, heading_wkr_cbk);
|
|
||||||
lnki_wkr.replaceInternalLinks(pbfr, env, pctx);
|
|
||||||
quote_wkr.doAllQuotes(pctx, pbfr);
|
|
||||||
lnke_wkr.replaceExternalLinks(pctx, pbfr);
|
|
||||||
|
|
||||||
// replaceInternalLinks may sometimes leave behind
|
|
||||||
// absolute URLs, which have to be masked to hide them from replaceExternalLinks
|
|
||||||
Xomw_parser_bfr_.Replace(pbfr, Bry__marker__noparse, Bry_.Empty);
|
|
||||||
magiclinks_wkr.doMagicLinks(pctx, pbfr);
|
|
||||||
|
|
||||||
// $text = $this->formatHeadings($text, $origText, $isMain);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Internal_parse_half_parsed(Xomw_parser_bfr pbfr, boolean is_main, boolean line_start) {
|
|
||||||
strip_state.unstripGeneral(pbfr);
|
|
||||||
|
|
||||||
// MW.HOOK:ParserAfterUnstrip
|
|
||||||
|
|
||||||
// Clean up special characters, only run once, next-to-last before doBlockLevels
|
|
||||||
nbsp_wkr.doNbsp(pctx, pbfr);
|
|
||||||
|
|
||||||
block_wkr.doBlockLevels(pctx, pbfr, line_start);
|
|
||||||
|
|
||||||
lnki_wkr.replaceLinkHolders(pbfr);
|
|
||||||
|
|
||||||
// The input doesn't get language converted if
|
|
||||||
// a) It's disabled
|
|
||||||
// b) Content isn't converted
|
|
||||||
// c) It's a conversion table
|
|
||||||
// d) it is an interface message (which is in the user language)
|
|
||||||
// if ( !( $this->mOptions->getDisableContentConversion()
|
|
||||||
// || isset( $this->mDoubleUnderscores['nocontentconvert'] ) )
|
|
||||||
// ) {
|
|
||||||
// if ( !$this->mOptions->getInterfaceMessage() ) {
|
|
||||||
// // The position of the convert() call should not be changed. it
|
|
||||||
// // assumes that the links are all replaced and the only thing left
|
|
||||||
// // is the <nowiki> mark.
|
|
||||||
// $text = $this->getConverterLanguage()->convert( $text );
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
strip_state.unstripNoWiki(pbfr);
|
|
||||||
|
|
||||||
// MW.HOOK:ParserBeforeTidy
|
|
||||||
|
|
||||||
// $text = $this->replaceTransparentTags( $text );
|
|
||||||
strip_state.unstripGeneral(pbfr);
|
|
||||||
|
|
||||||
sanitizer.normalizeCharReferences(pbfr);
|
|
||||||
|
|
||||||
// if ( MWTidy::isEnabled() ) {
|
|
||||||
// if ( $this->mOptions->getTidy() ) {
|
|
||||||
// $text = MWTidy::tidy( $text );
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// attempt to sanitize at least some nesting problems
|
|
||||||
// (T4702 and quite a few others)
|
|
||||||
// $tidyregs = [
|
|
||||||
// // ''Something [http://www.cool.com cool''] -->
|
|
||||||
// // <i>Something</i><a href="http://www.cool.com"..><i>cool></i></a>
|
|
||||||
// '/(<([bi])>)(<([bi])>)?([^<]*)(<\/?a[^<]*>)([^<]*)(<\/\\4>)?(<\/\\2>)/' =>
|
|
||||||
// '\\1\\3\\5\\8\\9\\6\\1\\3\\7\\8\\9',
|
|
||||||
// // fix up an anchor inside another anchor, only
|
|
||||||
// // at least for a single single nested link (T5695)
|
|
||||||
// '/(<a[^>]+>)([^<]*)(<a[^>]+>[^<]*)<\/a>(.*)<\/a>/' =>
|
|
||||||
// '\\1\\2</a>\\3</a>\\1\\4</a>',
|
|
||||||
// // fix div inside inline elements- doBlockLevels won't wrap a line which
|
|
||||||
// // contains a div, so fix it up here; replace
|
|
||||||
// // div with escaped text
|
|
||||||
// '/(<([aib]) [^>]+>)([^<]*)(<div([^>]*)>)(.*)(<\/div>)([^<]*)(<\/\\2>)/' =>
|
|
||||||
// '\\1\\3<div\\5>\\6</div>\\8\\9',
|
|
||||||
// // remove empty italic or bold tag pairs, some
|
|
||||||
// // introduced by rules above
|
|
||||||
// '/<([bi])><\/\\1>/' => '',
|
|
||||||
// ];
|
|
||||||
|
|
||||||
// $text = preg_replace(
|
|
||||||
// array_keys( $tidyregs ),
|
|
||||||
// array_values( $tidyregs ),
|
|
||||||
// $text );
|
|
||||||
// }
|
|
||||||
|
|
||||||
// MW.HOOK:ParserAfterTidy
|
|
||||||
}
|
|
||||||
public byte[] stripAltText(byte[] caption, XomwLinkHolderArray holders) {
|
|
||||||
return caption;
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] armorLinks(Bry_bfr trg, byte[] src, int src_bgn, int src_end) {
|
|
||||||
// PORTED:preg_replace( '/\b((?i)' . $this->mUrlProtocols . ')/', self::MARKER_PREFIX . "NOPARSE$1", $text )
|
|
||||||
int cur = src_bgn;
|
|
||||||
int prv = cur;
|
|
||||||
boolean dirty = false;
|
|
||||||
boolean called_by_bry = trg == null;
|
|
||||||
while (true) {
|
|
||||||
// exit if EOS
|
|
||||||
if (cur == src_end) {
|
|
||||||
// if dirty, add rest of String
|
|
||||||
if (dirty)
|
|
||||||
trg.Add_mid(src, prv, src_end);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if cur matches protocol
|
|
||||||
Object protocol_obj = protocols_trie.Match_at(trv, src, cur, src_end);
|
|
||||||
// no match; continue
|
|
||||||
if (protocol_obj == null) {
|
|
||||||
cur++;
|
|
||||||
}
|
|
||||||
// match; add to bfr
|
|
||||||
else {
|
|
||||||
dirty = true;
|
|
||||||
byte[] protocol_bry = (byte[])protocol_obj;
|
|
||||||
if (called_by_bry) trg = Bry_bfr_.New();
|
|
||||||
trg.Add_bry_many(XomwStripState.Bry__marker__bgn, Bry__noparse, protocol_bry);
|
|
||||||
cur += protocol_bry.length;
|
|
||||||
prv = cur;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (called_by_bry) {
|
|
||||||
if (dirty)
|
|
||||||
return trg.To_bry_and_clear();
|
|
||||||
else {
|
|
||||||
if (src_bgn == 0 && src_end == src.length)
|
|
||||||
return src;
|
|
||||||
else
|
|
||||||
return Bry_.Mid(src, src_bgn, src_end);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (dirty)
|
|
||||||
return null;
|
|
||||||
else {
|
|
||||||
trg.Add_mid(src, src_bgn, src_end);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public byte[] Insert_strip_item(byte[] text) {
|
|
||||||
tmp.Add_bry_many(XomwStripState.Bry__marker__bgn, Bry__strip_state_item);
|
|
||||||
tmp.Add_int_variable(marker_index);
|
|
||||||
tmp.Add(XomwStripState.Bry__marker__end);
|
|
||||||
byte[] marker = tmp.To_bry_and_clear();
|
|
||||||
marker_index++;
|
|
||||||
strip_state.addGeneral(marker, text);
|
|
||||||
return marker;
|
|
||||||
}
|
|
||||||
public Xomw_atr_mgr getExternalLinkAttribs(Xomw_atr_mgr atrs) {
|
|
||||||
atrs.Clear();
|
|
||||||
byte[] rel = Get_external_link_rel;
|
|
||||||
|
|
||||||
// XO.MW.UNSUPPORTED: XO will assume target is blank; MW will set target of "_blank", "_self", etc. depending on global opt
|
|
||||||
// $target = $this->mOptions->getExternalLinkTarget();
|
|
||||||
atrs.Add(Atr__rel, rel);
|
|
||||||
return atrs;
|
|
||||||
}
|
|
||||||
// XO.MW.UNSUPPORTED: XO will always assume "nofollow"; MW will return "nofollow" if (a) ns is in ns-exception list or (b) domain is in domain-exception list;
|
|
||||||
// if ($wgNoFollowLinks && !in_array($ns, $wgNoFollowNsExceptions) && !wfMatchesDomainList($url, $wgNoFollowDomainExceptions)
|
|
||||||
public byte[] Get_external_link_rel;
|
|
||||||
private static byte[] Atr__rel;
|
|
||||||
private static final byte[] Bry__strip_state_item = Bry_.new_a7("-item-"), Bry__noparse = Bry_.new_a7("NOPARSE");
|
|
||||||
private static final byte[] Bry__marker__noparse = Bry_.Add(XomwStripState.Bry__marker__bgn, Bry__noparse);
|
|
||||||
public static Btrie_slim_mgr Protocols__dflt() {
|
|
||||||
Btrie_slim_mgr rv = Btrie_slim_mgr.ci_a7();
|
|
||||||
Gfo_protocol_itm[] ary = Gfo_protocol_itm.Ary();
|
|
||||||
for (Gfo_protocol_itm itm : ary) {
|
|
||||||
byte[] key = itm.Text_bry(); // EX: "https://"
|
|
||||||
rv.Add_obj(key, key);
|
|
||||||
}
|
|
||||||
byte[] bry__relative = Bry_.new_a7("//");
|
|
||||||
rv.Add_obj(bry__relative, bry__relative); // REF.MW: "$this->mUrlProtocols = wfUrlProtocols();"; "wfUrlProtocols( $includeProtocolRelative = true )"
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
}
|
|
@ -37,7 +37,7 @@ public class Xomw_doubleunder_wkr {
|
|||||||
, Xol_kwd_grp_.Id_nocontentconvert
|
, Xol_kwd_grp_.Id_nocontentconvert
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
public void doDoubleUnderscore(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void doDoubleUnderscore(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -25,8 +25,8 @@ public class Xomw_doubleunder_wkr__tst {
|
|||||||
@Test public void Case_match() {fxt.Test__parse("a __index__ b" , "a __index__ b");}
|
@Test public void Case_match() {fxt.Test__parse("a __index__ b" , "a __index__ b");}
|
||||||
}
|
}
|
||||||
class Xomw_doubleunder_wkr__fxt {
|
class Xomw_doubleunder_wkr__fxt {
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private final Xomw_doubleunder_wkr wkr = new Xomw_doubleunder_wkr();
|
private final Xomw_doubleunder_wkr wkr = new Xomw_doubleunder_wkr();
|
||||||
public Xomw_doubleunder_data data = new Xomw_doubleunder_data();
|
public Xomw_doubleunder_data data = new Xomw_doubleunder_data();
|
||||||
public Xomw_doubleunder_wkr__fxt() {
|
public Xomw_doubleunder_wkr__fxt() {
|
||||||
|
@ -15,6 +15,6 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.mediawiki.includes.parsers.headings; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
package gplx.xowa.mediawiki.includes.parsers.headings; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
||||||
public interface Xomw_heading_cbk {
|
public interface Xomw_heading_cbk {
|
||||||
void On_hdr_seen(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr);
|
void On_hdr_seen(XomwParserCtx pctx, Xomw_heading_wkr wkr);
|
||||||
void On_src_done(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr);
|
void On_src_done(XomwParserCtx pctx, Xomw_heading_wkr wkr);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ public class Xomw_heading_cbk__html implements Xomw_heading_cbk {
|
|||||||
this.bfr = bfr;
|
this.bfr = bfr;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public void On_hdr_seen(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr) {
|
public void On_hdr_seen(XomwParserCtx pctx, Xomw_heading_wkr wkr) {
|
||||||
// add from txt_bgn to hdr_bgn; EX: "abc\n==A==\n"; "\n==" seen -> add "abc"
|
// add from txt_bgn to hdr_bgn; EX: "abc\n==A==\n"; "\n==" seen -> add "abc"
|
||||||
byte[] src = wkr.Src();
|
byte[] src = wkr.Src();
|
||||||
int hdr_bgn = wkr.Hdr_bgn(), txt_bgn = wkr.Txt_bgn();
|
int hdr_bgn = wkr.Hdr_bgn(), txt_bgn = wkr.Txt_bgn();
|
||||||
@ -28,7 +28,7 @@ public class Xomw_heading_cbk__html implements Xomw_heading_cbk {
|
|||||||
bfr.Add_mid(src, txt_bgn, hdr_bgn);
|
bfr.Add_mid(src, txt_bgn, hdr_bgn);
|
||||||
|
|
||||||
// add "\n" unless BOS
|
// add "\n" unless BOS
|
||||||
if (hdr_bgn != Xomw_parser_ctx.Pos__bos) bfr.Add_byte_nl();
|
if (hdr_bgn != XomwParserCtx.Pos__bos) bfr.Add_byte_nl();
|
||||||
|
|
||||||
// add <h2>...</h2>
|
// add <h2>...</h2>
|
||||||
int hdr_num = wkr.Hdr_num();
|
int hdr_num = wkr.Hdr_num();
|
||||||
@ -36,7 +36,7 @@ public class Xomw_heading_cbk__html implements Xomw_heading_cbk {
|
|||||||
bfr.Add_mid(wkr.Src(), wkr.Hdr_lhs_end(), wkr.Hdr_rhs_bgn());
|
bfr.Add_mid(wkr.Src(), wkr.Hdr_lhs_end(), wkr.Hdr_rhs_bgn());
|
||||||
bfr.Add(Tag__rhs).Add_int_digits(1, hdr_num).Add(Byte_ascii.Angle_end_bry); // </h2>
|
bfr.Add(Tag__rhs).Add_int_digits(1, hdr_num).Add(Byte_ascii.Angle_end_bry); // </h2>
|
||||||
}
|
}
|
||||||
public void On_src_done(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr) {
|
public void On_src_done(XomwParserCtx pctx, Xomw_heading_wkr wkr) {
|
||||||
// add from txt_bgn to EOS;
|
// add from txt_bgn to EOS;
|
||||||
byte[] src = wkr.Src();
|
byte[] src = wkr.Src();
|
||||||
int txt_bgn = wkr.Txt_bgn(), src_end = wkr.Src_end();
|
int txt_bgn = wkr.Txt_bgn(), src_end = wkr.Src_end();
|
||||||
|
@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
package gplx.xowa.mediawiki.includes.parsers.headings; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
package gplx.xowa.mediawiki.includes.parsers.headings; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
||||||
import gplx.core.btries.*; import gplx.xowa.langs.*;
|
import gplx.core.btries.*; import gplx.xowa.langs.*;
|
||||||
public class Xomw_heading_wkr {
|
public class Xomw_heading_wkr {
|
||||||
private Xomw_parser_ctx pctx;
|
private XomwParserCtx pctx;
|
||||||
private Xomw_heading_cbk cbk;
|
private Xomw_heading_cbk cbk;
|
||||||
public byte[] Src() {return src;} private byte[] src;
|
public byte[] Src() {return src;} private byte[] src;
|
||||||
public int Src_end() {return src_end;} private int src_end;
|
public int Src_end() {return src_end;} private int src_end;
|
||||||
@ -28,7 +28,7 @@ public class Xomw_heading_wkr {
|
|||||||
public int Hdr_lhs_end() {return hdr_lhs_end;} private int hdr_lhs_end;
|
public int Hdr_lhs_end() {return hdr_lhs_end;} private int hdr_lhs_end;
|
||||||
public int Hdr_rhs_bgn() {return hdr_rhs_bgn;} private int hdr_rhs_bgn;
|
public int Hdr_rhs_bgn() {return hdr_rhs_bgn;} private int hdr_rhs_bgn;
|
||||||
public int Hdr_rhs_end() {return hdr_rhs_end;} private int hdr_rhs_end;
|
public int Hdr_rhs_end() {return hdr_rhs_end;} private int hdr_rhs_end;
|
||||||
public void doHeadings(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr, Xomw_heading_cbk__html cbk) {
|
public void doHeadings(XomwParserCtx pctx, XomwParserBfr pbfr, Xomw_heading_cbk__html cbk) {
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src_bry = src_bfr.Bfr();
|
byte[] src_bry = src_bfr.Bfr();
|
||||||
int src_end = src_bfr.Len();
|
int src_end = src_bfr.Len();
|
||||||
@ -36,7 +36,7 @@ public class Xomw_heading_wkr {
|
|||||||
pbfr.Switch();
|
pbfr.Switch();
|
||||||
Parse(pctx, src_bry, 0, src_end, cbk);
|
Parse(pctx, src_bry, 0, src_end, cbk);
|
||||||
}
|
}
|
||||||
public void Parse(Xomw_parser_ctx pctx, byte[] src, int src_bgn, int src_end, Xomw_heading_cbk cbk) { // REF.MW: /includes/parser/Parser.php|doHeadings
|
public void Parse(XomwParserCtx pctx, byte[] src, int src_bgn, int src_end, Xomw_heading_cbk cbk) { // REF.MW: /includes/parser/Parser.php|doHeadings
|
||||||
// init members
|
// init members
|
||||||
this.pctx = pctx;
|
this.pctx = pctx;
|
||||||
this.src = src;
|
this.src = src;
|
||||||
@ -51,7 +51,7 @@ public class Xomw_heading_wkr {
|
|||||||
|
|
||||||
// do loop
|
// do loop
|
||||||
int pos = src_bgn;
|
int pos = src_bgn;
|
||||||
this.txt_bgn = pos == Xomw_parser_ctx.Pos__bos ? 0 : pos;
|
this.txt_bgn = pos == XomwParserCtx.Pos__bos ? 0 : pos;
|
||||||
byte b = Byte_ascii.Nl;
|
byte b = Byte_ascii.Nl;
|
||||||
while (true) {
|
while (true) {
|
||||||
int nxt = pos + 1;
|
int nxt = pos + 1;
|
||||||
|
@ -29,7 +29,7 @@ public class Xomw_heading_wkr__tst {
|
|||||||
class Xomw_heading_wkr__fxt {
|
class Xomw_heading_wkr__fxt {
|
||||||
private final Xomw_heading_wkr wkr = new Xomw_heading_wkr();
|
private final Xomw_heading_wkr wkr = new Xomw_heading_wkr();
|
||||||
private final Xomw_heading_cbk__html cbk = new Xomw_heading_cbk__html().Bfr_(Bry_bfr_.New());
|
private final Xomw_heading_cbk__html cbk = new Xomw_heading_cbk__html().Bfr_(Bry_bfr_.New());
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
|
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
byte[] src_bry = Bry_.new_u8(src_str);
|
byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
|
@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
|||||||
package gplx.xowa.mediawiki.includes.parsers.hrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
package gplx.xowa.mediawiki.includes.parsers.hrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
|
||||||
public class Xomw_hr_wkr {// THREAD.UNSAFE: caching for repeated calls
|
public class Xomw_hr_wkr {// THREAD.UNSAFE: caching for repeated calls
|
||||||
private Bry_bfr bfr;
|
private Bry_bfr bfr;
|
||||||
public void replaceHrs(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) { // REF.MW: text = preg_replace('/(^|\n)-----*/', '\\1<hr />', text);
|
public void replaceHrs(XomwParserCtx pctx, XomwParserBfr pbfr) { // REF.MW: text = preg_replace('/(^|\n)-----*/', '\\1<hr />', text);
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -24,11 +24,11 @@ public class Xomw_hr_wkr__tst {
|
|||||||
@Test public void Bos_and_mid() {fxt.Test__parse("-----a\n-----b" , "<hr />a\n<hr />b");}
|
@Test public void Bos_and_mid() {fxt.Test__parse("-----a\n-----b" , "<hr />a\n<hr />b");}
|
||||||
}
|
}
|
||||||
class Xomw_hr_wkr__fxt {
|
class Xomw_hr_wkr__fxt {
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private final Xomw_hr_wkr wkr = new Xomw_hr_wkr();
|
private final Xomw_hr_wkr wkr = new Xomw_hr_wkr();
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
byte[] src_bry = Bry_.new_u8(src_str);
|
byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
wkr.replaceHrs(new Xomw_parser_ctx(), pbfr.Init(src_bry));
|
wkr.replaceHrs(new XomwParserCtx(), pbfr.Init(src_bry));
|
||||||
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public class Xomw_lnke_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
this.regex_space = regex_space;
|
this.regex_space = regex_space;
|
||||||
}
|
}
|
||||||
// XO.MW:SYNC:1.29; DATE:2017-02-01
|
// XO.MW:SYNC:1.29; DATE:2017-02-01
|
||||||
public void replaceExternalLinks(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void replaceExternalLinks(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -54,17 +54,17 @@ public class Xomw_lnke_wkr__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_lnke_wkr__fxt {
|
class Xomw_lnke_wkr__fxt {
|
||||||
private final Xomw_lnke_wkr wkr;
|
private final Xomw_lnke_wkr wkr;
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private boolean apos = true;
|
private boolean apos = true;
|
||||||
public Xomw_lnke_wkr__fxt() {
|
public Xomw_lnke_wkr__fxt() {
|
||||||
Xomw_parser parser = new Xomw_parser();
|
XomwParser parser = new XomwParser();
|
||||||
this.wkr = new Xomw_lnke_wkr(parser, parser.Tmp(), parser.Linker(), parser.Sanitizer());
|
this.wkr = new Xomw_lnke_wkr(parser, Bry_bfr_.New(), parser.Linker(), parser.Sanitizer());
|
||||||
Xomw_regex_space regex_space = new Xomw_regex_space();
|
Xomw_regex_space regex_space = new Xomw_regex_space();
|
||||||
wkr.Init_by_wiki(Xomw_parser.Protocols__dflt(), new Xomw_regex_url(regex_space), regex_space);
|
wkr.Init_by_wiki(XomwParser.Protocols__dflt(), new Xomw_regex_url(regex_space), regex_space);
|
||||||
}
|
}
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
byte[] src_bry = Bry_.new_u8(src_str);
|
byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
wkr.replaceExternalLinks(new Xomw_parser_ctx(), pbfr.Init(src_bry));
|
wkr.replaceExternalLinks(new XomwParserCtx(), pbfr.Init(src_bry));
|
||||||
if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
if (apos) expd = gplx.langs.htmls.Gfh_utl.Replace_apos(expd);
|
||||||
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
||||||
}
|
}
|
||||||
|
@ -36,11 +36,11 @@ import gplx.xowa.parsers.uniqs.*;
|
|||||||
public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
||||||
private final XomwLinkHolderArray holders;
|
private final XomwLinkHolderArray holders;
|
||||||
private final XomwLinker linker;
|
private final XomwLinker linker;
|
||||||
private final Xomw_link_renderer link_renderer;
|
private final XomwLinkRenderer link_renderer;
|
||||||
// private final Btrie_slim_mgr protocols_trie;
|
// private final Btrie_slim_mgr protocols_trie;
|
||||||
private final Xomw_quote_wkr quote_wkr;
|
private final Xomw_quote_wkr quote_wkr;
|
||||||
private final XomwStripState strip_state;
|
private final XomwStripState strip_state;
|
||||||
private Xomw_parser_env env;
|
private XomwParserEnv env;
|
||||||
private Xow_wiki wiki;
|
private Xow_wiki wiki;
|
||||||
private XomwTitle mPageTitle;
|
private XomwTitle mPageTitle;
|
||||||
// private final XomwLinker_NormalizeSubpageLink normalize_subpage_link = new XomwLinker_NormalizeSubpageLink();
|
// private final XomwLinker_NormalizeSubpageLink normalize_subpage_link = new XomwLinker_NormalizeSubpageLink();
|
||||||
@ -52,7 +52,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
private final List_adp tmp_list = List_adp_.New();
|
private final List_adp tmp_list = List_adp_.New();
|
||||||
private final Hash_adp mImageParams = Hash_adp_bry.cs();
|
private final Hash_adp mImageParams = Hash_adp_bry.cs();
|
||||||
private final Hash_adp mImageParamsMagicArray = Hash_adp_bry.cs();
|
private final Hash_adp mImageParamsMagicArray = Hash_adp_bry.cs();
|
||||||
public Xomw_lnki_wkr(XomwParserIface parser, XomwLinkHolderArray holders, Xomw_link_renderer link_renderer, Btrie_slim_mgr protocols_trie
|
public Xomw_lnki_wkr(XomwParserIface parser, XomwLinkHolderArray holders, XomwLinkRenderer link_renderer, Btrie_slim_mgr protocols_trie
|
||||||
, XomwLinker linker, Xomw_quote_wkr quote_wkr, Bry_bfr tmp, XomwStripState strip_state
|
, XomwLinker linker, Xomw_quote_wkr quote_wkr, Bry_bfr tmp, XomwStripState strip_state
|
||||||
) {
|
) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
@ -65,7 +65,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
this.tmp = tmp;
|
this.tmp = tmp;
|
||||||
this.strip_state = strip_state;
|
this.strip_state = strip_state;
|
||||||
}
|
}
|
||||||
public void Init_by_wiki(Xomw_parser_env env, Xow_wiki wiki) {
|
public void Init_by_wiki(XomwParserEnv env, Xow_wiki wiki) {
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.wiki = wiki;
|
this.wiki = wiki;
|
||||||
if (title_chars_for_lnki == null) {
|
if (title_chars_for_lnki == null) {
|
||||||
@ -78,7 +78,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
public void Clear_state() {
|
public void Clear_state() {
|
||||||
holders.clear();
|
holders.clear();
|
||||||
}
|
}
|
||||||
public void replaceInternalLinks(Xomw_parser_bfr pbfr, Xomw_parser_env env, Xomw_parser_ctx pctx) {
|
public void replaceInternalLinks(XomwParserBfr pbfr, XomwParserEnv env, XomwParserCtx pctx) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
@ -92,7 +92,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
replaceInternalLinks(env, pctx, bfr, src, src_bgn, src_end);
|
replaceInternalLinks(env, pctx, bfr, src, src_bgn, src_end);
|
||||||
}
|
}
|
||||||
// XO.MW:SYNC:1.29; DATE:2017-02-02
|
// XO.MW:SYNC:1.29; DATE:2017-02-02
|
||||||
public void replaceInternalLinks(Xomw_parser_env env, Xomw_parser_ctx pctx, Bry_bfr bfr, byte[] src, int src_bgn, int src_end) {
|
public void replaceInternalLinks(XomwParserEnv env, XomwParserCtx pctx, Bry_bfr bfr, byte[] src, int src_bgn, int src_end) {
|
||||||
// XO.MW: regex for tc move to header; e1 and e1_img moved to code
|
// XO.MW: regex for tc move to header; e1 and e1_img moved to code
|
||||||
// the % is needed to support urlencoded titles as well
|
// the % is needed to support urlencoded titles as well
|
||||||
|
|
||||||
@ -443,7 +443,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void makeImage(Xomw_parser_env env, Xomw_parser_ctx pctx, Bry_bfr bfr, XomwTitle title, byte[] options_at_link, XomwLinkHolderArray holders) {
|
public void makeImage(XomwParserEnv env, XomwParserCtx pctx, Bry_bfr bfr, XomwTitle title, byte[] options_at_link, XomwLinkHolderArray holders) {
|
||||||
// Check if the options text is of the form "options|alt text"
|
// Check if the options text is of the form "options|alt text"
|
||||||
// Options are:
|
// Options are:
|
||||||
// * thumbnail make a thumbnail with enlarge-icon and caption, alignment depends on lang
|
// * thumbnail make a thumbnail with enlarge-icon and caption, alignment depends on lang
|
||||||
@ -796,7 +796,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
public void Maybe_do_subpage_link(XomwLinker_NormalizeSubpageLink rv, byte[] target, byte[] text) {
|
public void Maybe_do_subpage_link(XomwLinker_NormalizeSubpageLink rv, byte[] target, byte[] text) {
|
||||||
linker.normalizeSubpageLink(rv, mPageTitle, target, text);
|
linker.normalizeSubpageLink(rv, mPageTitle, target, text);
|
||||||
}
|
}
|
||||||
public void replaceLinkHolders(Xomw_parser_bfr pbfr) {
|
public void replaceLinkHolders(XomwParserBfr pbfr) {
|
||||||
holders.replace(pbfr);
|
holders.replace(pbfr);
|
||||||
}
|
}
|
||||||
public void Make_known_link_holder(Bry_bfr bfr, XomwTitle nt, byte[] text, byte[] trail, byte[] prefix) {
|
public void Make_known_link_holder(Bry_bfr bfr, XomwTitle nt, byte[] text, byte[] trail, byte[] prefix) {
|
||||||
|
@ -72,9 +72,9 @@ public class Xomw_lnki_wkr__file__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_lnki_wkr__fxt {
|
class Xomw_lnki_wkr__fxt {
|
||||||
private final Xomw_lnki_wkr wkr;
|
private final Xomw_lnki_wkr wkr;
|
||||||
private final Xomw_parser_ctx pctx;
|
private final XomwParserCtx pctx;
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private final Xomw_parser_env env;
|
private final XomwParserEnv env;
|
||||||
private final XomwFileFinderMock file_finder;
|
private final XomwFileFinderMock file_finder;
|
||||||
private final XomwFileRepo repo = new XomwFileRepo(Bry_.new_a7("/orig"), Bry_.new_a7("/thumb"));
|
private final XomwFileRepo repo = new XomwFileRepo(Bry_.new_a7("/orig"), Bry_.new_a7("/thumb"));
|
||||||
private boolean apos = true;
|
private boolean apos = true;
|
||||||
@ -94,7 +94,7 @@ class Xomw_lnki_wkr__fxt {
|
|||||||
parser.Init_by_wiki(wiki);
|
parser.Init_by_wiki(wiki);
|
||||||
|
|
||||||
// ctx
|
// ctx
|
||||||
pctx = new Xomw_parser_ctx();
|
pctx = new XomwParserCtx();
|
||||||
pctx.Init_by_page(XomwTitle.newFromText(Bry_.new_a7("Page_1")));
|
pctx.Init_by_page(XomwTitle.newFromText(Bry_.new_a7("Page_1")));
|
||||||
}
|
}
|
||||||
public void Clear() {
|
public void Clear() {
|
||||||
|
@ -66,7 +66,7 @@ public class Xomw_magiclinks_wkr {
|
|||||||
|
|
||||||
// Replace special strings like "ISBN xxx" and "RFC xxx" with
|
// Replace special strings like "ISBN xxx" and "RFC xxx" with
|
||||||
// magic external links.
|
// magic external links.
|
||||||
public void doMagicLinks(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void doMagicLinks(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
// XO.PBFR
|
// XO.PBFR
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
|
@ -66,12 +66,12 @@ public class Xomw_magiclinks_wkr__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_magiclinks_wkr__fxt {
|
class Xomw_magiclinks_wkr__fxt {
|
||||||
private final Xomw_magiclinks_wkr wkr;
|
private final Xomw_magiclinks_wkr wkr;
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
public Xomw_magiclinks_wkr__fxt() {
|
public Xomw_magiclinks_wkr__fxt() {
|
||||||
Xomw_regex_space regex_space = new Xomw_regex_space();
|
Xomw_regex_space regex_space = new Xomw_regex_space();
|
||||||
pctx.Init_by_page(XomwTitle.newFromText(Bry_.new_a7("Page_1")));
|
pctx.Init_by_page(XomwTitle.newFromText(Bry_.new_a7("Page_1")));
|
||||||
Xomw_parser parser = new Xomw_parser();
|
XomwParser parser = new XomwParser();
|
||||||
this.wkr = new Xomw_magiclinks_wkr(parser, parser.Sanitizer(), parser.Linker(), new Xomw_regex_boundary(regex_space), new Xomw_regex_url(regex_space));
|
this.wkr = new Xomw_magiclinks_wkr(parser, parser.Sanitizer(), parser.Linker(), new Xomw_regex_boundary(regex_space), new Xomw_regex_url(regex_space));
|
||||||
wkr.Init_by_wiki();
|
wkr.Init_by_wiki();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ package gplx.xowa.mediawiki.includes.parsers.nbsps; import gplx.*; import gplx.x
|
|||||||
import gplx.core.btries.*;
|
import gplx.core.btries.*;
|
||||||
public class Xomw_nbsp_wkr {
|
public class Xomw_nbsp_wkr {
|
||||||
private final Btrie_rv trv = new Btrie_rv();
|
private final Btrie_rv trv = new Btrie_rv();
|
||||||
public void doNbsp(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void doNbsp(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
// PORTED:
|
// PORTED:
|
||||||
// Clean up special characters, only run once, next-to-last before doBlockLevels
|
// Clean up special characters, only run once, next-to-last before doBlockLevels
|
||||||
// $fixtags = [
|
// $fixtags = [
|
||||||
|
@ -25,8 +25,8 @@ public class Xomw_nbsp_wkr__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_nbsp_wkr__fxt {
|
class Xomw_nbsp_wkr__fxt {
|
||||||
private final Xomw_nbsp_wkr wkr = new Xomw_nbsp_wkr();
|
private final Xomw_nbsp_wkr wkr = new Xomw_nbsp_wkr();
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
private boolean apos = true;
|
private boolean apos = true;
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
byte[] src_bry = Bry_.new_u8(src_str);
|
byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
|
@ -22,7 +22,7 @@ public class Xomw_quote_wkr {// THREAD.UNSAFE: caching for repeated calls
|
|||||||
public Xomw_quote_wkr(Bry_bfr tmp) {
|
public Xomw_quote_wkr(Bry_bfr tmp) {
|
||||||
this.tmp = tmp;
|
this.tmp = tmp;
|
||||||
}
|
}
|
||||||
public void doAllQuotes(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void doAllQuotes(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
int src_bgn = 0;
|
int src_bgn = 0;
|
||||||
|
@ -34,10 +34,10 @@ public class Xomw_quote_wkr__tst {
|
|||||||
}
|
}
|
||||||
class Xomw_quote_wkr__fxt {
|
class Xomw_quote_wkr__fxt {
|
||||||
private final Xomw_quote_wkr wkr = new Xomw_quote_wkr(Bry_bfr_.New());
|
private final Xomw_quote_wkr wkr = new Xomw_quote_wkr(Bry_bfr_.New());
|
||||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
byte[] src_bry = Bry_.new_u8(src_str);
|
byte[] src_bry = Bry_.new_u8(src_str);
|
||||||
wkr.doAllQuotes(new Xomw_parser_ctx(), pbfr.Init(src_bry));
|
wkr.doAllQuotes(new XomwParserCtx(), pbfr.Init(src_bry));
|
||||||
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
|
|||||||
this.sanitizer = sanitizer;
|
this.sanitizer = sanitizer;
|
||||||
this.strip_state = stripState;
|
this.strip_state = stripState;
|
||||||
}
|
}
|
||||||
public void doTableStuff(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
public void doTableStuff(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||||
Bry_bfr src_bfr = pbfr.Src();
|
Bry_bfr src_bfr = pbfr.Src();
|
||||||
byte[] src = src_bfr.Bfr();
|
byte[] src = src_bfr.Bfr();
|
||||||
int src_bgn = 0;
|
int src_bgn = 0;
|
||||||
|
@ -115,12 +115,12 @@ public class Xomw_table_wkr__tst {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
class Xomw_table_wkr__fxt {
|
class Xomw_table_wkr__fxt {
|
||||||
private final Xomw_parser_bfr parser_bfr = new Xomw_parser_bfr();
|
private final XomwParserBfr parser_bfr = new XomwParserBfr();
|
||||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||||
private final Xomw_table_wkr wkr;
|
private final Xomw_table_wkr wkr;
|
||||||
public Xomw_table_wkr__fxt() {
|
public Xomw_table_wkr__fxt() {
|
||||||
Xomw_parser parser = new Xomw_parser();
|
XomwParser parser = new XomwParser();
|
||||||
this.wkr = new Xomw_table_wkr(parser.Tmp(), parser.Sanitizer(), parser.Strip_state());
|
this.wkr = new Xomw_table_wkr(Bry_bfr_.New(), parser.Sanitizer(), parser.Strip_state());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Test__parse(String src_str, String expd) {
|
public void Test__parse(String src_str, String expd) {
|
||||||
|
Loading…
Reference in New Issue
Block a user