1
0
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:
gnosygnu 2017-02-24 09:04:27 -05:00
parent dc87cdcb5e
commit 35bbd888ae
44 changed files with 157 additions and 462 deletions

View File

@ -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 );

View File

@ -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;

View File

@ -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));

View File

@ -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));

View File

@ -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();

View File

@ -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

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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);
// }

View File

@ -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"));

View File

@ -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 );
//

View File

@ -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() {
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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();

View File

@ -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][];

View File

@ -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;}
}

View File

@ -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);

View File

@ -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);

View File

@ -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();

View File

@ -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();

View File

@ -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);

View File

@ -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&lt;div\\5&gt;\\6&lt;/div&gt;\\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;
}
}

View File

@ -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();

View File

@ -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() {

View File

@ -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);
}

View File

@ -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();

View File

@ -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;

View File

@ -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);

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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) {

View File

@ -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() {

View File

@ -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();

View File

@ -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();
}

View File

@ -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 = [

View File

@ -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);

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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) {