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

'v3.7.3.1'

This commit is contained in:
gnosygnu
2016-07-17 21:10:59 -04:00
parent b333db45f8
commit 7a851a41a5
290 changed files with 3048 additions and 2124 deletions

View File

@@ -78,7 +78,7 @@ public class Xop_nl_lxr implements Xop_lxr {
Xop_tblw_wkr.Atrs_close(ctx, src, root, Bool_.N);
break;
}
if ( ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki // parse_mode is wiki
if ( ctx.Parse_tid() == Xop_parser_tid_.Tid__wtxt // parse_mode is wiki
&& para_wkr.Enabled() // check that para is enabled
)
para_wkr.Process_nl(ctx, root, src, bgn_pos, cur_pos);
@@ -89,6 +89,7 @@ public class Xop_nl_lxr implements Xop_lxr {
return cur_pos;
}
public static int Scan_fwd_for_ctg(Xop_ctx ctx, byte[] src, int cur_pos, int src_len) {
Btrie_rv trv = new Btrie_rv();
for (int i = cur_pos; i < src_len; i++) {
byte b = src[i];
switch (b) {
@@ -99,9 +100,9 @@ public class Xop_nl_lxr implements Xop_lxr {
&& i + 2 < src_len) {
int ttl_bgn = Bry_find_.Find_fwd_while(src, i + 2, src_len, Byte_ascii.Space);
Btrie_slim_mgr ctg_trie = ctx.Wiki().Ns_mgr().Category_trie();
Object ctg_ns = ctg_trie.Match_bgn(src, ttl_bgn, src_len);
Object ctg_ns = ctg_trie.Match_at(trv, src, ttl_bgn, src_len);
if (ctg_ns != null // "[[Category" found
&& Bry_.Has_at(src, src_len, ctg_trie.Match_pos(), Byte_ascii.Colon)) { // check that next char is :
&& Bry_.Has_at(src, src_len, trv.Pos(), Byte_ascii.Colon)) { // check that next char is :
return i;// return pos of 1st [
}
return Bry_find_.Not_found;

View File

@@ -24,12 +24,13 @@ public class Xop_para_wkr implements Xop_ctx_wkr {
private int para_stack;
private boolean in_block, block_is_bgn_xnde, block_is_end_xnde, in_blockquote, block_is_bgn_blockquote, block_is_end_blockquote;
private int prv_nl_pos; private Xop_para_tkn prv_para; private int prv_ws_bgn;
private final Btrie_rv trv = new Btrie_rv();
public boolean Enabled() {return enabled;} public Xop_para_wkr Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true;
public Xop_para_wkr Enabled_y_() {enabled = true; return this;} public Xop_para_wkr Enabled_n_() {enabled = false; return this;}
public void Ctor_ctx(Xop_ctx ctx) {}
public void Page_bgn(Xop_ctx ctx, Xop_root_tkn root) {
this.Clear();
para_enabled = enabled && ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki; // only enable for wikitext (not for template)
para_enabled = enabled && ctx.Parse_tid() == Xop_parser_tid_.Tid__wtxt; // only enable for wikitext (not for template)
if (para_enabled)
Prv_para_new(ctx, root, -1, 0); // create <para> at bos
}
@@ -159,7 +160,7 @@ public class Xop_para_wkr implements Xop_ctx_wkr {
public int Process_pre(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, int txt_pos) {
Dd_clear(ctx);
Btrie_slim_mgr tblw_ws_trie = ctx.App().Utl_trie_tblw_ws();
Object o = tblw_ws_trie.Match_bgn(src, txt_pos, src_len);
Object o = tblw_ws_trie.Match_at(trv, src, txt_pos, src_len);
if (o != null) { // tblw_ws found
Xop_tblw_ws_itm ws_itm = (Xop_tblw_ws_itm)o;
byte tblw_type = ws_itm.Tblw_type();
@@ -172,7 +173,7 @@ public class Xop_para_wkr implements Xop_ctx_wkr {
}
break;
case Xop_tblw_ws_itm.Type_xnde:
int nxt_pos = tblw_ws_trie.Match_pos();
int nxt_pos = trv.Pos();
if (nxt_pos < src_len) { // bounds check
switch (src[nxt_pos]) { // check that next char is "end" of xnde name; guard against false matches like "<trk" PAGE:de.v:Via_Jutlandica/Gpx DATE:2014-11-29
case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // whitespace

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import org.junit.*; import gplx.xowa.parsers.lists.*;
public class Xop_para_wkr_basic_tst {
private final Xop_fxt fxt = new Xop_fxt(); String raw;
private final Xop_fxt fxt = new Xop_fxt(); String raw;
@Before public void init() {fxt.Reset(); fxt.Init_para_y_();}
@After public void teardown() {fxt.Init_para_n_();}
@Test public void Nl_0() {
@@ -569,14 +569,6 @@ public class Xop_para_wkr_basic_tst {
, "<h2>b</h2>"
, ""
));
fxt.Test_parse_page_wiki(raw
, fxt.tkn_para_bgn_para_(0) // x0: <bos> -> <p> 1=blank
, fxt.tkn_txt_(0, 1), fxt.tkn_para_end_para_(2) // t2/x1: a\n -> a\n</p> 1=bgn 2=blank
, fxt.tkn_hdr_(1, 7, 2).Subs_
( fxt.tkn_txt_(4, 5)
)
, fxt.tkn_para_blank_(7) // NOTE: this is redundant, but will not output to html; DATE:2013-02-03
);
}
@Test public void Hdr_2() {
raw = String_.Concat_lines_nl_skip_last
@@ -591,15 +583,6 @@ public class Xop_para_wkr_basic_tst {
, "<h2>b</h2>"
, ""
));
fxt.Test_parse_page_wiki(raw
, fxt.tkn_para_bgn_para_(0) // x0: <bos> -> <p> 1=blank
, fxt.tkn_txt_(0, 1), fxt.tkn_para_blank_(2)
, fxt.tkn_para_end_para_(3)
, fxt.tkn_hdr_(2, 8, 2).Subs_
( fxt.tkn_txt_(5, 6)
)
, fxt.tkn_para_blank_(8)
);
}
@Test public void Hdr_list() {
raw = String_.Concat_lines_nl_skip_last
@@ -614,17 +597,6 @@ public class Xop_para_wkr_basic_tst {
, " </li>"
, "</ul>"
));
fxt.Test_parse_page_wiki(raw
, fxt.tkn_para_blank_(0), fxt.tkn_para_blank_(1)
, fxt.tkn_hdr_(0, 5, 2).Subs_
( fxt.tkn_txt_(2, 3)
)
, fxt.tkn_para_blank_(6)
, fxt.tkn_list_bgn_(5, 7, Xop_list_tkn_.List_itmTyp_ul)
, fxt.tkn_txt_(7, 8)
, fxt.tkn_list_end_(8)
, fxt.tkn_para_blank_(8)
);
}
@Test public void Hdr_list_multi() {
raw = String_.Concat_lines_nl_skip_last
@@ -644,19 +616,6 @@ public class Xop_para_wkr_basic_tst {
, " </li>"
, "</ul>"
));
fxt.Test_parse_page_wiki(raw
, fxt.tkn_para_blank_(0), fxt.tkn_para_blank_(1)
, fxt.tkn_hdr_(0, 7, 2).Subs_
( fxt.tkn_txt_(2, 3)
)
, fxt.tkn_para_blank_(8)
, fxt.tkn_list_bgn_(7, 9, Xop_list_tkn_.List_itmTyp_ul)
, fxt.tkn_txt_(9, 10), fxt.tkn_para_blank_(11)
, fxt.tkn_list_end_(10)
, fxt.tkn_list_bgn_(10, 12, Xop_list_tkn_.List_itmTyp_ul)
, fxt.tkn_txt_(12, 13)
, fxt.tkn_list_end_(13), fxt.tkn_para_blank_(13)
);
}
@Test public void Para_hdr() {
raw = String_.Concat_lines_nl_skip_last