mirror of
https://github.com/gnosygnu/xowa.git
synced 2025-06-05 17:04:15 +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
|
||||
*/
|
||||
public static XomwMessage wfMessage(Xomw_parser_env env, String key) {
|
||||
public static XomwMessage wfMessage(XomwParserEnv env, String key) {
|
||||
// function wfMessage( $key /*...*/ ) {
|
||||
// $message = new Message( $key );
|
||||
|
||||
|
@ -26,7 +26,7 @@ import gplx.xowa.mediawiki.includes.parsers.lnkis.*;
|
||||
* P7: $html = HtmlArmor::getHtml($text);
|
||||
*/
|
||||
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 Linker_rel_splitter splitter = new Linker_rel_splitter();
|
||||
private final XomwHtml html_utl = new XomwHtml();
|
||||
@ -47,11 +47,11 @@ public class XomwLinker {
|
||||
, Img_class__thumbborder = Bry_.new_a7("thumbborder")
|
||||
, Img_class__thumbimage = Bry_.new_a7("thumbimage")
|
||||
;
|
||||
private final Xomw_link_renderer link_renderer;
|
||||
public XomwLinker(Xomw_link_renderer link_renderer) {
|
||||
private final XomwLinkRenderer link_renderer;
|
||||
public XomwLinker(XomwLinkRenderer 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.split_trail_trie = trie;
|
||||
}
|
||||
@ -331,7 +331,7 @@ public class XomwLinker {
|
||||
// @since 1.20
|
||||
// @return String HTML for an image, with links, wrappers, etc.
|
||||
// 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
|
||||
|
||||
if (file != null && !file.allowInlineDisplay()) {
|
||||
@ -534,7 +534,7 @@ public class XomwLinker {
|
||||
* @return String
|
||||
*/
|
||||
// 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();
|
||||
|
||||
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");}
|
||||
}
|
||||
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();
|
||||
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));
|
||||
|
@ -21,13 +21,13 @@ public class XomwLinker_SplitTrailTest {
|
||||
@Test public void None() {fxt.Test__split_trail(" abc" , null , " abc");}
|
||||
}
|
||||
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();
|
||||
public XomwLinker_SplitTrailFxt() {
|
||||
String[] ary = new String[] {"a", "b", "c", "d", "e", "f"};
|
||||
for (String itm : ary)
|
||||
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) {
|
||||
byte[][] split_trail = linker.splitTrail(Bry_.new_u8(trail_str));
|
||||
|
@ -1264,7 +1264,7 @@ public class XomwSanitizer {
|
||||
// * @return String
|
||||
// * @private
|
||||
// */
|
||||
public void normalizeCharReferences(Xomw_parser_bfr pbfr) {
|
||||
public void normalizeCharReferences(XomwParserBfr pbfr) {
|
||||
// XO.PBFR
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
|
@ -21,7 +21,7 @@ public class XomwFile {
|
||||
* P8: normalizeExtension
|
||||
* P8: normalizeTitle
|
||||
*/
|
||||
private final Xomw_parser_env env;
|
||||
private final XomwParserEnv env;
|
||||
// // Bitfield values akin to the Revision deletion constants
|
||||
// static final DELETED_FILE = 1;
|
||||
// static final DELETED_COMMENT = 2;
|
||||
@ -265,7 +265,7 @@ public class XomwFile {
|
||||
// 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.title = title;
|
||||
// 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.*;
|
||||
import gplx.xowa.mediawiki.includes.parsers.*;
|
||||
public class XomwFileFinderMock implements XomwFileFinder {
|
||||
private final Xomw_parser_env env;
|
||||
public XomwFileFinderMock(Xomw_parser_env env) {this.env = env;}
|
||||
private final XomwParserEnv env;
|
||||
public XomwFileFinderMock(XomwParserEnv env) {this.env = env;}
|
||||
private final Hash_adp_bry hash = Hash_adp_bry.cs();
|
||||
public void Clear() {hash.Clear();}
|
||||
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.height = h;
|
||||
this.mime = mime;
|
||||
|
@ -28,7 +28,7 @@ import gplx.xowa.mediawiki.includes.htmls.*;
|
||||
* @see https://www.mediawiki.org/wiki/Manual:LinkRenderer
|
||||
* @since 1.28
|
||||
*/
|
||||
public class Xomw_link_renderer {
|
||||
public class XomwLinkRenderer {
|
||||
/**
|
||||
* Whether to force the pretty article path
|
||||
*
|
||||
@ -73,7 +73,7 @@ public class Xomw_link_renderer {
|
||||
// * @param TitleFormatter $titleFormatter
|
||||
// * @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.linkCache = $linkCache;
|
||||
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.*;
|
||||
// import org.junit.*;
|
||||
// public class Xomw_link_renderer__tst {
|
||||
// private final Xomw_link_renderer__fxt fxt = new Xomw_link_renderer__fxt();
|
||||
// public class XomwLinkRendererTest {
|
||||
// private final XomwLinkRendererFxt fxt = new XomwLinkRendererFxt();
|
||||
/*
|
||||
Make_broken_link
|
||||
target.Has_fragment()
|
||||
*/
|
||||
// }
|
||||
// class Xomw_link_renderer__fxt {
|
||||
// private final Xomw_link_renderer wkr = new Xomw_link_renderer(new Xomw_parser());
|
||||
// class XomwLinkRendererFxt {
|
||||
// private final XomwLinkRenderer wkr = new XomwLinkRenderer(new Xomw_parser());
|
||||
// public void Test__parse(String src_str, String expd) {
|
||||
// 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);
|
||||
// Tfds.Eq_str_lines(expd, pbfr.Rslt().To_str_and_clear(), src_str);
|
||||
// }
|
@ -30,7 +30,7 @@ public class XomwImageHandlerTest {
|
||||
class XomwImageHandler_fxt {
|
||||
private final XomwImageHandler handler;
|
||||
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;
|
||||
public XomwImageHandler_fxt() {
|
||||
handler = new XomwTransformationalImageHandler(Bry_.new_a7("test_handler"));
|
||||
|
@ -261,11 +261,11 @@ public class XomwLinkHolderArray {
|
||||
*
|
||||
* @param String $text
|
||||
*/
|
||||
public boolean replace(Xomw_parser_bfr pbfr) {
|
||||
public boolean replace(XomwParserBfr pbfr) {
|
||||
return this.replaceInternal(pbfr);
|
||||
// $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));
|
||||
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
|
||||
* @param String $text
|
||||
*/
|
||||
private boolean replaceInternal(Xomw_parser_bfr pbfr) {
|
||||
private boolean replaceInternal(XomwParserBfr pbfr) {
|
||||
if (internals.Len() == 0) {
|
||||
return false;
|
||||
}
|
||||
@ -285,7 +285,7 @@ public class XomwLinkHolderArray {
|
||||
// $colours = [];
|
||||
// $linkCache = LinkCache::singleton();
|
||||
// $output = this.parent->getOutput();
|
||||
Xomw_link_renderer linkRenderer = this.parent.getLinkRenderer();
|
||||
XomwLinkRenderer linkRenderer = this.parent.getLinkRenderer();
|
||||
//
|
||||
// $dbr = wfGetDB( DB_REPLICA );
|
||||
//
|
||||
|
@ -24,8 +24,8 @@ public class XomwLinkHolderArrayTest {
|
||||
}
|
||||
}
|
||||
class XomwLinkHolderArrayFxt {
|
||||
private final XomwLinkHolderArray holders = new XomwLinkHolderArray(new Xomw_parser());
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwLinkHolderArray holders = new XomwLinkHolderArray(new XomwParser());
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
private boolean apos = true;
|
||||
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.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.core.net.*;
|
||||
import gplx.xowa.mediawiki.includes.htmls.*;
|
||||
import gplx.xowa.mediawiki.includes.linkers.*;
|
||||
import gplx.xowa.mediawiki.includes.parsers.tables.*;
|
||||
@ -252,11 +253,13 @@ public class XomwParser implements XomwParserIface {
|
||||
/**
|
||||
* @var LinkRenderer
|
||||
*/
|
||||
private Xomw_link_renderer mLinkRenderer;
|
||||
private XomwLinkRenderer mLinkRenderer;
|
||||
|
||||
private int mMarkerIndex = 0;
|
||||
|
||||
// XOWA
|
||||
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 Xomw_table_wkr tableWkr;
|
||||
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_url regex_url;
|
||||
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
|
||||
@ -302,7 +308,7 @@ public class XomwParser implements XomwParserIface {
|
||||
// wfDebug(__CLASS__ . ": using preprocessor: {this.mPreprocessorClass}\n");
|
||||
// }
|
||||
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 XomwLinker Linker() {return linker;} private final XomwLinker linker;
|
||||
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.protocols_trie = Xomw_parser.Protocols__dflt();
|
||||
this.protocols_trie = XomwParser.Protocols__dflt();
|
||||
this.mLinkHolders = new XomwLinkHolderArray(this);
|
||||
|
||||
this.tableWkr = new Xomw_table_wkr(tmp_bfr, sanitizer, mStripState);
|
||||
@ -458,8 +464,8 @@ public class XomwParser implements XomwParserIface {
|
||||
// $text, Title $title, ParserOptions $options,
|
||||
// $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(Xomw_parser_bfr pbfr, Xomw_parser_ctx pctx,
|
||||
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(XomwParserBfr pbfr, XomwParserCtx pctx,
|
||||
byte[] text, XomwTitle title, XomwParserOptions options,
|
||||
boolean linestart, boolean clearState, int revid
|
||||
) {
|
||||
@ -985,14 +991,14 @@ public class XomwParser implements XomwParserIface {
|
||||
* @since 1.28
|
||||
* @return LinkRenderer
|
||||
*/
|
||||
public Xomw_link_renderer getLinkRenderer() {
|
||||
public XomwLinkRenderer getLinkRenderer() {
|
||||
if (this.mLinkRenderer == null) {
|
||||
// this.mLinkRenderer = XomwMediaWikiServices.getInstance()
|
||||
// .getLinkRendererFactory()->create();
|
||||
// this.mLinkRenderer->setStubThreshold(
|
||||
// this.getOptions()->getStubThreshold()
|
||||
// );
|
||||
this.mLinkRenderer = new Xomw_link_renderer(sanitizer);
|
||||
this.mLinkRenderer = new XomwLinkRenderer(sanitizer);
|
||||
}
|
||||
|
||||
return this.mLinkRenderer;
|
||||
@ -1092,23 +1098,23 @@ public class XomwParser implements XomwParserIface {
|
||||
// public function getStripList() {
|
||||
// return this.mStripList;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Add an item to the strip state
|
||||
// * Returns the unique tag which must be inserted into the stripped text
|
||||
// * The tag will be replaced with the original text in unstrip()
|
||||
// *
|
||||
// * @param String $text
|
||||
// *
|
||||
// * @return String
|
||||
// */
|
||||
// public function insertStripItem($text) {
|
||||
// $marker = self::MARKER_PREFIX . "-item-{this.mMarkerIndex}-" . self::MARKER_SUFFIX;
|
||||
// this.mMarkerIndex++;
|
||||
// this.mStripState->addGeneral($marker, $text);
|
||||
// return $marker;
|
||||
// }
|
||||
//
|
||||
|
||||
/**
|
||||
* Add an item to the strip state
|
||||
* Returns the unique tag which must be inserted into the stripped text
|
||||
* The tag will be replaced with the original text in unstrip()
|
||||
*
|
||||
* @param String $text
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
public byte[] Insert_strip_item(byte[] text) {
|
||||
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.mStripState.addGeneral(marker, text);
|
||||
return marker;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse the wiki syntax used to render tables
|
||||
*
|
||||
@ -1132,8 +1138,8 @@ public class XomwParser implements XomwParserIface {
|
||||
* @return String
|
||||
*/
|
||||
// isMain=tru
|
||||
public void internalParse(Xomw_parser_bfr pbfr, Xomw_parser_ctx 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) {internalParse(pbfr, pctx, text, true, false);}
|
||||
public void internalParse(XomwParserBfr pbfr, XomwParserCtx pctx, byte[] text, boolean isMain, boolean frame) {
|
||||
pbfr.Init(text);
|
||||
// $origText = text;
|
||||
|
||||
@ -1185,7 +1191,7 @@ public class XomwParser implements XomwParserIface {
|
||||
|
||||
// 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); // $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);
|
||||
// $text = $this->formatHeadings($text, $origText, $isMain);
|
||||
@ -1200,7 +1206,7 @@ public class XomwParser implements XomwParserIface {
|
||||
* @param boolean $linestart
|
||||
* @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);
|
||||
|
||||
// MW.HOOK:ParserAfterUnstrip
|
||||
@ -4123,11 +4129,11 @@ public class XomwParser implements XomwParserIface {
|
||||
* @param String $text
|
||||
* @param int $options
|
||||
*/
|
||||
public void replaceLinkHolders(Xomw_parser_bfr pbfr) {
|
||||
public void replaceLinkHolders(XomwParserBfr pbfr) {
|
||||
// this.mLinkHolders.replace(text);
|
||||
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) {
|
||||
// this.mLinkHolders.replace(text);
|
||||
this.mLinkHolders.replace(tmp_pbfr.Init(text));
|
||||
@ -5325,7 +5331,25 @@ public class XomwParser implements XomwParserIface {
|
||||
// OutputPage::setupOOUI();
|
||||
// this.mOutput->setEnableOOUI(true);
|
||||
// }
|
||||
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 final String MARKER_PREFIX_STR = "\u007f'\"`UNIQ-";
|
||||
public static final byte[]
|
||||
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
|
||||
*/
|
||||
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 Bry_bfr src, trg;
|
||||
public Xomw_parser_bfr() {
|
||||
public XomwParserBfr() {
|
||||
this.src = bfr_1;
|
||||
this.trg = bfr_2;
|
||||
}
|
||||
public Bry_bfr Src() {return src;}
|
||||
public Bry_bfr Trg() {return trg;}
|
||||
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
|
||||
int text_len = text.length;
|
||||
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
|
||||
*/
|
||||
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 static void Replace(Xomw_parser_bfr pbfr, byte[] find, byte[] repl) {
|
||||
public class XomwParserBfr_ {
|
||||
public static void Replace(XomwParserBfr pbfr, byte[] find, byte[] repl) {
|
||||
// XO.PBFR
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
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.*;
|
||||
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 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][];
|
@ -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.*;
|
||||
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 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 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 {
|
||||
int nextLinkID();
|
||||
XomwParserOptions getOptions();
|
||||
Xomw_link_renderer getLinkRenderer();
|
||||
XomwLinkRenderer getLinkRenderer();
|
||||
|
||||
byte[] armorLinks(Bry_bfr trg, byte[] src, int src_bgn, int src_end);
|
||||
Xomw_atr_mgr getExternalLinkAttribs(Xomw_atr_mgr atrs);
|
||||
|
@ -59,8 +59,8 @@ public class XomwParserTest {
|
||||
}
|
||||
class XomwParserFxt {
|
||||
private final XomwParser parser = new XomwParser();
|
||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
public XomwParserFxt() {
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
|
@ -125,10 +125,10 @@ public class XomwStripState {
|
||||
}
|
||||
|
||||
// XOWA
|
||||
public void unstripGeneral(Xomw_parser_bfr pbfr) {unstripType(TYPE_GENERAL, pbfr);}
|
||||
public void unstripNoWiki(Xomw_parser_bfr pbfr) {unstripType(TYPE_NOWIKI , pbfr);}
|
||||
public void unstripBoth(Xomw_parser_bfr pbfr) {unstripType(TYPE_BOTH , pbfr);}
|
||||
private boolean unstripType(byte tid, Xomw_parser_bfr pbfr) {
|
||||
public void unstripGeneral(XomwParserBfr pbfr) {unstripType(TYPE_GENERAL, pbfr);}
|
||||
public void unstripNoWiki(XomwParserBfr pbfr) {unstripType(TYPE_NOWIKI , pbfr);}
|
||||
public void unstripBoth(XomwParserBfr pbfr) {unstripType(TYPE_BOTH , pbfr);}
|
||||
private boolean unstripType(byte tid, XomwParserBfr pbfr) {
|
||||
// XO.PBFR
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
|
@ -23,7 +23,7 @@ public class Xomw_block_level_pass {
|
||||
private int last_section;
|
||||
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
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
|
@ -29,8 +29,8 @@ public class Xomw_block_level_pass__tst {
|
||||
}
|
||||
class Xomw_block_level_pass__fxt {
|
||||
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 Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
private boolean apos = true;
|
||||
public void Test__do_block_levels(String src, String 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
|
||||
);
|
||||
}
|
||||
public void doDoubleUnderscore(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
||||
public void doDoubleUnderscore(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||
// XO.PBFR
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
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");}
|
||||
}
|
||||
class Xomw_doubleunder_wkr__fxt {
|
||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
private final Xomw_doubleunder_wkr wkr = new Xomw_doubleunder_wkr();
|
||||
public Xomw_doubleunder_data data = new Xomw_doubleunder_data();
|
||||
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.*;
|
||||
public interface Xomw_heading_cbk {
|
||||
void On_hdr_seen(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr);
|
||||
void On_src_done(Xomw_parser_ctx pctx, Xomw_heading_wkr wkr);
|
||||
void On_hdr_seen(XomwParserCtx 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;
|
||||
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"
|
||||
byte[] src = wkr.Src();
|
||||
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);
|
||||
|
||||
// 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>
|
||||
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(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;
|
||||
byte[] src = wkr.Src();
|
||||
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.*;
|
||||
import gplx.core.btries.*; import gplx.xowa.langs.*;
|
||||
public class Xomw_heading_wkr {
|
||||
private Xomw_parser_ctx pctx;
|
||||
private XomwParserCtx pctx;
|
||||
private Xomw_heading_cbk cbk;
|
||||
public byte[] Src() {return src;} private byte[] src;
|
||||
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_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 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();
|
||||
byte[] src_bry = src_bfr.Bfr();
|
||||
int src_end = src_bfr.Len();
|
||||
@ -36,7 +36,7 @@ public class Xomw_heading_wkr {
|
||||
pbfr.Switch();
|
||||
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
|
||||
this.pctx = pctx;
|
||||
this.src = src;
|
||||
@ -51,7 +51,7 @@ public class Xomw_heading_wkr {
|
||||
|
||||
// do loop
|
||||
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;
|
||||
while (true) {
|
||||
int nxt = pos + 1;
|
||||
|
@ -29,7 +29,7 @@ public class Xomw_heading_wkr__tst {
|
||||
class Xomw_heading_wkr__fxt {
|
||||
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_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
|
||||
public void Test__parse(String src_str, String expd) {
|
||||
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.*;
|
||||
public class Xomw_hr_wkr {// THREAD.UNSAFE: caching for repeated calls
|
||||
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
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
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");}
|
||||
}
|
||||
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();
|
||||
public void Test__parse(String src_str, String expd) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ public class Xomw_lnke_wkr {// THREAD.UNSAFE: caching for repeated calls
|
||||
this.regex_space = regex_space;
|
||||
}
|
||||
// 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
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
|
@ -54,17 +54,17 @@ public class Xomw_lnke_wkr__tst {
|
||||
}
|
||||
class Xomw_lnke_wkr__fxt {
|
||||
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;
|
||||
public Xomw_lnke_wkr__fxt() {
|
||||
Xomw_parser parser = new Xomw_parser();
|
||||
this.wkr = new Xomw_lnke_wkr(parser, parser.Tmp(), parser.Linker(), parser.Sanitizer());
|
||||
XomwParser parser = new XomwParser();
|
||||
this.wkr = new Xomw_lnke_wkr(parser, Bry_bfr_.New(), parser.Linker(), parser.Sanitizer());
|
||||
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) {
|
||||
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);
|
||||
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
|
||||
private final XomwLinkHolderArray holders;
|
||||
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 Xomw_quote_wkr quote_wkr;
|
||||
private final XomwStripState strip_state;
|
||||
private Xomw_parser_env env;
|
||||
private XomwParserEnv env;
|
||||
private Xow_wiki wiki;
|
||||
private XomwTitle mPageTitle;
|
||||
// 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 Hash_adp mImageParams = 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
|
||||
) {
|
||||
this.parser = parser;
|
||||
@ -65,7 +65,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
|
||||
this.tmp = tmp;
|
||||
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.wiki = wiki;
|
||||
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() {
|
||||
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
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
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);
|
||||
}
|
||||
// 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
|
||||
// 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"
|
||||
// Options are:
|
||||
// * 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) {
|
||||
linker.normalizeSubpageLink(rv, mPageTitle, target, text);
|
||||
}
|
||||
public void replaceLinkHolders(Xomw_parser_bfr pbfr) {
|
||||
public void replaceLinkHolders(XomwParserBfr pbfr) {
|
||||
holders.replace(pbfr);
|
||||
}
|
||||
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 {
|
||||
private final Xomw_lnki_wkr wkr;
|
||||
private final Xomw_parser_ctx pctx;
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final Xomw_parser_env env;
|
||||
private final XomwParserCtx pctx;
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
private final XomwParserEnv env;
|
||||
private final XomwFileFinderMock file_finder;
|
||||
private final XomwFileRepo repo = new XomwFileRepo(Bry_.new_a7("/orig"), Bry_.new_a7("/thumb"));
|
||||
private boolean apos = true;
|
||||
@ -94,7 +94,7 @@ class Xomw_lnki_wkr__fxt {
|
||||
parser.Init_by_wiki(wiki);
|
||||
|
||||
// ctx
|
||||
pctx = new Xomw_parser_ctx();
|
||||
pctx = new XomwParserCtx();
|
||||
pctx.Init_by_page(XomwTitle.newFromText(Bry_.new_a7("Page_1")));
|
||||
}
|
||||
public void Clear() {
|
||||
|
@ -66,7 +66,7 @@ public class Xomw_magiclinks_wkr {
|
||||
|
||||
// Replace special strings like "ISBN xxx" and "RFC xxx" with
|
||||
// magic external links.
|
||||
public void doMagicLinks(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) {
|
||||
public void doMagicLinks(XomwParserCtx pctx, XomwParserBfr pbfr) {
|
||||
// XO.PBFR
|
||||
Bry_bfr src_bfr = pbfr.Src();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
|
@ -66,12 +66,12 @@ public class Xomw_magiclinks_wkr__tst {
|
||||
}
|
||||
class Xomw_magiclinks_wkr__fxt {
|
||||
private final Xomw_magiclinks_wkr wkr;
|
||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
public Xomw_magiclinks_wkr__fxt() {
|
||||
Xomw_regex_space regex_space = new Xomw_regex_space();
|
||||
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));
|
||||
wkr.Init_by_wiki();
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ package gplx.xowa.mediawiki.includes.parsers.nbsps; import gplx.*; import gplx.x
|
||||
import gplx.core.btries.*;
|
||||
public class Xomw_nbsp_wkr {
|
||||
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:
|
||||
// Clean up special characters, only run once, next-to-last before doBlockLevels
|
||||
// $fixtags = [
|
||||
|
@ -25,8 +25,8 @@ public class Xomw_nbsp_wkr__tst {
|
||||
}
|
||||
class Xomw_nbsp_wkr__fxt {
|
||||
private final Xomw_nbsp_wkr wkr = new Xomw_nbsp_wkr();
|
||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final Xomw_parser_bfr pbfr = new Xomw_parser_bfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final XomwParserBfr pbfr = new XomwParserBfr();
|
||||
private boolean apos = true;
|
||||
public void Test__parse(String src_str, String expd) {
|
||||
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) {
|
||||
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();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
int src_bgn = 0;
|
||||
|
@ -34,10 +34,10 @@ public class Xomw_quote_wkr__tst {
|
||||
}
|
||||
class Xomw_quote_wkr__fxt {
|
||||
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) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
|
||||
this.sanitizer = sanitizer;
|
||||
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();
|
||||
byte[] src = src_bfr.Bfr();
|
||||
int src_bgn = 0;
|
||||
|
@ -115,12 +115,12 @@ public class Xomw_table_wkr__tst {
|
||||
}
|
||||
}
|
||||
class Xomw_table_wkr__fxt {
|
||||
private final Xomw_parser_bfr parser_bfr = new Xomw_parser_bfr();
|
||||
private final Xomw_parser_ctx pctx = new Xomw_parser_ctx();
|
||||
private final XomwParserBfr parser_bfr = new XomwParserBfr();
|
||||
private final XomwParserCtx pctx = new XomwParserCtx();
|
||||
private final Xomw_table_wkr wkr;
|
||||
public Xomw_table_wkr__fxt() {
|
||||
Xomw_parser parser = new Xomw_parser();
|
||||
this.wkr = new Xomw_table_wkr(parser.Tmp(), parser.Sanitizer(), parser.Strip_state());
|
||||
XomwParser parser = new XomwParser();
|
||||
this.wkr = new Xomw_table_wkr(Bry_bfr_.New(), parser.Sanitizer(), parser.Strip_state());
|
||||
}
|
||||
|
||||
public void Test__parse(String src_str, String expd) {
|
||||
|
Loading…
Reference in New Issue
Block a user