diff --git a/100_core/src/gplx/core/brys/Bry_rdr.java b/100_core/src/gplx/core/brys/Bry_rdr.java index 14834b795..2bf1bbb36 100644 --- a/100_core/src/gplx/core/brys/Bry_rdr.java +++ b/100_core/src/gplx/core/brys/Bry_rdr.java @@ -42,7 +42,7 @@ public class Bry_rdr { public int Read_int_to_semic() {return Read_int_to(Byte_ascii.Semic);} public int Read_int_to_comma() {return Read_int_to(Byte_ascii.Comma);} public int Read_int_to_pipe() {return Read_int_to(Byte_ascii.Pipe);} - public int Read_int_to_nl() {return Read_int_to(Byte_ascii.NewLine);} + public int Read_int_to_nl() {return Read_int_to(Byte_ascii.Nl);} public int Read_int_to_quote() {return Read_int_to(Byte_ascii.Quote);} public int Read_int_to_non_num(){return Read_int_to(Byte_ascii.Nil);} public int Read_int_to(byte to_char) { @@ -74,7 +74,7 @@ public class Bry_rdr { } return bgn == pos ? or_int : rv * negative; } - public byte[] Read_bry_to_nl() {return Read_bry_to(Byte_ascii.NewLine);} + public byte[] Read_bry_to_nl() {return Read_bry_to(Byte_ascii.Nl);} public byte[] Read_bry_to_semic() {return Read_bry_to(Byte_ascii.Semic);} public byte[] Read_bry_to_pipe() {return Read_bry_to(Byte_ascii.Pipe);} public byte[] Read_bry_to_quote() {return Read_bry_to(Byte_ascii.Quote);} @@ -104,7 +104,7 @@ public class Bry_rdr { @gplx.Virtual public Bry_rdr Skip_ws() { while (pos < src_len) { switch (src[pos]) { - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Space: + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: ++pos; break; default: diff --git a/100_core/src/gplx/core/js/Js_wtr.java b/100_core/src/gplx/core/js/Js_wtr.java new file mode 100644 index 000000000..647fec495 --- /dev/null +++ b/100_core/src/gplx/core/js/Js_wtr.java @@ -0,0 +1,107 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.core.js; import gplx.*; import gplx.core.*; +public class Js_wtr { + private final Bry_bfr bfr = Bry_bfr.reset_(255); + private int arg_idx = 0, ary_idx = 0; + public byte Quote_char() {return quote_char;} public Js_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Quote; + public void Clear() {bfr.Clear();} + public String To_str() {return bfr.Xto_str();} + public String To_str_and_clear() {return bfr.Xto_str_and_clear();} + public Js_wtr Func_init(String name) {return Func_init(Bry_.new_u8(name));} + public Js_wtr Func_init(byte[] name) { + bfr.Add(name).Add_byte(Byte_ascii.Paren_bgn); + arg_idx = 0; + return this; + } + public Js_wtr Func_term() { + bfr.Add_byte(Byte_ascii.Paren_end).Add_byte_semic(); + return this; + } + public Js_wtr Prm_bry(byte[] bry) { + Prm_spr(); + Write_val(bry); + return this; + } + public Js_wtr Prm_obj_ary(Object[] ary) { + int ary_len = ary.length; + for (int i = 0; i < ary_len; ++i) { + Object itm = ary[i]; + if (i != 0) bfr.Add_byte(Byte_ascii.Comma); + boolean val_needs_quotes = true; + if ( ClassAdp_.Eq_typeSafe(itm, Bool_.Cls_ref_type) + || ClassAdp_.Eq_typeSafe(itm, Int_.Cls_ref_type) + || ClassAdp_.Eq_typeSafe(itm, Long_.Cls_ref_type) + ) { + val_needs_quotes = false; + } + if (val_needs_quotes) + Write_val(Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(itm))); + else + bfr.Add_obj_strict(itm); + } + return this; + } + public Js_wtr Ary_init() { + ary_idx = 0; + bfr.Add_byte(Byte_ascii.Brack_bgn); + return this; + } + public Js_wtr Ary_term() { + bfr.Add_byte(Byte_ascii.Brack_end); + return this; + } + public void Prm_spr() { + if (arg_idx != 0) bfr.Add_byte(Byte_ascii.Comma); + ++arg_idx; + } + private void Ary_spr() { + if (ary_idx != 0) bfr.Add_byte(Byte_ascii.Comma); + ++ary_idx; + } + public Js_wtr Ary_bry(byte[] bry) { + Ary_spr(); + Write_val(bry); + return this; + } + private Js_wtr Write_keyword_return() {bfr.Add(Keyword_return); return this;} + public Js_wtr Write_statement_return_func(String func, Object... args) { + this.Write_keyword_return(); + this.Func_init(func); + this.Prm_obj_ary(args); + this.Func_term(); + return this; + } + public void Write_val(byte[] bry) { + bfr.Add_byte(quote_char); + int len = bry.length; + for (int i = 0; i < len; i++) { + byte b = bry[i]; + switch (b) { + case Byte_ascii.Backslash: // "\" -> "\\"; needed else js will usurp \ as escape; EX: "\&" -> "&"; DATE:2014-06-24 + case Byte_ascii.Quote: + case Byte_ascii.Apos: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(b); break; + case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_n); break; // "\n" -> "\\n" + case Byte_ascii.Cr: break;// skip + default: bfr.Add_byte(b); break; + } + } + bfr.Add_byte(quote_char); + } + private static final byte[] Keyword_return = Bry_.new_a7("return "); +} diff --git a/400_xowa/src/gplx/web/js/Js_wtr_tst.java b/100_core/src/gplx/core/js/Js_wtr_tst.java similarity index 87% rename from 400_xowa/src/gplx/web/js/Js_wtr_tst.java rename to 100_core/src/gplx/core/js/Js_wtr_tst.java index 079e46b27..46a98d32d 100644 --- a/400_xowa/src/gplx/web/js/Js_wtr_tst.java +++ b/100_core/src/gplx/core/js/Js_wtr_tst.java @@ -15,13 +15,14 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.web.js; import gplx.*; import gplx.web.*; +package gplx.core.js; import gplx.*; import gplx.core.*; import org.junit.*; public class Js_wtr_tst { @Before public void Init() {fxt.Clear();} private Js_wtr_fxt fxt = new Js_wtr_fxt(); @Test public void Basic() { fxt.Test_write_val_html("abc" , "'abc'"); fxt.Test_write_val_html("a'b" , "'a\\'b'"); + fxt.Test_write_val_html("a\"b" , "'a\\\"b'"); fxt.Test_write_val_html("a\nb" , "'a\\nb'"); fxt.Test_write_val_html("a\rb" , "'ab'"); fxt.Test_write_val_html("a\\&b" , "'a\\\\&b'"); // PURPOSE: backslashes need to be escaped; need for MathJax and "\&"; PAGE:Electromagnetic_field_tensor; DATE:2014-06-24 @@ -34,7 +35,7 @@ class Js_wtr_fxt { wtr.Quote_char_(Byte_ascii.Apos); } public void Test_write_val_html(String raw, String expd) { - wtr.Add_str_quote_html(Bry_.new_u8(raw)); - Tfds.Eq(expd, wtr.Xto_str_and_clear()); + wtr.Write_val(Bry_.new_u8(raw)); + Tfds.Eq(expd, wtr.To_str_and_clear()); } } diff --git a/100_core/src_110_primitive/gplx/Bry_.java b/100_core/src_110_primitive/gplx/Bry_.java index cca325a6e..0af4d566d 100644 --- a/100_core/src_110_primitive/gplx/Bry_.java +++ b/100_core/src_110_primitive/gplx/Bry_.java @@ -364,7 +364,7 @@ public class Bry_ { } return rv; } - public static final byte[] Trim_ary_ws = mask_(256, Byte_ascii.Tab, Byte_ascii.NewLine, Byte_ascii.CarriageReturn, Byte_ascii.Space); + public static final byte[] Trim_ary_ws = mask_(256, Byte_ascii.Tab, Byte_ascii.Nl, Byte_ascii.Cr, Byte_ascii.Space); public static byte[] Trim(byte[] src) {return Trim(src, 0, src.length, true, true, Trim_ary_ws);} public static byte[] Trim(byte[] src, int bgn, int end) {return Trim(src, bgn, end, true, true, Trim_ary_ws);} public static byte[] Trim(byte[] src, int bgn, int end, boolean trim_bgn, boolean trim_end, byte[] trim_ary) { @@ -456,7 +456,7 @@ public class Bry_ { for (int i = src_bgn; i < src_len; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Nl: case Byte_ascii.Cr: break; default: return i; @@ -468,7 +468,7 @@ public class Bry_ { for (int i = src_bgn; i > -1; i--) { byte b = src[i]; switch (b) { - case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Nl: case Byte_ascii.Cr: break; default: return i; @@ -676,7 +676,7 @@ public class Bry_ { break; case Byte_ascii.Dash: return i == bgn ? rv * -1 : or; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: if (numbers_seen) ws_seen = true; break; @@ -930,7 +930,7 @@ public class Bry_ { public static int Trim_end_pos(byte[] src, int end) { for (int i = end - 1; i > -1; i--) { switch (src[i]) { - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Space: + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: break; default: return i + 1; @@ -960,13 +960,13 @@ public class Bry_ { List_adp rv = List_adp_.new_(); while (true) { boolean last = src_pos == src_len; - byte b = last ? Byte_ascii.NewLine : src[src_pos]; + byte b = last ? Byte_ascii.Nl : src[src_pos]; int nxt_bgn = src_pos + 1; switch (b) { - case Byte_ascii.CarriageReturn: - case Byte_ascii.NewLine: - if ( b == Byte_ascii.CarriageReturn // check for crlf - && nxt_bgn < src_len && src[nxt_bgn] == Byte_ascii.NewLine) { + case Byte_ascii.Cr: + case Byte_ascii.Nl: + if ( b == Byte_ascii.Cr // check for crlf + && nxt_bgn < src_len && src[nxt_bgn] == Byte_ascii.Nl) { ++nxt_bgn; } if (last && (src_pos - fld_bgn == 0)) {} // ignore trailing itms diff --git a/100_core/src_110_primitive/gplx/Bry_bfr.java b/100_core/src_110_primitive/gplx/Bry_bfr.java index 014a2cac0..de0b0c2e1 100644 --- a/100_core/src_110_primitive/gplx/Bry_bfr.java +++ b/100_core/src_110_primitive/gplx/Bry_bfr.java @@ -159,7 +159,7 @@ public class Bry_bfr { public Bry_bfr Add_byte_backslash() {return Add_byte(Byte_ascii.Backslash);} public Bry_bfr Add_byte_quote() {return Add_byte(Byte_ascii.Quote);} public Bry_bfr Add_byte_space() {return Add_byte(Byte_ascii.Space);} - public Bry_bfr Add_byte_nl() {return Add_byte(Byte_ascii.NewLine);} + public Bry_bfr Add_byte_nl() {return Add_byte(Byte_ascii.Nl);} public Bry_bfr Add_byte_dot() {return Add_byte(Byte_ascii.Dot);} public Bry_bfr Add_byte(byte val) { int new_pos = bfr_len + 1; @@ -362,7 +362,7 @@ public class Bry_bfr { for (int i = bgn; i < end; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.NewLine: bfr[bfr_len] = Byte_ascii.Backslash; bfr[bfr_len + 1] = Byte_ascii.Ltr_n; bfr_len += 2; break; + case Byte_ascii.Nl: bfr[bfr_len] = Byte_ascii.Backslash; bfr[bfr_len + 1] = Byte_ascii.Ltr_n; bfr_len += 2; break; case Byte_ascii.Tab: bfr[bfr_len] = Byte_ascii.Backslash; bfr[bfr_len + 1] = Byte_ascii.Ltr_t; bfr_len += 2; break; case Byte_ascii.Backslash: bfr[bfr_len] = Byte_ascii.Backslash; bfr[bfr_len + 1] = Byte_ascii.Backslash; bfr_len += 2; break; default: bfr[bfr_len] = b; ++bfr_len; break; @@ -399,6 +399,23 @@ public class Bry_bfr { else ((Bry_fmtr_arg)o).XferAry(this, 0); return this; } + public Bry_bfr Add_obj_strict(Object o) { + if (o == null) return this; // treat null as empty String; + Class o_type = o.getClass(); + if (o_type == byte[].class) Add((byte[])o); + else if (o_type == Integer.class) Add_int_variable(Int_.cast_(o)); + else if (o_type == Byte.class) Add_byte(Byte_.cast_(o)); + else if (o_type == Long.class) Add_long_variable(Long_.cast_(o)); + else if (o_type == String.class) Add_str((String)o); + else if (o_type == Bry_bfr.class) Add_bfr_and_preserve((Bry_bfr)o); + else if (o_type == DateAdp.class) Add_dte((DateAdp)o); + else if (o_type == Io_url.class) Add(((Io_url)o).RawBry()); + else if (o_type == Boolean.class) Add_bool(Bool_.cast_(o)); + else if (o_type == Double.class) Add_double(Double_.cast_(o)); + else if (o_type == Float.class) Add_float(Float_.cast_(o)); + else ((Bry_fmtr_arg)o).XferAry(this, 0); + return this; + } public Bry_bfr Add_yn(boolean v) {Add_byte(v ? Byte_ascii.Ltr_y : Byte_ascii.Ltr_n); return this;} public Bry_bfr Add_base85_len_5(int v) {return Add_base85(v, 5);} public Bry_bfr Add_base85(int v, int pad) { @@ -409,7 +426,7 @@ public class Bry_bfr { return this; } public boolean Match_end_byt(byte b) {return bfr_len == 0 ? false : bfr[bfr_len - 1] == b;} - public boolean Match_end_byt_nl_or_bos() {return bfr_len == 0 ? true : bfr[bfr_len - 1] == Byte_ascii.NewLine;} + public boolean Match_end_byt_nl_or_bos() {return bfr_len == 0 ? true : bfr[bfr_len - 1] == Byte_ascii.Nl;} public boolean Match_end_ary(byte[] ary) {return Bry_.Match(bfr, bfr_len - ary.length, bfr_len, ary);} public Bry_bfr Insert_at(int add_pos, byte[] add_bry) {return Insert_at(add_pos, add_bry, 0, add_bry.length);} public Bry_bfr Insert_at(int add_pos, byte[] add_bry, int add_bgn, int add_end) { diff --git a/100_core/src_110_primitive/gplx/Bry_finder.java b/100_core/src_110_primitive/gplx/Bry_finder.java index 656af4fa7..4368807f1 100644 --- a/100_core/src_110_primitive/gplx/Bry_finder.java +++ b/100_core/src_110_primitive/gplx/Bry_finder.java @@ -98,7 +98,7 @@ public class Bry_finder { for (int i = cur; i > -1; i--) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: rv = i; break; default: @@ -112,7 +112,7 @@ public class Bry_finder { for (int i = cur; i > -1; --i) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: return i; } } @@ -125,7 +125,7 @@ public class Bry_finder { for (int i = cur; i < end; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: rv = i; break; default: @@ -140,7 +140,7 @@ public class Bry_finder { for (int i = cur; i >= end; i--) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: break; default: return i; @@ -153,7 +153,7 @@ public class Bry_finder { for (int i = cur; i >= end; i--) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: break; default: return i; @@ -199,7 +199,7 @@ public class Bry_finder { while (true) { if (cur == end) return Bry_finder.Not_found; switch (src[cur]) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: return cur; default: ++cur; @@ -240,7 +240,7 @@ public class Bry_finder { if (cur == end) return cur; try { switch (src[cur]) { - case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: case Byte_ascii.Tab: ++cur; break; default: return cur; } @@ -282,9 +282,9 @@ public class Bry_finder { if (cur == end) return cur; switch (src[cur]) { case Byte_ascii.Space: - case Byte_ascii.NewLine: + case Byte_ascii.Nl: case Byte_ascii.Tab: - case Byte_ascii.CarriageReturn: + case Byte_ascii.Cr: ++cur; break; default: diff --git a/100_core/src_110_primitive/gplx/Bry_fmtr.java b/100_core/src_110_primitive/gplx/Bry_fmtr.java index 91bc0ab29..f61abfd99 100644 --- a/100_core/src_110_primitive/gplx/Bry_fmtr.java +++ b/100_core/src_110_primitive/gplx/Bry_fmtr.java @@ -193,7 +193,7 @@ public class Bry_fmtr { } else { // ~{0}; ~~ -> ~; ~n -> newLine; ~t -> tab if (nxt_byte == char_escape) tmp_byte = char_escape; - else if (nxt_byte == char_escape_nl) tmp_byte = Byte_ascii.NewLine; + else if (nxt_byte == char_escape_nl) tmp_byte = Byte_ascii.Nl; else if (nxt_byte == char_escape_tab) tmp_byte = Byte_ascii.Tab; else { if (fail_when_invalid_escapes) throw Err_.new_("unknown escape code").Add("code", Char_.XbyInt(nxt_byte)).Add("fmt_pos", fmt_pos + 1); diff --git a/100_core/src_110_primitive/gplx/Byte_ascii.java b/100_core/src_110_primitive/gplx/Byte_ascii.java index 2f5c7c19f..8739f50a6 100644 --- a/100_core/src_110_primitive/gplx/Byte_ascii.java +++ b/100_core/src_110_primitive/gplx/Byte_ascii.java @@ -19,10 +19,10 @@ package gplx; public class Byte_ascii { public static final byte Nil = 0 , Backfeed = 8, Tab = 9 - , NewLine = 10, Formfeed = 12, CarriageReturn = 13 + , Nl = 10, Formfeed = 12, Cr = 13 , Space = 32, Bang = 33, Quote = 34 , Hash = 35, Dollar = 36, Percent = 37, Amp = 38, Apos = 39 - , Paren_bgn = 40, Paren_end = 41, Asterisk = 42, Plus = 43, Comma = 44 + , Paren_bgn = 40, Paren_end = 41, Star = 42, Plus = 43, Comma = 44 , Dash = 45, Dot = 46, Slash = 47, Num_0 = 48, Num_1 = 49 , Num_2 = 50, Num_3 = 51, Num_4 = 52, Num_5 = 53, Num_6 = 54 , Num_7 = 55, Num_8 = 56, Num_9 = 57, Colon = 58, Semic = 59 @@ -49,7 +49,7 @@ public class Byte_ascii { switch (b) { case Byte_ascii.Bang: case Byte_ascii.Quote: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: case Byte_ascii.Amp: case Byte_ascii.Apos: - case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: case Byte_ascii.Plus: case Byte_ascii.Comma: + case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Plus: case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Lt: case Byte_ascii.Eq: case Byte_ascii.Gt: case Byte_ascii.Question: case Byte_ascii.At: @@ -68,7 +68,7 @@ public class Byte_ascii { } public static boolean Is_ws(byte b) { switch (b) { - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Space: return true; + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: return true; default: return false; } } @@ -79,19 +79,17 @@ public class Byte_ascii { public static byte Case_upper(byte b) { return b > 96 && b < 123 ? (byte)(b - 32) - : b - ; + : b; } public static byte Case_lower(byte b) { return b > 64 && b < 91 ? (byte)(b + 32) - : b - ; + : b; } public static final byte[] Space_len2 = new byte[] {Space, Space}, Space_len4 = new byte[] {Space, Space, Space, Space}; public static final byte[] Tab_bry = new byte[] {Byte_ascii.Tab} - , NewLine_bry = new byte[] {Byte_ascii.NewLine} + , Nl_bry = new byte[] {Byte_ascii.Nl} , Bang_bry = new byte[] {Byte_ascii.Bang} , Dot_bry = new byte[] {Byte_ascii.Dot} , Comma_bry = new byte[] {Byte_ascii.Comma} @@ -106,7 +104,7 @@ public class Byte_ascii { , Pipe_bry = new byte[] {Byte_ascii.Pipe} , Underline_bry = new byte[] {Byte_ascii.Underline} , Slash_bry = new byte[] {Byte_ascii.Slash} - , Asterisk_bry = new byte[] {Byte_ascii.Asterisk} + , Asterisk_bry = new byte[] {Byte_ascii.Star} , Dash_bry = new byte[] {Byte_ascii.Dash} , Space_bry = new byte[] {Byte_ascii.Space} ; diff --git a/100_core/src_110_primitive/gplx/Int_.java b/100_core/src_110_primitive/gplx/Int_.java index a11fd2eed..3ef3631d1 100644 --- a/100_core/src_110_primitive/gplx/Int_.java +++ b/100_core/src_110_primitive/gplx/Int_.java @@ -225,7 +225,7 @@ public class Int_ implements GfoInvkAble { cur_val += (b - Byte_ascii.Num_0) * cur_mult; cur_mult *= 10; break; - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Tab: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Tab: break; case Byte_ascii.Comma: if (cur_idx < 0) return or; diff --git a/100_core/src_110_primitive/gplx/Int_ary_.java b/100_core/src_110_primitive/gplx/Int_ary_.java index 01ca75b4e..14ae94b63 100644 --- a/100_core/src_110_primitive/gplx/Int_ary_.java +++ b/100_core/src_110_primitive/gplx/Int_ary_.java @@ -67,7 +67,7 @@ public class Int_ary_ { num_bgn = pos; num_end = pos + 1; // num_end is always after pos; EX: "9": num_end = 1; "98,7": num_end=2 break; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: // NOTE: parseNumList replaces ws with '', so "1 1" will become "11" + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: // NOTE: parseNumList replaces ws with '', so "1 1" will become "11" break; case Byte_ascii.Comma: if (pos == raw_len -1) return or; // eos; EX: "1," diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java index 501e54e66..b5a2b0585 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java +++ b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java @@ -71,7 +71,7 @@ public class TimeSpanAdp_ { if (i == 0 && unit_val > 0) // only if first char && unit_val > 0 sign = -1; break; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: if (fail_if_ws) return parse_null; break; default: diff --git a/100_core/src_210_env/gplx/Op_sys_.java b/100_core/src_210_env/gplx/Op_sys_.java index fa6bef43f..324d5222d 100644 --- a/100_core/src_210_env/gplx/Op_sys_.java +++ b/100_core/src_210_env/gplx/Op_sys_.java @@ -26,7 +26,7 @@ public class Op_sys_ { case Byte_ascii.Colon: case Byte_ascii.Pipe: case Byte_ascii.Question: - case Byte_ascii.Asterisk: + case Byte_ascii.Star: case Byte_ascii.Quote: return true; default: return false; } diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index 45f0ed1f9..87ae3d134 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -44,7 +44,8 @@ public class Db_conn { public void Ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... idxs) {engine.Ddl_create_idx(usr_dlg, idxs);} public void Ddl_append_fld(String tbl, Db_meta_fld fld) {engine.Ddl_append_fld(tbl, fld);} public void Ddl_delete_tbl(String tbl) {engine.Ddl_delete_tbl(tbl);} - public boolean Meta_tbl_exists(String tbl) {return engine.Meta_tbl_exists(tbl);} + public boolean Meta_tbl_exists(String tbl) {return engine.Meta_tbl_exists(tbl);} + public boolean Meta_fld_exists(String tbl, String fld) {return engine.Meta_fld_exists(tbl, fld);} public void Rls_reg(RlsAble rls) {rls_list.Add(rls);} public void Rls_conn() { int len = rls_list.Count(); @@ -56,7 +57,7 @@ public class Db_conn { Db_conn_pool.I.Del(engine.Conn_info()); } public int Exec_sql(String sql) {return this.Exec_qry(Db_qry_sql.dml_(sql));} - public Db_rdr Exec_sql_as_rdr2(String sql) {return this.Stmt_new(Db_qry_sql.dml_(sql)).Exec_select__rls_auto();} + public Db_rdr Exec_sql_as_rdr_v2(String sql) {return this.Stmt_new(Db_qry_sql.dml_(sql)).Exec_select__rls_auto();} public int Exec_sql_plog_ntx(String msg, String sql) {return Exec_sql_plog(Bool_.N, msg, sql);} public int Exec_sql_plog_txn(String msg, String sql) {return Exec_sql_plog(Bool_.Y, msg, sql);} public int Exec_sql_plog(boolean txn, String msg, String sql) { diff --git a/140_dbs/src/gplx/dbs/Db_meta_fld.java b/140_dbs/src/gplx/dbs/Db_meta_fld.java index 020d4e88c..d8342d5b8 100644 --- a/140_dbs/src/gplx/dbs/Db_meta_fld.java +++ b/140_dbs/src/gplx/dbs/Db_meta_fld.java @@ -17,20 +17,31 @@ along with this program. If not, see . */ package gplx.dbs; import gplx.*; public class Db_meta_fld { - public Db_meta_fld(String name, int tid, int len, boolean nullable, boolean primary, boolean autonum, Object default_value) { + public Db_meta_fld(String name, int tid, int len) { this.name = name; this.tid = tid; this.len = len; - this.nullable = nullable; this.primary = primary; this.autonum = autonum; this.default_value = default_value; + this.nullable = false; this.primary = false; this.autonum = false; this.default_val = Default_value_null; } public int Tid() {return tid;} private final int tid; public String Name() {return name;} private final String name; public int Len() {return len;} private final int len; - public boolean Nullable() {return nullable;} private final boolean nullable; - public boolean Primary() {return primary;} private final boolean primary; - public boolean Autonum() {return autonum;} private final boolean autonum; - public Object Default_value() {return default_value;} private final Object default_value; + public boolean Nullable() {return nullable;} public Db_meta_fld Nullable_y_() {nullable = true; return this;} private boolean nullable; + public boolean Primary() {return primary;} public Db_meta_fld Primary_y_() {primary = true; return this;} private boolean primary; + public boolean Autonum() {return autonum;} public Db_meta_fld Autonum_y_() {autonum = true; return this;} private boolean autonum; + public Object Default() {return default_val;} public Db_meta_fld Default_(Object v) {default_val = v; return this;} private Object default_val; + public static final int Tid_bool = 0, Tid_byte = 1, Tid_short = 2, Tid_int = 3, Tid_long = 4, Tid_float = 5, Tid_double = 6, Tid_str = 7, Tid_text = 8, Tid_bry = 9, Tid_decimal = 10, Tid_date = 11; public static final String Key_null = null; public static final int Len_null = -1; - public static final String[] Ary_empy = String_.Ary_empty; public static final Object Default_value_null = null; + public static final String[] Ary_empty = String_.Ary_empty; + public static Db_meta_fld new_bool(String name) {return new Db_meta_fld(name, Tid_bool , Len_null);} + public static Db_meta_fld new_byte(String name) {return new Db_meta_fld(name, Tid_byte , Len_null);} + public static Db_meta_fld new_short(String name) {return new Db_meta_fld(name, Tid_short , Len_null);} + public static Db_meta_fld new_int(String name) {return new Db_meta_fld(name, Tid_int , Len_null);} + public static Db_meta_fld new_long(String name) {return new Db_meta_fld(name, Tid_long , Len_null);} + public static Db_meta_fld new_float(String name) {return new Db_meta_fld(name, Tid_float , Len_null);} + public static Db_meta_fld new_double(String name) {return new Db_meta_fld(name, Tid_double, Len_null);} + public static Db_meta_fld new_text(String name) {return new Db_meta_fld(name, Tid_text , Len_null);} + public static Db_meta_fld new_bry(String name) {return new Db_meta_fld(name, Tid_bry , Len_null);} + public static Db_meta_fld new_str(String name, int len) {return new Db_meta_fld(name, Tid_str , len);} } diff --git a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java index f8fd7806a..9f2db101f 100644 --- a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java +++ b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java @@ -20,7 +20,8 @@ public class Db_meta_fld_list { private final Ordered_hash flds = Ordered_hash_.new_(); private final List_adp keys = List_adp_.new_(); public void Clear() {flds.Clear(); keys.Clear();} - public Db_meta_fld Get_by(String name) {return (Db_meta_fld)flds.Get_by(name);} + public Db_meta_fld Get_by(String name) {return (Db_meta_fld)flds.Get_by(name);} + public Db_meta_fld Get_at(int idx) {return (Db_meta_fld)flds.Get_at(idx);} public String[] To_str_ary() {if (str_ary == null) str_ary = (String[])keys.To_ary(String.class); return str_ary;} private String[] str_ary; public Db_meta_fld[] To_fld_ary() {if (fld_ary == null) fld_ary = (Db_meta_fld[])flds.To_ary(Db_meta_fld.class); return fld_ary;} private Db_meta_fld[] fld_ary; public String[] To_str_ary_wo_autonum() { @@ -51,34 +52,29 @@ public class Db_meta_fld_list { return rv.To_str_ary(); } public boolean Has(String key) {return flds.Has(key);} - public String Add_bool(String name) {return Add(name, Db_meta_fld.Tid_bool, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_byte(String name) {return Add(name, Db_meta_fld.Tid_byte, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_short(String name) {return Add(name, Db_meta_fld.Tid_short, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_int(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_int_pkey(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_int_pkey_autonum(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.Y, Db_meta_fld.Default_value_null);} - public String Add_int_autonum(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_int_dflt(String name, int dflt) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.N, Bool_.N, dflt);} - public String Add_long(String name) {return Add(name, Db_meta_fld.Tid_long, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_float(String name) {return Add(name, Db_meta_fld.Tid_float, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_double(String name) {return Add(name, Db_meta_fld.Tid_double, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_str(String name, int len) {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_str_pkey(String name, int len) {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.Y, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_str_null(String name, int len) {return Add(name, Db_meta_fld.Tid_str, len, Bool_.Y, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} + public String Add_bool(String name) {return Add(Db_meta_fld.new_bool(name));} + public String Add_byte(String name) {return Add(Db_meta_fld.new_byte(name));} + public String Add_short(String name) {return Add(Db_meta_fld.new_short(name));} + public String Add_int(String name) {return Add(Db_meta_fld.new_int(name));} + public String Add_int_pkey(String name) {return Add(Db_meta_fld.new_int(name).Primary_y_());} + public String Add_int_pkey_autonum(String name) {return Add(Db_meta_fld.new_int(name).Primary_y_().Autonum_y_());} + public String Add_int_autonum(String name) {return Add(Db_meta_fld.new_int(name).Autonum_y_());} + public String Add_int_dflt(String name, int dflt) {return Add(Db_meta_fld.new_int(name).Default_(dflt));} + public String Add_long(String name) {return Add(Db_meta_fld.new_long(name));} + public String Add_float(String name) {return Add(Db_meta_fld.new_float(name));} + public String Add_double(String name) {return Add(Db_meta_fld.new_double(name));} + public String Add_text(String name) {return Add(Db_meta_fld.new_text(name));} + public String Add_bry(String name) {return Add(Db_meta_fld.new_bry(name));} + public String Add_str(String name, int len) {return Add(Db_meta_fld.new_str(name, len));} + public String Add_str_pkey(String name, int len) {return Add(Db_meta_fld.new_str(name, len).Primary_y_());} + public String Add_str_null(String name, int len) {return Add(Db_meta_fld.new_str(name, len).Nullable_y_());} public String Add_str_dflt(String name, int len, String dflt) - {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.N, Bool_.N, dflt);} - public String Add_text(String name) {return Add(name, Db_meta_fld.Tid_text, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add_bry(String name) {return Add(name, Db_meta_fld.Tid_bry, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);} - public String Add(String name, int tid, int len, boolean nullable, boolean primary, boolean autoincrement, Object default_value) { - Db_meta_fld fld = new Db_meta_fld(name, tid, len, nullable, primary, autoincrement, default_value); - Add_itm(fld); - return name; - } - public void Add_itm(Db_meta_fld fld) { + {return Add(Db_meta_fld.new_str(name, len).Default_(dflt));} + public String Add(Db_meta_fld fld) { String name = fld.Name(); flds.Add(name, fld); keys.Add(name); + return name; } - private static final int Len_null = Db_meta_fld.Len_null; public static Db_meta_fld_list new_() {return new Db_meta_fld_list();} } diff --git a/140_dbs/src/gplx/dbs/Db_rdr.java b/140_dbs/src/gplx/dbs/Db_rdr.java index 5c9f820b2..b4c25fe56 100644 --- a/140_dbs/src/gplx/dbs/Db_rdr.java +++ b/140_dbs/src/gplx/dbs/Db_rdr.java @@ -19,7 +19,7 @@ package gplx.dbs; import gplx.*; public interface Db_rdr { boolean Move_next(); byte[] Read_bry(String k); - byte[] Read_bry_in_parts(String tbl, String fld, String crt_key, Object crt_val); + void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val); byte[] Read_bry_by_str(String k); String Read_str(String k); byte Read_byte(String k); diff --git a/140_dbs/src/gplx/dbs/Db_rdr_.java b/140_dbs/src/gplx/dbs/Db_rdr_.java index c0d0b1735..8fabab9b3 100644 --- a/140_dbs/src/gplx/dbs/Db_rdr_.java +++ b/140_dbs/src/gplx/dbs/Db_rdr_.java @@ -23,7 +23,7 @@ class Db_rdr__empty implements Db_rdr { public boolean Move_next() {return false;} public byte[] Read_bry(String k) {return Bry_.Empty;} public byte[] Read_bry_by_str(String k) {return Bry_.Empty;} - public byte[] Read_bry_in_parts(String tbl, String fld, String crt_key, Object crt_val) {return Bry_.Empty;} + public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {} public byte Read_byte(String k) {return Byte_.Max_value_127;} public String Read_str(String k) {return String_.Empty;} public DateAdp Read_date_by_str(String k) {return DateAdp_.MinValue;} diff --git a/140_dbs/src/gplx/dbs/Db_rdr__basic.java b/140_dbs/src/gplx/dbs/Db_rdr__basic.java index 2bb70d738..fb5f6bd8f 100644 --- a/140_dbs/src/gplx/dbs/Db_rdr__basic.java +++ b/140_dbs/src/gplx/dbs/Db_rdr__basic.java @@ -28,7 +28,7 @@ public class Db_rdr__basic implements Db_rdr { } @gplx.Virtual public byte[] Read_bry(String k) {try {return (byte[])rdr.getObject(k);} catch (Exception e) {throw Err_.new_("read failed: k={0} type={1} err={2}", k, Bry_.Cls_val_name, Err_.Message_lang(e));}} @gplx.Virtual public byte[] Read_bry_by_str(String k) {try {return Bry_.new_u8((String)rdr.getObject(k));} catch (Exception e) {throw Err_.new_("read failed: k={0} type={1} err={2}", k, String_.Cls_val_name, Err_.Message_lang(e));}} - @gplx.Virtual public byte[] Read_bry_in_parts(String tbl, String fld, String crt_key, Object crt_val) {throw Err_.not_implemented_();} + @gplx.Virtual public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.not_implemented_();} @gplx.Virtual public String Read_str(String k) {try {return (String)rdr.getObject(k);} catch (Exception e) {throw Err_.new_("read failed: k={0} type={1} err={2}", k, String_.Cls_val_name, Err_.Message_lang(e));}} @gplx.Virtual public DateAdp Read_date_by_str(String k) {return DateAdp_.parse_iso8561(Read_str(k));} @gplx.Virtual public int Read_int(String k) {try {return Int_.cast_(rdr.getObject(k));} catch (Exception e) {throw Err_.new_("read failed: k={0} type={1} err={2}", k, Int_.Cls_val_name, Err_.Message_lang(e));}} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_rdr__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_rdr__mem.java index 7882dc710..549287e12 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_rdr__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_rdr__mem.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; public class Db_rdr__mem implements Db_rdr { - private final Mem_itm[] rows; private int row_idx = -1; private final int rows_len; - private Mem_itm row; - public Db_rdr__mem(String[] cols, Mem_itm[] rows) { + private final Mem_row[] rows; private int row_idx = -1; private final int rows_len; + private Mem_row row; + public Db_rdr__mem(String[] cols, Mem_row[] rows) { this.rows = rows; this.rows_len = rows.length; } public boolean Move_next() { @@ -31,7 +31,7 @@ public class Db_rdr__mem implements Db_rdr { public byte[] Read_bry(String k) {return (byte[])row.Get_by(k);} public String Read_str(String k) {return (String)row.Get_by(k);} public byte[] Read_bry_by_str(String k) {return Bry_.new_u8_safe((String)row.Get_by(k));} // NOTE: null b/c db can have NULL - @gplx.Virtual public byte[] Read_bry_in_parts(String tbl, String fld, String crt_key, Object crt_val) {throw Err_.not_implemented_();} + @gplx.Virtual public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.not_implemented_();} public DateAdp Read_date_by_str(String k) {return DateAdp_.parse_iso8561((String)row.Get_by(k));} public byte Read_byte(String k) {return Byte_.cast_(row.Get_by(k));} public int Read_int(String k) {return Int_.cast_(row.Get_by(k));} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java new file mode 100644 index 000000000..ed3180703 --- /dev/null +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java @@ -0,0 +1,24 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; +public class Mem_qry_set { + private final List_adp rows = List_adp_.new_(); + public int Len() {return rows.Count();} + public Mem_row Get_at(int i) {return (Mem_row)rows.Get_at(i);} + public void Add(Mem_row row) {rows.Add(row);} +} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_itm.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java similarity index 84% rename from 140_dbs/src/gplx/dbs/engines/mems/Mem_itm.java rename to 140_dbs/src/gplx/dbs/engines/mems/Mem_row.java index 4e30b3bc6..8b4b38b8e 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_itm.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java @@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -public class Mem_itm implements GfoInvkAble { +public class Mem_row implements GfoInvkAble { private final Ordered_hash hash = Ordered_hash_.new_(); public Object Get_by(String key) {return hash.Get_by(key);} public Object Get_at(int i) {return hash.Get_at(i);} - public void Set_by(String key, Object val) {hash.Add_if_dupe_use_nth(key, val);} + public void Set_by(String key, Object val) {hash.Add_if_dupe_use_nth(key, val);} + public void Add(String key, Object val) {hash.Add(key, val);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { Object rv = Get_by(k); if (rv == null) return GfoInvkAble_.Rv_unhandled; diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java index 531a995ff..283b0d9b6 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java @@ -23,7 +23,7 @@ public class Mem_tbl { public Mem_tbl(Db_meta_tbl meta) {this.meta = meta;} public Db_meta_tbl Meta() {return meta;} private final Db_meta_tbl meta; public int Insert(Db_stmt__mem stmt) { - Mem_itm itm = new Mem_itm(); + Mem_row itm = new Mem_row(); Db_meta_fld[] flds = meta.Flds(); int len = flds.length; for (int i = 0; i < len; ++i) { @@ -50,7 +50,7 @@ public class Mem_tbl { int where_rows_len = where_rows.Count(); String[] update_cols = qry.Cols_for_update(); int update_cols_len = update_cols.length; for (int i = 0; i < where_rows_len; ++i) { - Mem_itm itm = (Mem_itm)where_rows.Get_at(i); + Mem_row itm = (Mem_row)where_rows.Get_at(i); for (int j = 0; j < update_cols_len; ++j) itm.Set_by(update_cols[j], stmt.Args_get_at(j)); } @@ -62,7 +62,7 @@ public class Mem_tbl { Select_rows_where(where_rows, stmt, qry.Where()); int where_rows_len = where_rows.Count(); for (int i = 0; i < where_rows_len; ++i) { - Mem_itm itm = (Mem_itm)where_rows.Get_at(i); + Mem_row itm = (Mem_row)where_rows.Get_at(i); rows.Del(itm); } return where_rows_len; @@ -81,13 +81,13 @@ public class Mem_tbl { } where.Val_from_args(stmt.Crts()); Select_rows_where(where_rows, stmt, where); - return new Db_rdr__mem(select, (Mem_itm[])where_rows.To_ary_and_clear(Mem_itm.class)); + return new Db_rdr__mem(select, (Mem_row[])where_rows.To_ary_and_clear(Mem_row.class)); } private void Select_rows_where(List_adp rv, Db_stmt__mem stmt, Criteria crt) { rv.Clear(); int rows_len = rows.Count(); for (int i = 0; i < rows_len; ++i) { - Mem_itm itm = (Mem_itm)rows.Get_at(i); + Mem_row itm = (Mem_row)rows.Get_at(i); if (crt.Matches(itm)) rv.Add(itm); } diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Sql_bry_rdr.java b/140_dbs/src/gplx/dbs/metas/parsers/Sql_bry_rdr.java index f8d4ddaee..d18cb0997 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Sql_bry_rdr.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Sql_bry_rdr.java @@ -39,8 +39,8 @@ public class Sql_bry_rdr extends Bry_rdr { public byte[] Read_sql_identifier() byte[] end_bry = null; switch (b_0) { case Byte_ascii.Dash: bgn_1 = Byte_ascii.Dash; end_bry = Comm_end_line; break; - case Byte_ascii.Slash: bgn_1 = Byte_ascii.Asterisk; end_bry = Comm_end_multi; break; - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Space: + case Byte_ascii.Slash: bgn_1 = Byte_ascii.Star; end_bry = Comm_end_multi; break; + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: ++pos; return super.Skip_ws(); default: @@ -53,5 +53,5 @@ public class Sql_bry_rdr extends Bry_rdr { public byte[] Read_sql_identifier() pos = end_pos + end_bry.length; return this.Skip_ws(); } - private static final byte[] Comm_end_line = Byte_ascii.NewLine_bry, Comm_end_multi = Bry_.new_a7("*/"); + private static final byte[] Comm_end_line = Byte_ascii.Nl_bry, Comm_end_multi = Bry_.new_a7("*/"); } diff --git a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java index 4a94054a7..ce4e50dbe 100644 --- a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java +++ b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java @@ -65,14 +65,14 @@ public class Db_sqlbldr__sqlite implements Db_sqlbldr { tmp_bfr.Add_str_a7(fld.Name()).Add_byte_space(); Tid_to_sql(tmp_bfr, fld.Tid(), fld.Len()); tmp_bfr.Add_byte_space(); tmp_bfr.Add_str_a7(fld.Nullable() ? "NULL " : "NOT NULL "); - if (fld.Default_value() != Db_meta_fld.Default_value_null) { + if (fld.Default() != Db_meta_fld.Default_value_null) { tmp_bfr.Add_str_a7("DEFAULT "); boolean quote = Bool_.N; switch (fld.Tid()) { case Db_meta_fld.Tid_str: case Db_meta_fld.Tid_text: quote = Bool_.Y; break; } if (quote) tmp_bfr.Add_byte_apos(); - tmp_bfr.Add_str_u8(Object_.Xto_str_strict_or_null(fld.Default_value())); + tmp_bfr.Add_str_u8(Object_.Xto_str_strict_or_null(fld.Default())); if (quote) tmp_bfr.Add_byte_apos(); tmp_bfr.Add_byte_space(); } diff --git a/150_gfui/lib/swt.jar b/150_gfui/lib/swt.jar index a7deaa8ba..cd1b685e7 100644 Binary files a/150_gfui/lib/swt.jar and b/150_gfui/lib/swt.jar differ diff --git a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java b/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java index 61e4832ef..8588c5264 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java +++ b/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java @@ -17,36 +17,14 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public interface Gxw_html extends GxwElem { - String Html_doc_html(); void Html_doc_html_load_by_mem(String html); void Html_doc_html_load_by_url(String path, String html); byte Html_doc_html_load_tid(); void Html_doc_html_load_tid_(byte v); - String Html_doc_selected_get_text_or_href(); - String Html_doc_selected_get_href_or_text(); - String Html_doc_selected_get_src_or_empty(); - String Html_doc_selected_get_active_or_selection(); // gets selected anchor or highlighted text for opening a new page - boolean Html_doc_find(String id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight); - void Html_doc_body_focus(); - void Html_doc_selection_focus_toggle(); - String Html_elem_atr_get_str (String id, String atr_key); - boolean Html_elem_atr_get_bool (String id, String atr_key); - boolean Html_elem_atr_set (String id, String atr_key, String val); - boolean Html_elem_atr_set_append(String id, String atr_key, String append); - boolean Html_elem_delete(String id); - boolean Html_elem_replace_html(String id, String html); - boolean Html_elem_append_above(String id, String html); - boolean Html_gallery_packed_exec(); - boolean Html_elem_focus(String id); - boolean Html_elem_scroll_into_view(String id); - boolean Html_elem_img_update(String id, String src, int w, int h); - String Html_window_vpos(); - boolean Html_window_vpos_(String v); - boolean Html_window_print_preview(); - String Html_active_atr_get_str(String atr_key, String or); void Html_js_enabled_(boolean v); - void Html_js_eval_proc(String name, String... args); - String Html_js_eval_script(String script); - void Html_js_cbks_add(String js_func_name, GfoInvkAble invk); + String Html_js_eval_proc_as_str (String name, Object... args); + boolean Html_js_eval_proc_as_bool (String name, Object... args); + String Html_js_eval_script (String script); + void Html_js_cbks_add (String js_func_name, GfoInvkAble invk); void Html_invk_src_(GfoEvObj v); void Html_dispose(); } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java index 5937bec0f..a4294e1f5 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java @@ -18,35 +18,13 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; public class Gfui_html extends GfuiElemBase { public void Under_html_(Gxw_html v) {under = v;} private Gxw_html under; - public String Html_doc_html() {return under.Html_doc_html();} public void Html_doc_html_load_by_mem(String html) {under.Html_doc_html_load_by_mem(html);} public void Html_doc_html_load_by_url(String path, String html) {under.Html_doc_html_load_by_url(path, html);} public byte Html_doc_html_load_tid() {return under.Html_doc_html_load_tid();} public void Html_doc_html_load_tid_(byte v) {under.Html_doc_html_load_tid_(v);} - public String Html_doc_selected_get_text_or_href() {return under.Html_doc_selected_get_text_or_href();} - public String Html_doc_selected_get_href_or_text() {return under.Html_doc_selected_get_href_or_text();} - public String Html_doc_selected_get_src_or_empty() {return under.Html_doc_selected_get_src_or_empty();} - public String Html_doc_selected_get_active_or_selection() {return under.Html_doc_selected_get_active_or_selection();} - public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {return under.Html_doc_find(elem_id, find, dir_fwd, case_match, wrap_find, highlight_matches);} - public void Html_doc_body_focus() {under.Html_doc_body_focus();} - public void Html_doc_selection_focus_toggle() {under.Html_doc_selection_focus_toggle();} - @gplx.Virtual public String Html_elem_atr_get_str(String elem_id, String atr_key) {return under.Html_elem_atr_get_str(elem_id, atr_key);} - @gplx.Virtual public boolean Html_elem_atr_get_bool(String elem_id, String atr_key) {return under.Html_elem_atr_get_bool(elem_id, atr_key);} - public boolean Html_elem_atr_set(String elem_id, String atr_key, String v) {return under.Html_elem_atr_set(elem_id, atr_key, v);} - public boolean Html_elem_atr_set_append(String elem_id, String atr_key, String append) {return under.Html_elem_atr_set_append(elem_id, atr_key, append);} - public boolean Html_elem_delete(String elem_id) {return under.Html_elem_delete(elem_id);} - public boolean Html_elem_replace_html(String id, String html) {return under.Html_elem_replace_html(id, html);} - public boolean Html_elem_append_above(String id, String html) {return under.Html_elem_append_above(id, html);} - public boolean Html_gallery_packed_exec() {return under.Html_gallery_packed_exec();} - public void Html_elem_focus(String elem_id) {under.Html_elem_focus(elem_id);} - public boolean Html_elem_scroll_into_view(String elem_id) {return under.Html_elem_scroll_into_view(elem_id);} - public boolean Html_elem_img_update(String elem_id, String elem_src, int elem_width, int elem_height) {return under.Html_elem_img_update(elem_id, elem_src, elem_width, elem_height);} - public String Html_window_vpos() {return under.Html_window_vpos();} - public void Html_window_vpos_(String v) {under.Html_window_vpos_(v);} - public boolean Html_window_print_preview() {return under.Html_window_print_preview();} - public String Html_active_atr_get_str(String atrKey, String or) {return under.Html_active_atr_get_str(atrKey, or);} public void Html_js_enabled_(boolean v) {under.Html_js_enabled_(v);} - public void Html_js_eval_proc(String name, String... args) {under.Html_js_eval_proc(name, args);} + @gplx.Virtual public String Html_js_eval_proc_as_str(String name, Object... args) {return under.Html_js_eval_proc_as_str(name, args);} + @gplx.Virtual public boolean Html_js_eval_proc_as_bool(String name, Object... args) {return under.Html_js_eval_proc_as_bool(name, args);} public String Html_js_eval_script(String script) {return under.Html_js_eval_script(script);} public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {under.Html_js_cbks_add(js_func_name, invk);} public void Html_invk_src_(GfoEvObj v) {under.Html_invk_src_(v);} diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg.java b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg.java deleted file mode 100644 index 0bfb5d834..000000000 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg.java +++ /dev/null @@ -1,116 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.gfui; import gplx.*; -import gplx.core.primitives.*; -public class Gfui_html_cfg implements GfoInvkAble { - public String Doc_html() {return Exec_fmt(fmtr_doc_html);} private Bry_fmtr fmtr_doc_html = Bry_fmtr.new_(); - public String Doc_body_focus() {return Exec_fmt(fmtr_doc_body_focus);} private Bry_fmtr fmtr_doc_body_focus = Bry_fmtr.new_(); - public String Doc_selection_focus_toggle() {return Exec_fmt(fmtr_doc_selection_focus_toggle);} private Bry_fmtr fmtr_doc_selection_focus_toggle = Bry_fmtr.new_(); - public String Doc_selected_get_text_or_href() {return Exec_fmt(fmtr_doc_selected_get_text_or_href);} private Bry_fmtr fmtr_doc_selected_get_text_or_href = Bry_fmtr.keys_(); - public String Doc_selected_get_href_or_text() {return Exec_fmt(fmtr_doc_selected_get_href_or_text);} private Bry_fmtr fmtr_doc_selected_get_href_or_text = Bry_fmtr.keys_(); - public String Doc_selected_get_src_or_empty() {return Exec_fmt(fmtr_doc_selected_get_src_or_empty);} private Bry_fmtr fmtr_doc_selected_get_src_or_empty = Bry_fmtr.keys_(); - public String Doc_selected_get_active_or_selection() {return Exec_fmt(fmtr_doc_selected_get_active_or_selection);} private Bry_fmtr fmtr_doc_selected_get_active_or_selection = Bry_fmtr.keys_(); - public String Doc_find_html(String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) { - return Exec_fmt(fmtr_doc_find_html, find, Bool_.Xto_str_lower(dir_fwd), Bool_.Xto_str_lower(case_match), Bool_.Xto_str_lower(wrap_find), Bool_.Xto_str_lower(highlight_matches)); - } private Bry_fmtr fmtr_doc_find_html = Bry_fmtr.keys_("find_text", "dir_fwd", "case_match", "wrap_find", "highlight_matches"); - public String Doc_find_edit(String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean search_text_is_diff, int prv_find_bgn) { - return Exec_fmt(fmtr_doc_find_edit, find, Bool_.Xto_str_lower(dir_fwd), Bool_.Xto_str_lower(case_match), Bool_.Xto_str_lower(wrap_find), Bool_.Xto_str_lower(search_text_is_diff), Int_.Xto_str(prv_find_bgn)); - } private Bry_fmtr fmtr_doc_find_edit = Bry_fmtr.keys_("find_text", "dir_fwd", "case_match", "wrap_find", "find_text_is_diff", "prv_find_bgn"); - public String Elem_atr_get(String elem_id, String atr_key) {return Exec_fmt(fmtr_elem_atr_get, elem_id, atr_key);} private Bry_fmtr fmtr_elem_atr_get = Bry_fmtr.keys_("elem_id", "atr_key"); - public String Elem_atr_get_toString(String elem_id, String atr_key) {return Exec_fmt(fmtr_elem_atr_get_toString, elem_id, atr_key);} private Bry_fmtr fmtr_elem_atr_get_toString = Bry_fmtr.keys_("elem_id", "atr_key"); - public String Elem_atr_set(String elem_id, String atr_key, String atr_val) {return Exec_fmt(fmtr_elem_atr_set, elem_id, atr_key, atr_val);} private Bry_fmtr fmtr_elem_atr_set = Bry_fmtr.keys_("elem_id", "atr_key", "atr_val"); - public String Elem_atr_set_append(String elem_id, String atr_key, String atr_val) { - return Exec_fmt(fmtr_elem_atr_set_append, elem_id, atr_key, atr_val); - } private Bry_fmtr fmtr_elem_atr_set_append = Bry_fmtr.keys_("elem_id", "atr_key", "atr_val"); - public String Elem_delete(String elem_id) {return Exec_fmt(fmtr_elem_delete, elem_id);} private Bry_fmtr fmtr_elem_delete = Bry_fmtr.keys_("elem_id"); - public String Elem_replace_html(String id, String html) {return Exec_fmt(fmtr_elem_replace_html, id, Escape_quote(html));} private Bry_fmtr fmtr_elem_replace_html = Bry_fmtr.keys_("id", "html"); - public String Elem_append_above(String id, String html) {return Exec_fmt(fmtr_elem_append_above, id, Escape_quote(html));} private Bry_fmtr fmtr_elem_append_above = Bry_fmtr.keys_("id", "html"); - public String Gallery_packed_exec() {return Exec_fmt(fmtr_gallery_packed_exec);} private Bry_fmtr fmtr_gallery_packed_exec = Bry_fmtr.keys_(); - public String Elem_focus(String elem_id) {return Exec_fmt(fmtr_elem_focus, elem_id);} private Bry_fmtr fmtr_elem_focus = Bry_fmtr.keys_("elem_id"); - public String Elem_scroll_into_view(String elem_id) {return Exec_fmt(fmtr_elem_scroll_into_view, elem_id);} private Bry_fmtr fmtr_elem_scroll_into_view = Bry_fmtr.keys_("elem_id"); - public String Elem_img_update(String id, String src, int w, int h) {return Exec_fmt(fmtr_elem_img_update, id, src, Int_.Xto_str(w), Int_.Xto_str(h));} Bry_fmtr fmtr_elem_img_update = Bry_fmtr.keys_("elem_id", "elem_src", "elem_width", "elem_height"); - public String Window_vpos() {return Exec_fmt(fmtr_window_vpos);} private Bry_fmtr fmtr_window_vpos = Bry_fmtr.new_(); - public String Window_vpos_(String node_path, String scroll_top) {return Exec_fmt(fmtr_window_vpos_, node_path, scroll_top);} private Bry_fmtr fmtr_window_vpos_ = Bry_fmtr.keys_("node_path", "scroll_top"); - public String Window_print_preview() {return Exec_fmt(fmtr_window_print_preview);} private Bry_fmtr fmtr_window_print_preview = Bry_fmtr.keys_(); - public String Active_atr_get_str(String atr_key) {return Exec_fmt(fmtr_active_atr_get, atr_key);} private Bry_fmtr fmtr_active_atr_get = Bry_fmtr.keys_("atr_key"); - public Bry_fmtr Js_scripts_get(String name) {return (Bry_fmtr)js_scripts.Get_by(name);} - private void Js_scripts_add(String name, String text) { - Bry_fmtr fmtr = Bry_fmtr.new_(text); - js_scripts.Add_if_dupe_use_nth(name, fmtr); - } private Ordered_hash js_scripts = Ordered_hash_.new_(); - private String Exec_fmt(Bry_fmtr fmtr, String... vals) { - if (debug_file != null) GfsCore._.ExecFile(debug_file); - return fmtr.Bld_str_many(vals); - } private Io_url debug_file = null; - private static String Escape_quote(String v) { - String rv = v; - rv = String_.Replace(rv, "'", "\\'"); - rv = String_.Replace(rv, "\"", "\\\""); - rv = String_.Replace(rv, "\n", "\\n"); - return rv; - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_doc_html_)) fmtr_doc_html.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_body_focus_)) fmtr_doc_body_focus.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_selection_focus_toggle_)) fmtr_doc_selection_focus_toggle.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_selected_get_text_or_href_)) fmtr_doc_selected_get_text_or_href.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_selected_get_href_or_text_)) fmtr_doc_selected_get_href_or_text.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_selected_get_src_or_empty_)) fmtr_doc_selected_get_src_or_empty.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_selected_get_active_or_selection_)) fmtr_doc_selected_get_active_or_selection.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_find_html_)) fmtr_doc_find_html.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_find_edit_)) fmtr_doc_find_edit.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_atr_get_)) fmtr_elem_atr_get.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_atr_get_toString_)) fmtr_elem_atr_get_toString.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_atr_set_)) fmtr_elem_atr_set.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_atr_set_append_)) fmtr_elem_atr_set_append.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_delete_)) fmtr_elem_delete.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_replace_html_)) fmtr_elem_replace_html.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_append_above_)) fmtr_elem_append_above.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_gallery_packed_exec_)) fmtr_gallery_packed_exec.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_focus_)) fmtr_elem_focus.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_scroll_into_view_)) fmtr_elem_scroll_into_view.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_img_update_)) fmtr_elem_img_update.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_path_get_)) fmtr_window_vpos.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_win_print_preview_)) fmtr_window_print_preview.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_elem_path_set_)) fmtr_window_vpos_.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_doc_active_atr_get_)) fmtr_active_atr_get.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_js_scripts_add)) Js_scripts_add(m.ReadStr("name"), m.ReadStr("text")); - else if (ctx.Match(k, Invk_debug_file_)) debug_file = m.ReadIoUrl("v"); - else return GfoInvkAble_.Rv_unhandled; - return this; - } - public static void Html_window_vpos_parse(String v, String_obj_ref scroll_top, String_obj_ref node_path) { - int pipe_pos = String_.FindFwd(v, "|"); if (pipe_pos == String_.Find_none) return; // if elem_get_path returns invalid value, don't fail; DATE:2014-04-05 - scroll_top.Val_(String_.Mid(v, 0, pipe_pos)); - String node_path_val = String_.Mid(v, pipe_pos + 1, String_.Len(v)); - node_path_val = "'" + String_.Replace(node_path_val, ",", "','") + "'"; - node_path.Val_(node_path_val); - } - public static final String Invk_debug_file_ = "debug_file_" - , Invk_doc_html_ = "doc_html_", Invk_doc_body_focus_ = "doc_body_focus_", Invk_doc_selection_focus_toggle_ = "doc_selection_focus_toggle_" - , Invk_doc_active_atr_get_ = "doc_active_atr_get_", Invk_doc_find_html_ = "doc_find_html_", Invk_doc_find_edit_ = "doc_find_edit_" - , Invk_doc_selected_get_text_or_href_ = "doc_selected_get_text_or_href_", Invk_doc_selected_get_href_or_text_ = "doc_selected_get_href_or_text_", Invk_doc_selected_get_src_or_empty_ = "doc_selected_get_src_or_empty_", Invk_doc_selected_get_active_or_selection_ = "doc_selected_get_active_or_selection_" - , Invk_win_print_preview_ = "win_print_preview_" - , Invk_elem_atr_get_ = "elem_atr_get_", Invk_elem_atr_get_toString_ = "elem_atr_get_toString_", Invk_elem_atr_set_ = "elem_atr_set_", Invk_elem_atr_set_append_ = "elem_atr_set_append_" - , Invk_elem_path_get_ = "elem_path_get_", Invk_elem_path_set_ = "elem_path_set_" - , Invk_elem_focus_ = "elem_focus_", Invk_elem_scroll_into_view_ = "elem_scroll_into_view_" - , Invk_elem_img_update_ = "elem_img_update_", Invk_elem_delete_ = "elem_delete_", Invk_elem_replace_html_ = "elem_replace_html_", Invk_elem_append_above_ = "elem_append_above_", Invk_gallery_packed_exec_ = "gallery_packed_exec_" - , Invk_js_scripts_add = "js_scripts_add" - , Invk_javascript_enabled_ = "javascript_enabled_" - ; -} diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg_tst.java b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg_tst.java deleted file mode 100644 index 8dbdf9d2a..000000000 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html_cfg_tst.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.gfui; import gplx.*; -import org.junit.*; import gplx.core.primitives.*; -public class Gfui_html_cfg_tst { - private Gfui_html_cfg_fxt fxt = new Gfui_html_cfg_fxt(); - @Before public void init() {fxt.Reset();} - @Test public void Html_window_vpos_parse() { - fxt.Test_Html_window_vpos_parse("0|0,1,2", "0", "'0','1','2'"); - fxt.Test_Html_window_vpos_parse("org.eclipse.swt.SWTException: Permission denied for to get property Selection.rangeCount", null, null); // check that invalid path doesn't fail; DATE:2014-04-05 - } -} -class Gfui_html_cfg_fxt { - private String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); - public void Reset() {} - public void Test_Html_window_vpos_parse(String raw, String expd_scroll_top, String expd_node_path) { - scroll_top.Val_null_(); node_path.Val_null_(); - Gfui_html_cfg.Html_window_vpos_parse(raw, scroll_top, node_path); - Tfds.Eq(expd_scroll_top, scroll_top.Val(), expd_scroll_top); - Tfds.Eq(expd_node_path, node_path.Val(), expd_node_path); - } -} diff --git a/150_gfui/src_700_env/gplx/gfui/Mem_html.java b/150_gfui/src_700_env/gplx/gfui/Mem_html.java index 124d653c4..e24c74471 100644 --- a/150_gfui/src_700_env/gplx/gfui/Mem_html.java +++ b/150_gfui/src_700_env/gplx/gfui/Mem_html.java @@ -16,39 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfui; import gplx.*; -class Mem_html extends GxwTextMemo_lang implements Gxw_html { public String Html_doc_html() { - return String_.Replace(this.TextVal(), "\r\n", "\n"); - } - public String Html_doc_selected_get_sub_atr(String tag, String sub_tag, int sub_idx, String sub_atr) {return "";} - public String Html_doc_selected_get(String host, String page) {return "";} - public String Html_doc_selected_get_text_or_href() {return "";} - public String Html_doc_selected_get_href_or_text() {return "";} - public String Html_doc_selected_get_src_or_empty() {return "";} - public String Html_doc_selected_get_active_or_selection() {return "";} - public boolean Html_window_print_preview() {return false;} - public void Html_invk_src_(GfoEvObj v) {} - public String Html_elem_atr_get_str(String elem_id, String atr_key) { - if (String_.Eq(atr_key, Gfui_html.Atr_value)) return String_.Replace(this.TextVal(), "\r\n", "\n"); - else throw Err_.unhandled(atr_key); - } - public Object Html_elem_atr_get_obj(String elem_id, String atr_key) { - if (String_.Eq(atr_key, Gfui_html.Atr_value)) return String_.Replace(this.TextVal(), "\r\n", "\n"); - else throw Err_.unhandled(atr_key); - } - public boolean Html_elem_atr_get_bool(String elem_id, String atr_key) { - if (String_.Eq(atr_key, Gfui_html.Atr_value)) return Bool_.parse_(String_.Replace(this.TextVal(), "\r\n", "\n")); - else throw Err_.unhandled(atr_key); - } - public boolean Html_elem_atr_set(String elem_id, String atr_key, String v) { - if (String_.Eq(atr_key, Gfui_html.Atr_value)) this.TextVal_set(v); - else throw Err_.unhandled(atr_key); - return true; - } - public boolean Html_elem_atr_set_append(String elem_id, String atr_key, String append) { - if (String_.Eq(atr_key, Gfui_html.Atr_value)) this.TextVal_set(this.TextVal() + append); - else throw Err_.unhandled(atr_key); - return true; - } +class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_invk_src_(GfoEvObj v) {} public void Html_doc_html_load_by_mem(String s) { // this.Core().ForeColor_set(plainText ? ColorAdp_.Black : ColorAdp_.Gray); s = String_.Replace(s, "\r", ""); @@ -62,22 +30,6 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public String Htm } public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} - public String Html_active_atr_get_str(String atrKey, String or) { // NOTE: fuzzy way of finding current href; EX: b - String txt = this.TextVal(); - int pos = this.SelBgn(); - String rv = ExtractAtr(atrKey, txt, pos); - return rv == null ? or : rv; - } - public void Html_doc_body_focus() {} - public void Html_doc_selection_focus_toggle() {} - public String Html_window_vpos() {return "";} - public boolean Html_window_vpos_(String v) {return true;} - public boolean Html_elem_focus(String v) {return true;} - public boolean Html_elem_img_update(String elem_id, String elem_src, int elem_width, int elem_height) {return true;} - public boolean Html_elem_delete(String elem_id) {return true;} - public boolean Html_elem_replace_html(String id, String html) {return true;} - public boolean Html_elem_append_above(String id, String html) {return true;} - public boolean Html_gallery_packed_exec() {return true;} public String Html_js_eval_script(String script) {return "";} String ExtractAtr(String key, String txt, int pos) { int key_pos = String_.FindBwd(txt, key, pos); if (key_pos == String_.Find_none) return null; @@ -86,45 +38,11 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public String Htm if (!Int_.Between(pos, q0, q1)) return null; // current pos is not between nearest quotes return String_.Mid(txt, q0 + 1, q1); } - public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) { -// String txt = this.TextVal(); -// int pos = this.SelBgn(); -// int bgn = String_.FindFwd(txt, find, pos); if (bgn == String_.Find_none) return false; -// if (bgn == pos) { -// bgn = String_.FindFwd(txt, find, pos + 1); -// if (bgn == String_.Find_none) { -// bgn = String_.FindFwd(txt, find, 0); -// if (bgn == String_.Find_none) return false; -// } -// } -// this.SelBgn_set(bgn); -// this.SelLen_set(String_.Len(find)); -// this.ScrollTillSelectionStartIsFirstLine(); - txtFindMgr.Text_(this.TextVal()); - int cur = this.SelBgn(); - int[] ary = txtFindMgr.FindByUi(find, this.SelBgn(), this.SelLen(), false); - if (ary[0] != cur) { - this.SelBgn_set(ary[0]); - this.SelLen_set(ary[1]); - this.ScrollTillCaretIsVisible(); - } - else { - ary = txtFindMgr.FindByUi(find, this.SelBgn() + 1, 0, false); - if (ary[0] != 0) { - this.SelBgn_set(ary[0]); - this.SelLen_set(ary[1]); - this.ScrollTillCaretIsVisible(); -// this.ScrollTillSelectionStartIsFirstLine(); - } - } - return true; - } - public boolean Html_elem_scroll_into_view(String id) {return false;} public void Html_js_enabled_(boolean v) {} - public void Html_js_eval_proc(String proc, String... args) {} + public String Html_js_eval_proc_as_str(String proc, Object... args) {return "not implemented by mem_html";} + public boolean Html_js_eval_proc_as_bool(String proc, Object... args) {return false;} public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {} public void Html_dispose() {} - private TxtFindMgr txtFindMgr = new TxtFindMgr(); public Mem_html() { this.ctor_MsTextBoxMultiline_(); } diff --git a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java index f2c4b13c2..e2e2f0b59 100644 --- a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java +++ b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java @@ -64,7 +64,6 @@ public class Swt_kit implements Gfui_kit { public void Kit_sync_cmd_add(Swt_gui_cmd cmd) {synchronized (thread_lock) {sync_cmd_list.Add(cmd);}} public void Kit_sync_cmd_del(Swt_gui_cmd cmd) {synchronized (thread_lock) {sync_cmd_list.Del(cmd);}} public GfoInvkAbleCmd Kit_term_cbk() {return term_cbk;} public void Kit_term_cbk_(GfoInvkAbleCmd v) {this.term_cbk = v;} private GfoInvkAbleCmd term_cbk = GfoInvkAbleCmd.Null; - public Gfui_html_cfg Html_cfg() {return html_cfg;} private final Gfui_html_cfg html_cfg = new Gfui_html_cfg(); public void Kit_init(Gfo_usr_dlg gui_wtr) { this.gui_wtr = gui_wtr; this.msg_wkr_stop = new Swt_msg_wkr_stop(this, gui_wtr); @@ -231,12 +230,11 @@ public class Swt_kit implements Gfui_kit { Cfg_set(type, Swt_kit.Cfg_Html_BrowserType, Cfg_Html_BrowserType_parse(val)); } } - else if (String_.Eq(k, Invk_HtmlBox)) {return html_cfg;} else if (String_.Eq(k, Invk_ask_file)) return this.New_dlg_file(Gfui_kit_.File_dlg_type_open, m.Args_getAt(0).Val_to_str_or_empty()).Ask(); else if (String_.Eq(k, Invk_shell_close)) shell.close(); return this; } - public static final String Invk_Cfg_add = "Cfg_add", Invk_HtmlBox = "HtmlBox", Invk_ask_file = "ask_file"; // private or public? + public static final String Invk_Cfg_add = "Cfg_add", Invk_ask_file = "ask_file"; // private or public? public static final String Invk_shell_close = "shell_close"; // public public static final Swt_kit _ = new Swt_kit(); private Swt_kit() {} // singleton b/c of following line "In particular, some platforms which SWT supports will not allow more than one active display" (http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Display.html) public static final String Cfg_Html_BrowserType = "BrowserType"; diff --git a/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java b/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java index af424b931..0b66ef3e4 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java +++ b/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java @@ -74,7 +74,7 @@ class Swt_lnr_key implements KeyListener { IptEvtDataKey XtoKeyData(KeyEvent ev) { int val = ev.keyCode; switch (val) { - case Byte_ascii.CarriageReturn: val = 10; break; // enter key is 13 whereas .net/swing is 10 + case Byte_ascii.Cr: val = 10; break; // enter key is 13 whereas .net/swing is 10 case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: diff --git a/150_gfui/xtn/gplx/gfui/Swt_html.java b/150_gfui/xtn/gplx/gfui/Swt_html.java index 2073f68dc..b7e35a69d 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_html.java +++ b/150_gfui/xtn/gplx/gfui/Swt_html.java @@ -28,7 +28,6 @@ import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; import java.security.acl.Owner; -import gplx.*; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.*; import org.eclipse.swt.events.*; @@ -58,7 +57,6 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { @Override public Composite Under_composite() {return null;} @Override public Control Under_menu_control() {return browser;} public int Browser_tid() {return browser_tid;} private final int browser_tid; - public String Html_doc_html() {return Eval_script_as_str(kit.Html_cfg().Doc_html());} public void Html_doc_html_load_by_mem(String html) { html_doc_html_load_tid = Gxw_html_load_tid_.Tid_mem; browser.setText(html); // DBG: Io_mgr.I.SaveFilStr(Io_url_.new_fil_("C:\\temp.txt"), s) @@ -70,63 +68,41 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { } public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} - public String Html_doc_selected_get_text_or_href() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_text_or_href());} - public String Html_doc_selected_get_href_or_text() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_href_or_text());} - public String Html_doc_selected_get_src_or_empty() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_src_or_empty());} - public String Html_doc_selected_get_active_or_selection() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_active_or_selection());} - public void Html_doc_body_focus() {Eval_script_as_exec(kit.Html_cfg().Doc_body_focus());} - public void Html_doc_selection_focus_toggle() {Eval_script_as_exec(kit.Html_cfg().Doc_selection_focus_toggle());} - public String Html_elem_atr_get_str(String elem_id, String atr_key) {return Eval_script_as_str(kit.Html_cfg().Elem_atr_get(elem_id, atr_key));} - public boolean Html_elem_atr_get_bool(String elem_id, String atr_key) {return Bool_.parse_((String)Eval_script(kit.Html_cfg().Elem_atr_get_toString(elem_id, atr_key)));} - public Object Html_elem_atr_get_obj(String elem_id, String atr_key) {return Eval_script(kit.Html_cfg().Elem_atr_get(elem_id, atr_key));} - public boolean Html_elem_atr_set(String elem_id, String atr_key, String atr_val){return Eval_script_as_exec(kit.Html_cfg().Elem_atr_set(elem_id, atr_key, Escape_quotes(atr_val)));} - public boolean Html_elem_atr_set_append(String elem_id, String atr_key, String atr_val) - {return Eval_script_as_exec(kit.Html_cfg().Elem_atr_set_append(elem_id, atr_key, Escape_quotes(atr_val)));} - public boolean Html_elem_delete(String elem_id) {return Eval_script_as_exec(kit.Html_cfg().Elem_delete(elem_id));} - public boolean Html_elem_replace_html(String id, String html) {return Eval_script_as_exec(kit.Html_cfg().Elem_replace_html(id, html));} - public boolean Html_elem_append_above(String id, String html) {return Eval_script_as_exec(kit.Html_cfg().Elem_append_above(id, html));} - public boolean Html_gallery_packed_exec() {return Eval_script_as_exec(kit.Html_cfg().Gallery_packed_exec());} - public boolean Html_elem_focus(String elem_id) {return Eval_script_as_exec(kit.Html_cfg().Elem_focus(elem_id));} - public boolean Html_elem_scroll_into_view(String id) {return Eval_script_as_bool(kit.Html_cfg().Elem_scroll_into_view(Escape_quotes(id)));} - public String Html_window_vpos() {return Eval_script_as_str(kit.Html_cfg().Window_vpos());} - public boolean Html_window_print_preview() {return Eval_script_as_bool(kit.Html_cfg().Window_print_preview());} public void Html_js_enabled_(boolean v) {browser.setJavascriptEnabled(v);} public void Html_js_cbks_add(String func_name, GfoInvkAble invk) {new Swt_html_func(browser, func_name, invk);} public String Html_js_eval_script(String script) {return Eval_script_as_str(script);} - public boolean Html_elem_img_update(String elem_id, String elem_src, int elem_width, int elem_height) { - elem_src = Escape_quotes(elem_src); - int count = 0; - while (count < 5) { - boolean rv = Eval_script_as_bool(kit.Html_cfg().Elem_img_update(elem_id, elem_src, elem_width, elem_height)); - if (rv) return rv; - Thread_adp_.Sleep(100); - count++; + public boolean Html_js_eval_proc_as_bool(String proc, Object... args) {return Bool_.cast_(Html_js_eval_proc_as_obj(proc, args));} + public String Html_js_eval_proc_as_str(String proc, Object... args) {return Object_.Xto_str_strict_or_null(Html_js_eval_proc_as_obj(proc, args));} + private Object Html_js_eval_proc_as_obj(String proc, Object... args) { + Bry_bfr bfr = Bry_bfr.new_(); + bfr.Add_str_a7("return ").Add_str_u8(proc).Add_byte(Byte_ascii.Paren_bgn); + int args_len = args.length; + for (int i = 0; i < args_len; ++i) { + Object arg = args[i]; + if (i != 0) bfr.Add_byte(Byte_ascii.Comma); + boolean quote_val = true; + if ( ClassAdp_.Eq_typeSafe(arg, Bool_.Cls_ref_type) + || ClassAdp_.Eq_typeSafe(arg, Int_.Cls_ref_type) + || ClassAdp_.Eq_typeSafe(arg, Long_.Cls_ref_type) + ) { + quote_val = false; + } + if (quote_val) bfr.Add_byte(Byte_ascii.Apos); + if (quote_val) + bfr.Add_str_u8(Escape_quote(Object_.Xto_str_strict_or_null_mark(arg))); + else + bfr.Add_obj_strict(arg); + if (quote_val) bfr.Add_byte(Byte_ascii.Apos); } - return false; + bfr.Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic); + return Eval_script(bfr.Xto_str_and_clear()); } - public String Html_active_atr_get_str(String atr_key, String or) { - Object rv_obj = Eval_script(kit.Html_cfg().Active_atr_get_str(atr_key)); - String rv = (String)rv_obj; - return rv == null || !eval_rslt.Result_pass() ? or : rv; - } - public void Html_js_eval_proc(String proc, String... args) { - Bry_fmtr fmtr = kit.Html_cfg().Js_scripts_get(proc); - String script = fmtr.Bld_str_many(args); - Eval_script(script); - } - public boolean Html_window_vpos_(String v) { - Gfui_html_cfg.Html_window_vpos_parse(v, scroll_top, node_path); - return Eval_script_as_exec(kit.Html_cfg().Window_vpos_(node_path.Val(), scroll_top.Val())); - } private String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); - public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) { - // if (String_.Eq(find, String_.Empty)) return false; - find = String_.Replace(find, "\\", "\\\\"); // escape \ -> \\ - find = String_.Replace(find, "'", "\\'"); // escape ' -> \'; NOTE: \\' instead of \' - String script = String_.Eq(elem_id, Gfui_html.Elem_id_body) - ? kit.Html_cfg().Doc_find_html(find, dir_fwd, case_match, wrap_find, highlight_matches) - : kit.Html_cfg().Doc_find_edit(find, dir_fwd, case_match, wrap_find, false, -1); - Eval_script(script); - return true; + private static String Escape_quote(String v) { + String rv = v; + rv = String_.Replace(rv, "'", "\\'"); + rv = String_.Replace(rv, "\"", "\\\""); + rv = String_.Replace(rv, "\n", "\\n"); + return rv; } public void Html_invk_src_(GfoEvObj invk) {lnr_location.Host_set(invk); lnr_status.Host_set(invk);} public void Html_dispose() { @@ -136,18 +112,12 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { } private GfuiElem delete_owner, delete_cur; public void Delete_elems_(GfuiElem delete_owner, GfuiElem delete_cur) {this.delete_owner = delete_owner; this.delete_cur = delete_cur;} // HACK: set owner / cur so delete can work; - private String Escape_quotes(String v) {return String_.Replace(String_.Replace(v, "'", "\\'"), "\"", "\\\"");} @Override public GxwCore_base Core() {return core;} private GxwCore_base core; @Override public GxwCbkHost Host() {return host;} @Override public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host; @Override public String TextVal() {return browser.getText();} @Override public void TextVal_set(String v) {browser.setText(v);} @Override public void EnableDoubleBuffering() {} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} - private boolean Eval_script_as_bool(String script) { - Object result_obj = Eval_script(script); - return eval_rslt.Result_pass() && Bool_.cast_or_(result_obj, false); - } - private boolean Eval_script_as_exec(String script) {Eval_script(script); return eval_rslt.Result_pass();} private String Eval_script_as_str(String script) {return (String)Eval_script(script);} public Object Eval_script(String script) { eval_rslt.Clear(); diff --git a/400_xowa/src/gplx/core/brys/Bry_bldr.java b/400_xowa/src/gplx/core/brys/Bry_bldr.java index 87b72e951..39cc7ba6c 100644 --- a/400_xowa/src/gplx/core/brys/Bry_bldr.java +++ b/400_xowa/src/gplx/core/brys/Bry_bldr.java @@ -20,7 +20,7 @@ public class Bry_bldr { public byte[] Val() {return val;} private byte[] val; public Bry_bldr New_256() {return New(256);} public Bry_bldr New(int len) {val = new byte[len]; return this;} - public Bry_bldr Set_rng_ws(byte v) {return Set_many(v, Byte_ascii.Space, Byte_ascii.Tab, Byte_ascii.NewLine, Byte_ascii.CarriageReturn);} + public Bry_bldr Set_rng_ws(byte v) {return Set_many(v, Byte_ascii.Space, Byte_ascii.Tab, Byte_ascii.Nl, Byte_ascii.Cr);} public Bry_bldr Set_rng_xml_identifier(byte v) {return Set_rng_alpha_lc(v).Set_rng_alpha_uc(v).Set_rng_num(v).Set_many(v, Byte_ascii.Underline, Byte_ascii.Dash);} public Bry_bldr Set_rng_alpha(byte v) {return Set_rng_alpha_lc(v).Set_rng_alpha_uc(v);} public Bry_bldr Set_rng_alpha_lc(byte v) {return Set_rng(v, Byte_ascii.Ltr_a, Byte_ascii.Ltr_z);} diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_base.java b/400_xowa/src/gplx/core/flds/Gfo_fld_base.java index dde13f9e1..02a209651 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_base.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.flds; import gplx.*; import gplx.core.*; public class Gfo_fld_base { - public byte Row_dlm() {return row_dlm;} public Gfo_fld_base Row_dlm_(byte v) {row_dlm = v; return this;} protected byte row_dlm = Byte_ascii.NewLine; + public byte Row_dlm() {return row_dlm;} public Gfo_fld_base Row_dlm_(byte v) {row_dlm = v; return this;} protected byte row_dlm = Byte_ascii.Nl; public byte Fld_dlm() {return fld_dlm;} public Gfo_fld_base Fld_dlm_(byte v) {fld_dlm = v; return this;} protected byte fld_dlm = Byte_ascii.Pipe; public byte Escape_dlm() {return escape_dlm;} public Gfo_fld_base Escape_dlm_(byte v) {escape_dlm = v; return this;} protected byte escape_dlm = Byte_ascii.Tilde; public byte Quote_dlm() {return quote_dlm;} public Gfo_fld_base Quote_dlm_(byte v) {quote_dlm = v; return this;} protected byte quote_dlm = Byte_ascii.Nil; @@ -32,12 +32,12 @@ public class Gfo_fld_base { return this; } Gfo_fld_base Ini_common() { - return Escape_reg(Byte_ascii.NewLine, Byte_ascii.Ltr_n).Escape_reg(Byte_ascii.Tab, Byte_ascii.Ltr_t).Escape_reg(Byte_ascii.CarriageReturn, Byte_ascii.Ltr_r) + return Escape_reg(Byte_ascii.Nl, Byte_ascii.Ltr_n).Escape_reg(Byte_ascii.Tab, Byte_ascii.Ltr_t).Escape_reg(Byte_ascii.Cr, Byte_ascii.Ltr_r) .Escape_reg(Byte_ascii.Backfeed, Byte_ascii.Ltr_b); // .Escape_reg(Byte_ascii.Nil, Byte_ascii.Num_0) } protected Gfo_fld_base Ctor_xdat_base() { return Escape_clear().Ini_common() - .Fld_dlm_(Byte_ascii.Pipe).Row_dlm_(Byte_ascii.NewLine).Escape_dlm_(Byte_ascii.Tilde).Quote_dlm_(Byte_ascii.Nil) + .Fld_dlm_(Byte_ascii.Pipe).Row_dlm_(Byte_ascii.Nl).Escape_dlm_(Byte_ascii.Tilde).Quote_dlm_(Byte_ascii.Nil) .Escape_reg(Byte_ascii.Pipe, Byte_ascii.Ltr_p).Escape_reg(Byte_ascii.Tilde); } protected Gfo_fld_base Ctor_sql_base() { diff --git a/400_xowa/src/gplx/core/regxs/Gfo_pattern_itm_.java b/400_xowa/src/gplx/core/regxs/Gfo_pattern_itm_.java index f2fe9b622..29343eeee 100644 --- a/400_xowa/src/gplx/core/regxs/Gfo_pattern_itm_.java +++ b/400_xowa/src/gplx/core/regxs/Gfo_pattern_itm_.java @@ -31,7 +31,7 @@ public class Gfo_pattern_itm_ { case Byte_ascii.Nil: if (itm != null) {itm.Compile(raw, itm_bgn, pos); itm = null; itm_bgn = -1;} break; - case Byte_ascii.Asterisk: + case Byte_ascii.Star: if (itm != null) {itm.Compile(raw, itm_bgn, pos); itm = null; itm_bgn = -1;} rv.Add(Gfo_pattern_itm_wild._); break; diff --git a/400_xowa/src/gplx/dbs/Db_attach_rdr.java b/400_xowa/src/gplx/dbs/Db_attach_rdr.java index d6c037ffe..9e30c3907 100644 --- a/400_xowa/src/gplx/dbs/Db_attach_rdr.java +++ b/400_xowa/src/gplx/dbs/Db_attach_rdr.java @@ -32,7 +32,7 @@ public class Db_attach_rdr { } public Db_rdr Exec_as_rdr(String sql) { sql = String_.Replace(sql, "", diff_db ? attach_name + "." : ""); // replace with either "attach_db." or ""; - return conn.Exec_sql_as_rdr2(sql); + return conn.Exec_sql_as_rdr_v2(sql); } public void Detach() { if (diff_db) conn.Env_db_detach(attach_name); diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java index efd8d5f64..d8720dcda 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java @@ -37,7 +37,7 @@ public class Db_cfg_tbl implements RlsAble { public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_grp, fld_key, fld_val)));} public void Delete_val(String grp, String key) {conn.Stmt_delete(tbl_name, fld_grp, fld_key).Crt_str(fld_grp, grp).Crt_str(fld_key, key).Exec_delete();} public void Delete_grp(String grp) {conn.Stmt_delete(tbl_name, fld_grp).Crt_str(fld_grp, grp).Exec_delete();} - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} public void Insert_yn (String grp, String key, boolean val) {Insert_str(grp, key, val ? "y" : "n");} public void Insert_byte (String grp, String key, byte val) {Insert_str(grp, key, Byte_.Xto_str(val));} public void Insert_int (String grp, String key, int val) {Insert_str(grp, key, Int_.Xto_str(val));} diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java index a990087f3..24944af6a 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java @@ -23,10 +23,11 @@ public class Fsdb_db_mgr_ { Io_url url = file_dir.GenSubFil(Fsdb_db_mgr__v1.Mnt_name); // EX: /xowa/file/en.wikipedia.org/wiki.mnt.sqlite3 if (Db_conn_bldr.I.Exists(url)) { // NOTE: check v1 before v2; note that as of v2.5.4, v2 files are automatically created on new import; DATE:2015-06-09 usr_dlg.Log_many("", "", "fsdb.db_core.v1: url=~{0}", url.Raw()); - usr_dlg.Log_many("", "", "fsdb.db_core.v1 exists: orig=~{0} abc=~{1} atr=~{2}" + usr_dlg.Log_many("", "", "fsdb.db_core.v1 exists: orig=~{0} abc=~{1} atr_a=~{2}, atr_b=~{3}" , Db_conn_bldr.I.Exists(file_dir.GenSubFil(Fsdb_db_mgr__v1.Orig_name)) , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Abc_name)) - , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name)) + , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1a)) + , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1b)) ); return new Fsdb_db_mgr__v1(file_dir); } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java index 1bb522fd0..5cebc315e 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java @@ -21,16 +21,17 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { private final Io_url file_dir; private final Fsdb_db_file orig_file, mnt_file, abc_file__main, abc_file__user, atr_file__main, atr_file__user; private final Xof_orig_tbl[] orig_tbl_ary; + private String bin_prefix__main = "fsdb.bin.", bin_prefix__user = "fsdb.bin."; public Fsdb_db_mgr__v1(Io_url file_dir) { this.file_dir = file_dir; - this.orig_file = get_db(file_dir.GenSubFil(Orig_name)); // EX: /xowa/enwiki/wiki.orig#00.sqlite3 - this.mnt_file = get_db(file_dir.GenSubFil(Mnt_name)); // EX: /xowa/enwiki/wiki.mnt.sqlite3 - this.abc_file__main = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Abc_name)); // EX: /xowa/enwiki/fsdb.main/fsdb.abc.sqlite3 - this.atr_file__main = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Atr_name)); // EX: /xowa/enwiki/fsdb.main/fsdb.atr.00.sqlite3 - if (Db_conn_bldr.I.Get(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)) == null) // user doesn't exist; create; DATE:2015-04-20 + this.orig_file = get_db(file_dir.GenSubFil(Orig_name)); // EX: /xowa/enwiki/wiki.orig#00.sqlite3 + this.mnt_file = get_db(file_dir.GenSubFil(Mnt_name)); // EX: /xowa/enwiki/wiki.mnt.sqlite3 + this.abc_file__main = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Abc_name)); // EX: /xowa/enwiki/fsdb.main/fsdb.abc.sqlite3 + this.atr_file__main = get_db(Get_atr_db_url(Bool_.Y, file_dir, Fsm_mnt_tbl.Mnt_name_main)); // EX: /xowa/enwiki/fsdb.main/fsdb.atr.00.sqlite3 + if (Db_conn_bldr.I.Get(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)) == null) // user doesn't exist; create; DATE:2015-04-20 Fsdb_db_mgr__v1_bldr.I.Make_core_dir(file_dir, Fsm_mnt_mgr.Mnt_idx_user, Fsm_mnt_tbl.Mnt_name_user); - this.abc_file__user = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)); // EX: /xowa/enwiki/fsdb.user/fsdb.abc.sqlite3 - this.atr_file__user = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Atr_name)); // EX: /xowa/enwiki/fsdb.user/fsdb.atr.00.sqlite3 + this.abc_file__user = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)); // EX: /xowa/enwiki/fsdb.user/fsdb.abc.sqlite3 + this.atr_file__user = get_db(Get_atr_db_url(Bool_.N, file_dir, Fsm_mnt_tbl.Mnt_name_user)); // EX: /xowa/enwiki/fsdb.user/fsdb.atr.00.sqlite3 this.orig_tbl_ary = new Xof_orig_tbl[] {new Xof_orig_tbl(orig_file.Conn(), this.File__schema_is_1())}; } public boolean File__schema_is_1() {return Bool_.Y;} @@ -41,8 +42,9 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { public Fsdb_db_file File__abc_file__at(int mnt_id) {return mnt_id == Fsm_mnt_mgr.Mnt_idx_main ? abc_file__main : abc_file__user;} public Fsdb_db_file File__atr_file__at(int mnt_id) {return mnt_id == Fsm_mnt_mgr.Mnt_idx_main ? atr_file__main : atr_file__user;} public Fsdb_db_file File__bin_file__at(int mnt_id, int bin_id, String file_name) { - String bin_name = "fsdb.bin." + Int_.Xto_str_pad_bgn_zero(bin_id, 4) + ".sqlite3"; - String mnt_name = mnt_id == Fsm_mnt_mgr.Mnt_idx_main ? Fsm_mnt_tbl.Mnt_name_main : Fsm_mnt_tbl.Mnt_name_user; + boolean mnt_is_main = mnt_id == Fsm_mnt_mgr.Mnt_idx_main; + String bin_name = (mnt_is_main ? bin_prefix__main : bin_prefix__user) + Int_.Xto_str_pad_bgn_zero(bin_id, 4) + ".sqlite3"; + String mnt_name = mnt_is_main ? Fsm_mnt_tbl.Mnt_name_main : Fsm_mnt_tbl.Mnt_name_user; Io_url url = file_dir.GenSubFil_nest(mnt_name, bin_name); // EX: /xowa/enwiki/fsdb.main/fsdb.bin.0000.sqlite3 return new Fsdb_db_file(url, Db_conn_bldr.I.Get(url)); } @@ -53,7 +55,21 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { Fsd_bin_tbl bin_tbl = new Fsd_bin_tbl(conn, Bool_.Y); bin_tbl.Create_tbl(); return new Fsdb_db_file(url, conn); } - public static final String Orig_name = "wiki.orig#00.sqlite3", Mnt_name = "wiki.mnt.sqlite3", Abc_name = "fsdb.abc.sqlite3", Atr_name= "fsdb.atr.00.sqlite3"; + private Io_url Get_atr_db_url(boolean main, Io_url file_dir, String mnt_name) { + Io_url rv = null; + rv = file_dir.GenSubFil_nest(mnt_name, Atr_name_v1a); + if (Io_mgr.I.ExistsFil(rv)) { + if (main) + bin_prefix__main = "fsdb.bin#"; + else + bin_prefix__user = "fsdb.bin#"; + return rv; + } + rv = file_dir.GenSubFil_nest(mnt_name, Atr_name_v1b); if (Io_mgr.I.ExistsFil(rv)) return rv; + throw Err_.new_("could not find atr file: dir={0} mnt={1}", file_dir.Raw(), mnt_name); + } + public static final String Orig_name = "wiki.orig#00.sqlite3", Mnt_name = "wiki.mnt.sqlite3", Abc_name = "fsdb.abc.sqlite3" + , Atr_name_v1a = "fsdb.atr#00.sqlite3", Atr_name_v1b = "fsdb.atr.00.sqlite3"; private static Fsdb_db_file get_db(Io_url file) { Db_conn conn = Db_conn_bldr.I.Get(file); if (conn == null) conn = Db_conn_.Noop; @@ -73,7 +89,7 @@ class Fsdb_db_mgr__v1_bldr { Fsm_bin_tbl dbb_tbl = new Fsm_bin_tbl(db_abc.Conn(), schema_is_1, mnt_id); dbb_tbl.Create_tbl(); dbb_tbl.Insert(0, "fsdb.bin.0000.sqlite3"); // make atr_fil - Fsdb_db_file db_atr = new_db(mnt_dir.GenSubFil(Fsdb_db_mgr__v1.Atr_name)); + Fsdb_db_file db_atr = new_db(mnt_dir.GenSubFil(Fsdb_db_mgr__v1.Atr_name_v1b)); // create atr database in v1b style; "fsdb.atr.00.sqlite3" not "fsdb.atr#00.sqlite3" Fsd_dir_tbl dir_tbl = new Fsd_dir_tbl(db_atr.Conn(), schema_is_1); dir_tbl.Create_tbl(); Fsd_fil_tbl fil_tbl = new Fsd_fil_tbl(db_atr.Conn(), schema_is_1, mnt_id); fil_tbl.Create_tbl(); Fsd_thm_tbl thm_tbl = new Fsd_thm_tbl(db_atr.Conn(), schema_is_1, mnt_id, Bool_.Y); thm_tbl.Create_tbl(); diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java index e2b33c95f..e738c702b 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java @@ -16,12 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; +import gplx.core.primitives.*; import gplx.dbs.*; import gplx.ios.*; import gplx.dbs.engines.sqlite.*; public class Fsd_bin_tbl implements RlsAble { private final String tbl_name = "fsdb_bin"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); - private final String fld_owner_id, fld_owner_tid, fld_part_id, fld_data_url, fld_data; - private Db_conn conn; private Db_stmt stmt_insert, stmt_select; private final Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); + private final String fld_owner_id, fld_owner_tid, fld_part_id, fld_data_url, fld_data; + private Db_conn conn; private Db_stmt stmt_insert, stmt_select; private Bry_bfr tmp_bfr; + private final Bool_obj_ref saved_in_parts = Bool_obj_ref.n_(); public Fsd_bin_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; fld_owner_id = flds.Add_int_pkey ("bin_owner_id"); @@ -40,9 +42,12 @@ public class Fsd_bin_tbl implements RlsAble { public void Insert_commit() {conn.Txn_sav();} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} public void Insert_rdr(int id, byte tid, long bin_len, Io_stream_rdr bin_rdr) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + if (stmt_insert == null) { + stmt_insert = conn.Stmt_insert(tbl_name, flds); + tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); + } byte[] bin_ary = null; - synchronized (tmp_bfr) {bin_ary = Io_stream_rdr_.Load_all_as_bry(tmp_bfr, bin_rdr);} + bin_ary = Io_stream_rdr_.Load_all_as_bry(tmp_bfr, bin_rdr); stmt_insert.Clear() .Val_int(fld_owner_id, id) .Val_byte(fld_owner_tid, tid) @@ -52,18 +57,20 @@ public class Fsd_bin_tbl implements RlsAble { .Exec_insert(); } public Io_stream_rdr Select_as_rdr(int owner_id) { - byte[] rv = Select(owner_id); + byte[] rv = Select(owner_id, null); return rv == null ? Io_stream_rdr_.Noop : Io_stream_rdr_.mem_(rv); } public boolean Select_to_url(int owner_id, Io_url url) { - byte[] rv = Select(owner_id); + saved_in_parts.Val_n(); + byte[] rv = Select(owner_id, url); if (rv == null) return false; + if (saved_in_parts.Val_y()) return true; Io_mgr.I.SaveFilBry(url, rv); return true; } - private byte[] Select(int owner_id) { + private byte[] Select(int owner_id, Io_url url) { if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, String_.Ary(fld_data), fld_owner_id); Db_rdr rdr = stmt_select.Clear().Crt_int(fld_owner_id, owner_id).Exec_select__rls_manual(); try { @@ -71,8 +78,12 @@ public class Fsd_bin_tbl implements RlsAble { byte[] rv = null; try {rv = rdr.Read_bry(fld_data);} catch (Exception e) { - if (Op_sys.Cur().Tid_is_drd() && String_.Has(Err_.Message_lang(e), "get field slot from row")) { // get field slot from row 0 col 0 failed - rv = rdr.Read_bry_in_parts(tbl_name, fld_data, fld_owner_id, owner_id); + if ( Op_sys.Cur().Tid_is_drd() + && url != null // called by Select_to_url + && String_.Has(Err_.Message_lang(e), "get field slot from row") // get field slot from row 0 col 0 failed + ) { + rdr.Save_bry_in_parts(url, tbl_name, fld_data, fld_owner_id, owner_id); + saved_in_parts.Val_y_(); } } return rv == null ? Bry_.Empty : rv; // NOTE: bug in v0.10.1 where .ogg would save as null; return Bry_.Empty instead, else java.io.ByteArrayInputStream would fail on null diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java index cb3386ad9..75f735dc8 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java @@ -89,7 +89,7 @@ public class Fsd_fil_tbl implements RlsAble { finally {rdr.Rls();} } public void Select_all(Bry_bfr key_bfr, gplx.cache.Gfo_cache_mgr_bry cache) { - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) { Fsd_fil_itm fil = new_(mnt_id, rdr); diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java index fa7cddcc6..35fffca71 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java @@ -31,7 +31,7 @@ public class Fsm_atr_tbl { } public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} public Fsm_atr_fil Select_1st_or_fail(Fsm_mnt_itm mnt_itm, Fsdb_db_mgr core_mgr, int mnt_id, boolean schema_thm_page) { - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); boolean schema_is_1 = core_mgr.File__schema_is_1(); try { if (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java index 1f1b0496c..56f85ef7c 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java @@ -43,7 +43,7 @@ public class Fsm_bin_tbl { } public Fsm_bin_fil[] Select_all(Fsdb_db_mgr db_conn_mgr) { List_adp rv = List_adp_.new_(); - Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, Db_meta_fld.Ary_empy, fld_uid).Clear().Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, Db_meta_fld.Ary_empty, fld_uid).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) { int bin_id = rdr.Read_int(fld_uid); diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java index b2ef47696..85a49afa8 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java @@ -45,7 +45,7 @@ public class Fsm_mnt_tbl implements RlsAble { } public Fsm_mnt_itm[] Select_all() { List_adp list = List_adp_.new_(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Clear().Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) { Fsm_mnt_itm itm = new Fsm_mnt_itm(rdr.Read_int(fld_id), rdr.Read_str(fld_name), rdr.Read_str(fld_url)); diff --git a/400_xowa/src/gplx/gfs/Gfs_parser.java b/400_xowa/src/gplx/gfs/Gfs_parser.java index 189f45c40..4bd6017b9 100644 --- a/400_xowa/src/gplx/gfs/Gfs_parser.java +++ b/400_xowa/src/gplx/gfs/Gfs_parser.java @@ -72,13 +72,13 @@ class Gfs_parser_ { trie_add_rng(rv, word_lxr, Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z); trie_add_rng(rv, word_lxr, Byte_ascii.Num_0, Byte_ascii.Num_9); rv.Add(Byte_ascii.Underline, word_lxr); - trie_add_many(rv, Gfs_lxr_whitespace._, Byte_ascii.Space, Byte_ascii.NewLine, Byte_ascii.CarriageReturn, Byte_ascii.Tab); + trie_add_many(rv, Gfs_lxr_whitespace._, Byte_ascii.Space, Byte_ascii.Nl, Byte_ascii.Cr, Byte_ascii.Tab); trie_add_quote(rv, new byte[] {Byte_ascii.Apos}); trie_add_quote(rv, new byte[] {Byte_ascii.Quote}); trie_add_quote(rv, Bry_.new_a7("<:[\"\n"), Bry_.new_a7("\n\"]:>")); trie_add_quote(rv, Bry_.new_a7("<:['\n"), Bry_.new_a7("\n']:>")); - trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}, new byte[] {Byte_ascii.NewLine}); - trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Asterisk}, new byte[] {Byte_ascii.Asterisk, Byte_ascii.Slash}); + trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}, new byte[] {Byte_ascii.Nl}); + trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Star}, new byte[] {Byte_ascii.Star, Byte_ascii.Slash}); rv.Add(Byte_ascii.Semic, Gfs_lxr_semic._); rv.Add(Byte_ascii.Paren_bgn, Gfs_lxr_paren_bgn._); rv.Add(Byte_ascii.Paren_end, Gfs_lxr_paren_end._); diff --git a/400_xowa/src/gplx/gfs/Gfs_parser_ctx.java b/400_xowa/src/gplx/gfs/Gfs_parser_ctx.java index 8f01344d0..92c4c78ae 100644 --- a/400_xowa/src/gplx/gfs/Gfs_parser_ctx.java +++ b/400_xowa/src/gplx/gfs/Gfs_parser_ctx.java @@ -117,8 +117,8 @@ class Gfs_err_mgr { byte b = src[i]; switch (b) { case Byte_ascii.Tab: bfr.Add(Esc_tab); break; - case Byte_ascii.NewLine: bfr.Add(Esc_nl); break; - case Byte_ascii.CarriageReturn: bfr.Add(Esc_cr); break; + case Byte_ascii.Nl: bfr.Add(Esc_nl); break; + case Byte_ascii.Cr: bfr.Add(Esc_cr); break; default: bfr.Add_byte(b); break; } } diff --git a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java index 97001e120..9bb286ce3 100644 --- a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java +++ b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java @@ -48,7 +48,7 @@ public class Gfui_bnd_parser { tkns.Clear(); mod_val = Mod_val_null; int pos = 0; int itm_bgn = -1, itm_end = -1; boolean is_numeric = false; while (pos <= src_len) { // loop over bytes and break up tkns by symbols - byte b = pos == src_len ? Byte_ascii.NewLine: src[pos]; // treat eos as "\n" for purpose of separating tokens + byte b = pos == src_len ? Byte_ascii.Nl: src[pos]; // treat eos as "\n" for purpose of separating tokens Gfui_bnd_tkn sym_tkn = null; switch (b) { case Byte_ascii.Plus: // simultaneous; EX: Ctrl + S @@ -60,7 +60,7 @@ public class Gfui_bnd_parser { case Byte_ascii.Comma: // chorded; EX: Ctrl + S, Ctrl + T sym_tkn = Itm_sym_comma; break; - case Byte_ascii.NewLine: // eos: process anything in bfr + case Byte_ascii.Nl: // eos: process anything in bfr sym_tkn = Itm_sym_eos; break; case Byte_ascii.Space: diff --git a/400_xowa/src/gplx/html/Html_parser.java b/400_xowa/src/gplx/html/Html_parser.java index d62c81409..2bb341550 100644 --- a/400_xowa/src/gplx/html/Html_parser.java +++ b/400_xowa/src/gplx/html/Html_parser.java @@ -126,7 +126,7 @@ public class Html_parser { private void Skip_ws() { while (pos < end) { switch (src[pos]) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: ++pos; break; default: diff --git a/400_xowa/src/gplx/json/Json_grp.java b/400_xowa/src/gplx/json/Json_grp.java index e4bcb4ff7..db8859b34 100644 --- a/400_xowa/src/gplx/json/Json_grp.java +++ b/400_xowa/src/gplx/json/Json_grp.java @@ -25,7 +25,7 @@ public interface Json_grp extends Json_itm { class Json_grp_ { public static final Json_grp[] Ary_empty = new Json_grp[0]; public static void Print_nl(Bry_bfr bfr) { // \n\n can be caused by nested groups (EX: "[[]]"); only print 1 - if (bfr.Bfr()[bfr.Len() - 1] != Byte_ascii.NewLine) + if (bfr.Bfr()[bfr.Len() - 1] != Byte_ascii.Nl) bfr.Add_byte_nl(); } public static void Print_indent(Bry_bfr bfr, int depth) { diff --git a/400_xowa/src/gplx/json/Json_itm.java b/400_xowa/src/gplx/json/Json_itm.java index fac0119e3..515450fd7 100644 --- a/400_xowa/src/gplx/json/Json_itm.java +++ b/400_xowa/src/gplx/json/Json_itm.java @@ -90,8 +90,8 @@ class Json_itm_str extends Json_itm_base { b = src[++i]; switch (b) { // NOTE: must properly unescape chars; EX:wd.q:2; DATE:2014-04-23 case Byte_ascii.Ltr_t: bfr.Add_byte(Byte_ascii.Tab); break; - case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.NewLine); break; - case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.CarriageReturn); break; + case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.Nl); break; + case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.Cr); break; case Byte_ascii.Ltr_b: bfr.Add_byte(Byte_ascii.Backfeed); break; case Byte_ascii.Ltr_f: bfr.Add_byte(Byte_ascii.Formfeed); break; case Byte_ascii.Ltr_u: diff --git a/400_xowa/src/gplx/json/Json_parser.java b/400_xowa/src/gplx/json/Json_parser.java index 65a1a55e8..ff56aa83a 100644 --- a/400_xowa/src/gplx/json/Json_parser.java +++ b/400_xowa/src/gplx/json/Json_parser.java @@ -148,7 +148,7 @@ public class Json_parser { private void Skip_ws() { while (pos < src_len) { switch (src[pos]) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: case Byte_ascii.CarriageReturn: ++pos; break; + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: ++pos; break; default: return; } } diff --git a/400_xowa/src/gplx/php/Php_lxr.java b/400_xowa/src/gplx/php/Php_lxr.java index bce51a3fb..4f5b3f951 100644 --- a/400_xowa/src/gplx/php/Php_lxr.java +++ b/400_xowa/src/gplx/php/Php_lxr.java @@ -46,7 +46,7 @@ class Php_lxr_declaration extends Php_lxr_base { if (cur == src_len) break; byte b = src[cur]; switch (b) { - case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Nl: case Byte_ascii.Cr: ws_found = true; ++cur; break; @@ -84,7 +84,7 @@ class Php_lxr_ws extends Php_lxr_base { if (cur == src_len) break; byte b = src[cur]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: ++cur; break; default: @@ -238,11 +238,11 @@ class Php_lxr_keyword extends Php_lxr_base { if (cur < src_len) { byte next_byte = src[cur]; switch (next_byte) { // valid characters for end of word; EX: 'null '; 'null='; etc.. - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Hash: case Byte_ascii.Slash: case Byte_ascii.Quote: case Byte_ascii.Apos: case Byte_ascii.Bang: case Byte_ascii.Dollar: case Byte_ascii.Percent: case Byte_ascii.Amp: - case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: case Byte_ascii.Plus: + case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Plus: case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Semic: case Byte_ascii.Lt: case Byte_ascii.Eq: case Byte_ascii.Gt: case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Backslash: case Byte_ascii.Brack_end: case Byte_ascii.Pow: case Byte_ascii.Tick: diff --git a/400_xowa/src/gplx/php/Php_text_itm_parser.java b/400_xowa/src/gplx/php/Php_text_itm_parser.java index d1ea515f7..fc994f446 100644 --- a/400_xowa/src/gplx/php/Php_text_itm_parser.java +++ b/400_xowa/src/gplx/php/Php_text_itm_parser.java @@ -67,11 +67,11 @@ public class Php_text_itm_parser { case Byte_ascii.Backslash: next_char = Byte_ascii.Backslash; break; case Byte_ascii.Quote: next_char = Byte_ascii.Quote; break; case Byte_ascii.Ltr_N: - case Byte_ascii.Ltr_n: next_char = Byte_ascii.NewLine; break; + case Byte_ascii.Ltr_n: next_char = Byte_ascii.Nl; break; case Byte_ascii.Ltr_T: case Byte_ascii.Ltr_t: next_char = Byte_ascii.Tab; break; case Byte_ascii.Ltr_R: - case Byte_ascii.Ltr_r: next_char = Byte_ascii.CarriageReturn; break; + case Byte_ascii.Ltr_r: next_char = Byte_ascii.Cr; break; case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_u: { // EX: "\u007C" rslt_val = Rslt_dirty; diff --git a/400_xowa/src/gplx/srls/dsvs/Dsv_fld_parser_.java b/400_xowa/src/gplx/srls/dsvs/Dsv_fld_parser_.java index 94380f480..a18fc6682 100644 --- a/400_xowa/src/gplx/srls/dsvs/Dsv_fld_parser_.java +++ b/400_xowa/src/gplx/srls/dsvs/Dsv_fld_parser_.java @@ -25,7 +25,7 @@ public class Dsv_fld_parser_ { } } class Dsv_fld_parser_line implements Dsv_fld_parser { - private byte row_dlm = Byte_ascii.NewLine; private final byte comment_dlm; + private byte row_dlm = Byte_ascii.Nl; private final byte comment_dlm; public Dsv_fld_parser_line(byte comment_dlm) {this.comment_dlm = comment_dlm;} public void Init(byte fld_dlm, byte row_dlm) { this.row_dlm = row_dlm; @@ -53,7 +53,7 @@ class Dsv_fld_parser_line implements Dsv_fld_parser { } } class Dsv_fld_parser_bry implements Dsv_fld_parser { - private byte fld_dlm = Byte_ascii.Pipe, row_dlm = Byte_ascii.NewLine; + private byte fld_dlm = Byte_ascii.Pipe, row_dlm = Byte_ascii.Nl; public void Init(byte fld_dlm, byte row_dlm) { this.fld_dlm = fld_dlm; this.row_dlm = row_dlm; } @@ -83,7 +83,7 @@ class Dsv_fld_parser_bry implements Dsv_fld_parser { public static final Dsv_fld_parser_bry _ = new Dsv_fld_parser_bry(); Dsv_fld_parser_bry() {} } class Dsv_fld_parser_int implements Dsv_fld_parser { - private byte fld_dlm = Byte_ascii.Pipe, row_dlm = Byte_ascii.NewLine; + private byte fld_dlm = Byte_ascii.Pipe, row_dlm = Byte_ascii.Nl; public void Init(byte fld_dlm, byte row_dlm) { this.fld_dlm = fld_dlm; this.row_dlm = row_dlm; } diff --git a/400_xowa/src/gplx/srls/dsvs/Dsv_tbl_parser.java b/400_xowa/src/gplx/srls/dsvs/Dsv_tbl_parser.java index 1b9e75ddd..3772f0c1f 100644 --- a/400_xowa/src/gplx/srls/dsvs/Dsv_tbl_parser.java +++ b/400_xowa/src/gplx/srls/dsvs/Dsv_tbl_parser.java @@ -26,7 +26,7 @@ public class Dsv_tbl_parser implements GfoInvkAble, RlsAble { public int Row_idx() {return row_idx;} private int row_idx = 0; public boolean Skip_blank_lines() {return skip_blank_lines;} public Dsv_tbl_parser Skip_blank_lines_(boolean v) {skip_blank_lines = v; return this;} private boolean skip_blank_lines = true; public byte Fld_dlm() {return fld_dlm;} public Dsv_tbl_parser Fld_dlm_(byte v) {fld_dlm = v; return this;} private byte fld_dlm = Byte_ascii.Pipe; - public byte Row_dlm() {return row_dlm;} public Dsv_tbl_parser Row_dlm_(byte v) {row_dlm = v; return this;} private byte row_dlm = Byte_ascii.NewLine; + public byte Row_dlm() {return row_dlm;} public Dsv_tbl_parser Row_dlm_(byte v) {row_dlm = v; return this;} private byte row_dlm = Byte_ascii.Nl; public void Init(Dsv_wkr_base mgr, Dsv_fld_parser... fld_parsers) { this.mgr = mgr; this.fld_parsers = fld_parsers; diff --git a/400_xowa/src/gplx/web/js/Js_wtr.java b/400_xowa/src/gplx/web/js/Js_wtr.java deleted file mode 100644 index 37bd595ef..000000000 --- a/400_xowa/src/gplx/web/js/Js_wtr.java +++ /dev/null @@ -1,70 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.web.js; import gplx.*; import gplx.web.*; -public class Js_wtr { - private Bry_bfr bfr = Bry_bfr.reset_(255); - public byte Quote_char() {return quote_char;} public Js_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Quote; - public void Clear() {bfr.Clear();} - public String Xto_str() {return bfr.Xto_str();} - public String Xto_str_and_clear() {return bfr.Xto_str_and_clear();} - public Js_wtr Add_comma() {bfr.Add_byte(Byte_ascii.Comma); return this;} - public Js_wtr Add_paren_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn); return this;} - public Js_wtr Add_paren_end() {bfr.Add_byte(Byte_ascii.Paren_end); return this;} - public Js_wtr Add_brack_bgn() {bfr.Add_byte(Byte_ascii.Brack_bgn); return this;} - public Js_wtr Add_brack_end() {bfr.Add_byte(Byte_ascii.Brack_end); return this;} - public Js_wtr Add_str(byte[] v) {bfr.Add(v); return this;} - public Js_wtr Add_str(String v) {bfr.Add_str(v); return this;} - public Js_wtr Add_paren_end_semic() {bfr.Add_byte(Byte_ascii.Paren_end); bfr.Add_byte(Byte_ascii.Semic); return this;} - public Js_wtr Add_str_arg(int i, byte[] bry){ - if (i != 0) bfr.Add_byte(Byte_ascii.Comma); - Add_str_quote(bry); - return this; - } - public Js_wtr Add_str_quote(byte[] bry) { - bfr.Add_byte(quote_char); - int len = bry.length; - for (int i = 0; i < len; i++) { - byte b = bry[i]; - if (b == quote_char) bfr.Add_byte(Byte_ascii.Backslash); - bfr.Add_byte(b); - } - bfr.Add_byte(quote_char); - return this; - } - public Js_wtr Add_str_quote_html(byte[] bry) { - bfr.Add_byte(quote_char); - int len = bry.length; - for (int i = 0; i < len; i++) { - byte b = bry[i]; - if (b == quote_char) { // double up quotes - bfr.Add_byte(Byte_ascii.Backslash); - bfr.Add_byte(b); - } - else { - switch (b) { - case Byte_ascii.Backslash: bfr.Add_byte_repeat(Byte_ascii.Backslash, 2); break; // "\" -> "\\"; needed else js will usurp \ as escape; EX: "\&" -> "&"; DATE:2014-06-24 - case Byte_ascii.NewLine: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_n); break; // "\n" -> "\\n" - case Byte_ascii.CarriageReturn: break;// skip - default: bfr.Add_byte(b); break; - } - } - } - bfr.Add_byte(quote_char); - return this; - } -} diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index 28f87f7a7..d31cb6978 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -26,7 +26,7 @@ public class Xoa_app_ { boot_mgr.Run(args); } public static final String Name = "xowa"; - public static final String Version = "2.6.4.1"; + public static final String Version = "2.6.5.1"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys; public static String User_agent = ""; diff --git a/400_xowa/src/gplx/xowa/Xoa_consts.java b/400_xowa/src/gplx/xowa/Xoa_consts.java index f985abb2e..e2daee7ac 100644 --- a/400_xowa/src/gplx/xowa/Xoa_consts.java +++ b/400_xowa/src/gplx/xowa/Xoa_consts.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa; import gplx.*; public class Xoa_consts { public static final byte[] - Nl_bry = new byte[] {Byte_ascii.NewLine} + Nl_bry = new byte[] {Byte_ascii.Nl} , Slash_bry = new byte[] {Byte_ascii.Slash} , Pipe_bry = new byte[] {Byte_ascii.Pipe} , Invk_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn} // "{{" diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java b/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java index 0aa650448..0bc3bcb17 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java +++ b/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java @@ -71,11 +71,11 @@ class Xog_find_box { } private void Exec_find(String find, boolean highlight_matches) { Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return; - String elem_id = tab.View_mode() == Xopg_view_mode.Tid_read - ? Gfui_html.Elem_id_body - : Xog_html_itm.Elem_id__xowa_edit_data_box - ; - tab.Html_box().Html_doc_find(elem_id, find, dir_fwd, case_match, wrap_search, highlight_matches); + boolean find_in_hdoc = tab.View_mode() == Xopg_view_mode.Tid_read; + if (find_in_hdoc) + tab.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__find_in_hdoc , find, dir_fwd, case_match, wrap_search, highlight_matches); + else + tab.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__find_in_textarea , find, dir_fwd, case_match, wrap_search); win.Usr_dlg().Prog_direct(""); } public void Case_toggle() { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java b/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java index aa67a0d92..a56c1a22b 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java +++ b/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java @@ -30,12 +30,12 @@ public class Xoapi_html_box implements GfoInvkAble, GfoEvMgrOwner { Gfui_html html_box = tab.Html_itm().Html_box(); html_box.Focus(); if (tab.View_mode() != Xopg_view_mode.Tid_read) // if edit / html, place focus in edit box - html_box.Html_elem_focus(Xog_html_itm.Elem_id__xowa_edit_data_box); + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); } public void Selection_focus() { Xog_tab_itm tab = win.Active_tab(); if (tab == Xog_tab_itm_.Null) return; Gfui_html html_box = tab.Html_itm().Html_box(); - html_box.Html_doc_selection_focus_toggle(); + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__toggle_focus_for_anchor); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_focus)) this.Focus(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java b/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java index 50e3f2b97..9b49be0b1 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java +++ b/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java @@ -31,7 +31,7 @@ public class Xoapi_view implements GfoInvkAble { public void Refresh() {if (Active_tab_is_null()) return; win.Page__refresh();} public void Print() { if (this.Active_tab_is_null()) return; - win.Active_html_box().Html_window_print_preview(); + win.Active_html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__print_preview); } public void Save_as() { if (this.Active_tab_is_null()) return; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java index 46968b880..9fd59c393 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java @@ -41,6 +41,7 @@ public class Xob_cmd_keys { , Key_file_xfer_regy = "file.xfer_regy" , Key_file_xfer_regy_update = "file.xfer_regy_update" , Key_file_fsdb_make = "file.fsdb_make" + , Key_file_fsdb_reduce = "file.fsdb_reduce" , Key_file_orig_reg = "file.orig_reg" , Key_file_xfer_update = "file.xfer_update" , Key_html_redlinks = "html.redlinks" diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java index 40a3ccfea..baae68421 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java @@ -46,7 +46,7 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base { return; } int[] ns_ids = null; - if (ns_ids_bry.length == 1 && ns_ids_bry[0] == Byte_ascii.Asterisk) { // "*" + if (ns_ids_bry.length == 1 && ns_ids_bry[0] == Byte_ascii.Star) { // "*" int len = ns_mgr.Ords_len(); ns_ids = new int[len]; for (int i = 0; i < len; ++i) diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java index dc27654e5..3164d229a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java @@ -36,7 +36,7 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement ? 0 : Bit_.Xto_int_date_short(cur_modified_on); } else if (Bry_.Eq(fld_key, Fld_cl_sortkey)) { - int nl_pos = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, fld_bgn, fld_end); + int nl_pos = Bry_finder.Find_fwd(src, Byte_ascii.Nl, fld_bgn, fld_end); if (nl_pos != Bry_.NotFound) // sortkey sometimes has format of "sortkey\ntitle"; EX: "WALES, JIMMY\nJIMMY WALES"; discard 2nd to conserve hard-disk space fld_end = nl_pos; cur_sortkey = Bry_.Mid(src, fld_bgn, fld_end); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java index cea0e97f4..7d3c137f8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java @@ -108,7 +108,7 @@ class Xoctg_make_link_mgr { } public void Write_bgn() { make_cmd.Sort_bgn(); - make_cmd.Line_dlm_(Byte_ascii.NewLine); + make_cmd.Line_dlm_(Byte_ascii.Nl); } public void Flush() { make_cmd.Sort_end(); @@ -177,7 +177,7 @@ class Xoctg_make_main_mgr { } public void Write_bgn() { make_cmd.Sort_bgn(); - make_cmd.Line_dlm_(Byte_ascii.NewLine); + make_cmd.Line_dlm_(Byte_ascii.Nl); } public void Flush() { make_cmd.Sort_end(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java new file mode 100644 index 000000000..3b049ba89 --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java @@ -0,0 +1,62 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; +import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.fsdb.meta.*; +public class Xob_fsdb_reduce_cmd extends Xob_itm_basic_base implements Xob_cmd { + public Xob_fsdb_reduce_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} + public String Cmd_key() {return Xob_cmd_keys.Key_file_fsdb_reduce;} + public void Cmd_init(Xob_bldr bldr) {} + public void Cmd_bgn(Xob_bldr bldr) {} + public void Cmd_run() {Exec_main();} + public void Cmd_end() {} + public void Cmd_term() {} + private void Exec_main() { + /* + Open_bin_dir + Iterate_files + Convert_bin + Mark_meta_record + */ + } + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + return this; + } +} +class Fsdb_reduce_wkr { + private final ProcessAdp convert_process; + private final Io_url src_url, trg_url; + private final int dpi, quality; + public Fsdb_reduce_wkr(ProcessAdp convert_process, Io_url tmp_dir, int dpi, int quality) { + this.convert_process = convert_process; + this.src_url = tmp_dir.GenSubFil("fsdb_reduce.src.bin"); + this.trg_url = tmp_dir.GenSubFil("fsdb_reduce.trg.bin"); + this.dpi = dpi; + this.quality = quality; + } + public byte[] Reduce(byte[] orig_bry) { + Io_mgr.I.SaveFilBry(src_url, orig_bry); + convert_process.Run(src_url, trg_url, dpi, quality); // -strip -quality 50% -density 72 -resample 72 + if (!convert_process.Exit_code_pass()) { + // throw err with convert_process.Rslt_out(); + } + byte[] rv = Io_mgr.I.LoadFilBry(trg_url); + // fail if 0; fail if greater than; + // warn if not between 50% - 70% of size + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java index 2b7c6d01a..21b3f0018 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java @@ -49,7 +49,7 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_ byte[] word = words[i]; wtr.Bfr() .Add(word) .Add_byte(Byte_ascii.Pipe) .Add_base85_len_5(page.Id()) .Add_byte(Byte_ascii.Semic) - .Add_base85_len_5(page.Text().length) .Add_byte(Byte_ascii.NewLine); + .Add_base85_len_5(page.Text().length) .Add_byte(Byte_ascii.Nl); } } catch (Exception e) {bldr.Usr_dlg().Warn_many("", "", "search_index:fatal error: err=~{0}", Err_.Message_gplx_brief(e));} // never let single page crash entire import } @@ -81,12 +81,12 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_ switch (b) { case Byte_ascii.Underline: // underline is word-breaking; EX: A_B -> A, B case Byte_ascii.Space: // should not occur, but just in case (only underscores) - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: // should not occur in titles, but just in case + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: // should not occur in titles, but just in case case Byte_ascii.Dash: // treat hypenated words separately case Byte_ascii.Dot: // treat abbreviations as separate words; EX: A.B.C. case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: - case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: + case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Comma: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Gt: case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java index 660c1abbd..f71dea021 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java @@ -42,7 +42,7 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvk Xob_xdat_file_wtr page_wtr = Page_wtr_get(ns); if (page_wtr.FlushNeeded(Xotdb_page_itm_.Txt_page_len__fixed + ttl_len + text_len)) page_wtr.Flush(bldr.Usr_dlg()); Xotdb_page_itm_.Txt_page_save(page_wtr.Bfr(), id, page.Modified_on(), ttl_wo_ns, text, false); - page_wtr.Add_idx(Byte_ascii.NewLine); + page_wtr.Add_idx(Byte_ascii.Nl); // idx: EX: 00100|aB64|Ttl; Xob_tmp_wtr ttl_wtr = ttl_wtr_mgr.Get_or_new(ns); diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java index 650f93709..a5082ae80 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java @@ -168,7 +168,7 @@ public class Xoa_css_img_downloader { byte b = raw_bry[i]; switch (b) { //case Byte_ascii.Slash: - case Byte_ascii.Backslash: case Byte_ascii.Colon: case Byte_ascii.Asterisk: case Byte_ascii.Question: + case Byte_ascii.Backslash: case Byte_ascii.Colon: case Byte_ascii.Star: case Byte_ascii.Question: case Byte_ascii.Quote: case Byte_ascii.Lt: case Byte_ascii.Gt: case Byte_ascii.Pipe: raw_bry[i] = Byte_ascii.Underline; break; diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_tkn__base.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_tkn__base.java index b5aa3372c..0d6c085c4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_tkn__base.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_tkn__base.java @@ -84,7 +84,7 @@ class Xob_css_tkn__url extends Xob_css_tkn__base { case Byte_ascii.Slash: case Byte_ascii.Backslash: break; - case Byte_ascii.Lt: case Byte_ascii.Gt: case Byte_ascii.Colon: case Byte_ascii.Pipe: case Byte_ascii.Question: case Byte_ascii.Asterisk: case Byte_ascii.Quote: + case Byte_ascii.Lt: case Byte_ascii.Gt: case Byte_ascii.Colon: case Byte_ascii.Pipe: case Byte_ascii.Question: case Byte_ascii.Star: case Byte_ascii.Quote: src[i] = Byte_ascii.Underline; break; default: diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java index b96280782..a4e8566b8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java @@ -39,7 +39,7 @@ class Dg_parser { int file_id = ++next_id; while (line_bgn < src_len) { ++line_idx; - int line_end = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, line_bgn); if (line_end == Bry_finder.Not_found) line_end = src_len; + int line_end = Bry_finder.Find_fwd(src, Byte_ascii.Nl, line_bgn); if (line_end == Bry_finder.Not_found) line_end = src_len; Dg_rule line = Parse_line(rel_path, file_id, line_idx, src, line_bgn, line_end); if (line.Tid() != Dg_rule.Tid_invalid) lines.Add(line); diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java b/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java index 74f8e35d5..97786393e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java +++ b/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java @@ -117,14 +117,14 @@ public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform List_adp rv = List_adp_.new_(); int fld_idx = 0; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: cur_key = csv_parser.Load(src, fld_bgn, pos); fld_bgn = pos + 1; ++fld_idx; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (pos - fld_bgn > 0 || fld_idx == 1) { byte[] cur_val = csv_parser.Load(src, fld_bgn, pos); Xobcl_kwd_row row = new Xobcl_kwd_row(cur_key, Bry_.Split(cur_val, Byte_ascii.Tilde)); diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_.java index 89550d495..6ee3fdd73 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_.java @@ -26,7 +26,7 @@ public class Xob_xml_parser_ { trie_add(rv, Bry_timestamp_bgn, Id_timestamp_bgn); trie_add(rv, Bry_timestamp_bgn_frag, Id_timestamp_bgn_frag); trie_add(rv, Bry_timestamp_end, Id_timestamp_end); trie_add(rv, Bry_text_bgn, Id_text_bgn); trie_add(rv, Bry_text_bgn_frag, Id_text_bgn_frag); trie_add(rv, Bry_text_end, Id_text_end); trie_add(rv, Bry_amp, Id_amp, Byte_ascii.Amp); trie_add(rv, Bry_quot, Id_quot, Byte_ascii.Quote); trie_add(rv, Bry_gt, Id_gt, Byte_ascii.Gt); trie_add(rv, Bry_lt, Id_lt, Byte_ascii.Lt); - trie_add(rv, Bry_tab, Id_tab, Bry_tab_ent); trie_add(rv, Bry_cr_nl, Id_cr_nl, Byte_ascii.NewLine); trie_add(rv, Bry_cr, Id_cr, Byte_ascii.NewLine); + trie_add(rv, Bry_tab, Id_tab, Bry_tab_ent); trie_add(rv, Bry_cr_nl, Id_cr_nl, Byte_ascii.Nl); trie_add(rv, Bry_cr, Id_cr, Byte_ascii.Nl); return rv; } public static final byte[] diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java index 50c747656..fd537550c 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java @@ -71,7 +71,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { Xow_ns ns = wiki.Ns_mgr().Ns_main(); int search_len = search.length; byte match_tid = Xows_page__search.Match_tid_all; - if (search_len > 0 && search[search_len - 1] == Byte_ascii.Asterisk) { + if (search_len > 0 && search[search_len - 1] == Byte_ascii.Star) { search = Bry_.Mid(search, 0, search_len - 1); match_tid = Xows_page__search.Match_tid_bgn; } diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java index 272bd7ff4..1e5d28e02 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java @@ -32,7 +32,7 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { int page_id = db_file.Tbl__cfg().Select_int_or("db", "page.id_next", -1); if (page_id == -1) { // HACK: changed for tests; was dbs.qrys.Db_qry_sql.rdr_("SELECT (Max(page_id) + 1) AS max_page_id FROM page;") // Db_rdr rdr = db_mgr.Core_data_mgr().Tbl__page().Conn().Stmt_new(Db_qry_sql.rdr_("SELECT (Max(page_id) + 1) AS max_page_id FROM page;")).Exec_select__rls_manual(); - Db_rdr rdr = db_mgr.Core_data_mgr().Tbl__page().Conn().Stmt_select(db_file.Tbl__page().Tbl_name(), String_.Ary(db_file.Tbl__page().Fld_page_id()), Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = db_mgr.Core_data_mgr().Tbl__page().Conn().Stmt_select(db_file.Tbl__page().Tbl_name(), String_.Ary(db_file.Tbl__page().Fld_page_id()), Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { int max_page_id = -1; while (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java b/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java index 9acb8634f..20c55b20e 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java +++ b/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java @@ -124,9 +124,7 @@ public class Xof_fsdb_itm implements Xof_file_itm { public void Html_orig_url_(Io_url v) {html_orig_url = v;} public void Html_img_wkr_(Js_img_wkr v) {html_img_wkr = v;} public void Html_gallery_mgr_h_(int v) {html_gallery_mgr_h = v;} - public void File_size_(long v) { - this.file_size = v; - } + public void File_size_(long v) {this.file_size = v;} private void Orig_ttl_(byte[] v) { this.orig_ttl = v; this.orig_ttl_md5 = Xof_file_wkr_.Md5_fast(v); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java index c978536ca..156d3d4a0 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java @@ -26,6 +26,7 @@ public class Xof_bin_mgr { private Xof_bin_wkr[] wkrs = Xof_bin_wkr_.Ary_empty; private int wkrs_len; private final String_obj_ref resize_warning = String_obj_ref.null_(); private final Xof_img_size tmp_size = new Xof_img_size(); private final Io_download_fmt download_fmt; + private final Io_stream_rdr_wrapper rdr_wrapper = new Io_stream_rdr_wrapper(); public Xof_bin_mgr(Fsm_mnt_mgr mnt_mgr, Xow_repo_mgr repo_mgr, Xof_img_wkr_resize_img resize_wkr, Io_download_fmt download_fmt) { this.mnt_mgr = mnt_mgr; this.repo_mgr = repo_mgr; this.download_fmt = download_fmt; this.usr_dlg = Gfo_usr_dlg_.I; @@ -53,17 +54,23 @@ public class Xof_bin_mgr { } return null; } - public boolean Find_to_url_as_bool(int exec_tid, Xof_fsdb_itm fsdb) {return Find_to_url(exec_tid, fsdb) != Io_url_.Empty;} - private Io_url Find_to_url(int exec_tid, Xof_fsdb_itm fsdb) { - Io_stream_rdr rdr = Find_as_rdr(exec_tid, fsdb); - if (rdr == Io_stream_rdr_.Noop) return Io_url_.Empty; - Io_url trg = fsdb.Html_view_url(); - fsdb.File_size_(rdr.Len()); - if (fsdb.File_resized()) return trg; // rdr is opened directly from trg; return its url; occurs when url goes through imageMagick / inkscape, or when thumb is already on disk; - Io_stream_wtr_.Save_rdr(trg, rdr, download_fmt); // rdr is stream; either from http_wmf or fsdb; save to trg and return; - return trg; - } + public boolean Find_to_url_as_bool(int exec_tid, Xof_fsdb_itm fsdb) {return Find_as(Bool_.Y, rdr_wrapper, exec_tid, fsdb);} +// public boolean Find_to_url_as_bool3(int exec_tid, Xof_fsdb_itm fsdb) {return Find_to_url(exec_tid, fsdb) != Io_url_.Empty;} +// private Io_url Find_to_url(int exec_tid, Xof_fsdb_itm fsdb) { +// Io_stream_rdr rdr = Find_as_rdr(exec_tid, fsdb); +// if (rdr == Io_stream_rdr_.Noop) return Io_url_.Empty; +// Io_url trg = fsdb.Html_view_url(); +// fsdb.File_size_(rdr.Len()); +// if (fsdb.File_resized()) return trg; // rdr is opened directly from trg; return its url; occurs when url goes through imageMagick / inkscape, or when thumb is already on disk; +// Io_stream_wtr_.Save_rdr(trg, rdr, download_fmt); // rdr is stream; either from http_wmf or fsdb; save to trg and return; +// return trg; +// } public Io_stream_rdr Find_as_rdr(int exec_tid, Xof_fsdb_itm fsdb) { + rdr_wrapper.Rdr_(Io_stream_rdr_.Noop); + Find_as(Bool_.N, rdr_wrapper, exec_tid, fsdb); + return rdr_wrapper.Rdr(); + } + public Io_stream_rdr Find_as_rdr3(int exec_tid, Xof_fsdb_itm fsdb) { Io_stream_rdr rv = Io_stream_rdr_.Noop; Xof_repo_itm repo = repo_mgr.Repos_get_by_wiki(fsdb.Orig_repo_name()).Trg(); boolean file_is_orig = fsdb.File_is_orig(); @@ -107,6 +114,72 @@ public class Xof_bin_mgr { } return Io_stream_rdr_.Noop; } + private boolean Find_as(boolean save_to_fsys, Io_stream_rdr_wrapper rdr_wrapper, int exec_tid, Xof_fsdb_itm fsdb) { + Xof_repo_itm repo = repo_mgr.Repos_get_by_wiki(fsdb.Orig_repo_name()).Trg(); + boolean file_is_orig = fsdb.File_is_orig(); + if (file_is_orig || exec_tid == Xof_exec_tid.Tid_viewer_app) { // orig or viewer_app; note that viewer_app always return orig + Io_url trg = url_bldr.To_url_trg(repo, fsdb, Bool_.Y); + fsdb.Html_view_url_(trg); + for (int i = 0; i < wkrs_len; i++) { + Xof_bin_wkr wkr = wkrs[i]; + boolean found = Get_bin(Bool_.N, fsdb.Html_w(), trg, save_to_fsys, rdr_wrapper, fsdb, wkr); + if (found) // orig found; return it; + return Set_found(save_to_fsys, fsdb, trg, rdr_wrapper); + } + } + else { // thumb + Io_url trg = url_bldr.To_url_trg(repo, fsdb, Bool_.N); + fsdb.Html_view_url_(trg); + for (int i = 0; i < wkrs_len; i++) { + Xof_bin_wkr wkr = wkrs[i]; + boolean found = Get_bin(Bool_.Y, fsdb.Html_w(), trg, save_to_fsys, rdr_wrapper, fsdb, wkr); + if (found) // thumb found; return it; + return Set_found(save_to_fsys, fsdb, trg, rdr_wrapper); + if (fsdb.Orig_ext().Id_is_video()) continue; // item is video; don't download orig as imageMagick can't thumbnail it; DATE:2015-06-16 + if (!wkr.Resize_allowed()) continue; // resize code below; exit early if wkr doesn't allow resize + Io_url orig = url_bldr.To_url_trg(repo, fsdb, Bool_.Y); // get orig url + found = Get_bin(Bool_.N, fsdb.Orig_w(), orig, Bool_.Y, rdr_wrapper, fsdb, wkr); // get orig; note: save_to_fsys set to true b/c imageMagick will need actual file to convert + if (!found) { + usr_dlg.Log_direct(String_.Format("bin_mgr:thumb not found; wkr={0} ttl={1} w={2}", wkr.Key(), fsdb.Orig_ttl(), fsdb.Lnki_w())); + continue; // orig not found; skip rest since resize can't happen; + } + boolean resized = Resize(exec_tid, fsdb, file_is_orig, orig, trg); + if (!resized) continue; + if (save_to_fsys) { // noop; already saved to trg + } + else { + Io_stream_rdr rdr = Io_stream_rdr_.file_(trg); // return stream of resized url; (result of imageMagick / inkscape) + rdr.Open(); + rdr_wrapper.Rdr_(rdr); + } + return Set_found(save_to_fsys, fsdb, trg, rdr_wrapper); + } + } + return false; + } + private boolean Get_bin(boolean is_thumb, int w, Io_url trg_url, boolean save_to_fsys, Io_stream_rdr_wrapper rdr_wrapper, Xof_fsdb_itm fsdb, Xof_bin_wkr wkr) { + boolean found = false; + if (save_to_fsys) + found = wkr.Get_to_fsys(fsdb, is_thumb, w, trg_url); + else { + Io_stream_rdr rdr = wkr.Get_as_rdr(fsdb, is_thumb, w); + if (rdr != Io_stream_rdr_.Noop) { + found = true; + rdr_wrapper.Rdr_(rdr); + } + } + return found; + } + private boolean Set_found(boolean save_to_fsys, Xof_fsdb_itm fsdb, Io_url fsys_url, Io_stream_rdr_wrapper rdr_wrapper) { + long fsdb_len = -1; + if (save_to_fsys) + fsdb_len = Io_mgr.I.QueryFil(fsys_url).Size(); + else + fsdb_len = rdr_wrapper.Rdr().Len(); + fsdb.File_size_(fsdb_len); + fsdb.File_exists_y_(); + return true; + } private boolean Resize(int exec_tid, Xof_fsdb_itm itm, boolean file_is_orig, Io_url src, Io_url trg) { tmp_size.Html_size_calc(exec_tid, itm.Lnki_w(), itm.Lnki_h(), itm.Lnki_type(), mnt_mgr.Patch_upright(), itm.Lnki_upright(), itm.Orig_ext().Id(), itm.Orig_w(), itm.Orig_h(), Xof_img_size.Thumb_width_img); boolean rv = resizer.Resize_exec(src, trg, tmp_size.Html_w(), tmp_size.Html_h(), itm.Orig_ext().Id(), resize_warning); @@ -114,3 +187,6 @@ public class Xof_bin_mgr { return rv; } } +class Io_stream_rdr_wrapper { + public Io_stream_rdr Rdr() {return rdr;} public void Rdr_(Io_stream_rdr v) {rdr = v;} private Io_stream_rdr rdr; +} diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java index ee292451e..bf129088c 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java @@ -73,7 +73,7 @@ class Xofc_dir_tbl implements RlsAble { } public void Select_all(List_adp list) { list.Clear(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) list.Add(new_itm(rdr)); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java index 2da8d04e8..313124131 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java @@ -122,7 +122,7 @@ class Xofc_fil_tbl implements RlsAble { } public void Select_all(Bry_bfr fil_key_bldr, Ordered_hash hash) { hash.Clear(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) { Xofc_fil_itm fil_itm = new_itm(rdr); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java index 9b21a187b..ee0f62c50 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java @@ -158,7 +158,7 @@ public class Xou_cache_mgr { } private Io_url Calc_url(Xou_cache_itm cache) { byte[] wiki_domain = Xow_domain_abrv_xo_.To_itm(cache.Lnki_wiki_abrv()).Domain_bry(); - Xow_wiki wiki = wiki_mgr.Get_by_key_or_make_2(wiki_domain); if (wiki == null) return Io_url_.Empty; // wiki is not available; should only happen in read-only mode; DATE:2015-05-23 + Xow_wiki wiki = wiki_mgr.Get_by_key_or_make_init_y(wiki_domain); if (wiki == null) return Io_url_.Empty; // wiki is not available; should only happen in read-only mode; DATE:2015-05-23 Xof_repo_itm trg_repo = wiki.File__repo_mgr().Get_trg_by_id_or_null(cache.Orig_repo_id(), cache.Lnki_ttl(), Bry_.Empty); if (trg_repo == null) return Io_url_.Empty; byte[] orig_ttl = cache.Orig_ttl(); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java index e16bb402f..01a3a39b7 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java @@ -90,7 +90,7 @@ public class Xou_cache_tbl implements RlsAble { } public void Select_all(Bry_bfr fil_key_bldr, Ordered_hash hash) { hash.Clear(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) { Xou_cache_itm itm = new_itm(rdr); @@ -112,7 +112,7 @@ public class Xou_cache_tbl implements RlsAble { itm.Db_state_(Db_cmd_mode.Tid_ignore); } catch (Exception e) {stmt_bldr.Rls(); throw Err_.err_(e, Err_.Message_gplx(e));} } - @gplx.Internal protected Db_rdr Select_all_for_test() {return conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_manual();} + @gplx.Internal protected Db_rdr Select_all_for_test() {return conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_manual();} private void Db_save_crt(Db_stmt stmt, Xou_cache_itm itm, boolean insert) { if (insert) { stmt.Val_bry_as_str (fld_lnki_wiki_abrv , itm.Lnki_wiki_abrv()) diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java index 916c334f9..aea269868 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java @@ -41,4 +41,16 @@ public class Xof_orig_itm { public static final byte Repo_comm = 0, Repo_wiki = 1, Repo_null = Byte_.Max_value_127; // SERIALIZED: "wiki_orig.orig_repo" public static final Xof_orig_itm Null = null; public static final int File_len_null = -1; // file_len used for filters (EX: don't download ogg > 1 MB) + public static String dump(Xof_orig_itm itm) { + if (itm == null) + return "NULL"; + Bry_bfr bfr = Bry_bfr.new_(255); + bfr.Add_str_a7("repo").Add_byte_eq().Add_int_variable((int)itm.repo).Add_byte_semic(); + bfr.Add_str_a7("ttl").Add_byte_eq().Add(itm.ttl).Add_byte_semic(); + bfr.Add_str_a7("ext_id").Add_byte_eq().Add_int_variable(itm.ext_id).Add_byte_semic(); + bfr.Add_str_a7("w").Add_byte_eq().Add_int_variable(itm.w).Add_byte_semic(); + bfr.Add_str_a7("h").Add_byte_eq().Add_int_variable(itm.h).Add_byte_semic(); + bfr.Add_str_a7("redirect").Add_byte_eq().Add(itm.redirect).Add_byte_semic(); + return bfr.Xto_str_and_clear(); + } } diff --git a/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java b/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java index 8f7ca5f74..7a012b1d0 100644 --- a/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java +++ b/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java @@ -25,7 +25,7 @@ class Xog_menu_mgr_src { . Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur) . Add_spr() . Add_btn(Xog_cmd_itm_.Key_gui_page_view_save_as) -// . Add_btn(Xog_cmd_itm_.Key_gui_page_view_print) + . Add_btn(Xog_cmd_itm_.Key_gui_page_view_print) . Add_btn(Xog_cmd_itm_.Key_app_exit) . Add_grp_end() . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_edit) diff --git a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java b/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java index cf677561b..6049fe1cb 100644 --- a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java +++ b/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java @@ -75,8 +75,8 @@ public class Xog_url_wkr { Io_url href_url = Io_url_.http_any_(String_.new_u8(Xoa_app_.Utl__encoder_mgr().Http_url().Decode(href_bry)), Op_sys.Cur().Tid_is_wnt()); gplx.gfui.Gfui_html html_box = win.Active_html_box(); String xowa_ttl = wiki.Gui_mgr().Cfg_browser().Content_editable() - ? html_box.Html_active_atr_get_str(gplx.xowa.html.Xoh_consts.Atr_xowa_title_str, null) - : Xoh_dom_.Title_by_href(href_bry, Bry_.new_u8(html_box.Html_doc_html())); + ? html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, gplx.xowa.html.Xoh_consts.Atr_xowa_title_str, null) + : Xoh_dom_.Title_by_href(href_bry, Bry_.new_u8(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__root_html_get))); byte[] lnki_ttl = Xoa_app_.Utl__encoder_mgr().Http_url().Decode(Xoa_ttl.Replace_spaces(Bry_.new_u8(xowa_ttl))); Xof_fsdb_itm fsdb = Xof_orig_file_downloader.Make_fsdb(wiki, lnki_ttl, img_size, url_bldr); if (!Io_mgr.I.ExistsFil(href_url)) { diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java index 3b4325a73..5b4778b58 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java @@ -21,6 +21,8 @@ import gplx.gfui.*; import gplx.xowa.gui.menus.*; import gplx.xowa.gui.menus.dom import gplx.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.pages.*; public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { private Xoae_app app; private final Object thread_lock = new Object(); + private final String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); + protected Xog_html_itm() {} // TEST: for prefs_mgr public Xog_html_itm(Xog_tab_itm owner_tab) { this.owner_tab = owner_tab; app = owner_tab.Tab_mgr().Win().App(); @@ -45,10 +47,10 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { this.html_box = html_box; html_box.Html_js_cbks_add("xowa_exec", js_cbk); } - public String Html_selected_get_src_or_empty() {return html_box.Html_doc_selected_get_src_or_empty();} - public String Html_selected_get_href_or_text() {return Html_extract_text(html_box.Html_doc_selected_get_href_or_text());} - public String Html_selected_get_text_or_href() {return Html_extract_text(html_box.Html_doc_selected_get_text_or_href());} - public String Html_selected_get_active_or_selection() {return Html_extract_text(html_box.Html_doc_selected_get_active_or_selection());} + public String Html_selected_get_src_or_empty() {return html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_src_or_empty);} + public String Html_selected_get_href_or_text() {return Html_extract_text(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_href_or_text));} + public String Html_selected_get_text_or_href() {return Html_extract_text(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_text_or_href));} + public String Html_selected_get_active_or_selection() {return Html_extract_text(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_or_selection));} private String Html_extract_text(String v) { Xoae_page page = owner_tab.Page(); String site = owner_tab.Wiki().Domain_str(); @@ -59,8 +61,8 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { byte view_mode = owner_tab.View_mode(); byte[] html_src = page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, view_mode); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05 Html_src_(page, html_src); - if (view_mode == Xopg_view_mode.Tid_read){ // used only for Xosrh test; DATE:2014-01-29 - html_box.Html_doc_body_focus(); // NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05 + if (view_mode == Xopg_view_mode.Tid_read){ // used only for Xosrh test; DATE:2014-01-29 + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body); // NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05 page.Root().Data_htm_(html_src); } } @@ -89,8 +91,8 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { trg_itm.js_cbk = src_js_cbk; } public byte[] Get_elem_value_for_edit_box_as_bry() {return Bry_.new_u8(this.Get_elem_value_for_edit_box());} - public String Get_elem_value_for_edit_box() {return html_box.Html_elem_atr_get_str(Elem_id__xowa_edit_data_box, Gfui_html.Atr_value);} - public String Get_elem_value(String elem_id) {return html_box.Html_elem_atr_get_str(elem_id, Gfui_html.Atr_value);} + public String Get_elem_value_for_edit_box() {return Html_elem_atr_get_str(Elem_id__xowa_edit_data_box, Gfui_html.Atr_value);} + public String Get_elem_value(String elem_id) {return Html_elem_atr_get_str(elem_id, Gfui_html.Atr_value);} public void Html_img_update(String elem_id, String elem_src, int elem_width, int elem_height) { GfoMsg m = GfoMsg_.new_cast_(Invk_html_img_update).Add("elem_id", elem_id).Add("elem_src", elem_src).Add("elem_width", elem_width).Add("elem_height", elem_height); GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_img_update, m); @@ -99,16 +101,20 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_delete).Add("elem_id", elem_id); GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_delete, m); } + @gplx.Virtual public String Html_elem_atr_get_str(String id, String atr_key) {return html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__atr_get_as_obj, id, atr_key);} + @gplx.Virtual public boolean Html_elem_atr_get_bool(String id, String atr_key) {return Bool_.parse_(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__atr_get_to_str, id, atr_key));} + + public void Html_atr_set(String elem_id, String atr_key, String atr_val) { synchronized (thread_lock) { // needed for Special:Search and async cancel; DATE:2015-05-02 GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_atr_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_atr_set, m); } } - public void Html_redlink(String html_uid) {Html_elem_atr_set_append(html_uid, "class", gplx.xowa.html.lnkis.Xoh_redlink_utl.New_str);} - public void Html_elem_atr_set_append(String elem_id, String atr_key, String atr_val) { - GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_atr_set_append).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_atr_set_append, m); + public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.html.lnkis.Xoh_redlink_utl.New_str);} + private void Html_doc_atr_append_or_set(String elem_id, String atr_key, String atr_val) { + GfoMsg m = GfoMsg_.new_cast_(Invk_html_doc_atr_append_or_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); + GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_doc_atr_append_or_set, m); } public void Html_elem_replace_html(String id, String html) { synchronized (thread_lock) { // needed for Special:Search and async; DATE:2015-04-23 @@ -148,22 +154,24 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { String html_doc_pos = owner_tab.Page().Html_data().Bmk_pos(); if (html_doc_pos == null) { String auto_focus_id = app.Gui_mgr().Html_mgr().Auto_focus_id(); - if (String_.Len_eq_0(auto_focus_id)) return; // don't focus anything - if (String_.Eq(auto_focus_id, " first_anchor")) // NOTE: HTML 4/5 do not allow space as id; XOWA using space here to create a unique_key that will never collide with any id - html_box.Html_doc_body_focus(); // NOTE: will focus body if content-editable, or first_anchor otherwise + if (String_.Len_eq_0(auto_focus_id)) return; // don't focus anything + if (String_.Eq(auto_focus_id, " first_anchor")) // NOTE: HTML 4/5 do not allow space as id; XOWA using space here to create a unique_key that will never collide with any id + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body); // NOTE: will focus body if content-editable, else first_anchor else - html_box.Html_elem_focus(auto_focus_id); + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, auto_focus_id); } else if (String_.Eq(html_doc_pos, gplx.xowa.gui.history.Xog_history_itm.Html_doc_pos_toc)) // NOTE: special case to handle TOC clicks; DATE:2013-07-17 Scroll_page_by_id("toc"); - else - html_box.Html_window_vpos_(html_doc_pos); + else { + Html_window_vpos_parse(html_doc_pos, scroll_top, node_path); + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_set, node_path.Val(), scroll_top.Val()); + } } public void Scroll_page_by_id_gui(String id) {GfoInvkAble_.InvkCmd_val(cmd_async, Invk_scroll_page_by_id, id);} private boolean Scroll_page_by_id(String id) { return (id == null) ? false - : html_box.Html_elem_scroll_into_view(Xoa_app_.Utl__encoder_mgr().Id().Encode_str(id)); + : html_box.Html_js_eval_proc_as_bool(Xog_js_procs.Win__scroll_elem_into_view, Xoa_app_.Utl__encoder_mgr().Id().Encode_str(id)); } public void Js_enabled_(boolean v) { html_box.Html_js_enabled_(v); @@ -179,17 +187,17 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { kit.Set_mnu_popup(html_box, popup_mnu.Under_mnu()); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_html_img_update)) html_box.Html_elem_img_update(m.ReadStr("elem_id"), m.ReadStr("elem_src"), m.ReadInt("elem_width"), m.ReadInt("elem_height")); - else if (ctx.Match(k, Invk_html_elem_atr_set)) html_box.Html_elem_atr_set(m.ReadStr("elem_id"), m.ReadStr("atr_key"), m.ReadStr("atr_val")); - else if (ctx.Match(k, Invk_html_elem_atr_set_append)) html_box.Html_elem_atr_set_append(m.ReadStr("elem_id"), m.ReadStr("atr_key"), m.ReadStr("atr_val")); - else if (ctx.Match(k, Invk_html_elem_delete)) html_box.Html_elem_delete(m.ReadStr("elem_id")); - else if (ctx.Match(k, Invk_html_elem_replace_html)) html_box.Html_elem_replace_html(m.ReadStr("id"), m.ReadStr("html")); - else if (ctx.Match(k, Invk_html_elem_append_above)) html_box.Html_elem_append_above(m.ReadStr("id"), m.ReadStr("html")); - else if (ctx.Match(k, Invk_html_gallery_packed_exec)) html_box.Html_gallery_packed_exec(); + if (ctx.Match(k, Invk_html_img_update)) html_box.Html_js_eval_proc_as_bool (Xog_js_procs.Doc__elem_img_update , m.ReadStr("elem_id"), m.ReadStr("elem_src"), m.ReadInt("elem_width"), m.ReadInt("elem_height")); + else if (ctx.Match(k, Invk_html_elem_atr_set)) html_box.Html_js_eval_proc_as_str (Xog_js_procs.Doc__atr_set , m.ReadStr("elem_id"), m.ReadStr("atr_key"), m.ReadStr("atr_val")); + else if (ctx.Match(k, Invk_html_doc_atr_append_or_set)) html_box.Html_js_eval_proc_as_str (Xog_js_procs.Doc__atr_append_or_set , m.ReadStr("elem_id"), m.ReadStr("atr_key"), m.ReadStr("atr_val")); + else if (ctx.Match(k, Invk_html_elem_delete)) html_box.Html_js_eval_proc_as_bool (Xog_js_procs.Doc__elem_delete , m.ReadStr("elem_id")); + else if (ctx.Match(k, Invk_html_elem_replace_html)) html_box.Html_js_eval_proc_as_str (Xog_js_procs.Doc__elem_replace_html , m.ReadStr("id"), m.ReadStr("html")); + else if (ctx.Match(k, Invk_html_elem_append_above)) html_box.Html_js_eval_proc_as_str (Xog_js_procs.Doc__elem_append_above , m.ReadStr("id"), m.ReadStr("html")); + else if (ctx.Match(k, Invk_html_gallery_packed_exec)) html_box.Html_js_eval_proc_as_str (Xog_js_procs.Xtn__gallery_packed_exec); else if (ctx.Match(k, Invk_html_popups_bind_hover_to_doc)) html_box.Html_js_eval_script("xowa_popups_bind_doc();"); else if (ctx.Match(k, Invk_scroll_page_by_bmk)) Scroll_page_by_bmk(); else if (ctx.Match(k, Invk_scroll_page_by_id)) Scroll_page_by_id(m.ReadStr("v")); - else if (ctx.Match(k, Invk_html_elem_focus)) html_box.Html_elem_focus(m.ReadStr("v")); + else if (ctx.Match(k, Invk_html_elem_focus)) html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, m.ReadStr("v")); else if (ctx.Match(k, GfuiElemKeys.Evt_menu_detected)) When_menu_detected(); else return GfoInvkAble_.Rv_unhandled; return this; @@ -197,7 +205,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { private static final String Invk_html_gallery_packed_exec = "html_gallery_packed_exec", Invk_html_popups_bind_hover_to_doc = "html_popups_bind_hover_to_doc" , Invk_html_img_update = "html_img_update", Invk_html_elem_atr_set = "html_elem_atr_set" - , Invk_html_elem_atr_set_append = "html_elem_atr_set_append", Invk_html_elem_delete = "html_elem_delete", Invk_html_elem_replace_html = "html_elem_replace_html", Invk_html_elem_append_above = "html_elem_append_above" + , Invk_html_doc_atr_append_or_set = "html_doc_atr_append_or_set", Invk_html_elem_delete = "html_elem_delete", Invk_html_elem_replace_html = "html_elem_replace_html", Invk_html_elem_append_above = "html_elem_append_above" , Invk_scroll_page_by_bmk = "scroll_page_by_bmk", Invk_scroll_page_by_id = "scroll_page_by_id" ; public static final String @@ -206,6 +214,13 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { , Elem_id__first_heading = "firstHeading" , Invk_html_elem_focus = "html_elem_focus" ; + public static void Html_window_vpos_parse(String v, String_obj_ref scroll_top, String_obj_ref node_path) { + int pipe_pos = String_.FindFwd(v, "|"); if (pipe_pos == String_.Find_none) return; // if elem_get_path returns invalid value, don't fail; DATE:2014-04-05 + scroll_top.Val_(String_.Mid(v, 0, pipe_pos)); + String node_path_val = String_.Mid(v, pipe_pos + 1, String_.Len(v)); + node_path_val = "'" + String_.Replace(node_path_val, ",", "','") + "'"; + node_path.Val_(node_path_val); + } } class Xog_html_itm__href_extractor { private static final byte Text_tid_none = 0, Text_tid_text = 1, Text_tid_href = 2; diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm_tst.java b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm_tst.java index f554b019f..ec1fe3e01 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm_tst.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm_tst.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import org.junit.*; +import gplx.core.primitives.*; public class Xog_html_itm_tst { @Before public void init() {fxt.Clear();} private Xog_html_itm_fxt fxt = new Xog_html_itm_fxt(); @Test public void Extract_href__text() { @@ -34,6 +35,10 @@ public class Xog_html_itm_tst { fxt.Test_extract_href("2|/wiki/Page_2" , "en.wikipedia.org/wiki/Page_2"); fxt.Test_extract_href("2|#anchor" , "en.wikipedia.org/wiki/Page_0#anchor"); } + @Test public void Html_window_vpos_parse() { + fxt.Test_Html_window_vpos_parse("0|0,1,2", "0", "'0','1','2'"); + fxt.Test_Html_window_vpos_parse("org.eclipse.swt.SWTException: Permission denied for to get property Selection.rangeCount", null, null); // check that invalid path doesn't fail; DATE:2014-04-05 + } } class Xog_html_itm_fxt { public void Clear() { @@ -45,4 +50,11 @@ class Xog_html_itm_fxt { public void Test_extract_href(String text_str, String expd) { Tfds.Eq(expd, Xog_html_itm__href_extractor.Html_extract_text(cur_wiki, cur_page, text_str)); } + private String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); + public void Test_Html_window_vpos_parse(String raw, String expd_scroll_top, String expd_node_path) { + scroll_top.Val_null_(); node_path.Val_null_(); + Xog_html_itm.Html_window_vpos_parse(raw, scroll_top, node_path); + Tfds.Eq(expd_scroll_top, scroll_top.Val(), expd_scroll_top); + Tfds.Eq(expd_node_path, node_path.Val(), expd_node_path); + } } diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_html_js_cbk.java b/400_xowa/src/gplx/xowa/gui/views/Xog_html_js_cbk.java index dc27b6798..b45923c2b 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_html_js_cbk.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_html_js_cbk.java @@ -91,7 +91,7 @@ public class Xog_html_js_cbk implements GfoInvkAble { private String[][] Get_titles_meta(GfoMsg m) { Xowe_wiki wiki = html_itm.Owner_tab().Wiki(); try { - byte[][] ttls = Bry_.Split(Bry_.new_u8((String)m.ReadValAt(0)), Byte_ascii.NewLine); + byte[][] ttls = Bry_.Split(Bry_.new_u8((String)m.ReadValAt(0)), Byte_ascii.Nl); int ttls_len = ttls.length; String[][] rv = new String[ttls_len][]; for (int i = 0; i < ttls_len; i++) { diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java b/400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java new file mode 100644 index 000000000..0c3db1111 --- /dev/null +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java @@ -0,0 +1,46 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; +public class Xog_js_procs { + public static final String + Win__focus_body = "xowa.js.win.focus_body" + , Win__vpos_get = "xowa.js.win.vpos_get" + , Win__vpos_set = "xowa.js.win.vpos_set" + , Win__find_in_hdoc = "xowa.js.win.find_in_hdoc" + , Win__find_in_textarea = "xowa.js.win.find_in_textarea" + , Win__scroll_elem_into_view = "xowa.js.win.scroll_elem_into_view" + , Win__print_preview = "xowa.js.win.print_preview" + , Doc__root_html_get = "xowa.js.doc.root_html_get" + , Doc__atr_get_as_obj = "xowa.js.doc.atr_get_as_obj" + , Doc__atr_get_to_str = "xowa.js.doc.atr_get_to_str" + , Doc__atr_set = "xowa.js.doc.atr_set" + , Doc__atr_append_or_set = "xowa.js.doc.atr_append_or_set" + , Doc__elem_focus = "xowa.js.doc.elem_focus" + , Doc__elem_delete = "xowa.js.doc.elem_delete" + , Doc__elem_append_above = "xowa.js.doc.elem_append_above" + , Doc__elem_replace_html = "xowa.js.doc.elem_replace_html" + , Doc__elem_img_update = "xowa.js.doc.elem_img_update" + , Selection__get_text_or_href = "xowa.js.selection.get_text_or_href" + , Selection__get_href_or_text = "xowa.js.selection.get_href_or_text" + , Selection__get_active_or_selection = "xowa.js.selection.get_active_or_selection" + , Selection__get_src_or_empty = "xowa.js.selection.get_src_or_empty" + , Selection__get_active_for_editable_mode = "xowa.js.selection.get_active_for_editable_mode" + , Selection__toggle_focus_for_anchor = "xowa.js.selection.toggle_focus_for_anchor" + , Xtn__gallery_packed_exec = "xowa.js.xtn.gallery_packed_exec" + ; +} diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java index 624785722..8651cb7a3 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java @@ -93,7 +93,7 @@ public class Xog_tab_itm_edit_mgr { public static void Focus(Xog_win_itm win, String elem_focus_id) { Gfui_html html_box = win.Active_html_box(); html_box.Focus(); - html_box.Html_elem_focus(elem_focus_id); + html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, elem_focus_id); } public static void Debug(Xog_win_itm win, byte view_tid) { Xog_tab_itm tab = win.Tab_mgr().Active_tab(); Xoae_page page = tab.Page(); diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java index e280d547d..2556c0e3e 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java @@ -28,7 +28,7 @@ public class Xog_tab_itm_read_mgr { Xoae_page cur_page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); Gfui_html html_box = html_itm.Html_box(); Xog_win_itm win = tab.Tab_mgr().Win(); if (cur_page != null && !new_page_is_same) { // if new_page_is_same, don't update DocPos; will "lose" current position - cur_page.Html_data().Bmk_pos_(html_box.Html_window_vpos()); + cur_page.Html_data().Bmk_pos_(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_get)); tab.History_mgr().Update_html_doc_pos(cur_page, history_nav_type); // HACK: old_page is already in stack, but need to update its hdoc_pos } win.Usr_dlg().Prog_none("", "", "locating images"); diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java index 4447d04c4..1e3a5c023 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java @@ -111,7 +111,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { private void Win__link_click() { // NOTE: only applies when content_editable=y; if n, then link_click will be handled by SwtBrowser location changed (Win__link_clicked) Xog_tab_itm tab = tab_mgr.Active_tab(); Xowe_wiki wiki = tab.Wiki(); if (wiki.Gui_mgr().Cfg_browser().Content_editable()) { - String href = tab.Html_itm().Html_box().Html_active_atr_get_str(Gfui_html.Atr_href, null); + String href = tab.Html_itm().Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, Gfui_html.Atr_href, null); if (String_.Len_eq_0(href)) return; // NOTE: href can be null for images; EX: [[File:Loudspeaker.svg|11px|link=|alt=play]]; link= basically means don't link to image Page__navigate_by_internal_href(href, tab); } @@ -136,7 +136,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { kit.Kit_term(); // NOTE: Kit_term calls shell.close() which in turn is hooked up to app.Term_cbk() event; DATE:2014-09-09 } private void App__eval(String s) { - String snippet = this.Active_html_box().Html_elem_atr_get_str(s, Gfui_html.Atr_innerHTML); + String snippet = this.Active_html_itm().Html_elem_atr_get_str(s, Gfui_html.Atr_innerHTML); app.Gfs_mgr().Run_str(snippet); } private static String Parse_evt_location_changing(String v) { // EX: about:blank#anchor -> anchor @@ -196,7 +196,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { } public void Page__refresh() { Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); - page.Html_data().Bmk_pos_(html_itm.Html_box().Html_window_vpos()); + page.Html_data().Bmk_pos_(html_itm.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_get)); html_itm.Show(page); if (page.Url().Anchor_str() == null) html_itm.Scroll_page_by_bmk_gui(); diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java index b56c198cd..0484841d2 100644 --- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java +++ b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java @@ -21,7 +21,7 @@ public class Xog_win_itm__prog_href_mgr { private static Xoh_href tmp_href = new Xoh_href(); private static Bry_bfr tmp_bfr = Bry_bfr.reset_(512); public static void Print(Xog_win_itm win) { // PURPOSE: print href in prog box when in content editable mode - String href = win.Active_html_box().Html_active_atr_get_str(Gfui_html.Atr_href, "");// get selected href from html_box + String href = win.Active_html_box().Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, Gfui_html.Atr_href, "");// get selected href from html_box href = Xoa_app_.Utl__encoder_mgr().Href().Decode_str(href); // remove url encodings if (!String_.Eq(href, win.Prog_box().Text())) win.Usr_dlg().Prog_direct(href); diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java index ae335850d..271302db4 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java +++ b/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java @@ -30,7 +30,7 @@ public class Xoh_html_wtr { lnke_wtr = new Xoh_lnke_wtr(wiki); } public void Init_by_wiki(Xowe_wiki wiki) { - cfg.Toc_show_(true).Lnki_title_(true).Lnki_visited_(true).Lnki_id_(true); // NOTE: set during Init_by_wiki, b/c all tests assume these are false + cfg.Toc__show_(Bool_.Y).Lnki__title_(true).Lnki_visited_y_().Lnki__id_y_(); // NOTE: set during Init_by_wiki, b/c all tests assume these are false ref_wtr.Init_by_wiki(wiki); } public Xow_html_mgr Html_mgr() {return html_mgr;} private Xow_html_mgr html_mgr; @@ -46,6 +46,8 @@ public class Xoh_html_wtr { page.Slink_list().Clear(); // HACK: always clear langs; necessary for reload lnki_wtr.Init_by_page(ctx, hctx, src, ctx.Cur_page()); Write_tkn(bfr, ctx, hctx, src, null, -1, root); + if (cfg.Hdr__div_wrapper()) + bfr.Add(Tag_hdr__div_wrapper_end); } finally { page.Category_list_(page.Html_data().Ctgs_to_ary()); @@ -107,14 +109,19 @@ public class Xoh_html_wtr { private static final byte[] Bry_hdr_bgn = Bry_.new_a7(" + html_wtr.Cfg().Toc__show_(Bool_.Y); // needed for hdr to show html_wtr.Write_all(bfr, ctx, hctx, html_bry, root); Tfds.Eq(expd, bfr.Xto_str_and_clear()); } diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java index e3779abe6..833a2d9e5 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java @@ -106,7 +106,7 @@ public class Xoh_file_wtr__basic { , byte[] lnki_ttl, Xof_ext orig_ext, byte[] lnki_href, byte[] img_view_src, byte[] img_orig_src, byte[] alt) { if (lnki_halign == Xop_lnki_align_h.Center) bfr.Add(Div_center_bgn); Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); - byte[] anchor_title = html_wtr.Cfg().Lnki_title() + byte[] anchor_title = html_wtr.Cfg().Lnki__title() ? Arg_anchor_title(tmp_bfr, src, lnki, lnki_ttl, anchor_title_wkr) // NOTE: Arg_anchor_title should only be called if there is no caption, else refs may not show; DATE:2014-03-05 : Bry_.Empty; Xoh_file_img_wkr lnki_file_wkr = lnki.Lnki_file_wkr(); if (lnki_file_wkr == null) lnki_file_wkr = html_fmtr; diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java index acd916be8..eb8d2e583 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java +++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java @@ -21,13 +21,13 @@ public class Xoh_file_wtr_basic_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} @Test public void Img_full() { // PURPOSE: full with title was outputting invalid html; DATE:2013-12-31 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_wiki_str ( "[[File:A.png]]" , String_.Concat_lines_nl_skip_last ( "\"\"" // NOTE: used to output class=\"image\"A.png )); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Img_embed() { fxt.Test_parse_page_wiki_str("[[File:A.png|9x8px|alt=abc]]", Xop_fxt.html_img_none("File:A.png", "abc", "file:///mem/wiki/repo/trg/thumb/7/0/A.png/9px.png", "A.png")); @@ -185,65 +185,65 @@ public class Xoh_file_wtr_basic_tst { fxt.Init_para_n_(); } @Test public void Img_title() { - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); Tst_img_title("[[File:A.png|frameless|a b]]", "a b"); Tst_img_title("[[File:A.png|thumb|a b]]", "Enlarge"); // caption should not replace text - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Title_escape() { // PURPOSE: escape quotes in title; PAGE:none; DATE:2014-10-27 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_wiki_str("[[A\"B]]", "A\"B"); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Img_title__caption_has_lnki() { // PURPOSE: caption with lnki should show in title; PAGE:en.w:Earth; DATE:2014-08-06 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); Tst_img_title("[[File:A.png|frameless|[[A]]]]" , "A"); // ttl only Tst_img_title("[[File:A.png|frameless|[[A|B]]]]" , "B"); // caption Tst_img_title("[[File:A.png|frameless|[[A]]b]]" , "Ab"); // tail - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Lnki_alt_is_text() { // PURPOSE: (a) alt should default to caption; (b) alt should not show html chars (like \"abc\"" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Alt_ignore_apos() {// PURPOSE: alt should ignore apos; EX: [[File:A.png|''A'']] should have alt of A; DATE:2013-10-25 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_all_str ( "[[File:A.png|''b'']]" , "\"b\"" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Alt_ignore_lnke() {// PURPOSE: alt should ignore lnke - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_all_str ( "[[File:A.png|b[http://c.org d] e]]" , "\"bd" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Alt_ignore_list() {// PURPOSE: alt should ignore list - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_all_str ( "[[File:A.png|b\n*c]]" , "\"b*c\"" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Alt_ignore_tblw() {// PURPOSE: alt should ignore tblw - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_all_str ( "[[File:A.png|\n{|\n|-\n|b\n|}\n]]" , "\"" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Alt_ignore_para() {// PURPOSE: alt should ignore para - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Init_para_y_(); fxt.Test_parse_page_all_str ( "[[File:A.png|b\nc]]" @@ -252,15 +252,15 @@ public class Xoh_file_wtr_basic_tst { , "

" )); fxt.Init_para_n_(); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Lnki_empty_alt_is_omitted() {// PURPOSE: empty alt should be ignored; DATE:2013-07-30 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_all_str ( "[[File:A.png|a|alt=]]" , "\"\"" ); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } @Test public void Href_anchor_leading_space() { // PURPOSE: space before anchor should be preserved, not " " -> "#" fxt.Test_parse_page_all_str("[[A #b]]", "A #b"); @@ -275,13 +275,13 @@ public class Xoh_file_wtr_basic_tst { fxt.Test_parse_page_all_str("[[Help:a #b]]", "Help:A #b"); } @Test public void Lnki_caption_nested_file() { // PURPOSE: nested lnki in caption breaks alt with html chars; EX:de.w:Wien; DATE:2013-12-16 - fxt.Wtr_cfg().Lnki_title_(true); + fxt.Wtr_cfg().Lnki__title_(true); fxt.Test_parse_page_wiki_str("[[File:A.png|none|[[File:B.png|20px|d]] c]]", String_.Concat_lines_nl_skip_last ( "
" , "\"d
" , "" )); - fxt.Wtr_cfg().Lnki_title_(false); + fxt.Wtr_cfg().Lnki__title_(false); } private void Tst_img_title(String raw, String expd_ttl) { String actl = fxt.Exec_parse_page_wiki_as_str(raw); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java index 913ff9733..5a459bdc6 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java +++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java @@ -61,7 +61,7 @@ public class Xoh_lnki_title_fmtr implements Bry_fmtr_arg { for (int i = bgn; i < end; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Tab: // NOTE: escape ws so that it renders correctly in tool tips + case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Tab: // NOTE: escape ws so that it renders correctly in tool tips case Byte_ascii.Quote: case Byte_ascii.Lt: case Byte_ascii.Gt: case Byte_ascii.Amp: // NOTE: escape possible javascript injection characters bfr.Add(Escape_bgn); bfr.Add_int_variable(b); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java index 99c90cf69..bbc844503 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java @@ -101,13 +101,13 @@ public class Xoh_lnki_wtr { else bfr.Add(Xoh_consts.A_bgn); // ' Roman empire Html_utl.Escape_html_to_bfr(bfr, lnki_title_bry, 0, lnki_title_bry.length, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N); // escape title; DATE:2014-10-27 @@ -118,7 +118,7 @@ public class Xoh_lnki_wtr { bfr.Add(gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Html_redlink_end); } else { - if (cfg.Lnki_visited() + if (cfg.Lnki__visited() && history_mgr.Has(wiki.Domain_bry(), ttl_bry)) bfr.Add(Bry_xowa_visited); // '" class="xowa-visited' bfr.Add(Xoh_consts.__end_quote); // '">' diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java index 4e2af2cc1..e20584956 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java +++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java @@ -31,7 +31,7 @@ class Xow_popup_anchor_finder { return Find_id(bgn); } private boolean Find_hdr(int lhs_bgn) { - int nl_rhs = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, nl_lhs + 1, src_len); // look for \n + int nl_rhs = Bry_finder.Find_fwd(src, Byte_ascii.Nl, nl_lhs + 1, src_len); // look for \n if (nl_rhs == Bry_finder.Not_found) nl_rhs = src_len - 1; // no more \n; set to last idx nl_lhs = nl_rhs; // update nl_lhs for loop int lhs_end = Bry_finder.Find_fwd_while(src, lhs_bgn + 1, nl_rhs, Byte_ascii.Eq); // skip eq; EX: "\n==="; +1 to skip eq @@ -62,7 +62,7 @@ class Xow_popup_anchor_finder { int id_bgn = Bry_finder.Find_bwd_ws(src, id_end - 1, bgn); boolean id_match = Int_.Bounds_chk(id_bgn, id_end, src_len) && Bry_.Eq(Id_bry, src, id_bgn + 1, id_end); if (!id_match) return rv; - rv = Bry_finder.Find_bwd(src, Byte_ascii.NewLine, id_bgn); + rv = Bry_finder.Find_bwd(src, Byte_ascii.Nl, id_bgn); return rv == Bry_finder.Not_found ? 0 : rv; } private static final byte[] Hdr_bgn = Bry_.new_a7("\n="), Id_bry = Bry_.new_a7("id"); diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java index 48e3c6ba5..a81bd2e9f 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java +++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.core.primitives.*; import gplx.core.threads.*; -import gplx.web.js.*; +import gplx.core.js.*; import gplx.xowa.gui.views.*; import gplx.xowa.specials.*; import gplx.xowa.specials.search.*; import gplx.xowa.apis.xowa.html.modules.*; @@ -245,13 +245,12 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { } class Xow_popup_mgr_ { public static String Bld_js_cmd(Js_wtr js_wtr, String cbk, byte[] mode, byte[] href, byte[] html) { - js_wtr.Add_str(cbk); - js_wtr.Add_paren_bgn(); - js_wtr.Add_str_quote(mode).Add_comma(); - js_wtr.Add_str_quote(href).Add_comma(); - js_wtr.Add_str_quote_html(html); - js_wtr.Add_paren_end_semic(); - return js_wtr.Xto_str_and_clear(); + js_wtr.Func_init(cbk); + js_wtr.Prm_bry(mode); + js_wtr.Prm_bry(href); + js_wtr.Prm_bry(html); + js_wtr.Func_term(); + return js_wtr.To_str_and_clear(); } } class Load_popup_wkr implements Gfo_thread_wkr { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java index b82faf756..8f646f431 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java +++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java @@ -55,7 +55,7 @@ public class Xow_popup_parser { tmpl_keeplist = new Xop_keeplist_wiki(wiki); tmpl_ctx.Tmpl_keeplist_(tmpl_keeplist); } - if (!Bry_.Has_at_end(raw, Byte_ascii.NewLine_bry)) raw = Bry_.Add(raw, Byte_ascii.NewLine_bry); + if (!Bry_.Has_at_end(raw, Byte_ascii.Nl_bry)) raw = Bry_.Add(raw, Byte_ascii.Nl_bry); tmpl_keeplist.Srl().Load_by_bry(raw); } private boolean Canceled(Xow_popup_itm popup_itm, Xog_tab_itm cur_tab) {return popup_itm.Canceled() || cur_tab != null && cur_tab.Tab_is_loading();} @@ -182,7 +182,7 @@ public class Xow_popup_parser { wrdx_bfr.Add_byte_nl(); } if (last_hdr_tkn != null) { - wrdx_bfr.Trim_end(Byte_ascii.NewLine); + wrdx_bfr.Trim_end(Byte_ascii.Nl); byte[] last_hdr_bry = ((Xop_hdr_tkn)last_hdr_tkn.Tkn()).Hdr_toc_text(); html_mkr.Fmtr_next_sect().Bld_bfr_one(wrdx_bfr, last_hdr_bry); } diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java index f164cef0b..1d0981573 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java +++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java @@ -507,7 +507,7 @@ class Xop_popup_parser_fxt { public void Test_Assert_at_end(String raw, String expd) { if (test_bfr == null) test_bfr = Bry_bfr.new_(); test_bfr.Clear().Add_str(raw); - Bry_bfr_.Assert_at_end(test_bfr, Byte_ascii.NewLine); + Bry_bfr_.Assert_at_end(test_bfr, Byte_ascii.Nl); Tfds.Eq(expd, test_bfr.Xto_str_and_clear()); } private Bry_bfr test_bfr; } diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java index 9922e133f..6f524a3dc 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java +++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java @@ -129,7 +129,7 @@ public class Xow_popup_wrdx_mkr { wrdx_bfr.Del_by_1(); } if ( tkn_src_end < wtxt_len // bounds check - && wtxt_bry[tkn_src_end] == Byte_ascii.NewLine // hdr_tkn will not include trailing "\n". add it; note that this behavior is by design. NOTE:hdr.trailing_nl; DATE:2014-06-17 + && wtxt_bry[tkn_src_end] == Byte_ascii.Nl // hdr_tkn will not include trailing "\n". add it; note that this behavior is by design. NOTE:hdr.trailing_nl; DATE:2014-06-17 ) { wrdx_bfr.Add_mid(wtxt_bry, tkn_src_bgn, tkn_src_end + 1); // +1 to add the trailing \n add_tkn = false; @@ -195,8 +195,8 @@ public class Xow_popup_wrdx_mkr { private boolean Wtxt_bfr_ends_w_2_nl(Bry_bfr wrdx_bfr, int wrdx_bfr_len) { byte[] hdom_bfr_bry = wrdx_bfr.Bfr(); return - ( hdom_bfr_bry[wrdx_bfr_len - 1] == Byte_ascii.NewLine // prv 2 bytes are \n - && hdom_bfr_bry[wrdx_bfr_len - 2] == Byte_ascii.NewLine + ( hdom_bfr_bry[wrdx_bfr_len - 1] == Byte_ascii.Nl // prv 2 bytes are \n + && hdom_bfr_bry[wrdx_bfr_len - 2] == Byte_ascii.Nl ); } } diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java b/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java index b9ad7b272..9daddea4c 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java +++ b/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java @@ -44,7 +44,7 @@ public class Xoa_available_wikis_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_itms_refresh)) Itms_reset(); else if (ctx.Match(k, Invk_visible)) return Yn.Xto_str(visible); else if (ctx.Match(k, Invk_visible_)) visible = m.ReadYn("v"); - else if (ctx.Match(k, Invk_visible_toggle)) {visible = !visible; app.Gui_mgr().Browser_win().Active_html_box().Html_js_eval_proc("xowa-portal-wikis-visible-toggle", Bool_.Xto_str_lower(visible));} + else if (ctx.Match(k, Invk_visible_toggle)) {visible = !visible; app.Gui_mgr().Browser_win().Active_html_box().Html_js_eval_proc_as_str("xowa-portal-wikis-visible-toggle", Bool_.Xto_str_lower(visible));} else if (ctx.Match(k, Invk_itms_as_html_fmtr_)) itms_as_html_fmtr.Fmt_(m.ReadBry("v")); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java b/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java index 2761f3258..a6474619d 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java +++ b/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java @@ -57,9 +57,9 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses for (int i = 0; i < src_len; ++i) { byte b = src[i]; switch (b) { - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.Space: + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Space: case Byte_ascii.Bang: case Byte_ascii.Quote: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: - case Byte_ascii.Amp: case Byte_ascii.Apos: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: + case Byte_ascii.Amp: case Byte_ascii.Apos: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Plus: case Byte_ascii.Comma: case Byte_ascii.Dot: case Byte_ascii.Backslash: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Gt: case Byte_ascii.Eq: case Byte_ascii.Lt: case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java index a10a9f0de..f506f6a20 100644 --- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java +++ b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java @@ -51,7 +51,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { ); } private static byte[] Ignore_wiki_ess = Bry_.new_a7("es.wikisource.org"), Ignore_item_ess_random = Bry_.new_u8("special:Random/Página djvu"); public void Parse(Bry_bfr bfr, Bry_bfr comment_bfr, byte[] src) { - byte[][] lines = Bry_.Split(src, Byte_ascii.NewLine); + byte[][] lines = Bry_.Split(src, Byte_ascii.Nl); int lines_len = lines.length; Url_encoder id_encoder = Xoa_app_.Utl__encoder_mgr().Id(); Xowh_sidebar_itm cur_grp = null; @@ -59,8 +59,8 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { for (int i = 0; i < lines_len; i++) { byte[] line = lines[i]; int line_len = line.length; if (line_len == 0) continue; // skip blank lines - if (line[0] != Byte_ascii.Asterisk) continue; // skip non-list items; must begin with "*" - byte tid = line[1] == Byte_ascii.Asterisk ? Xowh_sidebar_itm.Tid_itm : Xowh_sidebar_itm.Tid_grp; + if (line[0] != Byte_ascii.Star) continue; // skip non-list items; must begin with "*" + byte tid = line[1] == Byte_ascii.Star ? Xowh_sidebar_itm.Tid_itm : Xowh_sidebar_itm.Tid_grp; byte[] bry = Bry_.Trim(line, tid, line_len); // trim *, **; note that tid indicates # of asterisks bry = gplx.html.Html_utl.Del_comments(comment_bfr, bry); // strip comments; DATE:2014-03-08 if (ignore_trie.Match_bgn(bry, 0, bry.length) != null) continue; // ignore SEARCH, TOOLBOX, LANGUAGES diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java b/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java index 2087bffe8..2aaade7de 100644 --- a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java @@ -519,16 +519,16 @@ class Xow_toc_mgr_fxt { Tfds.Eq_ary(String_.SplitLines_nl(expd), String_.SplitLines_nl(tmp.Xto_str_and_clear()), raw); } public void Test_html_all(String raw, String expd) { - fxt.Wtr_cfg().Toc_show_(true); + fxt.Wtr_cfg().Toc__show_(Bool_.Y); toc_mgr.Clear(); fxt.Test_parse_page_all_str(raw, expd); - fxt.Wtr_cfg().Toc_show_(false); + fxt.Wtr_cfg().Toc__show_(Bool_.N); } public void Test_html_frag(String raw, String frag) { - fxt.Wtr_cfg().Toc_show_(true); + fxt.Wtr_cfg().Toc__show_(Bool_.Y); toc_mgr.Clear(); fxt.Test_html_full_frag(raw, frag); - fxt.Wtr_cfg().Toc_show_(false); + fxt.Wtr_cfg().Toc__show_(Bool_.N); } public String toc_tbl_nl_y(String... ary) {return toc_tbl(Bool_.Y, ary);} public String toc_tbl_nl_n(String... ary) {return toc_tbl(Bool_.N, ary);} diff --git a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java b/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java index bed7eae45..fe25d066e 100644 --- a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java +++ b/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java @@ -79,7 +79,7 @@ public class Xoh_js_cleaner { for (; atr_pos < end; atr_pos++) { byte atr_b = src[atr_pos]; switch (atr_b) { - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: case Byte_ascii.Space: break; + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: break; case Byte_ascii.Eq: next_byte_is_equal = true; ++atr_pos; diff --git a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java index 59bfba453..3a292f1e1 100644 --- a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java @@ -53,7 +53,7 @@ public class Xoa_lang_mgr implements GfoInvkAble { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == len; - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -64,7 +64,7 @@ public class Xoa_lang_mgr implements GfoInvkAble { fld_bgn = pos + 1; ++fld_idx; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: byte[] grp = csv_parser.Load(src, fld_bgn, pos); Xol_lang_itm itm = Xol_lang_itm_.Get_by_key(code); itm.Localized_name_(name, grp); diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java index 0f2f8ded6..8affa22b1 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java @@ -33,7 +33,7 @@ public class Xol_case_itm_ { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = src_pos == src_len; - byte b = last ? Byte_ascii.NewLine : src[src_pos]; + byte b = last ? Byte_ascii.Nl : src[src_pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -55,7 +55,7 @@ public class Xol_case_itm_ { ++fld_idx; fld_bgn = src_pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (!(fld_idx == 0 && fld_bgn == src_pos)) { byte[] cur_rhs = csv_parser.Load(src, fld_bgn, src_pos); Xol_case_itm itm = Xol_case_itm_.new_(cur_cmd, cur_lhs, cur_rhs); diff --git a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java b/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java index 66619851e..aef6a3d22 100644 --- a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java +++ b/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java @@ -38,7 +38,7 @@ public class Xol_cnv_grp implements GfoInvkAble { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == len; - byte b = last ? Byte_ascii.NewLine : raw[pos]; + byte b = last ? Byte_ascii.Nl : raw[pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -48,7 +48,7 @@ public class Xol_cnv_grp implements GfoInvkAble { fld_bgn = pos + 1; ++fld_idx; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (fld_bgn < pos) { // guard against trailing new lines trg = csv_parser.Load(raw, fld_bgn, pos); hash.Add_if_dupe_use_nth(src, new Xol_cnv_itm(src, trg)); diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java b/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java index 05424aa85..eb2a465b8 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java +++ b/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java @@ -45,7 +45,7 @@ public class Xopg_tmpl_prepend_mgr { Bry_bfr stack_bfr = stack[i]; switch (stack_bfr.Get_at_last_or_nil_if_empty()) { case Byte_ascii.Nil: continue; // bfr is empty; ignore it - case Byte_ascii.NewLine: add = false; i = -1; break; // bfr ends in \n; don't add and stop; PAGE:bn.w:লিওনেল_মেসি |ko.w:도쿄_지하철_히비야_선|DATE:2014-05-27 + case Byte_ascii.Nl: add = false; i = -1; break; // bfr ends in \n; don't add and stop; PAGE:bn.w:লিওনেল_মেসি |ko.w:도쿄_지하철_히비야_선|DATE:2014-05-27 default: i = -1; break; // bfr has char; stop } } @@ -53,7 +53,7 @@ public class Xopg_tmpl_prepend_mgr { else // called from func arg; always add \n; EX:vi.w:Friedrich_II_của_Phổ; DATE:2014-04-26 add = true; if (add) - bfr.Add_byte(Byte_ascii.NewLine); + bfr.Add_byte(Byte_ascii.Nl); } if (called_from_tmpl) --stack_len; } diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java index 2316b340e..c37ecb86b 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.btries.*; public class Xop_hdr_lxr implements Xop_lxr { public byte Lxr_tid() {return Xop_lxr_.Tid_hdr;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_bgn, this);} static final byte[] Hook_bgn = new byte[] {Byte_ascii.NewLine, Byte_ascii.Eq}; + public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_bgn, this);} static final byte[] Hook_bgn = new byte[] {Byte_ascii.Nl, Byte_ascii.Eq}; public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Hdr().Make_tkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);} public static final Xop_hdr_lxr _ = new Xop_hdr_lxr(); Xop_hdr_lxr() {} diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java index d0d1c9e57..e522577b0 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java @@ -99,7 +99,7 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr { if (cur == end) return cur; byte b = src[cur]; switch (b) { - case Byte_ascii.NewLine: + case Byte_ascii.Nl: cur++; last_nl = cur; break; diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_basic_tst.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__basic_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_basic_tst.java rename to 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__basic_tst.java index 52e1b0943..2396b98fb 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_basic_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__basic_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import org.junit.*; -public class Xop_hdr_wkr_basic_tst { +public class Xop_hdr_wkr__basic_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @After public void term() {fxt.Init_para_n_();} @Test public void H2() {fxt.Test_parse_page_wiki_str("==a==" , "

a

\n");} @@ -82,7 +82,7 @@ public class Xop_hdr_wkr_basic_tst { @Test public void Err_hdr() {fxt.Init_log_(Xop_hdr_log.Mismatched) .Test_parse_page_wiki_str("====a== ==" , "

==a==

\n").tst_Log_check();} @Test public void Err_end_hdr_is_1() {fxt.Init_log_(Xop_hdr_log.Mismatched, Xop_hdr_log.Len_1).Test_parse_page_wiki_str("==a=" , "

=a

\n").tst_Log_check();} @Test public void Html_hdr_many() { - fxt.Wtr_cfg().Toc_show_(true); + fxt.Wtr_cfg().Toc__show_(Bool_.Y); fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last ( "==a==" , "==a==" @@ -95,7 +95,7 @@ public class Xop_hdr_wkr_basic_tst { , "

a

" , "" )); - fxt.Wtr_cfg().Toc_show_(false); + fxt.Wtr_cfg().Toc__show_(Bool_.N); } @Test public void Hdr_inside_dangling_tmpl_fix() { // PURPOSE: one-off fix to handle == inside dangling tmpl; DATE:2014-02-11 fxt.Test_parse_page_all_str("{{a|}\n==b==" diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java new file mode 100644 index 000000000..869f399d9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java @@ -0,0 +1,56 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import org.junit.*; +public class Xop_hdr_wkr__div_wrapper_tst { + @Before public void init() {fxt.Reset(); fxt.Init_para_y_();} private Xop_fxt fxt = new Xop_fxt(); + @After public void term() {fxt.Init_para_n_();} + @Test public void Basic() { // PURPOSE: basic div_wrapper test; DATE:2015-06-24 + fxt.Wtr_cfg().Hdr__div_wrapper_(Bool_.Y); + fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last + ( "==a==" + , "b" + , "==c==" + , "d" + , "==e==" + , "f" + ), String_.Concat_lines_nl_skip_last + ( "

a

" + , "
" + , "" + , "

b" + , "

" + , "" + , "
" + , "

c

" + , "
" + , "" + , "

d" + , "

" + , "" + , "
" + , "

e

" + , "
" + , "" + , "

f" + , "

" + , "
" + )); + fxt.Wtr_cfg().Hdr__div_wrapper_(Bool_.N); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_para_tst.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__para_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_para_tst.java rename to 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__para_tst.java index 34fd535f5..8db39bbb2 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr_para_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__para_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import org.junit.*; -public class Xop_hdr_wkr_para_tst { +public class Xop_hdr_wkr__para_tst { @Before public void init() {fxt.Reset(); fxt.Init_para_y_();} private Xop_fxt fxt = new Xop_fxt(); @After public void term() {fxt.Init_para_n_();} @Test public void Hdr_at_bos() { // PURPOSE: check that BOS==a== does not throw null ref in para; DATE:2014-02-18 diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_.java index 45aff02db..e381414bb 100644 --- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_.java +++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; public class Xop_list_tkn_ { public static final byte[] - Hook_ul = new byte[] {Byte_ascii.NewLine, Byte_ascii.Asterisk}, Hook_ol = new byte[] {Byte_ascii.NewLine, Byte_ascii.Hash} - , Hook_dt = new byte[] {Byte_ascii.NewLine, Byte_ascii.Semic} , Hook_dd = new byte[] {Byte_ascii.NewLine, Byte_ascii.Colon}; - public static final byte List_itmTyp_null = 0, List_itmTyp_ul = Byte_ascii.Asterisk, List_itmTyp_ol = Byte_ascii.Hash, List_itmTyp_dt = Byte_ascii.Semic, List_itmTyp_dd = Byte_ascii.Colon; + Hook_ul = new byte[] {Byte_ascii.Nl, Byte_ascii.Star}, Hook_ol = new byte[] {Byte_ascii.Nl, Byte_ascii.Hash} + , Hook_dt = new byte[] {Byte_ascii.Nl, Byte_ascii.Semic} , Hook_dd = new byte[] {Byte_ascii.Nl, Byte_ascii.Colon}; + public static final byte List_itmTyp_null = 0, List_itmTyp_ul = Byte_ascii.Star, List_itmTyp_ol = Byte_ascii.Hash, List_itmTyp_dt = Byte_ascii.Semic, List_itmTyp_dd = Byte_ascii.Colon; public static final String Str_li = "li", Str_ol = "ol", Str_ul = "ul", Str_dl = "dl", Str_dt = "dt", Str_dd = "dd"; public static final byte[] Byt_li = Bry_.new_a7(Str_li), Byt_ol = Bry_.new_a7(Str_ol), Byt_ul = Bry_.new_a7(Str_ul) , Byt_dl = Bry_.new_a7(Str_dl), Byt_dt = Bry_.new_a7(Str_dt), Byt_dd = Bry_.new_a7(Str_dd); @@ -44,7 +44,7 @@ public class Xop_list_tkn_ { } public static byte Char_lst(byte b) { switch (b) { - case List_itmTyp_ul: return Byte_ascii.Asterisk; + case List_itmTyp_ul: return Byte_ascii.Star; case List_itmTyp_ol: return Byte_ascii.Hash; case List_itmTyp_dt: return Byte_ascii.Semic; case List_itmTyp_dd: return Byte_ascii.Colon; diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr.java index eb15fc772..ea6e38bcc 100644 --- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr.java @@ -136,7 +136,7 @@ public class Xop_list_wkr implements Xop_ctx_wkr { for (int i = cur_pos; i < src_len; i++) { curByt = src[i]; switch (curByt) { - case Byte_ascii.Asterisk: + case Byte_ascii.Star: case Byte_ascii.Hash: case Byte_ascii.Semic: case Byte_ascii.Colon: @@ -156,7 +156,7 @@ public class Xop_list_wkr implements Xop_ctx_wkr { } curByt = src[cur_pos]; switch (curByt) { - case Byte_ascii.Asterisk: + case Byte_ascii.Star: case Byte_ascii.Hash: case Byte_ascii.Semic: curSymAry[curSymLen++] = curByt; diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr_.java index 3fe32b848..aed3fdf62 100644 --- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr_.java +++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_wkr_.java @@ -25,7 +25,7 @@ public class Xop_list_wkr_ { } public static byte Compare_normalize(byte b) { // convert : to ; for sake of determining levels; EX: ";:" is actually same group switch (b) { - case Byte_ascii.Asterisk: + case Byte_ascii.Star: case Byte_ascii.Hash: case Byte_ascii.Semic: return b; case Byte_ascii.Colon: return Byte_ascii.Semic; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java index 6318037b7..a97b7c26c 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java @@ -90,7 +90,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { } break; case Byte_ascii.Space: lnke_end_tid = End_tid_space; break; - case Byte_ascii.NewLine: lnke_end_tid = End_tid_nl; break; + case Byte_ascii.Nl: lnke_end_tid = End_tid_nl; break; case Byte_ascii.Gt: case Byte_ascii.Lt: lnke_end_tid = End_tid_invalid; break; diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java index a906f0d6f..ba456df78 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.btries.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; public class Xop_nl_lxr implements Xop_lxr { public byte Lxr_tid() {return Xop_lxr_.Tid_nl;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.NewLine, this);} + public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Nl, this);} public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { if (bgn_pos == Xop_parser_.Doc_bgn_bos) return ctx.Lxr_make_txt_(cur_pos); // simulated nl at beginning of every parse @@ -90,7 +90,7 @@ public class Xop_nl_lxr implements Xop_lxr { for (int i = cur_pos; i < src_len; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: // ignore ws + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: // ignore ws break; case Byte_ascii.Brack_bgn: // [ if ( Bry_.Eq_itm(src, src_len, i + 1, Byte_ascii.Brack_bgn) // [[ diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java index e5ec8d36a..67b066897 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.btries.*; import gplx.xowa.parsers.tblws.*; public class Xop_nl_tab_lxr implements Xop_lxr { public byte Lxr_tid() {return Xop_lxr_.Tid_nl_tab;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_nl_tab, this);} private static final byte[] Hook_nl_tab = new byte[] {Byte_ascii.NewLine, Byte_ascii.Tab}; + public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_nl_tab, this);} private static final byte[] Hook_nl_tab = new byte[] {Byte_ascii.Nl, Byte_ascii.Tab}; public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { int non_ws_pos = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len); diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr.java index 5582c065c..30037cba4 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr.java @@ -103,9 +103,9 @@ public class Xop_para_wkr implements Xop_ctx_wkr { if (line_is_ws) { // line is entirely ws int next_char_pos = prv_nl_pos + 2; // "\n\s".length if ( next_char_pos < src.length // bounds check - && src[next_char_pos] == Byte_ascii.NewLine // is "\n\s\n"; i.e.: "\n" only + && src[next_char_pos] == Byte_ascii.Nl // is "\n\s\n"; i.e.: "\n" only ) { - ctx.Subs_add(root, ctx.Tkn_mkr().Bry_raw(bgn_pos, bgn_pos, Byte_ascii.NewLine_bry)); // add a "\n" tkn; note that adding a NewLine tkn doesn't work, b/c Xoh_html_wtr has code to remove consecutive \n; PAGE:en.w:Preferred_numbers DATE:2014-06-24 + ctx.Subs_add(root, ctx.Tkn_mkr().Bry_raw(bgn_pos, bgn_pos, Byte_ascii.Nl_bry)); // add a "\n" tkn; note that adding a NewLine tkn doesn't work, b/c Xoh_html_wtr has code to remove consecutive \n; PAGE:en.w:Preferred_numbers DATE:2014-06-24 prv_nl_pos = bgn_pos; } } @@ -174,7 +174,7 @@ public class Xop_para_wkr implements Xop_ctx_wkr { int nxt_pos = tblw_ws_trie.Match_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 " ""; also bounds check byte b = src[txt_pos]; if (bgn_pos == Xop_parser_.Doc_bgn_bos) { // BOS; gobble up all \s\t; EX: "BOS\s\s\sa" -> "BOSa" - if (b == Byte_ascii.NewLine) { // next char is nl + if (b == Byte_ascii.Nl) { // next char is nl cur_pos = txt_pos; // position at nl; NOTE: do not position after nl, else may break hdr, tblw, list, etc; EX: "\s\n{|" needs to preserve "\n" for tblw ctx.Subs_add(root, tkn_mkr.Ignore(bgn_pos, cur_pos, Xop_ignore_tkn.Ignore_tid_pre_at_bos)); return cur_pos; // ignore pre if blank line at bos; EX: "BOS\s\s\n" -> "BOS\n" @@ -74,7 +74,7 @@ public class Xop_pre_lxr implements Xop_lxr { return ctx.Para().Process_pre(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, txt_pos); } public static final Xop_pre_lxr _ = new Xop_pre_lxr(); Xop_pre_lxr() {} - private static final byte[] Hook_space = new byte[] {Byte_ascii.NewLine, Byte_ascii.Space}; + private static final byte[] Hook_space = new byte[] {Byte_ascii.Nl, Byte_ascii.Space}; } /* NOTE_4: Close_all_lists_unless_category; PAGE:en.w:SHA-2 diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java index 8bdef2f58..977d9603c 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java @@ -47,14 +47,14 @@ public class Xop_tblw_lxr implements Xop_lxr { } else { // \n| or \n! but no tbl if ( bgn_pos != Xop_parser_.Doc_bgn_bos // avoid ! at BOS - && src[bgn_pos] == Byte_ascii.NewLine) // handle "!" etc. + && src[bgn_pos] == Byte_ascii.Nl) // handle "!" etc. return Xop_tblw_wkr.Handle_false_tblw_match(ctx, root, src, bgn_pos, cur_pos, tkn_mkr.Txt(bgn_pos + 1, cur_pos), true); // +1 to ignore \n of "\n!", "\n!!", "\n|"; DATE:2014-02-19 else // handle "!!" only return ctx.Lxr_make_txt_(cur_pos); } } if (wlxr_type == Xop_tblw_wkr.Tblw_type_th2) { // !!; extra check to make sure \n! exists; DATE:2014-10-19 - int prv_th_pos = Bry_finder.Find_bwd(src, Byte_ascii.NewLine, bgn_pos); // search for previous \n + int prv_th_pos = Bry_finder.Find_bwd(src, Byte_ascii.Nl, bgn_pos); // search for previous \n boolean invalid = prv_th_pos == Bry_finder.Not_found; // no \n; invalid if (!invalid) { ++prv_th_pos; // skip \n diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java index aa335d980..3fce1452f 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java @@ -150,7 +150,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr { if (ignore_prv) { ctx.Subs_add(root, tkn_mkr.Ignore(bgn_pos, cur_pos, Xop_ignore_tkn.Ignore_tid_htmlTidy_tblw)); ++tblw_te_ignore_count; - cur_pos = Bry_finder.Find_fwd_until(src, cur_pos, src_len, Byte_ascii.NewLine); // NOTE: minor hack; this tblw tkn will be ignored, so ignore any of its attributes as well; gobble up all chars till nl. see: if two consecutive tbs, ignore attributes on 2nd; en.wikibooks.org/wiki/Wikibooks:Featured books + cur_pos = Bry_finder.Find_fwd_until(src, cur_pos, src_len, Byte_ascii.Nl); // NOTE: minor hack; this tblw tkn will be ignored, so ignore any of its attributes as well; gobble up all chars till nl. see: if two consecutive tbs, ignore attributes on 2nd; en.wikibooks.org/wiki/Wikibooks:Featured books return cur_pos; } if (auto_create) { diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java index fbf11d8ff..2bfa9d87d 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java @@ -32,7 +32,7 @@ public class Xop_tblw_ws_itm { trie_itm(rv, Type_th, Xop_tblw_lxr_ws.Hook_th); trie_itm(rv, Type_tc, Xop_tblw_lxr_ws.Hook_tc); trie_itm(rv, Type_td, Bry_.bytes_(Byte_ascii.Pipe)); - trie_itm(rv, Type_nl, Bry_.bytes_(Byte_ascii.NewLine)); + trie_itm(rv, Type_nl, Bry_.bytes_(Byte_ascii.Nl)); trie_itm_xnde(rv, Xop_xnde_tag_.Tag_table); trie_itm_xnde(rv, Xop_xnde_tag_.Tag_tr); trie_itm_xnde(rv, Xop_xnde_tag_.Tag_td); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java index 996e8d5d9..c859f16c2 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java @@ -43,7 +43,7 @@ public class Nowiki_escape_itm { } return dirty; } - private static final byte[] Pre_bry = new byte[] {Byte_ascii.NewLine, Byte_ascii.Space}; // NOTE: must go before trie_new + private static final byte[] Pre_bry = new byte[] {Byte_ascii.Nl, Byte_ascii.Space}; // NOTE: must go before trie_new private static final Btrie_slim_mgr trie = trie_new(); private static Btrie_slim_mgr trie_new() { Btrie_slim_mgr rv = Btrie_slim_mgr.cs_(); @@ -57,7 +57,7 @@ public class Nowiki_escape_itm { trie_new_itm(rv, Byte_ascii.Asterisk_bry , Xop_amp_trie.Bry_xowa_asterisk); trie_new_itm(rv, Byte_ascii.Dash_bry , Xop_amp_trie.Bry_xowa_dash); // needed to handle "|-"; PAGE:de.w:Liste_von_Vereinen_und_Vereinigungen_von_Gl�ubigen_(r�misch-katholische_Kirche) DATE:2015-01-08 trie_new_itm(rv, Byte_ascii.Space_bry , Xop_amp_trie.Bry_xowa_space); - trie_new_itm(rv, Byte_ascii.NewLine_bry , Xop_amp_trie.Bry_xowa_nl); + trie_new_itm(rv, Byte_ascii.Nl_bry , Xop_amp_trie.Bry_xowa_nl); trie_new_itm(rv, Pre_bry , Pre_bry); return rv; } diff --git a/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java b/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java index 8e5738b7e..758953dd4 100644 --- a/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java +++ b/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java @@ -16,54 +16,25 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.servers; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; import gplx.gfui.*; +import gplx.core.primitives.*; import gplx.core.js.*; +import gplx.gfui.*; import gplx.xowa.servers.tcp.*; import gplx.xowa.servers.http.*; import gplx.xowa.gui.views.*; public class Gxw_html_server implements Gxw_html { private Xosrv_socket_wtr wtr; private Gfo_usr_dlg usr_dlg; - private Gfui_html_cfg cfg; + private final Js_wtr js_wtr = new Js_wtr(); public Gxw_html_server(Gfo_usr_dlg usr_dlg, Xosrv_socket_wtr wtr) { - this.usr_dlg = usr_dlg; this.wtr = wtr; - cfg = Swt_kit._.Html_cfg(); + this.usr_dlg = usr_dlg; this.wtr = wtr; } - public String Html_doc_html() {return Exec(cfg.Doc_html());} - public void Html_doc_html_load_by_mem(String html) {Exec("location.reload(true);");} // HACK: force reload of page - public void Html_doc_html_load_by_url(String path, String html) {Exec("location.reload(true);");} // HACK: force reload of page + public void Html_doc_html_load_by_mem(String html) {Exec_as_str("location.reload(true);");} // HACK: force reload of page + public void Html_doc_html_load_by_url(String path, String html) {Exec_as_str("location.reload(true);");} // HACK: force reload of page public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} public void Html_dispose() {} - public String Html_doc_selected_get_text_or_href() {return Exec(cfg.Doc_selected_get_text_or_href());} - public String Html_doc_selected_get_href_or_text() {return Exec(cfg.Doc_selected_get_href_or_text());} - public String Html_doc_selected_get_src_or_empty() {return Exec(cfg.Doc_selected_get_src_or_empty());} - public String Html_doc_selected_get_active_or_selection() {return Exec(cfg.Doc_selected_get_active_or_selection());} - public boolean Html_doc_find(String id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {throw Err_.not_implemented_();} - public void Html_doc_body_focus() {Exec(cfg.Doc_body_focus());} - public void Html_doc_selection_focus_toggle() {Exec(cfg.Doc_selection_focus_toggle());} - public String Html_elem_atr_get_str (String id, String atr_key) {return Exec(cfg.Elem_atr_get(id, atr_key));} - public boolean Html_elem_atr_get_bool (String id, String atr_key) {return Bool_.parse_(Exec(cfg.Elem_atr_get(id, atr_key)));} - public boolean Html_elem_atr_set (String id, String atr_key, String val) {return Exec_as_bool(cfg.Elem_atr_set(id, atr_key, val));} - public boolean Html_elem_atr_set_append(String id, String atr_key, String val) {return Exec_as_bool(cfg.Elem_atr_set_append(id, atr_key, val));} - public boolean Html_elem_delete(String id) {return Exec_as_bool(cfg.Elem_delete(id));} - public boolean Html_elem_replace_html(String id, String html) {return Exec_as_bool(cfg.Elem_replace_html(id, html));} - public boolean Html_elem_append_above(String id, String html) {return Exec_as_bool(cfg.Elem_append_above(id, html));} - public boolean Html_gallery_packed_exec() {return Exec_as_bool(cfg.Gallery_packed_exec());} - public boolean Html_elem_focus(String id) {return Exec_as_bool(cfg.Elem_focus(id));} - public boolean Html_elem_scroll_into_view(String id) {return Exec_as_bool(cfg.Elem_scroll_into_view(id));} - public boolean Html_elem_img_update(String id, String src, int w, int h) {return Exec_as_bool(cfg.Elem_img_update(id, src, w, h));} - public String Html_window_vpos() {return Exec(cfg.Window_vpos());} - public boolean Html_window_vpos_(String v) { - if (String_.Len_eq_0(v)) return false; // HACK: v == "" when switching between Read and Edit - Gfui_html_cfg.Html_window_vpos_parse(v, scroll_top, node_path); - return Exec_as_bool(cfg.Window_vpos_(scroll_top.Val(), node_path.Val())); - } private String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); - public boolean Html_window_print_preview() {return Exec_as_bool(cfg.Window_print_preview());} - public String Html_active_atr_get_str(String atr_key, String or) {return Exec(cfg.Active_atr_get_str(atr_key));} public void Html_js_enabled_(boolean v) {} - public void Html_js_eval_proc(String name, String... args) { - Bry_fmtr fmtr = cfg.Js_scripts_get(name); - Exec(fmtr.Bld_str_many(args)); - } - public String Html_js_eval_script(String script) {return Exec(script);} + public String Html_js_eval_proc_as_str(String name, Object... args) {return Exec_as_str(js_wtr.Write_statement_return_func(name, args).To_str_and_clear());} // TODO: add other params + public boolean Html_js_eval_proc_as_bool(String name, Object... args) {return Exec_as_bool(js_wtr.Write_statement_return_func(name, args).To_str_and_clear());} + public String Html_js_eval_script(String script) {return Exec_as_str(script);} public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {} public void Html_invk_src_(GfoEvObj v) {} public GxwCore_base Core() {throw Err_.not_implemented_();} @@ -72,10 +43,10 @@ public class Gxw_html_server implements Gxw_html { public String TextVal() {throw Err_.not_implemented_();} public void TextVal_set(String v) {throw Err_.not_implemented_();} public void EnableDoubleBuffering() {throw Err_.not_implemented_();} private boolean Exec_as_bool(String s) { - Exec(s); + Exec_as_str(s); return true; // NOTE: js is async, so immediate return value is not possible; return true for now; } - private String Exec(String s) { + private String Exec_as_str(String s) { if (wtr == null) return ""; // HACK: handles http_server s = "(function () {" + s + "})();"; // NOTE: dependent on firefox addon which does 'var result = Function("with(arguments[0]){return "+cmd_text+"}")(session.window);'; DATE:2014-01-28 Xosrv_msg msg = Xosrv_msg.new_(Xosrv_cmd_types.Browser_exec, Bry_.Empty, Bry_.Empty, Bry_.Empty, Bry_.Empty, Bry_.new_u8(s)); diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java index 48ec54fef..d4b157d84 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java @@ -207,90 +207,93 @@ class HttpRequest implements Runnable{ this.app_root_dir = app.Fsys_mgr().Root_dir().To_http_file_str(); } public void run(){ + String err_line = "00"; try { - InputStream is = socket.getInputStream(); - DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); - BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); - String request = br.readLine(); - //System.out.println(request); - String req = request.substring(4, request.length() - 9).trim(); - String wiki_domain = "home"; - String page_name = "Main_Page"; + InputStream is = socket.getInputStream(); err_line = "01"; + DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); err_line = "02"; + BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); err_line = "03"; + String request = br.readLine(); err_line = "04"; + //System.out.println(request); err_line = "03"; + String req = request.substring(4, request.length() - 9).trim(); err_line = "05"; + String wiki_domain = "home"; err_line = "06"; + String page_name = "Main_Page"; err_line = "07"; if(!req.contains("%file%")){ if(req.equals("/")) { // no page; EX:"localhost:8080" vs "localhost:8080/en.wikipedia.org/wiki/Earth" - String home_url = app.Http_server().Home();; + String home_url = app.Http_server().Home(); err_line = "08"; if (String_.Has_at_bgn(home_url, "file://")) { - Io_url file_url = Io_url_.http_any_(home_url, Op_sys.Cur().Tid_is_wnt()); - String page_html = Io_mgr.I.LoadFilStr(file_url); - Write_page(dos, page_html, app_root_dir, wiki_domain); + Io_url file_url = Io_url_.http_any_(home_url, Op_sys.Cur().Tid_is_wnt()); err_line = "09"; + String page_html = Io_mgr.I.LoadFilStr(file_url); err_line = "10"; + Write_page(dos, page_html, app_root_dir, wiki_domain); err_line = "11"; + } + else { + req += app.Http_server().Home(); err_line = "12"; } - else - req += app.Http_server().Home(); } - req = Http_server_wkr_.Assert_main_page(app, req); + req = Http_server_wkr_.Assert_main_page(app, req); err_line = "13"; } if(req.contains("%xowa-cmd%") || req.contains("/xowa-cmd:")){ - System.out.println("Command output:"); - String cmd = ""; + System.out.println("Command output:"); err_line = "14"; + String cmd = ""; err_line = "15"; if (req.contains("%xowa-cmd%")) cmd = req.substring(req.indexOf("%xowa-cmd%")+20); else cmd = req.substring(req.indexOf("/xowa-cmd:")+10); - System.out.println(cmd); - app.Http_server().Run_xowa_cmd(app, cmd); - dos.writeBytes("Command sent, see console log for more details."); - dos.close(); - }else - if(req.contains("%file%")){ - String path = req.replace("/%file%/", app_root_dir); - path = path.substring(path.indexOf(app_root_dir)+5); - Url_encoder url_converter = Url_encoder.new_http_url_(); - path = url_converter.Decode_str(path); + System.out.println(cmd); err_line = "15"; + app.Http_server().Run_xowa_cmd(app, cmd); err_line = "16"; + dos.writeBytes("Command sent, see console log for more details."); err_line = "17"; + dos.close(); err_line = "18"; + } + else if(req.contains("%file%")){ + String path = req.replace("/%file%/", app_root_dir); err_line = "19"; + path = path.substring(path.indexOf(app_root_dir)+5); err_line = "20"; + Url_encoder url_converter = Url_encoder.new_http_url_(); err_line = "21"; + path = url_converter.Decode_str(path); err_line = "22"; if(path.contains("?")){ - path = path.substring(0, path.indexOf("?")); + path = path.substring(0, path.indexOf("?")); err_line = "23"; } - FileInputStream fis = new FileInputStream(path); + FileInputStream fis = new FileInputStream(path); err_line = "24"; - dos.writeBytes("HTTP/1.1 200 OK: "); - dos.writeBytes("Content-Type: " + contentType(path) + CRLF); - dos.writeBytes(CRLF); + dos.writeBytes("HTTP/1.1 200 OK: "); err_line = "25"; + dos.writeBytes("Content-Type: " + contentType(path) + CRLF); err_line = "26"; + dos.writeBytes(CRLF); err_line = "27"; - sendBytes(fis, dos); - fis.close(); - dos.close(); - br.close(); - socket.close(); + sendBytes(fis, dos); err_line = "28"; + fis.close(); err_line = "28"; + dos.close(); err_line = "29"; + br.close(); err_line = "30"; + socket.close(); err_line = "31"; }else{ - String[] req_split = req.split("/"); - System.out.println("Request: " +request); + String[] req_split = req.split("/"); err_line = "32"; + System.out.println("Request: " +request); err_line = "33"; if(req_split.length >= 1){ - wiki_domain = req_split[1]; + wiki_domain = req_split[1]; err_line = "34"; } if(req_split.length >= 4){ - page_name = req_split[3]; + page_name = req_split[3]; err_line = "35"; for(int i = 4; i <= req_split.length-1; i++){ - page_name += "/"+req_split[i]; + page_name += "/"+req_split[i]; err_line = "36"; } - Url_encoder url_converter = Url_encoder.new_http_url_(); - page_name = url_converter.Decode_str(page_name); + Url_encoder url_converter = Url_encoder.new_http_url_(); err_line = "37"; + page_name = url_converter.Decode_str(page_name); err_line = "38"; //page_name = app.Url_converter_url().Decode_str(page_name); } try{ - String page_html = app.Http_server().Parse_page_to_html(app, wiki_domain, page_name); - Write_page(dos, page_html, app_root_dir, wiki_domain); + String page_html = app.Http_server().Parse_page_to_html(app, wiki_domain, page_name); err_line = "39"; + Write_page(dos, page_html, app_root_dir, wiki_domain); err_line = "40"; }catch(Exception err) { - dos.writeBytes("Site not found. Check address please, or see console log.\n"+err.getMessage()); - dos.close(); + dos.writeBytes("Site not found. Check address please, or see console log.\n"+err.getMessage()); err_line = "41"; + dos.close(); err_line = "42"; } } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { - System.out.println("error retrieving page. Please make sure your url is of the form: http://localhost:8080/home/wiki/Main_Page"); + String err_msg = String_.Format("error retrieving page. Please make sure your url is of the form: http://localhost:8080/home/wiki/Main_Page; err_msg={0} err_line={1}", e.toString(), err_line); + System.out.println(err_msg); e.printStackTrace(); } } @@ -311,6 +314,7 @@ class HttpRequest implements Runnable{ try{ strm.writeBytes("HTTP/1.1 200 OK: "); strm.writeBytes("Content-Type: text/html; charset=utf-8" + CRLF); + strm.writeBytes("Access-Control-Allow-Origin: *" + CRLF); // No 'Access-Control-Allow-Origin' header is present on the requested resource. strm.writeBytes(CRLF); strm.write(page_html.getBytes(Charset.forName("UTF-8"))); strm.close(); diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java b/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java index 34da23303..6872a2c83 100644 --- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java +++ b/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java @@ -49,7 +49,7 @@ public class Wmf_latest_parser { byte[] date_bry = Bry_.Mid(src, date_bgn, date_end); DateAdp date = DateAdp_.parse_fmt(String_.new_a7(Replace_or(tmp_bfr, date_trie, date_bry, 3, date_or)), "dd-MM-yyyy HH:mm"); int size_bgn = Bry_finder.Find_fwd_while_space_or_tab(src, date_end, src_len); if (size_bgn == Bry_finder.Not_found) {Gfo_usr_dlg_.I.Warn_many("", "", "size_bgn not found"); break;} - size_end = Bry_finder.Find_fwd(src, Byte_ascii.CarriageReturn, size_bgn, src_len); + size_end = Bry_finder.Find_fwd(src, Byte_ascii.Cr, size_bgn, src_len); byte[] size_bry = Bry_.Mid(src, size_bgn, size_end); long size = Long_.parse_or_(String_.new_u8(size_bry), -1); Wmf_latest_itm itm = new Wmf_latest_itm(name, date, size); diff --git a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java index 17e21584b..469bbc56c 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.specials.allPages.*; import gplx.xowa.specials.search.*; import gplx.xowa.specials.nearby.*; import gplx.xowa.specials.randoms.*; import gplx.xowa.specials.statistics.*; import gplx.xowa.xtns.translates.*; import gplx.xowa.specials.movePage.*; -import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.specials.xowa.file_browsers.*; import gplx.xowa.specials.xowa.bookmarks.*; +import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.specials.xowa.file_browsers.*; import gplx.xowa.specials.xowa.bookmarks.*; import gplx.xowa.specials.xowa.diags.*; import gplx.xowa.xtns.wdatas.specials.*; import gplx.xowa.users.data.*; public class Xows_mgr { @@ -47,6 +47,7 @@ public class Xows_mgr { public Popup_history_page Page_popup_history() {return page_popup_history;} private final Popup_history_page page_popup_history = new Popup_history_page(); public Xosp_fbrow_special Page_file_browser() {return page_file_browser;} private final Xosp_fbrow_special page_file_browser = new Xosp_fbrow_special(); public Xows_bmk_page Page_bmk() {return page_bmk;} private final Xows_bmk_page page_bmk = new Xows_bmk_page(); + public Xows_diag_page Page_diag() {return page_diag;} private final Xows_diag_page page_diag = new Xows_diag_page(); public void Evt_lang_changed(Xol_lang lang) { hash.Clear(); hash.Add_str_obj(Xows_special_meta_.Key__search , page_search); @@ -67,6 +68,7 @@ public class Xows_mgr { hash.Add_str_obj(Xows_special_meta_.Key__popup_history , page_popup_history); hash.Add_str_obj(Xows_special_meta_.Key__file_browser , page_file_browser); hash.Add_str_obj(Xows_special_meta_.Key__bookmarks , page_bmk); + hash.Add_str_obj(Xows_special_meta_.Key__diag , page_diag); } public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { int slash_pos = Bry_finder.Find_fwd(ttl.Page_txt_wo_qargs(), Xoa_ttl.Subpage_spr); // check for slash diff --git a/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java b/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java index 6d8267a92..08a93ba8f 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java +++ b/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java @@ -34,6 +34,7 @@ public class Xows_special_meta_ { , Uid__nearby = 13 , Uid__page_history = 14 , Uid__bookmarks = 15 + , Uid__diag = 16 ; public static final String Key__all_pages = "AllPages" @@ -51,6 +52,7 @@ public class Xows_special_meta_ { , Key__nearby = "Nearby" , Key__page_history = "XowaHistory" , Key__bookmarks = "XowaBookmarks" + , Key__diag = "XowaDiag" ; public static final Xows_special_meta Itm__all_pages = new Xows_special_meta(Src__mw , Uid__all_pages , Key__all_pages) @@ -68,5 +70,6 @@ public class Xows_special_meta_ { , Itm__nearby = new Xows_special_meta(Src__xowa , Uid__nearby , Key__nearby) , Itm__page_history = new Xows_special_meta(Src__xowa , Uid__page_history , Key__page_history) , Itm__bookmarks = new Xows_special_meta(Src__xowa , Uid__bookmarks , Key__bookmarks) + , Itm__diag = new Xows_special_meta(Src__xowa , Uid__diag , Key__diag) ; } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java b/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java index 78142830a..1ab95ed34 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.gfui.*; import gplx.core.threads.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.web.js.*; +import gplx.core.js.*; public class Xog_search_suggest_mgr implements GfoInvkAble { public Xog_search_suggest_mgr(Xoa_gui_mgr gui_mgr) { this.app = gui_mgr.App(); @@ -79,21 +79,21 @@ public class Xog_search_suggest_mgr implements GfoInvkAble { return; // do not notify if search terms do not match } List_adp found = cur_cmd.Results(); - wtr.Add_str(cbk_func); - wtr.Add_paren_bgn(); - wtr.Add_str_quote(search_bry).Add_comma(); - wtr.Add_brack_bgn(); - int len = found.Count(); - for (int i = 0; i < len; i++) { - Xowd_page_itm p = (Xowd_page_itm)found.Get_at(i); - Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(p.Ns_id()); - byte[] ttl = Xoa_ttl.Replace_unders(ns.Gen_ttl(p.Ttl_page_db())); - wtr.Add_str_arg(i, ttl); - } - wtr.Add_brack_end(); - wtr.Add_paren_end_semic(); + wtr.Func_init(cbk_func); + wtr.Prm_bry(search_bry); + wtr.Prm_spr(); + wtr.Ary_init(); + int len = found.Count(); + for (int i = 0; i < len; i++) { + Xowd_page_itm p = (Xowd_page_itm)found.Get_at(i); + Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(p.Ns_id()); + byte[] ttl = Xoa_ttl.Replace_unders(ns.Gen_ttl(p.Ttl_page_db())); + wtr.Ary_bry(ttl); + } + wtr.Ary_term(); + wtr.Func_term(); if (log_enabled) app.Usr_dlg().Log_many("", "", "search end: word=~{0}", String_.new_u8(search_bry)); - main_win.Active_html_box().Html_js_eval_script(wtr.Xto_str_and_clear()); + main_win.Active_html_box().Html_js_eval_script(wtr.To_str_and_clear()); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_search_async)) Search_async(); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java index 2e55c3a91..bbded5cdd 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java @@ -50,10 +50,10 @@ class Xosrh_qry_itm { byte wiki_db_tid = wiki.Db_mgr().Tid(); if (wiki_db_tid == Xodb_mgr_sql.Tid_sql && wiki.Appe().Gui_mgr().Search_suggest_mgr().Auto_wildcard()) { // HACK: auto-asterisk words for sqlite; DATE:2013-09-05 - if (!Bry_.Has_at_end(search_word, new byte[] {Byte_ascii.Asterisk})) - search_word = Bry_.Add(search_word, Byte_ascii.Asterisk); - if (!Bry_.Has_at_bgn(search_word, new byte[] {Byte_ascii.Asterisk})) - search_word = Bry_.Add(Byte_ascii.Asterisk, search_word); + if (!Bry_.Has_at_end(search_word, new byte[] {Byte_ascii.Star})) + search_word = Bry_.Add(search_word, Byte_ascii.Star); + if (!Bry_.Has_at_bgn(search_word, new byte[] {Byte_ascii.Star})) + search_word = Bry_.Add(Byte_ascii.Star, search_word); } wiki.Db_mgr().Load_mgr().Load_search(cancelable, found, search_word, results_max); List_adp rv = List_adp_.new_(); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java index d21f3dafd..2c72e35e8 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java @@ -118,7 +118,7 @@ class Xosrh_scanner { byte[] cur_word = Bry_.Mid(src, src_bgn, src_end); byte[][] words = gplx.xowa.bldrs.cmds.texts.Xob_search_base.Split_ttl_into_words(null, tmp_list, tmp_bfr, cur_word); int words_len = words.length; - if (words_len == 1 && !Bry_.Eq(words[0], cur_word) && Bry_finder.Find_fwd(cur_word, Byte_ascii.Asterisk) == -1) { + if (words_len == 1 && !Bry_.Eq(words[0], cur_word) && Bry_finder.Find_fwd(cur_word, Byte_ascii.Star) == -1) { tkns.Add(Xosrh_qry_tkn.new_bry_(tid, words[0])); return; } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher.java index d1f1ce994..4c5d8a4ff 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher.java @@ -21,7 +21,7 @@ public class Xows_db_matcher { private final Gfo_pattern raw_pattern; public Xows_db_matcher(int tid, byte[] raw, Xows_db_matcher lhs, Xows_db_matcher rhs) { this.tid = tid; this.raw = raw; this.lhs = lhs; this.rhs = rhs; - this.raw_pattern = Bry_.Has(raw, Byte_ascii.Asterisk) ? new Gfo_pattern(raw) : null; + this.raw_pattern = Bry_.Has(raw, Byte_ascii.Star) ? new Gfo_pattern(raw) : null; } public int Tid() {return tid;} private final int tid; public int Page_count() {return page_count;} public void Page_count_(int v) {page_count = v;} private int page_count; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher_bldr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher_bldr.java index 9336adbca..7c176d41c 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher_bldr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_matcher_bldr.java @@ -28,7 +28,7 @@ class Xows_db_matcher_bldr { switch (matcher.Tid()) { case Xows_db_matcher.Tid_word: byte[] word_text = matcher.Raw(); - if (Bry_.Has(word_text, Byte_ascii.Asterisk)) + if (Bry_.Has(word_text, Byte_ascii.Star)) Load_word_many(cxl, rv, word_text, word_tbl); else Load_word_one(rv, word_text, word_tbl); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java index 71024db45..b2c2eefb1 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java @@ -47,7 +47,7 @@ public class Xows_ns_mgr { int ns_enabled = Bry_.Xto_int(val); if (ns_enabled == 1) { // make sure set to 1; EX: ignore &ns0=0 int key_len = key.length; - if (key_len == 3 && key[2] == Byte_ascii.Asterisk) // translate ns* as ns_all + if (key_len == 3 && key[2] == Byte_ascii.Star) // translate ns* as ns_all ns_all = true; else { int ns_id = Bry_.Xto_int_or(key, 2, key_len, Int_.MinValue); @@ -77,5 +77,5 @@ public class Xows_ns_mgr { return tmp_bfr.Xto_bry_and_clear(); } } - private static final byte[] Hash_key_all = new byte[] {Byte_ascii.Asterisk}, Hash_key_main = new byte[] {Byte_ascii.Num_0}; + private static final byte[] Hash_key_all = new byte[] {Byte_ascii.Star}, Hash_key_main = new byte[] {Byte_ascii.Num_0}; } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java b/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java index 5b943edad..1b270decd 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java @@ -61,9 +61,9 @@ public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { } if ( search_suggest_mgr.Auto_wildcard() // add * automatically if option set && wiki.Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql // only apply to sql - && Bry_finder.Find_fwd(search_bry, Byte_ascii.Asterisk) == -1 // search term does not have asterisk + && Bry_finder.Find_fwd(search_bry, Byte_ascii.Star) == -1 // search term does not have asterisk ) - search_bry = Bry_.Add(search_bry, Byte_ascii.Asterisk); + search_bry = Bry_.Add(search_bry, Byte_ascii.Star); url.Page_bry_(Bry_.Add(Xows_special_meta_.Itm__search.Ttl_bry(), Byte_ascii.Slash_bry, search_bry));// HACK: need to re-set Page b/c href_parser does not eliminate qargs; DATE:2013-02-08 // search wiki Xoa_ttl search_ttl = Xoa_ttl.parse_(wiki, search_bry); diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java index a4020f7bc..4336ff22d 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java @@ -40,12 +40,12 @@ class Xows_text_parser__v1 { switch (b) { case Byte_ascii.Underline: // underline is word-breaking; EX: A_B -> A, B case Byte_ascii.Space: // should not occur, but just in case (only underscores) - case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn: // should not occur in titles, but just in case + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: // should not occur in titles, but just in case case Byte_ascii.Dash: // treat hypenated words separately case Byte_ascii.Dot: // treat abbreviations as separate words; EX: A.B.C. case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: - case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: + case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Comma: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Gt: case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java index 1529c8d4f..92bf7e295 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java @@ -121,7 +121,7 @@ class Xow_search_scanner { int words_len = words.length; if ( words_len == 1 // only one word && !Bry_.Eq(words[0], cur_word) // split word not same as raw - && Bry_finder.Find_fwd(cur_word, Byte_ascii.Asterisk) == -1 // no asterisk + && Bry_finder.Find_fwd(cur_word, Byte_ascii.Star) == -1 // no asterisk ) { tkns.Add(Xow_search_tkn.new_bry(tid, words[0])); return; diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java new file mode 100644 index 000000000..98518c041 --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java @@ -0,0 +1,73 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; +import gplx.dbs.*; +import gplx.dbs.engines.mems.*; +class Db_rdr_utl { + public static void Load_and_write(Db_conn conn, String sql, Bry_bfr bfr) { + Write_to_bfr(bfr, Load(conn, sql)); + } + public static Mem_qry_set Load_as_qry_set(Db_conn conn, Db_meta_fld_list fld_list, String sql) { + Mem_qry_set qry_set = new Mem_qry_set(); + DataRdr rdr = conn.Exec_sql_as_rdr(sql); + try { + int fld_count = rdr.FieldCount(); + while (rdr.MoveNextPeer()) { + Mem_row row = new Mem_row(); + for (int i = 0; i < fld_count; ++i) + row.Add(fld_list.Get_at(i).Name(), rdr.ReadAt(i)); + qry_set.Add(row); + } + } + finally { + rdr.Rls(); + } + return qry_set; + } + public static Object[][] Load(Db_conn conn, String sql) { + List_adp list = List_adp_.new_(); + DataRdr rdr = conn.Exec_sql_as_rdr(sql); + try { + int fld_count = rdr.FieldCount(); + while (rdr.MoveNextPeer()) { + Object[] row = new Object[fld_count]; + for (int i = 0; i < fld_count; ++i) { + row[i] = rdr.ReadAt(i); + } + list.Add(row); + } + } + finally { + rdr.Rls(); + } + return (Object[][])list.To_ary_and_clear(Object[].class); + } + public static void Write_to_bfr(Bry_bfr bfr, Object[][] rows, int... skip) { + int rows_len = rows.length; + for (int i = 0; i < rows_len; ++i) { + Object[] row = (Object[])rows[i]; + int row_len = row.length; + for (int j = 0; j < row_len; ++j) { + if (skip != null && Int_.In(j, skip)) continue; + Object val = row[j]; + bfr.Add_obj(val).Add_byte_pipe(); + } + bfr.Add_byte_nl(); + } + } +} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java new file mode 100644 index 000000000..cebc46add --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java @@ -0,0 +1,137 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; +import gplx.fsdb.*; import gplx.fsdb.meta.*; +import gplx.xowa.files.origs.*; +class Xows_cmd__file_check { + private Io_url tmp_dir; + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Xoa_url_arg_hash arg_hash) { + byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); if (wiki_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no wiki: url=~{0}", url.Raw()); return;} + byte[] file_bry = arg_hash.Get_val_bry_or(Arg_file, null); if (file_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no file: url=~{0}", url.Raw()); return;} + Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_make_init_y(wiki_bry); + tmp_dir = wiki.Fsys_mgr().Tmp_dir(); + boolean schema_1 = wiki.File__fsdb_core().File__schema_is_1(); + Fsdb_db_file atr_main = null; + try {Write_kv(bfr, "machine.op_sys", Op_sys.Cur().Os_name());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "app.version", Xoa_app_.Version);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "cfg_file_retrieve", ((Xoae_app)app).File_mgr().Wmf_mgr().Enabled());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "fsdb.schema_is_1", schema_1);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "fsdb.mnt_file", wiki.File__fsdb_core().File__mnt_file().Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "fsdb.abc_file", wiki.File__fsdb_core().File__abc_file__at(Fsm_mnt_mgr.Mnt_idx_main).Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try { + atr_main = wiki.File__fsdb_core().File__atr_file__at(Fsm_mnt_mgr.Mnt_idx_main); + Write_kv(bfr, "fsdb.atr_file", atr_main.Url()); + } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + try {Write_kv(bfr, "fsdb.orig", wiki.File__fsdb_core().File__orig_tbl_ary()[0].Conn().Conn_info().Xto_raw());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + Fsdb_sql_mkr sql_mkr = schema_1 ? Fsdb_sql_mkr__v1.I : Fsdb_sql_mkr__v2.I; + String sql = ""; + try { + Xof_orig_tbl orig_tbl = wiki.File__fsdb_core().File__orig_tbl_ary()[0]; + sql = sql_mkr.Orig_by_ttl(file_bry); + Write_sect(bfr, "fsdb.orig.select", sql); + Db_rdr_utl.Load_and_write(orig_tbl.Conn(), sql, bfr); + } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + Object[][] rows = null; + try { + sql = sql_mkr.Fil_by_ttl(file_bry); + Write_sect(bfr, "fsdb.fil.select", sql); + rows = Db_rdr_utl.Load(atr_main.Conn(), sql); + Db_rdr_utl.Write_to_bfr(bfr, rows); + Write_thms(bfr, file_bry, sql_mkr, wiki.File__mnt_mgr().Mnts__get_main(), atr_main, rows); + } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + } + private void Write_thms(Bry_bfr bfr, byte[] file_bry, Fsdb_sql_mkr sql_mkr, Fsm_mnt_itm mnt_itm, Fsdb_db_file atr_main, Object[][] rows) { + int rows_len = rows.length; + for (int i = 0; i < rows_len; ++i) { + Object[] row = rows[i]; + int file_id = Int_.cast_(row[0]); + String sql = sql_mkr.Thm_by_id(file_id); + Write_sect(bfr, "fsdb.thm.select", sql); + Object[][] thm_rows = Db_rdr_utl.Load(atr_main.Conn(), sql); + Db_rdr_utl.Write_to_bfr(bfr, thm_rows); + Write_bins(bfr, file_bry, sql_mkr, mnt_itm, thm_rows, 0, 6); + Object bin_db_id_obj = row[4]; + if (bin_db_id_obj != null) { + Write_bins(bfr, file_bry, sql_mkr, mnt_itm, rows, 0, 4); + } + } + } + private void Write_bins(Bry_bfr bfr, byte[] file_bry, Fsdb_sql_mkr sql_mkr, Fsm_mnt_itm mnt_itm, Object[][] rows, int owner_id_ordinal, int bin_db_id_ordinal) { + int rows_len = rows.length; + for (int i = 0; i < rows_len; ++i) { + Object[] row = rows[i]; + int bin_db_id = Int_.cast_(row[bin_db_id_ordinal]); if (bin_db_id == -1) continue; + Fsm_bin_fil bin_db = mnt_itm.Bin_mgr().Dbs__get_at(bin_db_id); + int owner_id = Int_.cast_(row[owner_id_ordinal]); + String sql = sql_mkr.Bin_by_id(owner_id); + Write_sect(bfr, "fsdb.bin.select", sql); + Object[][] bin_rows = Db_rdr_utl.Load(bin_db.Conn(), sql); + Db_rdr_utl.Write_to_bfr(bfr, bin_rows, 4); + Export_bins(bfr, file_bry, bin_rows, 0, 4); + } + } + private void Export_bins(Bry_bfr bfr, byte[] file_bry, Object[][] rows, int owner_id_ordinal, int bin_data_ordinal) { + int rows_len = rows.length; + Bry_bfr tmp_bfr = Bry_bfr.new_(); + for (int i = 0; i < rows_len; ++i) { + Object[] row = rows[i]; + int owner_id = Int_.cast_(row[owner_id_ordinal]); + byte[] bin_data = (byte[])row[bin_data_ordinal]; + file_bry = gplx.xowa.files.repos.Xof_repo_itm_.Ttl_invalid_fsys_chars(tmp_bfr, file_bry); + Io_url bin_url = tmp_dir.GenSubFil(String_.new_u8(file_bry)); + bin_url = tmp_dir.GenSubFil(bin_url.NameOnly() + "_" + Int_.Xto_str(owner_id) + bin_url.Ext()); + Write_kv(bfr, "fsdb.bin.export", bin_url.Raw()); + Write_kv(bfr, "fsdb.bin.len", bin_data.length); + Io_mgr.I.SaveFilBry(bin_url, bin_data); + } + } + private static void Write_kv(Bry_bfr bfr, String key, Object val) { + bfr.Add_str_u8(key); + bfr.Add_str_a7(" = "); + bfr.Add_obj(val); + bfr.Add_byte_nl(); + } + private static void Write_sect(Bry_bfr bfr, String key, Object val) { + bfr.Add_byte_nl(); + bfr.Add_str_u8("------------------------------------------------------").Add_byte_nl(); + bfr.Add_str_u8(key).Add_str_a7(": ").Add_obj(val).Add_byte_nl(); + bfr.Add_str_u8("------------------------------------------------------").Add_byte_nl(); + } + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_file = Bry_.new_a7("file"); + public static final Xows_cmd__file_check I = new Xows_cmd__file_check(); Xows_cmd__file_check() {} +} +interface Fsdb_sql_mkr { + String Orig_by_ttl(byte[] ttl); + String Fil_by_ttl(byte[] ttl); + String Thm_by_id(int id); + String Bin_by_id(int id); +} +abstract class Fsdb_sql_mkr__base { + public String Fil_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM fsdb_fil WHERE fil_name = '{0}';", ttl);} + public String Bin_by_id(int id) {return String_.Format("SELECT * FROM fsdb_bin WHERE bin_owner_id = {0};", id);} +} +class Fsdb_sql_mkr__v1 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { + public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM wiki_orig WHERE orig_ttl = '{0}';", ttl);} + public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_xtn_thm WHERE thm_owner_id = {0};", id);} + public static final Fsdb_sql_mkr I = new Fsdb_sql_mkr__v1(); Fsdb_sql_mkr__v1() {} +} +class Fsdb_sql_mkr__v2 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { + public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM orig_reg WHERE orig_ttl = '{0}';", ttl);} + public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_thm WHERE thm_owner_id = {0};", id);} + public static final Fsdb_sql_mkr I = new Fsdb_sql_mkr__v2(); Fsdb_sql_mkr__v2() {} +} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java new file mode 100644 index 000000000..ba0ca6788 --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java @@ -0,0 +1,59 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; +import gplx.ios.*; +import gplx.fsdb.meta.*; +class Xows_cmd__fs_check { + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Xoa_url_arg_hash arg_hash) { + byte[] dir_bry = arg_hash.Get_val_bry_or(Arg_dir, null); + if (dir_bry != null) { + Write_dir(bfr, Io_url_.new_dir_(String_.new_u8(dir_bry))); + return; + } + byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); if (wiki_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no wiki: url=~{0}", url.Raw()); return;} + Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_make_init_y(wiki_bry); + Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); + Io_url file_dir = wiki.Fsys_mgr().File_dir(); + Write_dir(bfr, wiki_dir); + Write_dir(bfr, file_dir); + Write_dir(bfr, file_dir.GenSubDir(Fsm_mnt_tbl.Mnt_name_main)); + Write_dir(bfr, file_dir.GenSubDir(Fsm_mnt_tbl.Mnt_name_user)); + Write_dir(bfr, file_dir.GenSubDir("fsdb.update_00")); + } + private void Write_dir(Bry_bfr bfr, Io_url dir_url) { + bfr.Add_byte_nl().Add_str_a7("scanning: ").Add_str_u8(dir_url.Raw()).Add_byte_nl(); + if (!Io_mgr.I.ExistsDir(dir_url)) return; + IoItmDir dir_itm = Io_mgr.I.QueryDir_args(dir_url).Recur_(false).DirInclude_(true).ExecAsDir(); + IoItmList sub_itms = dir_itm.SubDirs(); int len = sub_itms.Count(); + for (int i = 0; i < len; ++i) { + try { + IoItmDir sub_itm = (IoItmDir)sub_itms.Get_at(i); + bfr.Add_str_a7("dir").Add_byte_pipe().Add_str_u8(sub_itm.Name()).Add_byte_nl(); + } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + } + sub_itms = dir_itm.SubFils(); len = sub_itms.Count(); + for (int i = 0; i < len; ++i) { + try { + IoItmFil sub_itm = (IoItmFil)sub_itms.Get_at(i); + bfr.Add_str_a7("fil").Add_byte_pipe().Add_str_u8(sub_itm.Name()).Add_byte_pipe().Add_long_variable(sub_itm.Size()).Add_byte_pipe().Add_dte(sub_itm.ModifiedTime()).Add_byte_nl(); + } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));} + } + } + public static final Xows_cmd__fs_check I = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {} + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_dir = Bry_.new_a7("dir"); +} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java new file mode 100644 index 000000000..8b6de59b8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java @@ -0,0 +1,51 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; +import gplx.ios.*; import gplx.core.primitives.*; +import gplx.dbs.*; +import gplx.fsdb.meta.*; +class Xows_cmd__sql_dump { + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Xoa_url_arg_hash arg_hash) { + Db_conn conn = null; + byte[] sql_bry = arg_hash.Get_val_bry_or(Arg_sql, null); if (sql_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no sql: url=~{0}", url.Raw()); return;} + byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); + if (wiki_bry == null) { + byte[] db_file_bry = arg_hash.Get_val_bry_or(Arg_db_file, null); if (db_file_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no db_type: url=~{0}", url.Raw()); return;} + conn = Db_conn_bldr.I.Get(Io_url_.new_fil_(String_.new_u8(db_file_bry))); + } + else { + byte[] db_type_bry = arg_hash.Get_val_bry_or(Arg_db_type, null); if (db_type_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no db_type: url=~{0}", url.Raw()); return;} + Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_make_init_y(wiki_bry); + Byte_obj_val db_type_val = (Byte_obj_val)db_type_hash.Get_by_bry(db_type_bry); if (db_type_val == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; bad db_type: url=~{0}", url.Raw()); return;} + switch (db_type_val.Val()) { + case Db_type_wiki_core: conn = wiki.Data__core_mgr().Db__core().Conn(); break; + case Db_type_fsdb_abc: conn = wiki.File__fsdb_core().File__abc_file__at(Fsm_mnt_mgr.Mnt_idx_main).Conn(); break; + case Db_type_fsdb_atr: conn = wiki.File__fsdb_core().File__atr_file__at(Fsm_mnt_mgr.Mnt_idx_main).Conn(); break; + } + } + Db_rdr_utl.Load_and_write(conn, String_.new_u8(sql_bry), bfr); + } + public static final Xows_cmd__sql_dump I = new Xows_cmd__sql_dump(); Xows_cmd__sql_dump() {} + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_db_file = Bry_.new_a7("db_file"), Arg_db_type = Bry_.new_a7("db_type"), Arg_sql = Bry_.new_a7("sql"); + private static final byte Db_type_fsdb_abc = 1, Db_type_fsdb_atr = 2, Db_type_wiki_core = 3; + private static final Hash_adp_bry db_type_hash = Hash_adp_bry.cs_() + .Add_str_byte("fsdb.abc" , Db_type_fsdb_abc) + .Add_str_byte("fsdb.atr" , Db_type_fsdb_atr) + .Add_str_byte("wiki.core" , Db_type_wiki_core) + ; +} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java new file mode 100644 index 000000000..d22b227fa --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java @@ -0,0 +1,44 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; +import gplx.core.primitives.*; +public class Xows_diag_page implements Xows_page { + private Xoa_url_arg_hash arg_hash = new Xoa_url_arg_hash(); + public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__diag;} + public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { + arg_hash.Load(url); + byte[] cmd_type_bry = arg_hash.Get_val_bry_or(Arg_type, null); if (cmd_type_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no type: url=~{0}", url.Raw()); return;} + Byte_obj_val cmd_type_val = (Byte_obj_val)type_hash.Get_by_bry(cmd_type_bry); if (cmd_type_val == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; bad type: url=~{0}", url.Raw()); return;} + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_m001(); + bfr.Add_str_a7("
\n");
+		switch (cmd_type_val.Val()) {
+			case Type_file_check:	Xows_cmd__file_check.I.Exec(bfr, wiki.App(), url, arg_hash); break;
+			case Type_fs_check:		Xows_cmd__fs_check.I.Exec(bfr, wiki.App(), url, arg_hash); break;
+			case Type_sql_dump:		Xows_cmd__sql_dump.I.Exec(bfr, wiki.App(), url, arg_hash); break;
+		}
+		bfr.Add_str_a7("
\n"); + page.Data_raw_(bfr.Xto_bry_and_clear()); + } + private static final byte[] Arg_type = Bry_.new_a7("type"); + private static final byte Type_file_check = 1, Type_fs_check = 2, Type_sql_dump = 3; + private static final Hash_adp_bry type_hash = Hash_adp_bry.cs_() + .Add_str_byte("file.check" , Type_file_check) + .Add_str_byte("fs.check" , Type_fs_check) + .Add_str_byte("sql.dump" , Type_sql_dump) + ; +} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java index 22b4b757d..5ad756425 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java @@ -29,7 +29,7 @@ public class Popup_history_page implements Xows_page { if (Ttl_chk(itm.Page_ttl())) continue; fmtr_main.Bld_bfr_many(bfr, itm.Page_href(), itm.Page_ttl().Full_txt()); } - page.Data_raw_(bfr.Trim_end(Byte_ascii.NewLine).To_bry_and_rls()); + page.Data_raw_(bfr.Trim_end(Byte_ascii.Nl).To_bry_and_rls()); page.Html_data().Html_restricted_n_(); } private Bry_fmtr fmtr_main = Bry_fmtr.new_("
~{ttl}\n\n", "href", "ttl"); // NOTE: need to use anchor (as opposed to lnki or lnke) b/c xwiki will not work on all wikis diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java b/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java index 21794172a..e83469588 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java +++ b/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java @@ -34,7 +34,7 @@ public class Xotdb_page_raw_parser { } Io_line_rdr rdr; Xowe_wiki wiki; Xow_ns_mgr ns_mgr; Xow_ns ns_itm; public void Skip_first_line() { rdr.Read_next(); - int pos = Bry_finder.Find_fwd(rdr.Bfr(), Byte_ascii.NewLine); + int pos = Bry_finder.Find_fwd(rdr.Bfr(), Byte_ascii.Nl); // rdr.Move(pos + 1); rdr.Truncate(pos + 1); } diff --git a/400_xowa/src/gplx/xowa/users/Xoue_user.java b/400_xowa/src/gplx/xowa/users/Xoue_user.java index 36341eb92..b8b90a304 100644 --- a/400_xowa/src/gplx/xowa/users/Xoue_user.java +++ b/400_xowa/src/gplx/xowa/users/Xoue_user.java @@ -120,7 +120,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { } } private void Available_from_bulk(byte[] raw) { - byte[][] wikis = Bry_.Split(raw, Byte_ascii.NewLine); + byte[][] wikis = Bry_.Split(raw, Byte_ascii.Nl); Xowe_wiki usr_wiki = Wiki(); int wikis_len = wikis.length; for (int i = 0; i < wikis_len; i++) diff --git a/400_xowa/src/gplx/xowa/users/Xouv_user.java b/400_xowa/src/gplx/xowa/users/Xouv_user.java index 13c07074f..561b9b41d 100644 --- a/400_xowa/src/gplx/xowa/users/Xouv_user.java +++ b/400_xowa/src/gplx/xowa/users/Xouv_user.java @@ -25,7 +25,7 @@ public class Xouv_user implements Xou_user { public Xouv_user(String key) {this.key = key;} public String Key() {return key;} private String key; public Xou_db_mgr User_db_mgr() {return user_db_mgr;} private Xou_db_mgr user_db_mgr; - public Xow_wiki Wikii() {if (wiki == null) wiki = wiki_mgr.Get_by_key_or_make_2(Xow_domain_.Domain_bry_home); return wiki;} private Xow_wiki wiki; + public Xow_wiki Wikii() {if (wiki == null) wiki = wiki_mgr.Get_by_key_or_make_init_y(Xow_domain_.Domain_bry_home); return wiki;} private Xow_wiki wiki; public void Init_db(Xoa_app app, Xoa_wiki_mgr wiki_mgr, Io_url db_url) { this.wiki_mgr = wiki_mgr; this.user_db_mgr = new Xou_db_mgr(app); diff --git a/400_xowa/src/gplx/xowa/users/data/Html_grid_wtr.java b/400_xowa/src/gplx/xowa/users/data/Html_grid_wtr.java new file mode 100644 index 000000000..a9d564316 --- /dev/null +++ b/400_xowa/src/gplx/xowa/users/data/Html_grid_wtr.java @@ -0,0 +1,143 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; +class Hgrid_tbl_data { + public Hgrid_tbl_data(Hgrid_col_data[] cols, Hgrid_row_data[] rows) {this.cols = cols; this.rows = rows;} + public Hgrid_col_data[] Cols() {return cols;} private final Hgrid_col_data[] cols; + public Hgrid_row_data[] Rows() {return rows;} private final Hgrid_row_data[] rows; +} +class Hgrid_col_data { + public Hgrid_col_data(int type, String key, String display) {this.type = type; this.key = key; this.display = display;} + public int Type() {return type;} private final int type; + public String Key() {return key;} private final String key; + public String Display() {return display;} private final String display; + public static final int Type_id_str = 1; +} +class Hgrid_row_data { + public Hgrid_row_data(Hgrid_tbl_data tbl, String pkey, Hgrid_cell_data[] cells, Hgrid_btn_data[] btns) {this.tbl = tbl; this.pkey = pkey; this.cells = cells; this.btns = btns;} + public Hgrid_tbl_data Tbl() {return tbl;} private final Hgrid_tbl_data tbl; + public String Pkey() {return pkey;} private final String pkey; + public Hgrid_cell_data[] Cells() {return cells;} private Hgrid_cell_data[] cells; + public Hgrid_btn_data[] Btns() {return btns;} private Hgrid_btn_data[] btns; +} +class Hgrid_cell_data { + public Hgrid_cell_data(String data, String html) {this.data = data; this.html = html;} + public String Data() {return data;} private final String data; + public String Html() {return html;} private final String html; +} +class Hgrid_btn_data { + public Hgrid_btn_data(String cmd, String img, String text) {this.cmd = cmd; this.img = img; this.text = text;} + public String Cmd() {return cmd;} private final String cmd; + public String Img() {return img;} private final String img; + public String Text() {return text;} private final String text; +} +class Hgrid_tbl_fmtr { + private final Hgrid_head_row_fmtr head_row_fmtr = new Hgrid_head_row_fmtr(); + private final Hgrid_data_rows_fmtr data_rows_fmtr = new Hgrid_data_rows_fmtr(); + public void Write(Bry_bfr bfr, Hgrid_tbl_data data) { + tbl_fmtr.Bld_bry_many(bfr, head_row_fmtr.Init(data), data_rows_fmtr.Init(data)); + } + private static final Bry_fmtr tbl_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( "" + , " ~{head_cells}" + , " ~{data_rows}" + , "
" + ), "head_cells", "data_rows"); +} +class Hgrid_head_row_fmtr implements Bry_fmtr_arg { + private Hgrid_tbl_data data; + public Hgrid_head_row_fmtr Init(Hgrid_tbl_data data) {this.data = data; return this;} + public void XferAry(Bry_bfr bfr, int idx) { + Hgrid_col_data[] cols = data.Cols(); int len = cols.length; + for (int i = 0; i < len; ++i) { + Hgrid_col_data col = cols[i]; + fmtr.Bld_bfr_many(bfr, col.Display()); + } + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( " ~{display}" + ), "display"); +} +class Hgrid_data_rows_fmtr implements Bry_fmtr_arg { + private final Hgrid_data_cell_fmtr cells_fmtr = new Hgrid_data_cell_fmtr(); + private Hgrid_tbl_data data; + public Hgrid_data_rows_fmtr Init(Hgrid_tbl_data data) {this.data = data; return this;} + public void XferAry(Bry_bfr bfr, int idx) { + Hgrid_row_data[] rows = data.Rows(); int len = rows.length; + for (int i = 0; i < len; ++i) { + Hgrid_row_data row = rows[i]; + fmtr.Bld_bfr_many(bfr, i, row.Pkey(), cells_fmtr.Init(i, row)); + } + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( " ~{cells}~{cmds}" + , " " + ), "id", "pkey", "cells"); +} +class Hgrid_data_cell_fmtr implements Bry_fmtr_arg { + private int row_idx; private Hgrid_row_data data; + public Hgrid_data_cell_fmtr Init(int row_idx, Hgrid_row_data data) {this.row_idx = row_idx; this.data = data; return this;} + public void XferAry(Bry_bfr bfr, int idx) { + Hgrid_cell_data[] cells = data.Cells(); int len = cells.length; + Hgrid_col_data[] cols = data.Tbl().Cols(); + for (int i = 0; i < len; ++i) { + Hgrid_cell_data cell = cells[i]; + fmtr.Bld_bfr_many(bfr, row_idx, cols[i].Key(), i, cell.Data(), cell.Html()); + } + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( " ~{html}" + ), "row", "col", "idx", "data", "html"); +} +class Hgrid_row_btns_fmtr implements Bry_fmtr_arg { + private int row_idx; private Hgrid_row_data data; + public Hgrid_row_btns_fmtr Init(int row_idx, Hgrid_row_data data) {this.row_idx = row_idx; this.data = data; return this;} + public void XferAry(Bry_bfr bfr, int idx) { + Hgrid_btn_data[] btns = data.Btns(); int len = btns.length; + for (int i = 0; i < len; ++i) { + Hgrid_btn_data btn = btns[i]; + fmtr.Bld_bfr_many(bfr, row_idx, btn.Cmd(), btn.Img(), btn.Text()); + } + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( " " + ), "row", "cmd", "img", "text"); +} +/* + + + + + + + + + + + + + + + + +
NameURL
Earthen.wikipedia.org/wiki/Earth + editdelete +
Sunen.wikipedia.org/wiki/Sun + editdelete +
+*/ diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_bmk_tbl.java b/400_xowa/src/gplx/xowa/users/data/Xoud_bmk_tbl.java index b3e50f008..088b2441a 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_bmk_tbl.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_bmk_tbl.java @@ -40,7 +40,7 @@ public class Xoud_bmk_tbl implements RlsAble { } public Xoud_bmk_row[] Select_all() { List_adp list = List_adp_.new_(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Clear().Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) list.Add(new_row(rdr)); diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java index e51afddee..8760516a5 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java @@ -48,7 +48,7 @@ class Xoud_opt_scope_parser { public Xoud_opt_scope Parse_itm(byte[] src, int bgn, int end) { int lang_dot = Bry_finder.Find_fwd(src, Byte_ascii.Dot, bgn, end); if (lang_dot == Bry_finder.Not_found) return Warn("scope.parse.missing_lang_dot: src=~{0}", src, bgn, end); int lang_id = Int_.MinValue; - if (lang_dot == 1 && src[bgn] == Byte_ascii.Asterisk) + if (lang_dot == 1 && src[bgn] == Byte_ascii.Star) lang_id = Xoud_opt_scope.Lang_id_wildcard; else { Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key_or_null(src, bgn, lang_dot); if (lang_itm == null) return Warn("scope.parse.invalid_lang: src=~{0}", src, bgn, end); diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java b/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java index f7047928b..98dbad26b 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java @@ -58,7 +58,7 @@ class Xoud_user_tbl { } public int Select_id_next() { int rv = 1; - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select__rls_auto(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) { int cur = rdr.Read_int(fld_id); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java index 79f0851fb..223067dda 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.core.primitives.*; import gplx.html.*; import gplx.gfui.*; +import gplx.xowa.gui.views.*; public class Prefs_mgr implements GfoInvkAble { public Prefs_mgr(Xoae_app app) { this.app = app; @@ -27,7 +28,7 @@ public class Prefs_mgr implements GfoInvkAble { html_wtr = new Prefs_html_wtr(this); } private Xoae_app app; private Hash_adp_bry atrs_hash; private Html_parser html_rdr = new Html_parser(); private Prefs_html_wtr html_wtr; private Prefs_trg_mgr option_trgs_mgr = new Prefs_trg_mgr(); - public void Html_box_mok_(Gfui_html v) {this.html_box_mok = v;} private Gfui_html html_box_mok; + public void Html_box_mok_(Xog_html_itm v) {this.html_box_mok = v;} private Xog_html_itm html_box_mok; public byte[] Props_get(byte[] src) { // option_trgs_mgr.Init(app.Gui_mgr().Browser_win().Active_page().Url()); if (props_get_fmtr == null) props_get_fmtr = Bry_fmtr.keys_().Eval_mgr_(app.Gfs_mgr().Eval_mgr()); @@ -76,14 +77,14 @@ public class Prefs_mgr implements GfoInvkAble { if (eval_code == null) eval_code = hnde.Atrs_val_by_key_bry(Bry_prop_set); String hnde_val = null; String hnde_key = "xowa_prop_" + Int_.Xto_str(i); - Gfui_html html_box = html_box_mok == null ? app.Gui_mgr().Browser_win().Active_tab().Html_itm().Html_box() : html_box_mok; // TEST: + Xog_html_itm html_itm = html_box_mok == null ? app.Gui_mgr().Browser_win().Active_tab().Html_itm() : html_box_mok; // TEST: byte elem_tid = Prefs_mgr.Elem_tid_tid_of(hnde); switch (elem_tid) { case Elem_tid_input_text: case Elem_tid_input_xowa_io: - case Elem_tid_select: hnde_val = html_box.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value); break; - case Elem_tid_textarea: hnde_val = Html_utl.Unescape_as_str(html_box.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value)); break; - case Elem_tid_input_checkbox: hnde_val = html_box.Html_elem_atr_get_bool(hnde_key, "checked") ? "y" : "n"; break; + case Elem_tid_select: hnde_val = html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value); break; + case Elem_tid_textarea: hnde_val = Html_utl.Unescape_as_str(html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value)); break; + case Elem_tid_input_checkbox: hnde_val = html_itm.Html_elem_atr_get_bool(hnde_key, "checked") ? "y" : "n"; break; } byte[] get_cmd = Props_get(eval_code); Object get_val = Eval_run(Bry_.Add(get_cmd, Byte_ascii.Semic)); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java index 3209ba001..78ec3498a 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import org.junit.*; import gplx.gfui.*; import gplx.xowa.apps.*; +import gplx.xowa.gui.views.*; public class Prefs_mgr_tst { private Prefs_mgr_fxt fxt = new Prefs_mgr_fxt(); @Before public void init() {fxt.Clear();} @@ -167,8 +168,12 @@ class Prefs_mgr_fxt { Tfds.Eq(expd, actl); } } -class Gfui_html_mok extends Gfui_html { private Hash_adp elem_atrs = Hash_adp_.new_(); +class Gfui_html_mok extends Xog_html_itm { private Hash_adp elem_atrs = Hash_adp_.new_(); public void Html_elem_atr_add(String elem_id, String atr_key, Object atr_val) {elem_atrs.Add_if_dupe_use_nth(elem_id + "." + atr_key, atr_val);} - @Override public String Html_elem_atr_get_str(String elem_id, String atr_key) {return (String)elem_atrs.Get_by(elem_id + "." + atr_key);} - @Override public boolean Html_elem_atr_get_bool(String elem_id, String atr_key) {return Bool_.parse_((String)elem_atrs.Get_by(elem_id + "." + atr_key));} + @Override public String Html_elem_atr_get_str(String id, String atr_key) { + return (String)elem_atrs.Get_by(id + "." + atr_key); + } + @Override public boolean Html_elem_atr_get_bool(String id, String atr_key) { + return Bool_.parse_((String)elem_atrs.Get_by(id + "." + atr_key)); + } } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java index a8fa97a2f..926a320e7 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java @@ -17,6 +17,6 @@ along with this program. If not, see . */ package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; public interface Xoa_wiki_mgr { - Xow_wiki Get_by_key_or_make_2(byte[] key); - Xow_wiki Get_by_key_or_make_3(byte[] key); + Xow_wiki Get_by_key_or_make_init_y(byte[] key); + Xow_wiki Get_by_key_or_make_init_n(byte[] key); } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java index b74ddb302..d7b706a9a 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java @@ -37,13 +37,13 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { public Xowe_wiki Get_at(int i) {return Int_.Between(i, 0, this.Count() - 1) ? (Xowe_wiki)list.Get_at(i) : null;} public Xowe_wiki Get_by_key_or_null(byte[] key) {return Bry_.Len_eq_0(key) ? null : (Xowe_wiki)hash.Get_by(key);} public Xowe_wiki Get_by_key_or_null(byte[] src, int bgn, int end) {return (Xowe_wiki)hash.Get_by_mid(src, bgn, end);} - public Xow_wiki Get_by_key_or_make_2(byte[] key) { + public Xow_wiki Get_by_key_or_make_init_y(byte[] key) { Xowe_wiki rv = this.Get_by_key_or_null(key); if (rv == null) rv = New_wiki(key); rv.Init_assert(); return rv; } - public Xow_wiki Get_by_key_or_make_3(byte[] key) {return Get_by_key_or_make(key);} + public Xow_wiki Get_by_key_or_make_init_n(byte[] key) {return Get_by_key_or_make(key);} public Xowe_wiki Get_by_key_or_make(byte[] key) { Xowe_wiki rv = this.Get_by_key_or_null(key); if (rv == null) rv = New_wiki(key); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java index e497dd84a..0bc1a3655 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java @@ -32,8 +32,7 @@ public class Xowd_db_file_schema_props { } public static final String Grp = Xow_cfg_consts.Grp__wiki_schema; public static final String - Key__col_page_html_text_id = "col.page.page_html_text_id" - , Key__tbl_css_core = "tbl.css_core" // VERSION:2.4.1 + Key__tbl_css_core = "tbl.css_core" // VERSION:2.4.1 , Key__col_search_word_page_count = "col.search_word.word_page_count" // VERSION:2.4.2 ; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java index 8e943515e..f90a259e1 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java @@ -89,7 +89,6 @@ public class Xowd_db_mgr { db__core.Tbl__cat_link().Create_tbl(); } Dbs__add_and_save(db__core); - db__core.Tbl__cfg().Insert_yn(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__col_page_html_text_id, Bool_.Y); props.Cfg_save(db__core.Tbl__cfg()); // NOTE: must save cfg now, especially zip_tid; latter will be reloaded after import is done; conn.Txn_end(); } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java index b6d59b795..acce74a55 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java @@ -51,7 +51,7 @@ public class Xowd_cat_core_tbl implements RlsAble { public void Update_by_batch(int id, byte hidden) { stmt_update.Clear().Val_byte(fld_hidden, hidden).Crt_int(fld_id, id).Exec_update(); } - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();;} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();;} public Xowd_category_itm Select(int id) { if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_id); Db_rdr rdr = stmt_select.Clear().Crt_int(fld_id, id).Exec_select__rls_manual(); diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java index 3e2108ca9..552f422dd 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java @@ -50,7 +50,7 @@ public class Xowd_cat_link_tbl implements RlsAble { .Val_int(fld_timestamp , timestamp) .Exec_insert(); } - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} public int Select_by_type(List_adp list, int cat_page_id, byte arg_tid, byte[] arg_sortkey, boolean arg_is_from, int limit) { String arg_sortkey_str = arg_sortkey == null ? "" : String_.new_u8(arg_sortkey); gplx.core.criterias.Criteria comp_crt = !arg_is_from diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java index 3cdfa8ef6..eaf8d9ba6 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java @@ -61,14 +61,11 @@ public class Xowd_html_tbl implements RlsAble { stmt_select = Db_stmt_.Rls(stmt_select); } public static void Assert_col__page_html_db_id(Xowd_db_mgr db_mgr) { - Db_cfg_tbl cfg_tbl = db_mgr.Tbl__cfg(); - String exists = cfg_tbl.Select_str_or(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__col_page_html_text_id, "n"); - if (String_.Eq(exists, "y")) return; - Xowd_page_tbl pg_tbl = db_mgr.Tbl__page(); - Db_conn conn = db_mgr.Db__core().Conn(); - conn.Ddl_append_fld(pg_tbl.Tbl_name(), pg_tbl.Fld_html_db_id()); // TODO: currently NULL; change to NOT NULL DEFAULT -1; ALTER TABLE page ADD html_db_id int NULL; -// conn.Ddl_append_fld(pg_tbl.Tbl_name(), pg_tbl.Fld_page_redirect_id()); // TODO: currently NULL; change to NOT NULL DEFAULT -1; ALTER TABLE page ADD html_db_id int NULL; - cfg_tbl.Insert_yn(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__col_page_html_text_id, Bool_.Y); - pg_tbl.Hdump_enabled_(Bool_.Y); + Xowd_page_tbl page_tbl = db_mgr.Tbl__page(); Db_conn page_conn = page_tbl.Conn(); + boolean html_flds_exists = page_conn.Meta_fld_exists(page_tbl.Tbl_name(), page_tbl.Fld_html_db_id()); + if (html_flds_exists) return; + page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_html_db_id()).Default_(-1)); + page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_redirect_id()).Default_(-1)); + page_tbl.Hdump_enabled_(Bool_.Y); } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java index 26e2af975..d34297665 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java @@ -29,7 +29,8 @@ public class Xowd_page_tbl implements RlsAble { public String Fld_page_ns() {return fld_ns;} public String Fld_page_title() {return fld_title;} public String Fld_page_len() {return fld_len;} - public Db_meta_fld Fld_html_db_id() {return flds.Get_by(fld_html_db_id);} + public String Fld_html_db_id() {return fld_html_db_id;} + public String Fld_redirect_id() {return fld_redirect_id;} public String[] Flds_select_idx() {return flds_select_idx;} public String[] Flds_select_all() {return flds_select_all;} public Db_conn Conn() {return conn;} @@ -162,7 +163,7 @@ public class Xowd_page_tbl implements RlsAble { if (Bry_.Len_eq_0(search)) return; // do not allow empty search Criteria crt = Criteria_.And_many(Db_crt_.eq_(fld_ns, Xow_ns_.Id_main), Db_crt_.like_(fld_title, "")); Db_qry__select_cmd qry = Db_qry_.select_().From_(tbl_name).Cols_(fld_id, fld_len, fld_ns, fld_title).Where_(crt); // NOTE: use fields from main index only - search = Bry_.Replace(search, Byte_ascii.Asterisk, Byte_ascii.Percent); + search = Bry_.Replace(search, Byte_ascii.Star, Byte_ascii.Percent); Db_rdr rdr = conn.Stmt_new(qry).Clear().Crt_int(fld_ns, Xow_ns_.Id_main).Val_bry_as_str(fld_title, search).Exec_select__rls_auto(); try { while (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_search_word_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_search_word_tbl.java index f6ca4e167..f25b6fc0c 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_search_word_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_search_word_tbl.java @@ -56,7 +56,7 @@ public class Xowd_search_word_tbl implements RlsAble { stmt_select_in = conn.Stmt_new(qry); } List_adp list = List_adp_.new_(); - Db_rdr rdr = stmt_select_in.Clear().Crt_bry_as_str(fld_text, Bry_.Replace(word, Byte_ascii.Asterisk, Byte_ascii.Percent)).Exec_select__rls_manual(); + Db_rdr rdr = stmt_select_in.Clear().Crt_bry_as_str(fld_text, Bry_.Replace(word, Byte_ascii.Star, Byte_ascii.Percent)).Exec_select__rls_manual(); try { int row_count = 0; while (rdr.Move_next()) { @@ -72,8 +72,8 @@ public class Xowd_search_word_tbl implements RlsAble { } public void Select_by_word(Cancelable cancelable, Xowd_search_link_tbl search_page_tbl, List_adp rv, byte[] search, int results_max) { gplx.core.criterias.Criteria crt = null; - if (Bry_.Has(search, Byte_ascii.Asterisk)) { - search = Bry_.Replace(search, Byte_ascii.Asterisk, Byte_ascii.Percent); + if (Bry_.Has(search, Byte_ascii.Star)) { + search = Bry_.Replace(search, Byte_ascii.Star, Byte_ascii.Percent); crt = Db_crt_.like_ (fld_text, String_.new_u8(search)); } else @@ -97,9 +97,9 @@ public class Xowd_search_word_tbl implements RlsAble { flds.Add_int_dflt("word_page_count", 0); } public void Ddl__page_count__add(Xowd_search_link_tbl link_tbl, Db_cfg_tbl cfg_tbl) { - Db_meta_fld page_count_fld = new Db_meta_fld("word_page_count", Db_meta_fld.Tid_int, Db_meta_fld.Len_null, Bool_.N, Bool_.N, Bool_.N, 0); + Db_meta_fld page_count_fld = Db_meta_fld.new_int("word_page_count").Default_(0); conn.Txn_bgn(); - conn.Ddl_append_fld(tbl_name, page_count_fld); // ALTER TABLE search_word ADD word_page_count integer NOT NULL DEFAULT 0; + conn.Ddl_append_fld(tbl_name, page_count_fld); // SQL: ALTER TABLE search_word ADD word_page_count integer NOT NULL DEFAULT 0; String sql = String_.Format(String_.Concat_lines_nl_skip_last ( "REPLACE INTO {0} ({1}, {2}, word_page_count)" , "SELECT w.{1}" @@ -114,7 +114,7 @@ public class Xowd_search_word_tbl implements RlsAble { ); conn.Exec_sql_plog_ntx("calculating page count per word (please wait)", sql); Ddl__page_count__cfg(cfg_tbl); - fld_page_count = page_count_fld.Name(); flds.Add_itm(page_count_fld); this.Rls(); + fld_page_count = page_count_fld.Name(); flds.Add(page_count_fld); this.Rls(); conn.Txn_end(); } public void Ddl__page_count__cfg(Db_cfg_tbl cfg_tbl) { diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java index 738730007..815864ff9 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java @@ -61,7 +61,7 @@ public class Xow_xwiki_mgr implements GfoInvkAble { return (Xow_domain[])rv.To_ary_and_clear(Xow_domain.class); } public void Add_bulk(byte[] raw) { - byte[][] rows = Bry_.Split(raw, Byte_ascii.NewLine); + byte[][] rows = Bry_.Split(raw, Byte_ascii.Nl); int rows_len = rows.length; Hash_adp_bry lang_regy = Xol_lang_itm_.Regy(); for (int i = 0; i < rows_len; i++) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_mgr.java b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_mgr.java rename to 400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_mgr.java index 977c90577..6a848cd8f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_mgr.java +++ b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_mgr.java @@ -15,7 +15,8 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.wmfs; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wmfs.data.*; public class Xow_wmf_api_mgr { public void Trg_engine_key(String v) {this.trg_engine_key = v;} private String trg_engine_key = gplx.ios.IoEngine_.SysKey; public void Api_exec(Xow_wmf_api_wkr wkr) {this.Api_exec(Wikis, wkr);} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr.java b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr.java rename to 400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr.java index d1de8cb88..71c45c50e 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr.java +++ b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr.java @@ -15,7 +15,8 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.wmfs; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wmfs.data.*; public interface Xow_wmf_api_wkr { void Api_init(); void Api_term(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr__ns.java b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr__ns.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr__ns.java rename to 400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr__ns.java index 34019e6d0..6ebc050f6 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xow_wmf_api_wkr__ns.java +++ b/400_xowa/src/gplx/xowa/wmfs/Xow_wmf_api_wkr__ns.java @@ -15,9 +15,10 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.wmfs; import gplx.*; import gplx.xowa.*; import gplx.json.*; -class Xow_wmf_api_wkr__ns implements Xow_wmf_api_wkr { +import gplx.xowa.wmfs.data.*; +public class Xow_wmf_api_wkr__ns implements Xow_wmf_api_wkr { private final Json_parser parser = new Json_parser(); private final Xowmf_site_tbl tbl_site; private final Xowmf_ns_tbl tbl_ns; private int site_id_next = 1; diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_extensions_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_extensions_tbl.java new file mode 100644 index 000000000..1ed91c9a6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_extensions_tbl.java @@ -0,0 +1,69 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +class Xowmf_extensions_tbl implements RlsAble { + private static final String tbl_name = "wmf_extensions"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_type, fld_name, fld_descriptionmsg, fld_author, fld_url, fld_version + , fld_vcs_system, fld_vcs_version, fld_vcs_url, fld_vcs_date, fld_license_name, fld_license, fld_credits; + private final Db_conn conn; + private Db_stmt stmt_insert; + public Xowmf_extensions_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_type = flds.Add_str("type", 255); + this.fld_name = flds.Add_str("name", 255); + this.fld_descriptionmsg = flds.Add_str("descriptionmsg", 255); + this.fld_author = flds.Add_str("author", 255); + this.fld_url = flds.Add_str("url", 255); + this.fld_version = flds.Add_str("version", 255); + this.fld_vcs_system = flds.Add_str("vcs_system", 255); + this.fld_vcs_version = flds.Add_str("vcs_version", 255); + this.fld_vcs_url = flds.Add_str("vcs_url", 255); + this.fld_vcs_date = flds.Add_str("vcs_date", 255); + this.fld_license_name = flds.Add_str("license_name", 255); + this.fld_license = flds.Add_str("license", 255); + this.fld_credits = flds.Add_str("credits", 255); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + } + public void Insert(int site_id, String type, String name, String descriptionmsg, String author, String url, String version + , String vcs_system, String vcs_version, String vcs_url, String vcs_date, String license_name, String license, String credits) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_site_id , site_id) + .Val_str(fld_type , type) + .Val_str(fld_name , name) + .Val_str(fld_descriptionmsg , descriptionmsg) + .Val_str(fld_author , author) + .Val_str(fld_url , url) + .Val_str(fld_version , version) + .Val_str(fld_vcs_system , vcs_system) + .Val_str(fld_vcs_version , vcs_version) + .Val_str(fld_vcs_url , vcs_url) + .Val_str(fld_vcs_date , vcs_date) + .Val_str(fld_license_name , license_name) + .Val_str(fld_license , license) + .Val_str(fld_credits , credits) + .Exec_insert(); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xowmf_site_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_general_tbl.java similarity index 63% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xowmf_site_tbl.java rename to 400_xowa/src/gplx/xowa/wmfs/data/Xowmf_general_tbl.java index 4b03ca677..882fb36f7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xowmf_site_tbl.java +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_general_tbl.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; import gplx.dbs.*; -class Xowmf_general_tbl implements RlsAble { +public class Xowmf_general_tbl implements RlsAble { private static final String tbl_name = "wmf_general"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); private final String fld_site_id, fld_key, fld_val; private final Db_conn conn; @@ -35,7 +35,7 @@ class Xowmf_general_tbl implements RlsAble { stmt_insert = Db_stmt_.Rls(stmt_insert); stmt_select = Db_stmt_.Rls(stmt_select); } - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} public void Insert(int site_id, String key, String val) { if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); stmt_insert.Clear().Val_int(fld_site_id, site_id).Val_str(fld_key, key).Val_str(fld_val, val).Exec_insert(); @@ -231,121 +231,3 @@ class Xowmf_general_tbl implements RlsAble { ], "favicon": "//bits.wikimedia.org/favicon/wikipedia.ico" */ -class Xowmf_json_tbl implements RlsAble { - private static final String tbl_name = "wmf_json"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); - private final String fld_site_id, fld_text, fld_date; - private final Db_conn conn; - private Db_stmt stmt_insert, stmt_select; - public Xowmf_json_tbl(Db_conn conn) { - this.conn = conn; - this.fld_site_id = flds.Add_int("site_id"); - this.fld_date = flds.Add_str("json_date", 20); - this.fld_text = flds.Add_text("json_text"); - conn.Rls_reg(this); - } - public Db_conn Conn() {return conn;} - public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} - public void Rls() { - stmt_insert = Db_stmt_.Rls(stmt_insert); - stmt_select = Db_stmt_.Rls(stmt_select); - } - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} - public void Insert(int site_id, DateAdp date, byte[] text) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - stmt_insert.Clear().Val_int(fld_site_id, site_id).Val_str(fld_date, date.XtoStr_gplx()).Val_bry_as_str(fld_text, text).Exec_insert(); - } - public String Select_text_or_null(int site_id) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_site_id); - Db_rdr rdr = stmt_select.Clear().Crt_int(fld_site_id, site_id).Exec_select__rls_manual(); - try { - return rdr.Move_next() ? rdr.Read_str(fld_text) : null; - } - finally {rdr.Rls();} - } -} -class Xowmf_site_tbl implements RlsAble { - private static final String tbl_name = "wmf_site"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); - private final String fld_id, fld_name; - private final Db_conn conn; - private Db_stmt stmt_insert, stmt_select; - public Xowmf_site_tbl(Db_conn conn) { - this.conn = conn; - this.fld_id = flds.Add_int_pkey("site_id"); - this.fld_name = flds.Add_str("site_name", 255); - conn.Rls_reg(this); - } - public Db_conn Conn() {return conn;} - public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "name", fld_name)));} - public void Rls() { - stmt_insert = Db_stmt_.Rls(stmt_insert); - stmt_select = Db_stmt_.Rls(stmt_select); - } - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} - public void Insert(int id, String name) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - stmt_insert.Clear().Val_int(fld_id, id).Val_str(fld_name, name).Exec_insert(); - } - public int Select_id(String name) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_name); - Db_rdr rdr = stmt_select.Clear().Crt_str(fld_name, name).Exec_select__rls_manual(); - try { - return rdr.Move_next() ? rdr.Read_int(fld_id) : -1; - } - finally {rdr.Rls();} - } - public static Db_conn Get_conn_or_new(Io_url xowa_root) { - Io_url wmf_data_url = xowa_root.GenSubFil_nest("bin", "any", "xowa", "cfg", "wiki", "wmf_data.sqlite3"); - Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(wmf_data_url); - Db_conn conn = conn_data.Conn(); - if (conn_data.Created()) { - Xowmf_site_tbl site_tbl = new Xowmf_site_tbl(conn); site_tbl.Create_tbl(); - Xowmf_ns_tbl itm_tbl = new Xowmf_ns_tbl(conn); itm_tbl.Create_tbl(); - } - return conn; - } -} -class Xowmf_ns_tbl implements RlsAble { - private static final String tbl_name = "wmf_ns"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); - private final String fld_site_id, fld_id, fld_case, fld_subpages, fld_content, fld_name, fld_canonical; - private final Db_conn conn; - private Db_stmt stmt_insert, stmt_select; - public Xowmf_ns_tbl(Db_conn conn) { - this.conn = conn; - this.fld_site_id = flds.Add_int("site_id"); - this.fld_id = flds.Add_int("ns_id"); - this.fld_case = flds.Add_byte("ns_case"); - this.fld_subpages = flds.Add_byte("ns_subpages"); - this.fld_content = flds.Add_byte("ns_content"); - this.fld_name = flds.Add_str("ns_name", 255); - this.fld_canonical = flds.Add_str("ns_canonical", 255); - conn.Rls_reg(this); - } - public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id, fld_id)));} - public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empy).Exec_delete();} - public void Rls() { - stmt_insert = Db_stmt_.Rls(stmt_insert); - stmt_select = Db_stmt_.Rls(stmt_select); - } - public void Insert(int site_id, int id, byte case_match, boolean subpages, boolean content, byte[] name, byte[] canonical) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - stmt_insert.Clear() - .Val_int(fld_site_id, site_id).Val_int(fld_id, id).Val_byte(fld_case, case_match).Val_bool_as_byte(fld_subpages, subpages).Val_bool_as_byte(fld_content, content) - .Val_bry_as_str(fld_name, name).Val_bry_as_str(fld_canonical, canonical).Exec_insert(); - } - public void Select_all(Xow_ns_mgr rv, int site_id) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_site_id); - Db_rdr rdr = stmt_select.Clear().Crt_int(fld_site_id, site_id).Exec_select__rls_manual(); - rv.Clear(); - try { - while (rdr.Move_next()) { - rv.Add_new - ( rdr.Read_int (fld_id) - , rdr.Read_bry_by_str (fld_name) - , rdr.Read_byte (fld_case) - , Bool_.N); - } - } - finally {rdr.Rls();} - rv.Init(); - } -} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_interwikimap_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_interwikimap_tbl.java new file mode 100644 index 000000000..e16068442 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_interwikimap_tbl.java @@ -0,0 +1,53 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +class Xowmf_interwikimap_tbl implements RlsAble { + private static final String tbl_name = "wmf_interwikimap"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_prefix, fld_local, fld_language, fld_localinterwiki, fld_url, fld_protorel; + private final Db_conn conn; + private Db_stmt stmt_insert; + public Xowmf_interwikimap_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_prefix = flds.Add_str("prefix", 255); + this.fld_local = flds.Add_str("local", 255); + this.fld_language = flds.Add_str("language", 255); + this.fld_localinterwiki = flds.Add_str("localinterwiki", 255); + this.fld_url = flds.Add_str("url", 255); + this.fld_protorel = flds.Add_str("protorel", 255); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + } + public void Insert(int site_id, String prefix, String local, String language, String localinterwiki, String url, String protorel) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_site_id , site_id) + .Val_str(fld_prefix , prefix) + .Val_str(fld_local , local) + .Val_str(fld_language , language) + .Val_str(fld_localinterwiki , localinterwiki) + .Val_str(fld_url , url) + .Val_str(fld_protorel , protorel) + .Exec_insert(); + } +} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_json_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_json_tbl.java new file mode 100644 index 000000000..37f6eb5c3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_json_tbl.java @@ -0,0 +1,51 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +public class Xowmf_json_tbl implements RlsAble { + private static final String tbl_name = "wmf_json"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_text, fld_date; + private final Db_conn conn; + private Db_stmt stmt_insert, stmt_select; + public Xowmf_json_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_date = flds.Add_str("json_date", 20); + this.fld_text = flds.Add_text("json_text"); + conn.Rls_reg(this); + } + public Db_conn Conn() {return conn;} + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + stmt_select = Db_stmt_.Rls(stmt_select); + } + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Insert(int site_id, DateAdp date, byte[] text) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear().Val_int(fld_site_id, site_id).Val_str(fld_date, date.XtoStr_gplx()).Val_bry_as_str(fld_text, text).Exec_insert(); + } + public String Select_text_or_null(int site_id) { + if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_site_id); + Db_rdr rdr = stmt_select.Clear().Crt_int(fld_site_id, site_id).Exec_select__rls_manual(); + try { + return rdr.Move_next() ? rdr.Read_str(fld_text) : null; + } + finally {rdr.Rls();} + } +} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_ns_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_ns_tbl.java new file mode 100644 index 000000000..8d86ab013 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_ns_tbl.java @@ -0,0 +1,64 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +public class Xowmf_ns_tbl implements RlsAble { + private static final String tbl_name = "wmf_ns"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_id, fld_case, fld_subpages, fld_content, fld_name, fld_canonical; + private final Db_conn conn; + private Db_stmt stmt_insert, stmt_select; + public Xowmf_ns_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_id = flds.Add_int("ns_id"); + this.fld_case = flds.Add_byte("ns_case"); + this.fld_subpages = flds.Add_byte("ns_subpages"); + this.fld_content = flds.Add_byte("ns_content"); + this.fld_name = flds.Add_str("ns_name", 255); + this.fld_canonical = flds.Add_str("ns_canonical", 255); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id, fld_id)));} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + stmt_select = Db_stmt_.Rls(stmt_select); + } + public void Insert(int site_id, int id, byte case_match, boolean subpages, boolean content, byte[] name, byte[] canonical) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_site_id, site_id).Val_int(fld_id, id).Val_byte(fld_case, case_match).Val_bool_as_byte(fld_subpages, subpages).Val_bool_as_byte(fld_content, content) + .Val_bry_as_str(fld_name, name).Val_bry_as_str(fld_canonical, canonical).Exec_insert(); + } + public void Select_all(Xow_ns_mgr rv, int site_id) { + if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_site_id); + Db_rdr rdr = stmt_select.Clear().Crt_int(fld_site_id, site_id).Exec_select__rls_manual(); + rv.Clear(); + try { + while (rdr.Move_next()) { + rv.Add_new + ( rdr.Read_int (fld_id) + , rdr.Read_bry_by_str (fld_name) + , rdr.Read_byte (fld_case) + , Bool_.N); + } + } + finally {rdr.Rls();} + rv.Init(); + } +} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_site_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_site_tbl.java new file mode 100644 index 000000000..007f33429 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_site_tbl.java @@ -0,0 +1,60 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +public class Xowmf_site_tbl implements RlsAble { + private static final String tbl_name = "wmf_site"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_id, fld_name; + private final Db_conn conn; + private Db_stmt stmt_insert, stmt_select; + public Xowmf_site_tbl(Db_conn conn) { + this.conn = conn; + this.fld_id = flds.Add_int_pkey("site_id"); + this.fld_name = flds.Add_str("site_name", 255); + conn.Rls_reg(this); + } + public Db_conn Conn() {return conn;} + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "name", fld_name)));} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + stmt_select = Db_stmt_.Rls(stmt_select); + } + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Insert(int id, String name) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear().Val_int(fld_id, id).Val_str(fld_name, name).Exec_insert(); + } + public int Select_id(String name) { + if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_name); + Db_rdr rdr = stmt_select.Clear().Crt_str(fld_name, name).Exec_select__rls_manual(); + try { + return rdr.Move_next() ? rdr.Read_int(fld_id) : -1; + } + finally {rdr.Rls();} + } + public static Db_conn Get_conn_or_new(Io_url xowa_root) { + Io_url wmf_data_url = xowa_root.GenSubFil_nest("bin", "any", "xowa", "cfg", "wiki", "wmf_data.sqlite3"); + Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(wmf_data_url); + Db_conn conn = conn_data.Conn(); + if (conn_data.Created()) { + Xowmf_site_tbl site_tbl = new Xowmf_site_tbl(conn); site_tbl.Create_tbl(); + Xowmf_ns_tbl itm_tbl = new Xowmf_ns_tbl(conn); itm_tbl.Create_tbl(); + } + return conn; + } +} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_specialpagealiases_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_specialpagealiases_tbl.java new file mode 100644 index 000000000..c16e7ccd8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_specialpagealiases_tbl.java @@ -0,0 +1,45 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +class Xowmf_specialpagealiases_tbl implements RlsAble { + private static final String tbl_name = "wmf_specialpagealiases"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_realname, fld_aliases; + private final Db_conn conn; + private Db_stmt stmt_insert; + public Xowmf_specialpagealiases_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_realname = flds.Add_str("realname", 255); + this.fld_aliases = flds.Add_str("aliases", 2048); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + } + public void Insert(int site_id, String realname, String[] aliases) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_site_id , site_id) + .Val_str(fld_realname , realname) + .Val_str(fld_aliases , String_.Concat_with_str("|", aliases)) + .Exec_insert(); + } +} diff --git a/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_statistics_tbl.java b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_statistics_tbl.java new file mode 100644 index 000000000..0d169a2b6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wmfs/data/Xowmf_statistics_tbl.java @@ -0,0 +1,57 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.wmfs.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wmfs.*; +import gplx.dbs.*; +class Xowmf_statistics_tbl implements RlsAble { + private static final String tbl_name = "wmf_statistics"; private final Db_meta_fld_list flds = new Db_meta_fld_list(); + private final String fld_site_id, fld_pages, fld_articles, fld_edits, fld_images, fld_users, fld_activeusers, fld_admins, fld_queued_massmessages; + private final Db_conn conn; + private Db_stmt stmt_insert; + public Xowmf_statistics_tbl(Db_conn conn) { + this.conn = conn; + this.fld_site_id = flds.Add_int("site_id"); + this.fld_pages = flds.Add_long("pages"); + this.fld_articles = flds.Add_long("articles"); + this.fld_edits = flds.Add_long("edits"); + this.fld_images = flds.Add_long("images"); + this.fld_users = flds.Add_long("users"); + this.fld_activeusers = flds.Add_long("activeusers"); + this.fld_admins = flds.Add_long("admins"); + this.fld_queued_massmessages = flds.Add_long("queued_massmessages"); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_name(tbl_name, "main", fld_site_id)));} + public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + } + public void Insert(int site_id, long pages, long articles, long edits, long images, long users, long activeusers, long admins, long queued_massmessages) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_site_id , site_id) + .Val_long(fld_pages , pages) + .Val_long(fld_articles , articles) + .Val_long(fld_edits , edits) + .Val_long(fld_images , images) + .Val_long(fld_users , users) + .Val_long(fld_activeusers , activeusers) + .Val_long(fld_admins , admins) + .Val_long(fld_queued_massmessages , queued_massmessages) + .Exec_insert(); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr_cfg.java b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr_cfg.java index 13c5e7848..f419226a7 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr_cfg.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr_cfg.java @@ -102,7 +102,7 @@ public class Ref_html_wtr_cfg { boolean last = pos == len; byte b = last ? Byte_ascii.Space : raw[pos]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: if (bgn != -1) { // guard against leading ws, or multiple ws; EX: "bos\s\s" or "\s\s" list.Add(Bry_.Mid(raw, bgn, pos)); bgn = -1; diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java index 9db099cfd..b50bb04d9 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java @@ -64,7 +64,7 @@ class Dpl_itm { key_id = Dpl_itm_keys.Parse(src, fld_bgn, fld_end, Dpl_itm_keys.Key_null); if (key_id == Dpl_itm_keys.Key_null) { // unknown key; warn and set pos to end of line; EX: "unknown="; Parse_missing_key(usr_dlg, page_ttl, src, fld_bgn, fld_end); - fld_bgn = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, pos); + fld_bgn = Bry_finder.Find_fwd(src, Byte_ascii.Nl, pos); if (fld_bgn == Bry_.NotFound) loop = false; } else { // known key; set pos to val_bgn @@ -92,7 +92,7 @@ class Dpl_itm { ++pos; } } - private static final byte Dlm_fld = Byte_ascii.Eq, Dlm_row = Byte_ascii.NewLine; + private static final byte Dlm_fld = Byte_ascii.Eq, Dlm_row = Byte_ascii.Nl; public void Parse_cmd(Xowe_wiki wiki, byte key_id, byte[] val) { sub_root.Clear(); val = wiki.Parser().Parse_text_to_wtxt(sub_root, sub_ctx, sub_tkn_mkr, val); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java index dae1b9a48..0c6c1bb64 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java @@ -143,8 +143,8 @@ public class Gallery_itm_parser { cur_byte = src[cur_pos]; switch (cur_byte) { case Byte_ascii.Pipe: return Mode_pipe; - case Byte_ascii.NewLine: return Mode_nl; - case Byte_ascii.CarriageReturn: + case Byte_ascii.Nl: return Mode_nl; + case Byte_ascii.Cr: case Byte_ascii.Space: case Byte_ascii.Tab: ++cur_pos; @@ -209,11 +209,11 @@ public class Gallery_itm_parser { while (cur_pos < end_pos) { cur_byte = src[cur_pos]; switch (cur_byte) { - case Byte_ascii.CarriageReturn: + case Byte_ascii.Cr: case Byte_ascii.Space: case Byte_ascii.Tab: ++cur_pos; continue; // ignore case Byte_ascii.Pipe: return Mode_pipe; - case Byte_ascii.NewLine: return Mode_nl; + case Byte_ascii.Nl: return Mode_nl; default: return Mode_text; } } diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java index 246a0d132..2c2058dac 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java @@ -92,7 +92,7 @@ class Hiero_html_mgr { switch (v[0]) { case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: - case Byte_ascii.Asterisk: case Byte_ascii.Colon: case Byte_ascii.Bang: + case Byte_ascii.Star: case Byte_ascii.Colon: case Byte_ascii.Bang: amp = true; break; } @@ -122,7 +122,7 @@ class Hiero_html_mgr { total += line_max; line_max = 0; continue; - case Byte_ascii.Asterisk: + case Byte_ascii.Star: if (height > line_max) line_max = height; continue; @@ -150,7 +150,7 @@ class Hiero_html_mgr { case Byte_ascii.Colon: temp_bfr.Add_str_a7("\n
"); continue; - case Byte_ascii.Asterisk: + case Byte_ascii.Star: temp_bfr.Add_byte_space(); continue; } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java index 8b13c8e51..47d838d24 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java @@ -55,7 +55,7 @@ class Imap_parser { if (itm_end == src_end) break; itm_bgn = Bry_finder.Trim_fwd_space_tab(src, itm_end + 1, src_end); // trim ws at start, and look for first char if (itm_bgn == src_end) break; // line is entirely ws and terminated by eos; EX: "\n EOS" - itm_end = Bry_finder.Find_fwd_until(src, itm_bgn, src_end, Byte_ascii.NewLine); // look for \n + itm_end = Bry_finder.Find_fwd_until(src, itm_bgn, src_end, Byte_ascii.Nl); // look for \n if (itm_end == Bry_finder.Not_found) itm_end = src_end; // no \n; make EOS = \n itm_end = Bry_finder.Trim_bwd_space_tab(src, itm_end, itm_bgn); // trim any ws at end if (itm_end - itm_bgn == 0) continue; // line is entirely ws; continue; @@ -205,13 +205,13 @@ class Imap_parser { pos = Bry_finder.Trim_fwd_space_tab(src, pos, src_end); // trim ws if (pos == src_end) break; byte b = src[pos]; - if (b == Byte_ascii.NewLine) // new-line; end + if (b == Byte_ascii.Nl) // new-line; end break; else { Object tid_obj = tid_trie.Match_bgn_w_byte(b, src, pos, src_end); if (tid_obj == null) { // not a known imap line; assume continuation of img line and skip to next line imap_ctx.Wiki().Appe().Usr_dlg().Note_many("", "", "image_map extending image over multiple lines; page=~{0} imageMap=~{1}", String_.new_u8(imap_ctx.Cur_page().Ttl().Full_txt()), String_.new_u8(imap_img_src)); - int next_line = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, pos); + int next_line = Bry_finder.Find_fwd(src, Byte_ascii.Nl, pos); if (next_line == Bry_finder.Not_found) next_line = src_end; rv = next_line; pos = rv + 1; diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java index 4b7c3f9d6..c83bc3bfe 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java @@ -38,7 +38,7 @@ public class Xof_math_subst_regy { case Byte_ascii.Curly_end: case Byte_ascii.Brack_end: case Byte_ascii.Underline: - case Byte_ascii.NewLine: // NOTE: needed for \begin\n + case Byte_ascii.Nl: // NOTE: needed for \begin\n break; default: if (itm.WholeWord()) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java index c1809469d..a9c33c7c0 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java @@ -161,7 +161,7 @@ public class Pfunc_expr_shunter { Btrie_fast_mgr rv = Btrie_fast_mgr.ci_ascii_(); // NOTE:ci.ascii:MW_const.en; math and expressions Trie_add(rv, new Ws_tkn(Byte_ascii.Space)); Trie_add(rv, new Ws_tkn(Byte_ascii.Tab)); - Trie_add(rv, new Ws_tkn(Byte_ascii.NewLine)); + Trie_add(rv, new Ws_tkn(Byte_ascii.Nl)); Trie_add(rv, Paren_bgn_tkn._); Trie_add(rv, Paren_end_tkn._); Trie_add(rv, new Func_tkn_plus("+")); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java index 3eeeb290e..d0116b07e 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java @@ -23,7 +23,7 @@ public class Pfunc_if extends Pf_func_base { boolean val_is_empty = true; int val_len = val.length; for (int i = 0; i < val_len; i++) { switch (val[i]) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: break; // ws; continue + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: break; // ws; continue default: val_is_empty = false; i = val_len; break; // non-ws; break loop } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java index 489931581..cfbbf48db 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java @@ -57,7 +57,7 @@ public class Pfunc_iferror extends Pf_func_base { break; case State_nde: // <(?:strong|span|p|div)\s switch (src[pos_nxt]) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: state = State_nde; ++pos_nxt; break; @@ -67,7 +67,7 @@ public class Pfunc_iferror extends Pf_func_base { if (state == State_nde) { valid = true; switch (src[pos - 1]) { - case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: break; default: valid = false; @@ -83,14 +83,14 @@ public class Pfunc_iferror extends Pf_func_base { if (state == State_class) { valid = true; switch (src[pos - 1]) { - case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: break; default: valid = false; break; } switch (src[pos_nxt]) { - case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Quote: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: break; default: valid = false; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java index f7c45f11b..a9c1e8ff8 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java @@ -114,7 +114,7 @@ class Pfunc_tag_kv_bldr { else if (itm_end == -1) itm_end = i; break; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine:// NOTE: do not need to handle ws, b/c argBldr will trim it EX: {{#tag|a| b = c }}; " b " and " c " are automatically trimmed + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl:// NOTE: do not need to handle ws, b/c argBldr will trim it EX: {{#tag|a| b = c }}; " b " and " c " are automatically trimmed break; default: if (itm_bgn == -1) itm_bgn = i; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java index 9c312bd32..7124d3f0a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java @@ -58,7 +58,7 @@ class Pxd_parser { while (cur_pos < src_len) { byte b = src[cur_pos]; switch (b) { - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: if (tkn_type != Pxd_itm_.Tid_ws) MakePrvTkn(cur_pos, Pxd_itm_.Tid_ws); break; // SEE:NOTE_1 for logic case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Colon: case Byte_ascii.Slash: if (tkn_type != b) MakePrvTkn(cur_pos, b); break; diff --git a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java index a3fcb996b..051cced53 100644 --- a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java @@ -23,8 +23,8 @@ public class Poem_nde implements Xox_xnde { int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn(); if (itm_bgn == src.length) return; // NOTE: handle inline where there is no content to parse; EX: if (itm_bgn >= itm_end) return; // NOTE: handle inline where there is no content to parse; EX: ab - if (src[itm_bgn] == Byte_ascii.NewLine) ++itm_bgn; // ignore 1st \n; - if (src[itm_end - 1] == Byte_ascii.NewLine // ignore last \n; + if (src[itm_bgn] == Byte_ascii.Nl) ++itm_bgn; // ignore 1st \n; + if (src[itm_end - 1] == Byte_ascii.Nl // ignore last \n; && itm_end != itm_bgn) --itm_end; // ...if not same as 1st \n; EX: \n Poem_xtn_mgr xtn_mgr = (Poem_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Poem_xtn_mgr.XTN_KEY); byte[] poem_bry = Parse_lines(wiki.Utl__bfr_mkr(), src, itm_bgn, itm_end); @@ -67,7 +67,7 @@ public class Poem_nde implements Xox_xnde { break; } } - int line_end = Bry_finder.Find_fwd(src, Byte_ascii.NewLine, line_bgn, src_end); // find end "\n" + int line_end = Bry_finder.Find_fwd(src, Byte_ascii.Nl, line_bgn, src_end); // find end "\n" if (line_end == Bry_finder.Not_found) line_end = src_end; // no "\n"; use eos; bfr.Add_mid(src, line_bgn, line_end); // add everything from line_bgn to line_end if (indent_enabled) bfr.Add(Html_tag_.Span_rhs); // if "\n:", add
diff --git a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java index e619fdbdf..dbc0c1ae6 100644 --- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java @@ -181,8 +181,8 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { byte[] rslt = Bry_.new_u8(rslt_str); // expect 1st line to be of form "GNU LilyPond 2.16.2" int bgn_pos = Bry_finder.Find_fwd(rslt, Version_find_bgn); if (bgn_pos == Bry_.NotFound) return Version_unknown; bgn_pos += Version_find_bgn.length + 1; // +1 for trailing space - int end_pos = Bry_finder.Find_fwd(rslt, Byte_ascii.NewLine, bgn_pos); if (bgn_pos == Bry_.NotFound) return Version_unknown; - if (rslt[end_pos - 1] == Byte_ascii.CarriageReturn) end_pos = end_pos - 1; + int end_pos = Bry_finder.Find_fwd(rslt, Byte_ascii.Nl, bgn_pos); if (bgn_pos == Bry_.NotFound) return Version_unknown; + if (rslt[end_pos - 1] == Byte_ascii.Cr) end_pos = end_pos - 1; return Bry_.Mid(rslt, bgn_pos, end_pos); } public static final byte Xatr_id_lang_is_abc = 0, Xatr_id_code_is_raw = 1, Xatr_id_output_midi = 2, Xatr_id_output_ogg = 3, Xatr_id_file_midi = 4, Xatr_id_file_ogg = 5; @@ -196,7 +196,7 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { ; private static final byte[] Lang_abc = Bry_.new_a7("ABC") - , Abc_tagline_bgn = Bry_.new_a7("tagline ="), Abc_tagline_end = new byte[] {Byte_ascii.NewLine}, Abc_tagline_repl = Bry_.new_a7("tagline = \"\"\n") + , Abc_tagline_bgn = Bry_.new_a7("tagline ="), Abc_tagline_end = new byte[] {Byte_ascii.Nl}, Abc_tagline_repl = Bry_.new_a7("tagline = \"\"\n") , Version_unknown = Bry_.new_a7("unknown"), Version_find_bgn = Bry_.new_a7("GNU LilyPond") ; static final String GRP_KEY = "xowa.xtns.scores.itm"; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java index 79a8248ba..508a57267 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java @@ -38,8 +38,8 @@ public class Process_send_wtr { byte b = bry[i]; switch (b) { case Byte_ascii.Quote: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(b); break; - case Byte_ascii.NewLine: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_n); break; - case Byte_ascii.CarriageReturn: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_r); break; + case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_n); break; + case Byte_ascii.Cr: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Ltr_r); break; case Byte_ascii.Nil: bfr.Add(CONST_escape_000); break; case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(Byte_ascii.Backslash); break; default: bfr.Add_byte(b); break; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java index ce8496fdc..7e042cf3a 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java @@ -43,8 +43,8 @@ public class Process_stream_rdr { byte b = trg_bry[trg_idx]; if (escaped) { // escaped mode; convert cur byte to appropriate byte switch (b) { - case Byte_ascii.Ltr_n: b = Byte_ascii.NewLine; break; - case Byte_ascii.Ltr_r: b = Byte_ascii.CarriageReturn; break; + case Byte_ascii.Ltr_n: b = Byte_ascii.Nl; break; + case Byte_ascii.Ltr_r: b = Byte_ascii.Cr; break; case Byte_ascii.Backslash: b = Byte_ascii.Backslash; break; default: throw Err_.unhandled(b); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java index cd57d7620..19047358c 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java @@ -55,8 +55,8 @@ class Process_stream_rdr_fxt { b = src_bry[i]; switch (b) { case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash); break; - case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.NewLine); break; - case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.CarriageReturn); break; + case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.Nl); break; + case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.Cr); break; default: throw Err_.unhandled(b); } break; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text.java index 9ac41efa0..aa7198f6c 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text.java @@ -99,7 +99,7 @@ class Scrib_lib_text_ { bfr.Add_byte(Byte_ascii.Brack_bgn).Add_byte(Byte_ascii.Case_upper(b)).Add_byte(b).Add_byte(Byte_ascii.Brack_end); // [Aa] break; case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Pow: case Byte_ascii.Dollar: case Byte_ascii.Percent: case Byte_ascii.Dot: - case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Asterisk: case Byte_ascii.Plus: case Byte_ascii.Question: case Byte_ascii.Dash: + case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Star: case Byte_ascii.Plus: case Byte_ascii.Question: case Byte_ascii.Dash: bfr.Add_byte(Byte_ascii.Percent).Add_byte(b); // regex is '/([a-zA-Z])|([()^$%.\[\]*+?-])/' break; default: // ignore diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java index 4d41df4eb..db7c95b1b 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java @@ -170,7 +170,7 @@ public class Scrib_regx_converter { if (q_flag && i + 1 < len) { byte tmp_b = src[i + 1]; switch (tmp_b) { - case Byte_ascii.Asterisk: + case Byte_ascii.Star: case Byte_ascii.Plus: case Byte_ascii.Question: bfr.Add_byte(tmp_b); @@ -202,7 +202,7 @@ public class Scrib_regx_converter { } private boolean Regx_char(byte b) { switch (b) { - case Byte_ascii.Dot: case Byte_ascii.Slash: case Byte_ascii.Plus: case Byte_ascii.Asterisk: case Byte_ascii.Question: + case Byte_ascii.Dot: case Byte_ascii.Slash: case Byte_ascii.Plus: case Byte_ascii.Star: case Byte_ascii.Question: case Byte_ascii.Pow: case Byte_ascii.Dollar: case Byte_ascii.Eq: case Byte_ascii.Bang: case Byte_ascii.Pipe: case Byte_ascii.Colon: case Byte_ascii.Dash: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Curly_bgn: case Byte_ascii.Curly_end: diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_site_ns_cmd.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_site_ns_cmd.java index 35eb713ce..76f50d9f1 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_site_ns_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_site_ns_cmd.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; +import gplx.xowa.wmfs.*; import gplx.xowa.wmfs.data.*; public class Xob_site_ns_cmd implements Xob_cmd { private final Xob_bldr bldr; public Xob_site_ns_cmd(Xob_bldr bldr, Xow_wiki wiki) {this.bldr = bldr;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java index 90954e499..d0ea029a4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java @@ -72,11 +72,11 @@ class Xob_wbase_json_dump_parser { if (pos < bry_len) b = bry[pos]; else { - b = Byte_ascii.NewLine; + b = Byte_ascii.Nl; pos = bry_len; exit = true; } - if (b == Byte_ascii.NewLine) { + if (b == Byte_ascii.Nl) { byte[] json_bry = Bry_.Mid(bry, page_bgn, pos); if (json_bry.length == 1 && json_bry[0] == Byte_ascii.Brack_end) return -1; if (exit) return -1; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java index 5ee8d09b8..b5ceb236d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.dbs.*; import gplx.xowa.wikis.*; +import gplx.xowa.wmfs.data.*; class Xob_wbase_ns_parser { private final Hash_adp_bry ns_mgr_hash = Hash_adp_bry.cs_(); private final Xowmf_site_tbl tbl_site; private final Xowmf_ns_tbl tbl_itm; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java index 2a256edd7..b16f1c6f0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.json.*; import gplx.ios.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wmfs.data.*; public abstract class Xob_wdata_qid_base extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble { private Json_parser parser; private Xob_wbase_ns_parser ns_parser; private final Xob_wbase_ns_parser_rslt ns_parser_rslt = new Xob_wbase_ns_parser_rslt(); public Xob_wdata_qid_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); return this;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java index 8006318bf..9d8ffd12a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.tdbs.*; import gplx.dbs.*; +import gplx.xowa.wmfs.data.*; public class Xob_wdata_qid_base_tst { private gplx.xowa.bldrs.Xob_fxt fxt; // NOTE: reset memory instance (don't just call clear) @Before public void init() { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java index b1f6c143b..3a227ef25 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java @@ -49,5 +49,5 @@ public class Wdata_external_lang_links_data { } tmp_bfr.Mkr_rls(); } - public static final byte[] Key_sort = new byte[] {Byte_ascii.Asterisk}; + public static final byte[] Key_sort = new byte[] {Byte_ascii.Star}; } diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java index 8c0759c75..7c87a3b0e 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java @@ -23,8 +23,8 @@ public class Xop_xowa_cmd implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn(); if (itm_bgn == src.length) return; // NOTE: handle inline where there is no content to parse; EX: - if (src[itm_bgn] == Byte_ascii.NewLine) ++itm_bgn; // ignore 1st \n; - if (src[itm_end - 1] == Byte_ascii.NewLine) --itm_end; // ignore last \n; + if (src[itm_bgn] == Byte_ascii.Nl) ++itm_bgn; // ignore 1st \n; + if (src[itm_end - 1] == Byte_ascii.Nl) --itm_end; // ignore last \n; byte[] raw = Bry_.Mid(src, itm_bgn, itm_end); byte[] xtn_src = raw; if (wiki.Sys_cfg().Xowa_cmd_enabled()) { // only exec if enabled for wiki diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java index de67c518a..f0ef6cec8 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java @@ -36,8 +36,8 @@ public class Xox_xowa_html_cmd implements Xox_xnde, Xop_xnde_atr_parser { } Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, atr_hash, wiki, src, xnde); int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn(); - if (src[itm_bgn] == Byte_ascii.NewLine) ++itm_bgn; // ignore 1st \n; - // if (src[itm_end - 1] == Byte_ascii.NewLine) --itm_end; // ignore last \n; + if (src[itm_bgn] == Byte_ascii.Nl) ++itm_bgn; // ignore 1st \n; + // if (src[itm_end - 1] == Byte_ascii.Nl) --itm_end; // ignore last \n; byte[] raw = Bry_.Mid(src, itm_bgn, itm_end); if (pos_val == Pos_head_end) ctx.Cur_page().Html_data().Custom_head_end_concat(raw); diff --git a/400_xowa/src/gplx/xowa2/apps/Xoav_wiki_mgr.java b/400_xowa/src/gplx/xowa2/apps/Xoav_wiki_mgr.java index a20845425..28228767f 100644 --- a/400_xowa/src/gplx/xowa2/apps/Xoav_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa2/apps/Xoav_wiki_mgr.java @@ -39,12 +39,12 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { public Xowv_wiki Load_by_fil(Io_url fil) { return Load(Gen_domain_str(fil.NameOnly()), fil.OwnerDir()); } - public Xow_wiki Get_by_key_or_make_2(byte[] key) { + public Xow_wiki Get_by_key_or_make_init_y(byte[] key) { Xow_wiki rv = this.Get_by_domain(key); - // if (rv == null) rv = New_wiki(key); // TODO: must make wiki, but need wiki_url; DATE:2015-05-23 + // if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23 return rv; } - public Xow_wiki Get_by_key_or_make_3(byte[] key) {return Get_by_key_or_make_2(key);} + public Xow_wiki Get_by_key_or_make_init_n(byte[] key) {return Get_by_key_or_make_init_y(key);} public void Load_by_dir(Io_url wiki_root_dir) { Io_url[] wiki_dirs = Io_mgr.I.QueryDir_args(wiki_root_dir).DirOnly_().ExecAsUrlAry(); for (Io_url wiki_dir : wiki_dirs) { diff --git a/400_xowa/src_040_io/gplx/ios/Io_line_rdr.java b/400_xowa/src_040_io/gplx/ios/Io_line_rdr.java index d911a093c..621a6c4b4 100644 --- a/400_xowa/src_040_io/gplx/ios/Io_line_rdr.java +++ b/400_xowa/src_040_io/gplx/ios/Io_line_rdr.java @@ -25,7 +25,7 @@ public class Io_line_rdr { urls[0] = url; url_idx = 0; } - public byte Line_dlm() {return line_dlm;} public Io_line_rdr Line_dlm_(byte v) {line_dlm = v; return this;} private byte line_dlm = Byte_ascii.NewLine; + public byte Line_dlm() {return line_dlm;} public Io_line_rdr Line_dlm_(byte v) {line_dlm = v; return this;} private byte line_dlm = Byte_ascii.Nl; public byte[] Bfr() {return bfr;} private byte[] bfr; public int Bfr_len() {return bfr_len;} private int bfr_len; public byte Bfr_state() {return bfr_state;} private byte bfr_state = Bfr_state_bgn; static final byte Bfr_state_bgn = 0, Bfr_state_mid = 1, Bfr_state_end = 2; @@ -139,7 +139,7 @@ public class Io_line_rdr { if (file_skip_line0) { byte[] stream_bry = Io_mgr.I.LoadFilBry(url); int stream_bry_len = stream_bry.length; - int nl_pos = Bry_finder.Find_fwd(stream_bry, Byte_ascii.NewLine, 0, stream_bry_len); + int nl_pos = Bry_finder.Find_fwd(stream_bry, Byte_ascii.Nl, 0, stream_bry_len); if (nl_pos == Bry_.NotFound) stream_bry = Bry_.Empty; else diff --git a/400_xowa/src_060_utl/gplx/Url_encoder.java b/400_xowa/src_060_utl/gplx/Url_encoder.java index e34eefc9f..cbe71b098 100644 --- a/400_xowa/src_060_utl/gplx/Url_encoder.java +++ b/400_xowa/src_060_utl/gplx/Url_encoder.java @@ -208,7 +208,7 @@ public class Url_encoder implements Url_encoder_interface { rv.Itms_ini(Byte_ascii.Percent); mediawiki_base(rv, true); rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); - rv.Itms_raw_same_many(Byte_ascii.Semic, Byte_ascii.At, Byte_ascii.Dollar, Byte_ascii.Bang, Byte_ascii.Asterisk + rv.Itms_raw_same_many(Byte_ascii.Semic, Byte_ascii.At, Byte_ascii.Dollar, Byte_ascii.Bang, Byte_ascii.Star , Byte_ascii.Paren_bgn, Byte_ascii.Paren_end, Byte_ascii.Comma, Byte_ascii.Slash, Byte_ascii.Colon , Byte_ascii.Hash// NOTE: not part of wfUrlEncode; not sure where this is specified; needed for A#b ); diff --git a/400_xowa/src_100_app/gplx/xowa/Xoa_url_alias_mgr.java b/400_xowa/src_100_app/gplx/xowa/Xoa_url_alias_mgr.java index 62e07b3b1..6e223ec73 100644 --- a/400_xowa/src_100_app/gplx/xowa/Xoa_url_alias_mgr.java +++ b/400_xowa/src_100_app/gplx/xowa/Xoa_url_alias_mgr.java @@ -35,7 +35,7 @@ along with this program. If not, see . // Xol_csv_parser csv_parser = Xol_csv_parser._; // while (true) { // boolean last = pos == len; -// byte b = last ? Byte_ascii.NewLine : src[pos]; +// byte b = last ? Byte_ascii.Nl : src[pos]; // switch (b) { // case Byte_ascii.Pipe: // switch (fld_idx) { @@ -45,7 +45,7 @@ along with this program. If not, see . // fld_bgn = pos + 1; // ++fld_idx; // break; -// case Byte_ascii.NewLine: +// case Byte_ascii.Nl: // if (fld_bgn < pos) { // guard against trailing new lines // wiki = csv_parser.Load(src, fld_bgn, pos); // hash.Add_bry_obj(alias, wiki); diff --git a/400_xowa/src_100_app/gplx/xowa/Xoad_wtr_dump.java b/400_xowa/src_100_app/gplx/xowa/Xoad_wtr_dump.java index 275d54f59..9a7f700df 100644 --- a/400_xowa/src_100_app/gplx/xowa/Xoad_wtr_dump.java +++ b/400_xowa/src_100_app/gplx/xowa/Xoad_wtr_dump.java @@ -93,7 +93,7 @@ class Xoad_dump_itm { for (int i = bgn; i < end; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.NewLine: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; + case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; case Byte_ascii.Tab: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_t); break; default: bfr.Add_byte(b); break; } diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java b/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java index 262a9700b..54cf8b7cf 100644 --- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java +++ b/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java @@ -248,7 +248,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { } private static final String Invk_add_alias_bulk = "add_alias_bulk", Invk_get_by_id_or_new = "get_by_id_or_new"; public static final String Invk_load = "load", Invk_clear = "clear"; private void Exec_add_alias_bulk(byte[] raw) { - byte[][] lines = Bry_.Split(raw, Byte_ascii.NewLine); + byte[][] lines = Bry_.Split(raw, Byte_ascii.Nl); int lines_len = lines.length; for (int i = 0; i < lines_len; i++) { byte[] line = lines[i]; diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java b/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java index d1cd14e9b..c2bbe9e71 100644 --- a/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java @@ -265,7 +265,6 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble { private void Html__hdump_enabled_(boolean v) { this.html_mgr__hdump_enabled = v; if (html_mgr__hdump_enabled) { - // if (db_mgr.Tid() == Xodb_mgr_txt.Tid_txt) this.Db_mgr_create_as_sql(); Xowd_html_tbl.Assert_col__page_html_db_id(Db_mgr_as_sql().Core_data_mgr()); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages html_mgr__hdump_rdr.Init_by_db(this.Data__core_mgr()); html_mgr__hdump_wtr.Init_by_db(this.Data__core_mgr()); diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr_tst.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr_tst.java index 69a23674e..6bd349f31 100644 --- a/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr_tst.java +++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr_tst.java @@ -34,7 +34,7 @@ class Xob_reg_wtr { .Add_int_variable(fil_count++).Add_byte(Byte_ascii.Pipe) .Add(bgn).Add_byte(Byte_ascii.Pipe) .Add(end).Add_byte(Byte_ascii.Pipe) - .Add_int_variable(itm_count).Add_byte(Byte_ascii.NewLine); + .Add_int_variable(itm_count).Add_byte(Byte_ascii.Nl); } public void Flush(Io_url url) { Io_mgr.I.SaveFilBfr(url, bfr); diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java b/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java index fbf1f1525..2dac5d10d 100644 --- a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java +++ b/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java @@ -22,8 +22,8 @@ public class Xol_csv_parser { for (int i = 0; i < len; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.CarriageReturn: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_r); break; - case Byte_ascii.NewLine: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; + case Byte_ascii.Cr: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_r); break; + case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; case Byte_ascii.Tab: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_t); break; case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Backslash); break; case Byte_ascii.Pipe: bfr.Add(Bry_pipe); break; @@ -42,8 +42,8 @@ public class Xol_csv_parser { byte nxt_byte = src[nxt_pos]; switch (nxt_byte) { case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash); break; - case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.CarriageReturn); break; - case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.NewLine); break; + case Byte_ascii.Ltr_r: bfr.Add_byte(Byte_ascii.Cr); break; + case Byte_ascii.Ltr_n: bfr.Add_byte(Byte_ascii.Nl); break; case Byte_ascii.Ltr_t: bfr.Add_byte(Byte_ascii.Tab); break; case Byte_ascii.Ltr_u: int utf_len = 1; diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java b/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java index cd36ca49d..8bcc96871 100644 --- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java +++ b/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java @@ -38,7 +38,7 @@ public class Xol_lang_ { case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4: case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: return Char_tid_num; - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: case Byte_ascii.CarriageReturn: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: return Char_tid_ws; default: return Char_tid_misc; diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java b/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java index 233082d42..a9cc4ab1e 100644 --- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java +++ b/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java @@ -24,14 +24,14 @@ public class Xol_lang_srl { List_adp rv = List_adp_.new_(); Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: cur_id = Bry_.Xto_int_or(src, fld_bgn, pos, Int_.MinValue); if (cur_id == Int_.MinValue) throw Err_mgr._.fmt_(GRP_KEY, "invalid_id", "invalid_id: ~{0}", String_.new_u8(src, fld_bgn, pos)); fld_bgn = pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: byte[] cur_name = csv_parser.Load(src, fld_bgn, pos); Xow_ns ns = new Xow_ns(cur_id, Xow_ns_case_.Id_1st, cur_name, false); rv.Add(ns); @@ -53,7 +53,7 @@ public class Xol_lang_srl { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -77,7 +77,7 @@ public class Xol_lang_srl { cur_words.Add(word); fld_bgn = pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (cur_words.Count() > 0) { // guard against blank line wiping out entries; EX: "toc|0|toc1\n\n"; 2nd \n will get last grp and make 0 entries int cur_id = Xol_kwd_grp_.Id_by_bry(cur_key); if (cur_id == -1) throw Err_mgr._.fmt_(GRP_KEY, "invalid_keyword", "key does not have id: ~{0}", cur_id); Xol_kwd_grp grp = keyword_mgr.Get_or_new(cur_id); @@ -101,13 +101,13 @@ public class Xol_lang_srl { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: cur_key = csv_parser.Load(src, fld_bgn, pos); fld_bgn = pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: byte[] cur_val = csv_parser.Load(src, fld_bgn, pos); Xol_msg_itm itm = msg_mgr.Itm_by_key_or_new(cur_key).Src_(Xol_msg_itm.Src_lang); // NOTE: this proc should only be called when loading lang.gfs Xol_msg_itm_.update_val_(itm, cur_val); @@ -127,13 +127,13 @@ public class Xol_lang_srl { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: cur_key = csv_parser.Load(src, fld_bgn, pos); fld_bgn = pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: byte[] cur_val_raw = csv_parser.Load(src, fld_bgn, pos); byte[][] cur_vals = Bry_.Split(cur_val_raw, Byte_ascii.Tilde); special_mgr.Add(cur_key, cur_vals); diff --git a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java index ff53cc85e..40dba3f83 100644 --- a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java +++ b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java @@ -20,7 +20,7 @@ import gplx.xowa.files.*; class Xofo_lnki_parser extends Obj_ary_parser_base { Number_parser parser = new Number_parser(); Xofo_lnki[] ary; int ary_idx; public Xofo_lnki[] Parse_ary(byte[] bry, int bgn, int end) { - Parse_core(bry, bgn, end, Byte_ascii.Semic, Byte_ascii.NewLine); + Parse_core(bry, bgn, end, Byte_ascii.Semic, Byte_ascii.Nl); return ary; } @Override protected void Ary_len_(int v) { diff --git a/400_xowa/src_200_bldr/gplx/xowa/Io_sort_cmd_ns.java b/400_xowa/src_200_bldr/gplx/xowa/Io_sort_cmd_ns.java index eae795c8f..6419f3e18 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Io_sort_cmd_ns.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Io_sort_cmd_ns.java @@ -50,7 +50,7 @@ public class Io_sort_cmd_ns implements Io_make_cmd { .Add_int_variable(fil_count++).Add_byte(Byte_ascii.Pipe) .Add_bfr_and_preserve(key_bfr_0).Add_byte(Byte_ascii.Pipe) .Add_bfr_and_preserve(key_bfr_n).Add_byte(Byte_ascii.Pipe) - .Add_int_variable(itm_count).Add_byte(Byte_ascii.NewLine); + .Add_int_variable(itm_count).Add_byte(Byte_ascii.Nl); itm_count = 0; key_bfr_0.Clear(); if (fil_wtr.Fil_idx() % 10 == 0) diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_make_cmd_site.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_make_cmd_site.java index a57d7c814..59e1c6786 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_make_cmd_site.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_make_cmd_site.java @@ -125,7 +125,7 @@ public class Xob_make_cmd_site implements Io_make_cmd { .Add_int_variable(fil_count++).Add_byte(Byte_ascii.Pipe) .Add_bfr_and_preserve(reg_key_0).Add_byte(Byte_ascii.Pipe) .Add_bfr_and_preserve(reg_key_n).Add_byte(Byte_ascii.Pipe) - .Add_int_variable(itm_count).Add_byte(Byte_ascii.NewLine); + .Add_int_variable(itm_count).Add_byte(Byte_ascii.Nl); itm_count = 0; reg_key_0.Clear(); } diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_stat_type.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_stat_type.java index 70b9c8b91..c18c6184e 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_stat_type.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_stat_type.java @@ -28,7 +28,7 @@ public class Xob_stat_type { Xob_stat_itm itm = (Xob_stat_itm)regy.Get_at(i); sb.Add(Xotdb_dir_info_.Tid_name(tid)).Add(Xob_stat_itm.Dlm); itm.XtoStr(sb); - sb.Add(Byte_ascii.NewLine); + sb.Add(Byte_ascii.Nl); } } Ordered_hash regy = Ordered_hash_.new_(); diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file.java index 3f0802009..550c029fb 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file.java @@ -98,7 +98,7 @@ public class Xob_xdat_file { if (insert) bfr.Add(new_itm); itm_0_bgn = (ary_len * Len_idx_itm) + Len_itm_dlm; src = bfr.Xto_bry_and_clear(); - } static final byte Dlm_hdr_fld = Byte_ascii.Pipe, Dlm_row = Byte_ascii.NewLine; + } static final byte Dlm_hdr_fld = Byte_ascii.Pipe, Dlm_row = Byte_ascii.Nl; public void Save(Io_url url) { Bry_bfr bfr = Bry_bfr.new_(); Srl_save_bry(bfr); @@ -153,7 +153,7 @@ public class Xob_xdat_file { while (true) { slot_bgn = itm_count * Len_idx_itm; if (slot_bgn >= src_len) break; - if (src[slot_bgn] == Byte_ascii.NewLine) break; + if (src[slot_bgn] == Byte_ascii.Nl) break; int tmp_val = Base85_utl.XtoIntByAry(src, slot_bgn, slot_bgn + Offset_base85); slot_new = slot_old + tmp_val; int new_idx = itm_count + 1; @@ -186,7 +186,7 @@ public class Xob_xdat_file { int row_len = row.length + dlm_len; bfr.Add_base85_len_5(row_len).Add_byte(Byte_ascii.Pipe); } - bfr.Add_byte(Byte_ascii.NewLine); + bfr.Add_byte(Byte_ascii.Nl); for (int i = 1; i < rows_len; i++) { // i=1; skip 1st row (which is empty header) byte[] row = rows[i]; bfr.Add(row); diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_tst.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_tst.java index e501da5f0..3894de3d5 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_tst.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_tst.java @@ -99,7 +99,7 @@ public class Xob_xdat_file_tst { Tfds.Eq_str_lines(expd, actl); } private void tst_Find(Xob_xdat_file rdr, String find, int expd, boolean exact) { - rdr.Find(itm, Bry_.new_u8(find), 2, Byte_ascii.NewLine, exact); + rdr.Find(itm, Bry_.new_u8(find), 2, Byte_ascii.Nl, exact); int id = Bry_.Xto_int_or(Bry_.Mid(itm.Itm_bry(), 0, 1), -1); Tfds.Eq(expd, id); } diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr.java index 84f708d5f..68277eb3c 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr.java @@ -73,7 +73,7 @@ public class Xob_xdat_file_wtr { idx_bry[idx_bry_pos + Len_base85] = Dlm_fld; prv_pos = cur_pos; } - idx_bry[idx_bry_len - 1] = Byte_ascii.NewLine; + idx_bry[idx_bry_len - 1] = Byte_ascii.Nl; wtr.Write(idx_bry, 0, idx_bry_len); } // public void Flush(Gfo_usr_dlg usr_dlg) { @@ -102,7 +102,7 @@ public class Xob_xdat_file_wtr { // idx_bry[idx_bry_pos + Len_base85] = Dlm_idx; // prv_pos = cur_pos; // } -// idx_bry[idx_bry_len - 1] = Byte_ascii.NewLine; +// idx_bry[idx_bry_len - 1] = Byte_ascii.Nl; // stream.Write(idx_bry, 0, idx_bry_len); // } static final int Len_idx_itm = 6, Len_base85 = 5; diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr_tst.java b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr_tst.java index b42f8a175..cf4f4b1e4 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr_tst.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xob_xdat_file_wtr_tst.java @@ -42,7 +42,7 @@ public class Xob_xdat_file_wtr_tst { Tfds.Eq(expd, String_.new_u8(wtr.Bfr().Bfr(), 0, wtr.Bfr().Len())); } private void tst_Add_idx(Xob_xdat_file_wtr wtr, int expd) { - wtr.Add_idx(Byte_ascii.NewLine); + wtr.Add_idx(Byte_ascii.Nl); Tfds.Eq(expd, wtr.Idx()[wtr.Idx_pos() - 1]); } private void tst_Flush(Xob_xdat_file_wtr wtr, String expd) { diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xobdc_utl.java b/400_xowa/src_200_bldr/gplx/xowa/Xobdc_utl.java index cd71949a3..56158f61e 100644 --- a/400_xowa/src_200_bldr/gplx/xowa/Xobdc_utl.java +++ b/400_xowa/src_200_bldr/gplx/xowa/Xobdc_utl.java @@ -31,7 +31,7 @@ class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1 } public void Fil_end() { bfr.Add_mid(prv_key, 0, prv_key_len).Add_byte(Byte_ascii.Pipe) - .Add_int_variable(itm_count).Add_byte(Byte_ascii.NewLine); + .Add_int_variable(itm_count).Add_byte(Byte_ascii.Nl); itm_count = 0; } public void Flush(Io_url fil) { diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java b/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java index 2cf2eaebc..3384badb4 100644 --- a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java +++ b/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java @@ -61,7 +61,7 @@ public class Cfg_nde_root implements GfoInvkAble { List_adp cmds = List_adp_.new_(); while (true) { boolean last = src_pos == src_len; - byte b = last ? Byte_ascii.NewLine : src[src_pos]; + byte b = last ? Byte_ascii.Nl : src[src_pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -84,7 +84,7 @@ public class Cfg_nde_root implements GfoInvkAble { ++fld_idx; fld_bgn = src_pos + 1; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (!(fld_idx == 0 && fld_bgn == src_pos)) { Cfg_nde_cmd cmd = null; switch (cur_cmd) { diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Gfs_bldr.java b/400_xowa/src_210_bldr_core/gplx/xowa/Gfs_bldr.java index 90960bab0..49dd1535f 100644 --- a/400_xowa/src_210_bldr_core/gplx/xowa/Gfs_bldr.java +++ b/400_xowa/src_210_bldr_core/gplx/xowa/Gfs_bldr.java @@ -58,8 +58,8 @@ public class Gfs_bldr { public Gfs_bldr Add_paren_end() {bfr.Add_byte(Byte_ascii.Paren_end); return this;} public Gfs_bldr Add_quote_xtn_bgn() {bfr.Add(Bry_xquote_bgn); return this;} public Gfs_bldr Add_quote_xtn_end() {bfr.Add(Bry_xquote_end); return this;} - public Gfs_bldr Add_quote_xtn_apos_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.NewLine); return this;} - public Gfs_bldr Add_quote_xtn_apos_end() {bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic).Add_byte(Byte_ascii.NewLine); return this;} + public Gfs_bldr Add_quote_xtn_apos_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Nl); return this;} + public Gfs_bldr Add_quote_xtn_apos_end() {bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic).Add_byte(Byte_ascii.Nl); return this;} public Gfs_bldr Add_quote_0() {bfr.Add_byte(Byte_ascii.Apos); return this;} public Gfs_bldr Add_term_nl() {bfr.Add(Bry_semic_nl); return this;} public Gfs_bldr Add_eq_str(String k, byte[] v) { diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Sql_file_parser.java b/400_xowa/src_210_bldr_core/gplx/xowa/Sql_file_parser.java index 199f11ada..b7c8b59e8 100644 --- a/400_xowa/src_210_bldr_core/gplx/xowa/Sql_file_parser.java +++ b/400_xowa/src_210_bldr_core/gplx/xowa/Sql_file_parser.java @@ -88,7 +88,7 @@ public class Sql_file_parser { break; case Mode_row_end: switch (b) { - case Byte_ascii.NewLine: break; // ignore \n + case Byte_ascii.Nl: break; // ignore \n case Byte_ascii.Comma: mode = Mode_row_bgn; break; case Byte_ascii.Semic: mode = Mode_sql_bgn; break; default: throw Err_.unhandled(mode); @@ -100,7 +100,7 @@ public class Sql_file_parser { case Byte_ascii.Apos: mode = Mode_quote; break; // NOTE: never escape apos by doubling; will fail for empty fields; EX: ", '', ''"; DATE:2013-07-06 case Byte_ascii.Backslash: mode_prv = mode; mode = Mode_escape; break; default: val_bfr.Add_byte(b); break; - case Byte_ascii.Space: case Byte_ascii.NewLine: break; + case Byte_ascii.Space: case Byte_ascii.Nl: break; case Byte_ascii.Comma: Commit_fld(fld_idx++, val_bfr, fil_bfr, data); break; @@ -137,7 +137,7 @@ public class Sql_file_parser { finally {rdr.Rls();} } private void Commit_row(Gfo_usr_dlg usr_dlg, Bry_bfr fil_bfr) { - fil_bfr.Add_byte(Byte_ascii.NewLine); + fil_bfr.Add_byte(Byte_ascii.Nl); if (fil_bfr.Len() > trg_len) { Io_url trg_fil = trg_fil_gen.Nxt_url(); usr_dlg.Prog_one(GRP_KEY, "make", "making ~{0}", trg_fil.NameAndExt()); diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Sql_fld_mgr.java b/400_xowa/src_210_bldr_core/gplx/xowa/Sql_fld_mgr.java index de3f2fca2..c5e1381e2 100644 --- a/400_xowa/src_210_bldr_core/gplx/xowa/Sql_fld_mgr.java +++ b/400_xowa/src_210_bldr_core/gplx/xowa/Sql_fld_mgr.java @@ -26,15 +26,15 @@ class Sql_fld_mgr { public Sql_fld_mgr Parse(byte[] raw) { hash.Clear(); int bgn = Bry_finder.Find_fwd(raw, Tkn_create_table); if (bgn == Bry_.NotFound) throw Err_.new_("could not find 'CREATE TABLE'"); - bgn = Bry_finder.Find_fwd(raw, Byte_ascii.NewLine, bgn); if (bgn == Bry_.NotFound) throw Err_.new_("could not find new line after 'CREATE TABLE'"); + bgn = Bry_finder.Find_fwd(raw, Byte_ascii.Nl, bgn); if (bgn == Bry_.NotFound) throw Err_.new_("could not find new line after 'CREATE TABLE'"); bgn += Int_.Const_position_after_char; int end = Bry_finder.Find_fwd(raw, Tkn_unique_index); if (end == Bry_.NotFound) throw Err_.new_("could not find 'UNIQUE KEY'"); - end = Bry_finder.Find_bwd(raw, Byte_ascii.NewLine, end); if (bgn == Bry_.NotFound) throw Err_.new_("could not find new line before 'UNIQUE KEY'"); + end = Bry_finder.Find_bwd(raw, Byte_ascii.Nl, end); if (bgn == Bry_.NotFound) throw Err_.new_("could not find new line before 'UNIQUE KEY'"); Parse_lines(Bry_.Mid(raw, bgn, end)); return this; } private void Parse_lines(byte[] raw) { - byte[][] lines = Bry_.Split(raw, Byte_ascii.NewLine); + byte[][] lines = Bry_.Split(raw, Byte_ascii.Nl); int lines_len = lines.length; int fld_idx = 0; for (int i = 0; i < lines_len; i++) { diff --git a/400_xowa/src_240_install/gplx/xowa/Xow_cfg_wiki_core.java b/400_xowa/src_240_install/gplx/xowa/Xow_cfg_wiki_core.java index a1ac1b1ac..1dba4bfc2 100644 --- a/400_xowa/src_240_install/gplx/xowa/Xow_cfg_wiki_core.java +++ b/400_xowa/src_240_install/gplx/xowa/Xow_cfg_wiki_core.java @@ -54,7 +54,7 @@ public class Xow_cfg_wiki_core { Xol_csv_parser csv_parser = Xol_csv_parser._; while (true) { boolean last = pos == len; - byte b = last ? Byte_ascii.NewLine : src[pos]; + byte b = last ? Byte_ascii.Nl : src[pos]; switch (b) { case Byte_ascii.Pipe: switch (fld_idx) { @@ -65,7 +65,7 @@ public class Xow_cfg_wiki_core { fld_bgn = pos + 1; ++fld_idx; break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: if (pos > row_bgn) { // guard against blank lines cur_name = csv_parser.Load(src, fld_bgn, pos); ns_mgr.Add_new(cur_id, cur_name, cur_case_match, false); diff --git a/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java b/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java index c2bd0a5e5..60fe67c03 100644 --- a/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java +++ b/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java @@ -155,11 +155,11 @@ public class Xoa_url_parser { if ( xwiki_itm != null // null-check && Bry_.Eq(xwiki_itm.Domain_bry(), wiki_bry)// check that xwiki.domain == wiki; avoids false lang matches like "so/page" or "C/page"; EX: "fr.wikipedia.org" vs "fr"; ca.s:So/Natura_del_so; DATE:2014-04-26; PAGE:no.b:C/Variabler; DATE:2014-10-14 ) - wiki = app.Wiki_mgri().Get_by_key_or_make_3(xwiki_itm.Domain_bry()); + wiki = app.Wiki_mgri().Get_by_key_or_make_init_n(xwiki_itm.Domain_bry()); } if (rv.Page_bry() == null) { // 1 seg; EX: "Earth"; "fr.wikipedia.org" if (wiki != null) { // wiki_bry is known wiki; EX: "fr.wikipedia.org" - wiki = app.Wiki_mgri().Get_by_key_or_make_3(wiki_bry); // call get again, but this time "make" it + wiki = app.Wiki_mgri().Get_by_key_or_make_init_n(wiki_bry); // call get again, but this time "make" it page_is_main_page = true; } else { // otherwise, assume page name @@ -184,7 +184,7 @@ public class Xoa_url_parser { if (colon_pos != Bry_.NotFound) { // alias found Xow_xwiki_itm xwiki = cur_wiki.Xwiki_mgr().Get_by_mid(page_bry, 0, colon_pos); if (xwiki != null) { - wiki = app.Wiki_mgri().Get_by_key_or_make_3(xwiki.Domain_bry()); + wiki = app.Wiki_mgri().Get_by_key_or_make_init_n(xwiki.Domain_bry()); page_bry = Bry_.Mid(page_bry, colon_pos + 1, page_bry.length); if (rv.Segs_ary().length == 0) // handle xwiki without segs; EX: commons:Commons:Media_of_the_day; DATE:2014-02-19 rv.Segs_ary_(new byte[][] {Bry_wiki_name, page_bry}); // create segs of "/wiki/Page" @@ -219,7 +219,7 @@ public class Xoa_url_parser { if (ttl != null) { // can still be empty; EX: "en.wikipedia.org" Xow_xwiki_itm lang_xwiki = ttl.Wik_itm(); if (lang_xwiki != null && lang_xwiki.Type_is_xwiki_lang(wiki.Lang().Lang_id())) { // format of http://en.wikipedia.org/wiki/fr:A - wiki = app.Wiki_mgri().Get_by_key_or_make_3(lang_xwiki.Domain_bry()); + wiki = app.Wiki_mgri().Get_by_key_or_make_init_n(lang_xwiki.Domain_bry()); page_bry = ttl.Page_txt(); } } @@ -233,7 +233,7 @@ public class Xoa_url_parser { if (xwiki == null) rv = app.User().Wikii(); else - rv = app.Wiki_mgri().Get_by_key_or_make_3(xwiki.Domain_bry()); + rv = app.Wiki_mgri().Get_by_key_or_make_init_n(xwiki.Domain_bry()); return rv; } private static byte[] Parse_url__combine(Bry_bfr_mkr bry_bfr_mkr, byte[] wiki, byte[][] segs, byte[] page) { diff --git a/400_xowa/src_400_parser/gplx/xowa/Xoa_ttl.java b/400_xowa/src_400_parser/gplx/xowa/Xoa_ttl.java index 9f097aa80..c6f4c72a6 100644 --- a/400_xowa/src_400_parser/gplx/xowa/Xoa_ttl.java +++ b/400_xowa/src_400_parser/gplx/xowa/Xoa_ttl.java @@ -194,8 +194,8 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. qarg_bgn = -1; // always reset qarg; handles ttls which have question_mark which are premptively assumed to be qarg; PAGE:en.w:Portal:Organized_Labour/Did_You_Know?/1 DATE:2014-06-08 } break; // flag last leaf_bgn - case Byte_ascii.NewLine: // NOTE: for now, treat nl just like space; not sure if it should accept "a\nb" or "\nab"; need to handle trailing \n for "Argentina\n\n" in {{Infobox settlement|pushpin_map=Argentina|pushpin_label_position=|pushpin_map_alt=|pushpin_map_caption=Location of Salta in Argentina}}; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.CarriageReturn: // added \t, \r; DATE:2013-03-27 + case Byte_ascii.Nl: // NOTE: for now, treat nl just like space; not sure if it should accept "a\nb" or "\nab"; need to handle trailing \n for "Argentina\n\n" in {{Infobox settlement|pushpin_map=Argentina|pushpin_label_position=|pushpin_map_alt=|pushpin_map_caption=Location of Salta in Argentina}}; + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Cr: // added \t, \r; DATE:2013-03-27 case Byte_ascii.Underline:if (ltr_bgn != -1) add_ws = true; ++cur;//cur = ttlTrie.Match_pos(); continue; // only mark add_ws if ltr_seen; this ignores ws at bgn; also, note "continue" case Byte_ascii.Question: @@ -411,7 +411,7 @@ class Xoa_ttl_trie { rv.Add(Byte_ascii.Underline , Byte_obj_val.new_(Id_underline)); rv.Add(Byte_ascii.Amp , Byte_obj_val.new_(Id_amp)); rv.Add(Xop_comm_lxr.Bgn_ary , Byte_obj_val.new_(Id_comment_bgn)); - rv.Add(Byte_ascii.NewLine , Byte_obj_val.new_(Id_newLine)); + rv.Add(Byte_ascii.Nl , Byte_obj_val.new_(Id_newLine)); rv.Add(Byte_ascii.Brack_bgn , Byte_obj_val.new_(Id_invalid)); rv.Add(Byte_ascii.Curly_bgn , Byte_obj_val.new_(Id_invalid)); return rv; diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_ctx_.java b/400_xowa/src_400_parser/gplx/xowa/Xop_ctx_.java index cc4efdbe7..7bd824481 100644 --- a/400_xowa/src_400_parser/gplx/xowa/Xop_ctx_.java +++ b/400_xowa/src_400_parser/gplx/xowa/Xop_ctx_.java @@ -23,7 +23,7 @@ public class Xop_ctx_ { int src_len = src.length; if (end > src_len) end = src_len; byte[] rv = Bry_.Mid(src, bgn, end); - rv = Bry_.Replace(rv, Byte_ascii.NewLine, Byte_ascii.Tab); // change nl to tab so text editor will show one warning per line + rv = Bry_.Replace(rv, Byte_ascii.Nl, Byte_ascii.Tab); // change nl to tab so text editor will show one warning per line return String_.new_u8(rv); } } \ No newline at end of file diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_lxr_misc.java b/400_xowa/src_400_parser/gplx/xowa/Xop_lxr_misc.java index 4af06b4a4..ba47a5643 100644 --- a/400_xowa/src_400_parser/gplx/xowa/Xop_lxr_misc.java +++ b/400_xowa/src_400_parser/gplx/xowa/Xop_lxr_misc.java @@ -27,7 +27,7 @@ class Xop_colon_lxr implements Xop_lxr { int prv_pos = cur_pos -1 ; if ( ctx.Cur_tkn_tid() != Xop_tkn_itm_.Tid_lnki // ignore if inside link && prv_pos > 0 - && src[prv_pos] != Byte_ascii.NewLine // only consider ":" which are not preceded by \n; DATE:2014-07-11 TODO: emulate Parser.php|findColonNoLinks which does much more logic to see if ";a:b" construct should apply + && src[prv_pos] != Byte_ascii.Nl // only consider ":" which are not preceded by \n; DATE:2014-07-11 TODO: emulate Parser.php|findColonNoLinks which does much more logic to see if ";a:b" construct should apply ) { listCtx.Dd_chk_(false); return listCtx.MakeTkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_parser.java b/400_xowa/src_400_parser/gplx/xowa/Xop_parser.java index 24b77c135..bc81f87c8 100644 --- a/400_xowa/src_400_parser/gplx/xowa/Xop_parser.java +++ b/400_xowa/src_400_parser/gplx/xowa/Xop_parser.java @@ -116,7 +116,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ ctx.Parse_tid_(parse_tid_old); } public int Parse_to_src_end(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src, Btrie_fast_mgr trie, int pos, int len) { - byte b = pos == -1 ? Byte_ascii.NewLine : src[pos]; // simulate newLine at bgn of src; needed for lxrs which rely on \n (EX: "=a=") + byte b = pos == -1 ? Byte_ascii.Nl : src[pos]; // simulate newLine at bgn of src; needed for lxrs which rely on \n (EX: "=a=") int txt_bgn = pos == -1 ? 0 : pos; Xop_tkn_itm txt_tkn = null; while (true) { Object o = trie.Match_bgn_w_byte(b, src, pos, len); @@ -137,7 +137,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ return pos; } public int Parse_to_stack_end(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src, int src_len, Btrie_fast_mgr trie, int pos, int end) { - byte b = pos == -1 ? Byte_ascii.NewLine : src[pos]; // simulate newLine at bgn of src; needed for lxrs which rely on \n (EX: "=a=") + byte b = pos == -1 ? Byte_ascii.Nl : src[pos]; // simulate newLine at bgn of src; needed for lxrs which rely on \n (EX: "=a=") int txt_bgn = pos == -1 ? 0 : pos; Xop_tkn_itm txt_tkn = null; Xop_lxr lxr = null; while (true) { diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_redirect_mgr.java b/400_xowa/src_400_parser/gplx/xowa/Xop_redirect_mgr.java index 625a33573..6d7d928ca 100644 --- a/400_xowa/src_400_parser/gplx/xowa/Xop_redirect_mgr.java +++ b/400_xowa/src_400_parser/gplx/xowa/Xop_redirect_mgr.java @@ -92,7 +92,7 @@ class Xop_redirect_mgr_ { public static int Get_kwd_end_or_end(byte[] src, int bgn, int end) { // get end of kwd for (int i = bgn; i < end; ++i) { switch (src[i]) { - case Byte_ascii.NewLine: case Byte_ascii.Space: case Byte_ascii.Tab: + case Byte_ascii.Nl: case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Brack_bgn: case Byte_ascii.Colon: return i; // ASSUME: kwd does not have these chars default: @@ -105,7 +105,7 @@ class Xop_redirect_mgr_ { boolean colon_null = true; for (int i = bgn; i < end; ++i) { switch (src[i]) { - case Byte_ascii.NewLine: case Byte_ascii.Space: case Byte_ascii.Tab: break; // skip all ws + case Byte_ascii.Nl: case Byte_ascii.Space: case Byte_ascii.Tab: break; // skip all ws case Byte_ascii.Colon: // allow 1 colon if (colon_null) colon_null = false; diff --git a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_comm_lxr.java b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_comm_lxr.java index a81a6d413..aa72c8d04 100644 --- a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_comm_lxr.java +++ b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_comm_lxr.java @@ -70,7 +70,7 @@ public class Xop_comm_lxr implements Xop_lxr { case Byte_ascii.Space: case Byte_ascii.Tab: break; - case Byte_ascii.NewLine: + case Byte_ascii.Nl: loop = false; nl_rhs = loop_pos; break; diff --git a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_cr_tkn.java b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_cr_tkn.java index ae09e4f1b..fe9845b5a 100644 --- a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_cr_tkn.java +++ b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_cr_tkn.java @@ -24,7 +24,7 @@ public class Xop_cr_tkn extends Xop_tkn_itm_base { class Xop_cr_lxr implements Xop_lxr { public byte Lxr_tid() {return Xop_lxr_.Tid_cr;} public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) { - core_trie.Add(Byte_ascii.CarriageReturn, this); + core_trie.Add(Byte_ascii.Cr, this); } public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { diff --git a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_eq_lxr.java b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_eq_lxr.java index ae3e19919..054ac1e6d 100644 --- a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_eq_lxr.java +++ b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_eq_lxr.java @@ -31,12 +31,12 @@ class Xop_eq_lxr implements Xop_lxr { if ( owner != null && owner.Tkn_tid() == Xop_tkn_itm_.Tid_tmpl_curly_bgn // inside curly && eq_len > 1) { // only skip if at least "=="; don't want to skip "=" which could be kv delimiter; DATE:2014-04-17 int prv_pos = bgn_pos - 1; - if (prv_pos > -1 && src[prv_pos] == Byte_ascii.NewLine) // is prv char \n; EX: "\n===" + if (prv_pos > -1 && src[prv_pos] == Byte_ascii.Nl) // is prv char \n; EX: "\n===" hdr_like = true; else { int eol_pos = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len); // skip trailing ws; EX: "== \n"; PAGE:nl.q:Geert_Wilders; DATE:2014-06-05 if ( eol_pos == src_len // eos - || src[eol_pos] == Byte_ascii.NewLine // cur_pos is \n; EX: "===\n" + || src[eol_pos] == Byte_ascii.Nl // cur_pos is \n; EX: "===\n" ) { hdr_like = true; cur_pos = eol_pos; @@ -56,7 +56,7 @@ class Xop_eq_lxr implements Xop_lxr { return cur_pos; } int ws_end = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len); - hdr_like = ws_end == src_len || src[ws_end] == Byte_ascii.NewLine; // hdr_like if next char \n or eos + hdr_like = ws_end == src_len || src[ws_end] == Byte_ascii.Nl; // hdr_like if next char \n or eos if (!hdr_like) { int ctg_end = Xop_nl_lxr.Scan_fwd_for_ctg(ctx, src, cur_pos, src_len); // check if ==[[Category:A]]; DATE:2014-04-17 if ( ctg_end != Bry_.NotFound) { // [[Category: found @@ -64,7 +64,7 @@ class Xop_eq_lxr implements Xop_lxr { if (ctg_end != Bry_.NotFound) { // ]] found; note that this should do more validation; EX: [[Category:]] should not be valid; DATE:2014-04-17 ctg_end += Xop_tkn_.Lnki_end_len; ctg_end = Bry_finder.Find_fwd_while_space_or_tab(src, ctg_end, src_len); - if (ctg_end == src_len || src[ctg_end] == Byte_ascii.NewLine) // hdr_like if ]]\n after [[Category:A]] + if (ctg_end == src_len || src[ctg_end] == Byte_ascii.Nl) // hdr_like if ]]\n after [[Category:A]] hdr_like = true; } } diff --git a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_hr_lxr.java b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_hr_lxr.java index 04c55f9b6..34b72e6ed 100644 --- a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_hr_lxr.java +++ b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_hr_lxr.java @@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*; import gplx.core.btries.*; public class Xop_hr_lxr implements Xop_lxr { public byte Lxr_tid() {return Xop_lxr_.Tid_hr;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr parse_trie) {parse_trie.Add(Hook_ary, this);} static final byte[] Hook_ary = new byte[] {Byte_ascii.NewLine, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash}; + public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr parse_trie) {parse_trie.Add(Hook_ary, this);} static final byte[] Hook_ary = new byte[] {Byte_ascii.Nl, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash}; public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { int nl_adj = -1; // -1 to ignore nl at bgn for hr_len diff --git a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_under_lxr_tst.java b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_under_lxr_tst.java index 83b6a1af4..03ae167ba 100644 --- a/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_under_lxr_tst.java +++ b/400_xowa/src_409_tkn_misc/gplx/xowa/Xop_under_lxr_tst.java @@ -31,7 +31,7 @@ public class Xop_under_lxr_tst { fxt.Test_parse_page_all_str("a__toc__b", "ab"); } @Test public void Notoc_basic() { - fxt.Wtr_cfg().Toc_show_(true); // NOTE: must enable in order for TOC to show (and to make sure NOTOC suppresses) + fxt.Wtr_cfg().Toc__show_(Bool_.Y); // NOTE: must enable in order for TOC to show (and to make sure NOTOC suppresses) fxt.Test_parse_page_all_str(String_.Concat_lines_nl ( "__NOTOC__" , "==a==" @@ -47,7 +47,7 @@ public class Xop_under_lxr_tst { , "" , "

d

" )); - fxt.Wtr_cfg().Toc_show_(false); + fxt.Wtr_cfg().Toc__show_(Bool_.N); } @Test public void Ignore_pre() { fxt.Init_para_y_(); diff --git a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr__basic_tst.java b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr__basic_tst.java index 82aa5882b..8c37f0fd3 100644 --- a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr__basic_tst.java +++ b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr__basic_tst.java @@ -344,7 +344,7 @@ public class Xop_lnki_wkr__basic_tst { Xoae_page previous_page = Xoae_page.test_(wiki, ttl); previous_page.Redirected_ttls().Add(Bry_.new_a7("Src")); // simulate redirect from "Src" fxt.App().Usere().History_mgr().Add(previous_page); // simulate "Src" already being clicked once; this is the key call - fxt.Wtr_cfg().Lnki_visited_(true); + fxt.Wtr_cfg().Lnki_visited_y_(); fxt.Test_parse_page_all_str("[[Src]]" , "Src"); // show [[Src]] as visited since it exists in history fxt.Test_parse_page_all_str("[[Other]]" , "Other"); // show other pages as not visited } diff --git a/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_parser.java b/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_parser.java index 0bcc30541..4c5fda58d 100644 --- a/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_parser.java +++ b/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_parser.java @@ -53,7 +53,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT b = src[i]; switch (b) { case Byte_ascii.Gt: return i; - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: // skip any ws + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip any ws break; case Byte_ascii.Slash: if (slash_found) {log_mgr.Add_str_warn_key_none(Msg_mgr, "multiple slashes not allowed", src, i); return String_.Find_none;} // only allow one slash @@ -108,7 +108,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT switch (mode) { case Mode_atr_bgn: switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: // skip any ws at bgn; note that once a non-ws char is encountered, it will immediately go into another mode + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip any ws at bgn; note that once a non-ws char is encountered, it will immediately go into another mode break; case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4: case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: @@ -143,7 +143,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT break; case Mode_invalid: switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: Make(log_mgr, src, i); mode = Mode_atr_bgn; break; @@ -168,7 +168,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT case Byte_ascii.Colon: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Underline: if (key_bfr_on) key_bfr.Add_byte(b); break; - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: if (valid) { key_end = i; mode = Mode_eq; @@ -201,7 +201,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT break; case Mode_eq: switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: // skip ws + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip ws if (key_end == -1) { // EX: "a = b"; key_end != -1 b/c 1st \s sets key_end; EX: "a b = c"; key_end val_end = i - 1; Make(log_mgr, src, i); @@ -223,7 +223,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT break; case Mode_val_bgn: switch (b) { - case Byte_ascii.Space: case Byte_ascii.NewLine: case Byte_ascii.Tab: // skip-ws + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip-ws ws_is_before_val = true; break; case Byte_ascii.Quote: case Byte_ascii.Apos: @@ -283,7 +283,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT } prv_is_ws = false; break; - case Byte_ascii.NewLine: case Byte_ascii.Tab: case Byte_ascii.CarriageReturn: // REF.MW:Sanitizer.php|decodeTagAttributes $value = preg_replace( '/[\t\r\n ]+/', ' ', $value ); + case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: // REF.MW:Sanitizer.php|decodeTagAttributes $value = preg_replace( '/[\t\r\n ]+/', ' ', $value ); case Byte_ascii.Space: if (!val_bfr_on) { val_bfr.Add_mid(src, val_bgn, i); @@ -314,14 +314,14 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: - case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Asterisk: + case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Gt: case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Pow: case Byte_ascii.Underline: case Byte_ascii.Tick: case Byte_ascii.Curly_bgn: case Byte_ascii.Pipe: case Byte_ascii.Curly_end: case Byte_ascii.Tilde: break; - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: + case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: val_end = i; Make(log_mgr, src, i); break; diff --git a/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_whitelist_mgr.java b/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_whitelist_mgr.java index 0f62d7201..293d9ad9a 100644 --- a/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_whitelist_mgr.java +++ b/400_xowa/src_490_xnde/gplx/xowa/Xop_xatr_whitelist_mgr.java @@ -232,8 +232,8 @@ public class Xop_xatr_whitelist_mgr { switch (b) { case Byte_ascii.Space: case Byte_ascii.Tab: - case Byte_ascii.CarriageReturn: - case Byte_ascii.NewLine: + case Byte_ascii.Cr: + case Byte_ascii.Nl: break; default: return b; diff --git a/400_xowa/src_490_xnde/gplx/xowa/Xop_xnde_wkr.java b/400_xowa/src_490_xnde/gplx/xowa/Xop_xnde_wkr.java index 4b5ba44fb..90957bef9 100644 --- a/400_xowa/src_490_xnde/gplx/xowa/Xop_xnde_wkr.java +++ b/400_xowa/src_490_xnde/gplx/xowa/Xop_xnde_wkr.java @@ -67,7 +67,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { if (tag_obj != null) { if (atrs_bgn_pos >= src_len) return ctx.Lxr_make_txt_(atrs_bgn_pos); // truncated tag; EX: "