diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_addon.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_addon.java
new file mode 100644
index 000000000..de2776bc9
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_addon.java
@@ -0,0 +1,27 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012-2017 gnosygnu@gmail.com
+
+XOWA is licensed under the terms of the General Public License (GPL) Version 3,
+or alternatively under the terms of the Apache License Version 2.0.
+
+You may use XOWA according to either of these licenses as is most appropriate
+for your project on a case-by-case basis.
+
+The terms of each license can be found in the source code repository:
+
+GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
+Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
+*/
+package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.xowa.addons.*;
+import gplx.xowa.bldrs.wkrs.*;
+public class Hiero_addon implements Xoax_addon_itm, Xoax_addon_itm__init {
+ public void Init_addon_by_app(Xoa_app app) {}
+ public void Init_addon_by_wiki(Xow_wiki wiki) {
+ Hiero_hdump_wkr hdump_wkr = new Hiero_hdump_wkr();
+ wiki.Html__hdump_mgr().Wkrs().Add(hdump_wkr.Key(), hdump_wkr);
+ }
+
+ public String Addon__key() {return "xowa.hieros";}
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_hdump_wkr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_hdump_wkr.java
new file mode 100644
index 000000000..b3273bafd
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_hdump_wkr.java
@@ -0,0 +1,34 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012-2017 gnosygnu@gmail.com
+
+XOWA is licensed under the terms of the General Public License (GPL) Version 3,
+or alternatively under the terms of the Apache License Version 2.0.
+
+You may use XOWA according to either of these licenses as is most appropriate
+for your project on a case-by-case basis.
+
+The terms of each license can be found in the source code repository:
+
+GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
+Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
+*/
+package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.langs.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.langs.htmls.docs.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.tags.*;
+public class Hiero_hdump_wkr implements Xoh_hdump_wkr {
+ public byte[] Key() {return KEY;}
+ public int Process(Bry_bfr bfr, Xoh_hdoc_ctx hctx, Xoh_hdoc_wkr hdoc_wkr, Gfh_tag_rdr tag_rdr, byte[] src, Gfh_tag tag) {
+ Gfh_atr atr = tag.Atrs__get_by_or_empty(Gfh_atr_.Bry__src);
+ if (atr == Gfh_atr.Noop) {
+ tag_rdr.Err_wkr().Warn("hiero tag missing src; tag=" + tag.To_str());
+ bfr.Add_mid(src, tag.Src_bgn(), tag.Src_end());
+ }
+ else {
+ Xoh_hdump_wkr_utl.Write_tag_with_val_at_atr_bgn(bfr, src, tag, atr, Hiero_xtn_mgr.Img_src_dir);
+ }
+ return tag.Src_end();
+ }
+
+ public static byte[] KEY = Bry_.new_a7("hiero-img");
+ public static byte[] HDUMP_ATR = Xoh_hdump_wkr_utl.Build_hdump_atr(KEY);
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_fxt.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_fxt.java
new file mode 100644
index 000000000..02e37c380
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_fxt.java
@@ -0,0 +1,115 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012-2017 gnosygnu@gmail.com
+
+XOWA is licensed under the terms of the General Public License (GPL) Version 3,
+or alternatively under the terms of the Apache License Version 2.0.
+
+You may use XOWA according to either of these licenses as is most appropriate
+for your project on a case-by-case basis.
+
+The terms of each license can be found in the source code repository:
+
+GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
+Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
+*/
+package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.makes.tests.*;
+class Hiero_html_fxt {
+ private final Hiero_html_mgr_fxt hiero_fxt = new Hiero_html_mgr_fxt(new Xop_fxt());
+ private final Xoh_make_fxt make_fxt = new Xoh_make_fxt();
+ private final Xop_fxt parser_fxt;
+ private String hdump_atr;
+ public Hiero_html_fxt() {
+ this.parser_fxt = hiero_fxt.Fxt();
+ }
+ public Hiero_html_mgr_fxt Hiero_fxt() {return hiero_fxt;}
+ public Hiero_html_fxt Hdump_n_() {return Hdump_(Bool_.N);}
+ public Hiero_html_fxt Hdump_y_() {return Hdump_(Bool_.Y);}
+ private Hiero_html_fxt Hdump_(boolean v) {
+ this.hdump_atr = v ? " " + String_.new_u8(Hiero_hdump_wkr.HDUMP_ATR) : " ";
+ return this;
+ }
+ public void Test__hview(String wtxt, String expd) {
+ parser_fxt.Hctx_(Xoh_wtr_ctx.Basic);
+ parser_fxt.Test_html_full_str(wtxt, expd);
+ }
+ public void Test__hdump(String wtxt, String save, String load) {
+ parser_fxt.Hctx_(Xoh_wtr_ctx.Hdump);
+ parser_fxt.Test_html_full_str(wtxt, save);
+ make_fxt.Test__make(save, make_fxt.Page_chkr().Body_(load));
+ }
+ public String Glyph_1__wtxt() {
+ hiero_fxt.Init_hiero_A1_B1();
+ return "
"
+ , "
| "
+ , "
"
+ , "
| "
+ , "
"
- , "
| "
- , "
"
- , "
| "
- , "