From 097e6c7f805818330a5e9ab0f6d2e8ddec7dec44 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 22 Nov 2015 21:39:33 -0500 Subject: [PATCH] v2.11.4.1 --- 100_core/.classpath | 6 - .../gplx/Array_.java | 4 +- .../gplx/Array__tst.java | 0 .../gplx/Bitmask_.java | 0 100_core/{src_130_brys => src}/gplx/Bry_.java | 26 +- .../{src_130_brys => src}/gplx/Bry__tst.java | 2 +- .../{src_130_brys => src}/gplx/Bry_bfr.java | 9 +- .../{src_130_brys => src}/gplx/Bry_bfr_.java | 5 +- .../gplx/Bry_bfr_tst.java | 0 .../{src_130_brys => src}/gplx/Bry_find_.java | 0 .../gplx/Bry_find__tst.java | 0 .../gplx/Bry_split_.java | 0 .../gplx/Bry_split__tst.java | 0 .../gplx/DateAdp.java | 0 .../gplx/DateAdp_.java | 0 .../gplx/DateAdp__tst.java | 0 .../gplx/DateAdp_parser.java | 0 .../gplx/DateAdp_parser_tst.java | 0 .../gplx/Decimal_adp.java | 0 .../gplx/Decimal_adp_.java | 0 .../gplx/Decimal_adp__tst.java | 0 .../gplx/EnmMgr.java | 0 .../gplx/Enm_.java | 0 100_core/src/gplx/Err.java | 1 + 100_core/src/gplx/Err_.java | 1 + .../gplx/Guid_adp.java | 0 .../gplx/Guid_adp_.java | 0 .../gplx/Guid_adp__tst.java | 0 .../{src_140_list => src}/gplx/Hash_adp.java | 3 +- .../{src_140_list => src}/gplx/Hash_adp_.java | 5 +- .../gplx/Hash_adp_bry.java | 2 +- .../gplx/Hash_adp_bry_tst.java | 0 .../gplx/Io_url.java | 4 +- .../gplx/Io_url_.java | 2 +- .../gplx/KeyVal.java | 0 .../gplx/KeyValHash.java | 0 .../gplx/KeyValHash_tst.java | 0 .../gplx/KeyValList.java | 0 .../gplx/KeyVal_.java | 0 .../{src_140_list => src}/gplx/List_adp.java | 2 +- .../{src_140_list => src}/gplx/List_adp_.java | 2 +- .../gplx/List_adp_base.java | 2 +- .../gplx/List_adp_tst.java | 0 .../gplx/Math_.java | 0 .../gplx/Math__tst.java | 0 .../gplx/ObjAry.java | 0 .../gplx/Object_.java | 0 .../gplx/Object__tst.java | 0 .../gplx/Ordered_hash.java | 2 +- .../gplx/Ordered_hash_.java | 0 .../gplx/Ordered_hash_base.java | 6 +- .../gplx/Ordered_hash_tst.java | 0 .../gplx/RandomAdp.java | 0 .../gplx/RandomAdp_.java | 0 .../gplx/String_.java | 2 +- .../gplx/String__tst.java | 0 100_core/src/gplx/Tfds.java | 14 +- .../gplx/TimeSpanAdp.java | 2 +- .../gplx/TimeSpanAdp_.java | 2 +- .../gplx/TimeSpanAdp__parse_tst.java | 0 .../gplx/TimeSpanAdp_basic_tst.java | 0 .../gplx/TimeSpanAdp_xtoStr_tst.java | 0 .../gplx/Url_encoder_interface.java | 0 100_core/src/gplx/Yn.java | 1 + 100_core/src/gplx/core/brys/Bry_bfr_mkr.java | 44 +++ .../src/gplx/core/brys/Bry_bfr_mkr_mgr.java | 100 ++++++ .../src/gplx/core/brys/Bry_bfr_mkr_tst.java | 57 ++++ .../gplx/core/brys}/Bry_rdr_old.java | 2 +- .../src/gplx/core/brys/args/Bfr_arg__bry.java | 3 +- .../gplx/core/consoles/Console_adp__sys.java | 1 + 100_core/src/gplx/{ => core/envs}/Env_.java | 6 +- .../{JarAdp_.java => core/envs/Jar_adp_.java} | 4 +- 100_core/src/gplx/{ => core/envs}/Op_sys.java | 2 +- .../src/gplx/{ => core/envs}/Op_sys_.java | 2 +- .../envs/Process_adp.java} | 91 ++++-- .../envs/Process_adp_tst.java} | 10 +- .../src/gplx/{ => core/errs}/Err_msg.java | 2 +- 100_core/src/gplx/core/gfo_ndes/GfoFld.java | 1 + .../src/gplx/core/gfo_ndes/GfoFldList.java | 1 + .../src/gplx/core/gfo_ndes/GfoFldList_.java | 2 +- 100_core/src/gplx/core/gfo_ndes/GfoNde.java | 2 +- .../src/gplx/core/gfo_ndes/GfoNdeFxt.java | 1 + .../src/gplx/core/gfo_ndes/GfoNdeList.java | 2 +- .../src/gplx/core/gfo_ndes/GfoNdeList_.java | 2 +- 100_core/src/gplx/core/gfo_ndes/GfoNde_.java | 1 + 100_core/src/gplx/core/gfo_regys/GfoRegy.java | 2 +- .../src/gplx/core/ios/IoEngine_system.java | 2 +- .../core/ios/IoEngine_xrg_loadFilStr.java | 2 +- 100_core/src/gplx/core/ios/IoItmClassXtn.java | 1 + 100_core/src/gplx/core/ios/IoItmList.java | 2 +- 100_core/src/gplx/core/ios/IoUrlInfo.java | 1 + 100_core/src/gplx/core/ios/IoUrlInfoRegy.java | 1 + 100_core/src/gplx/core/ios/IoZipWkr.java | 4 +- .../src/gplx/core/ios/Io_download_fmt.java | 2 +- .../gplx/core/ios/Io_download_fmt_tst.java | 2 +- .../gplx/core}/lists/ComparerAble.java | 2 +- .../gplx/core}/lists/ComparerAble_.java | 2 +- .../gplx/core}/lists/EnumerAble.java | 2 +- .../gplx/core}/lists/Hash_adp_base.java | 18 +- .../gplx/core}/lists/Hash_adp_list.java | 2 +- .../gplx/core}/lists/Iterator_null.java | 2 +- .../gplx/core/lists/Iterator_objAry.java} | 12 +- .../gplx/core/lists}/List_adp_sorter.java | 10 +- .../gplx/core/lists}/List_adp_sorter_tst.java | 2 +- .../gplx/core}/lists/StackAdp.java | 2 +- .../gplx/core}/lists/StackAdp_.java | 2 +- .../gplx/core}/lists/StackAdp_tst.java | 2 +- .../src/gplx/core/primitives/Bry_obj_ref.java | 5 +- .../gplx/{ => core/primitives}/Int_ary_.java | 2 +- .../{ => core/primitives}/Int_ary__tst.java | 2 +- .../src/gplx/core/security/HashAlgo_.java | 2 +- .../gplx/core/stores}/DataRdr.java | 2 +- .../gplx/core/stores}/DataRdr_.java | 2 +- .../gplx/core}/stores/DataRdr_base.java | 4 +- .../gplx/core}/stores/DataRdr_mem.java | 2 +- .../gplx/core/stores}/DataWtr.java | 2 +- .../gplx/core/stores}/DataWtr_.java | 4 +- .../gplx/core/stores}/DataWtr_base.java | 2 +- .../gplx/core}/stores/GfoNdeRdr.java | 2 +- .../gplx/core}/stores/GfoNdeRdr_.java | 4 +- .../gplx => src/gplx/core/stores}/SrlMgr.java | 2 +- .../gplx => src/gplx/core/stores}/SrlObj.java | 2 +- .../gplx/core}/stores/xmls/XmlDataRdr.java | 2 +- .../gplx/core}/stores/xmls/XmlDataRdr_.java | 2 +- .../gplx/core}/stores/xmls/XmlDataWtr_.java | 2 +- .../src/gplx/core/strings/String_bldr.java | 1 + .../src/gplx/core/tests/PerfLogMgr_fxt.java | 2 +- .../{ => core/tests}/TfdsEqListItmStr.java | 2 +- .../gplx/core/type_xtns}/BoolClassXtn.java | 4 +- .../gplx/core/type_xtns}/ByteClassXtn.java | 2 +- .../gplx/core/type_xtns}/ClassXtn.java | 2 +- .../gplx/core/type_xtns}/ClassXtnPool.java | 4 +- .../gplx/core/type_xtns}/ClassXtn_base.java | 2 +- .../gplx/core/type_xtns}/DateAdpClassXtn.java | 2 +- .../core/type_xtns}/DateAdpClassXtn_tst.java | 2 +- .../core/type_xtns}/DecimalAdpClassXtn.java | 2 +- .../gplx/core/type_xtns}/DoubleClassXtn.java | 2 +- .../gplx/core/type_xtns}/FloatClassXtn.java | 2 +- .../gplx/core/type_xtns}/IntClassXtn.java | 2 +- .../gplx/core/type_xtns}/IoUrlClassXtn.java | 2 +- .../gplx/core/type_xtns}/LongClassXtn.java | 2 +- .../gplx/core/type_xtns}/ObjectClassXtn.java | 2 +- .../gplx/core/type_xtns}/StringClassXtn.java | 6 +- .../core/type_xtns}/TimeSpanAdpClassXtn.java | 2 +- 100_core/src/gplx/langs/dsvs/DsvDataRdr_.java | 2 +- .../langs/dsvs/DsvDataRdr_dsv_hdr_tst.java | 2 +- .../langs/dsvs/DsvDataRdr_dsv_misc_tst.java | 2 +- .../langs/dsvs/DsvDataRdr_layout_tst.java | 2 +- 100_core/src/gplx/langs/dsvs/DsvDataWtr.java | 2 +- .../gplx/langs/dsvs/DsvDataWtr_csv_tst.java | 2 +- .../src/gplx/langs/regxs/Regx_adp__tst.java | 2 +- 100_core/src/gplx/langs/xmls/HierStrBldr.java | 2 +- .../src_100_interface/gplx/CompareAble_.java | 2 +- .../gplx/CompareAble_tst.java | 2 +- 100_core/src_130_brys/gplx/Bry_bfr_mkr.java | 143 -------- .../src_130_brys/gplx/Bry_bfr_mkr_tst.java | 74 ----- 100_core/src_311_gfoObj/gplx/GfoEvMgr.java | 2 +- 100_core/src_311_gfoObj/gplx/GfoMsg_.java | 2 +- 100_core/src_420_usrMsg/gplx/UsrMsg.java | 2 +- 100_core/tst/gplx/TfdsTstr_fxt.java | 2 +- .../{ => core}/stores/GfoNdeRdr_read_tst.java | 4 +- .../gplx/{ => core}/stores/GfoNdeRdr_tst.java | 2 +- .../stores/xmls/XmlDataRdr_tst.java | 2 +- .../stores/xmls/XmlDataWtr_tst.java | 2 +- .../src_200_type/gplx/gfml/GfmlTypeMgr.java | 2 +- .../src_400_pragma/gplx/gfml/GfmlPragma.java | 2 +- .../gplx/gfml/GfmlPragmaType.java | 2 +- .../src_500_build/gplx/gfml/GfmlFrame.java | 2 +- .../src_600_rdrWtr/gplx/gfml/GfmlDataNde.java | 2 +- .../src_600_rdrWtr/gplx/gfml/GfmlDataRdr.java | 1 + .../gplx/gfml/GfmlDataRdr_base.java | 2 +- .../src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java | 2 +- 110_gfml/tst/gplx/gfml/GfmlDataRdr_tst.java | 2 +- .../tst/gplx/gfml/z081_GfmlDataWtr_tst.java | 2 +- .../gplx/gfml/z082_GfmlDataWtrOpts_tst.java | 2 +- .../gplx/gfml/z801_useCase_DataRdr_tst.java | 2 +- 110_gfml/tst/gplx/gfml/z901_perf_tst.java | 2 +- .../src/gplx/{ => core}/stores/DbMaprArg.java | 2 +- .../src/gplx/{ => core}/stores/DbMaprItm.java | 2 +- .../src/gplx/{ => core}/stores/DbMaprMgr.java | 2 +- .../gplx/{ => core}/stores/DbMaprMgr_tst.java | 2 +- .../src/gplx/{ => core}/stores/DbMaprRdr.java | 2 +- .../src/gplx/{ => core}/stores/DbMaprWtr.java | 2 +- .../gplx/{ => core}/stores/Db_data_rdr.java | 2 +- .../gplx/{ => core}/stores/Db_data_rdr_.java | 2 +- .../gplx/{ => core}/stores/MockDiscObj.java | 2 +- 140_dbs/src/gplx/dbs/Db_conn.java | 2 +- 140_dbs/src/gplx/dbs/Db_conn_.java | 1 + 140_dbs/src/gplx/dbs/Db_crt_tst.java | 2 +- 140_dbs/src/gplx/dbs/Db_stmt.java | 2 +- 140_dbs/src/gplx/dbs/engines/Db_engine.java | 1 + .../gplx/dbs/engines/Db_engine_sql_base.java | 3 +- .../gplx/dbs/engines/mems/Db_engine__mem.java | 1 + .../gplx/dbs/engines/mems/Db_stmt__mem.java | 1 + .../gplx/dbs/engines/mysql/Mysql_engine.java | 2 +- .../gplx/dbs/engines/nulls/Noop_engine.java | 1 + .../dbs/engines/postgres/Postgres_engine.java | 2 +- .../dbs/engines/sqlite/Sqlite_engine.java | 2 +- .../gplx/dbs/engines/tdbs/TdbDbLoadMgr.java | 1 + .../dbs/engines/tdbs/TdbDbLoadMgr_tst.java | 4 +- .../gplx/dbs/engines/tdbs/TdbDbSaveMgr.java | 1 + .../dbs/engines/tdbs/TdbDbSaveMgr_tst.java | 4 +- .../src/gplx/dbs/engines/tdbs/TdbDelete.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbEngine.java | 1 + .../gplx/dbs/engines/tdbs/TdbFileList.java | 4 +- .../src/gplx/dbs/engines/tdbs/TdbFlush.java | 2 +- .../gplx/dbs/engines/tdbs/TdbFlush_tst.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbInsert.java | 4 +- .../src/gplx/dbs/engines/tdbs/TdbSelect.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbStores.java | 6 +- .../src/gplx/dbs/engines/tdbs/TdbTable.java | 2 +- .../gplx/dbs/engines/tdbs/TdbTableList.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbUpdate.java | 2 +- .../src/gplx/dbs/qrys/Db_qry__select_cmd.java | 2 +- 140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java | 2 +- 140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java | 2 +- .../gplx/dbs/sqls/Sql_order_by_sorter.java | 2 +- .../src/gplx/dbs/sqls/Sql_select_fld_.java | 2 +- .../gplx/dbs/sqls/Sql_select_fld_base.java | 2 +- 140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java | 3 +- 140_dbs/src/gplx/dbs/utls/PoolIds.java | 1 + 140_dbs/tst/gplx/dbs/Db_conn_fxt.java | 1 + .../gplx/dbs/engines/db_DataTypes_tst.java | 2 +- .../gplx/dbs/groupBys/GroupBys_base_tst.java | 2 +- .../dbs/insertIntos/InsertIntos_base_tst.java | 2 +- .../tst/gplx/dbs/joins/Joins_base_tst.java | 2 +- 140_dbs/xtn/gplx/dbs/SqliteDbMain.java | 3 +- .../src_110_draw_core/gplx/gfui/FontAdp.java | 2 +- .../gplx/gfui/GfxStringData.java | 1 + .../src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java | 1 + .../gplx/gfui/IptBnd_upDownRange.java | 1 + 150_gfui/src_200_ipt/gplx/gfui/IptCfg.java | 3 +- .../src_200_ipt/gplx/gfui/IptCfgRegy.java | 9 +- 150_gfui/src_200_ipt/gplx/gfui/IptKey_.java | 2 +- .../src_400_win/gplx/gfui/GfoConsoleWin.java | 1 + .../gplx/gfui/GfuiFocusOrderer.java | 2 +- 150_gfui/src_400_win/gplx/gfui/GfuiWin.java | 1 + .../gplx/gfui/GfuiWinKeyCmdMgr.java | 2 +- .../gplx/gfui/GfuiWin_toaster.java | 1 + .../gplx/gfui/GfuiListBox.java | 2 +- .../gplx/gfui/GfuiCheckListBox.java | 2 +- .../gplx/gfui/GfuiStatusBox.java | 1 + .../src_600_adp/gplx/gfui/ClipboardAdp_.java | 2 +- 150_gfui/src_600_adp/gplx/gfui/TimerAdp.java | 1 + 150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java | 7 +- 150_gfui/xtn/gplx/gfui/Swt_app_browser.java | 2 + 150_gfui/xtn/gplx/gfui/Swt_html.java | 1 + 400_xowa/src/gplx/core/brys/Bry_comparer.java | 2 +- 400_xowa/src/gplx/core/brys/Bry_rdr.java | 15 +- .../gplx/core/brys/Int_flag_bldr__tst.java | 2 + .../src/gplx/core/caches/GfoCacheMgr_tst.java | 2 +- .../src/gplx/core/caches/Gfo_cache_mgr.java | 2 +- .../gplx/core/caches/Gfo_cache_mgr_bry.java | 4 +- .../gplx/core/consoles/Gfo_cmd_arg_itm_.java | 1 + .../core/consoles/Gfo_cmd_arg_mgr_tst.java | 2 +- .../gplx/core/ios/BinaryHeap_Io_line_rdr.java | 2 +- .../src/gplx/core/ios/Io_line_rdr_tst.java | 2 +- 400_xowa/src/gplx/core/ios/Io_sort.java | 3 +- .../core/ios/Io_sort_split_itm_sorter.java | 2 +- .../src/gplx/core/ios/Io_zip_mgr_base.java | 1 + 400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java | 10 +- .../src/gplx/core/net/Gfo_url_parser.java | 5 +- .../core/threads/Gfo_thread_cmd_unzip.java | 8 +- 400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java | 2 +- 400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java | 2 +- 400_xowa/src/gplx/langs/htmls/Html_tag_.java | 4 + 400_xowa/src/gplx/langs/htmls/Html_utl.java | 7 +- .../langs/htmls/encoders/Gfo_url_encoder.java | 64 ++++ .../htmls/encoders/Gfo_url_encoder_.java | 87 +++++ .../htmls/encoders/Gfo_url_encoder_itm.java | 101 ++++++ .../htmls/encoders/Gfo_url_encoder_mkr.java | 83 +++++ .../htmls/encoders/Gfo_url_encoder_tst.java | 68 ++++ .../langs/htmls/encoders/Url_encoder.java | 307 ------------------ .../langs/htmls/encoders/Url_encoder_mgr.java | 30 -- .../langs/htmls/encoders/Url_encoder_tst.java | 72 ---- .../gplx/langs/htmls/parsers/Html_atr.java | 7 +- .../langs/htmls/parsers/Html_doc_parser.java | 3 +- .../gplx/langs/htmls/parsers/Html_tag.java | 6 +- .../langs/htmls/parsers/Html_tag_rdr.java | 12 +- .../langs/htmls/parsers/Html_tag_rdr_tst.java | 2 +- .../parsers/clses/Html_atr_class_parser_.java | 2 +- .../styles/Html_atr_style_parser_.java | 2 +- 400_xowa/src/gplx/xowa/Xoa_app.java | 3 +- 400_xowa/src/gplx/xowa/Xoa_app_.java | 5 +- 400_xowa/src/gplx/xowa/Xoa_app_fxt.java | 1 + 400_xowa/src/gplx/xowa/Xoa_ttl.java | 11 +- 400_xowa/src/gplx/xowa/Xoa_url.java | 2 +- 400_xowa/src/gplx/xowa/Xoae_app.java | 5 +- 400_xowa/src/gplx/xowa/Xoae_page.java | 2 +- 400_xowa/src/gplx/xowa/Xop_fxt.java | 4 + 400_xowa/src/gplx/xowa/Xowe_wiki.java | 2 +- 400_xowa/src/gplx/xowa/apps/Xoav_app.java | 5 +- .../xowa/apps/apis/xowa/apps/Xoapi_fsys.java | 1 + .../apis/xowa/gui/browsers/Xoapi_url.java | 2 +- .../apis/xowa/gui/pages/Xoapi_selection.java | 2 +- .../apps/apis/xowa/gui/pages/Xoapi_view.java | 2 +- .../xowa/apps/apis/xowa/html/Xoapi_page.java | 7 +- .../gplx/xowa/apps/boots/Xoa_boot_mgr.java | 2 +- .../gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java | 2 +- .../xowa/apps/cfgs/old/Xocfg_bnd_mgr.java | 2 +- .../gplx/xowa/apps/fmtrs/Gfo_sort_able.java | 2 +- .../xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java | 2 +- .../gplx/xowa/apps/progs/Xoa_prog_mgr.java | 86 ++--- .../apps/servers/http/Http_server_mgr.java | 7 +- .../apps/servers/http/Http_server_wkr_v1.java | 5 +- .../apps/servers/http/Http_server_wkr_v2.java | 4 +- .../xowa/apps/servers/tcp/Xosrv_server.java | 3 +- .../gplx/xowa/apps/urls/Xoa_url_parser.java | 8 +- 400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java | 2 +- .../src/gplx/xowa/bldrs/Xobdc_merger.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java | 2 +- .../gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java | 7 +- .../xowa/bldrs/cmds/Xob_dump_mgr_base.java | 7 +- .../bldrs/cmds/Xob_parse_all_src_sql.java | 1 + .../cmds/ctgs/Xob_categorylinks_base.java | 2 +- .../cmds/ctgs/Xob_categorylinks_sql_tst.java | 2 +- .../cmds/ctgs/Xoctg_hiddencat_parser_sql.java | 1 + .../cmds/files/Xob_diff_regy_make_cmd.java | 1 + .../bldrs/cmds/files/Xob_fsdb_make_cmd.java | 1 + .../bldrs/cmds/files/Xob_fsdb_reduce_cmd.java | 5 +- .../bldrs/cmds/files/Xob_lnki_temp_wkr.java | 57 +--- .../cmds/files/Xob_orig_regy_update_cmd.java | 1 + .../bldrs/cmds/files/Xob_xfer_regy_tbl.java | 1 + .../cmds/files/Xob_xfer_temp_cmd_orig.java | 1 + .../cmds/files/Xob_xfer_temp_cmd_thumb.java | 1 + .../bldrs/cmds/files/Xob_xfer_temp_itm.java | 1 + .../cmds/files/Xob_xfer_temp_itm_tst.java | 2 +- .../bldrs/cmds/texts/sqls/Xob_page_cmd.java | 2 +- .../cmds/texts/sqls/Xob_search_sql_cmd.java | 1 + .../cmds/texts/sqls/Xob_search_sql_wkr.java | 2 +- .../cmds/utils/Xob_decompress_bz2_cmd.java | 8 +- .../bldrs/cmds/utils/Xob_download_wkr.java | 4 +- .../xowa/bldrs/cmds/utils/Xob_unzip_wkr.java | 7 +- .../bldrs/cmds/wikis/Xob_redirect_cmd.java | 6 +- .../bldrs/cmds/wikis/Xob_redirect_tbl.java | 4 +- .../xowa/bldrs/css/Xoa_css_extractor.java | 8 +- .../css/Xoa_css_extractor_basic_tst.java | 2 +- .../bldrs/css/Xoa_css_img_downloader.java | 2 +- .../xowa/bldrs/css/Xob_css_tkn__base.java | 1 + .../Xoi_cmd_imageMagick_download.java | 4 +- .../setups/addons/Xoi_firefox_installer.java | 6 +- .../xowa/bldrs/wms/apis/Xoapi_orig_wmf.java | 5 +- .../gplx/xowa/bldrs/xmls/Xob_import_cfg.java | 4 +- .../src/gplx/xowa/files/Xof_file_wkr_.java | 4 +- .../src/gplx/xowa/files/Xof_lnki_page.java | 1 + .../src/gplx/xowa/files/Xof_lnki_time.java | 1 + .../src/gplx/xowa/files/Xof_url_bldr.java | 3 +- .../src/gplx/xowa/files/Xof_xfer_itm.java | 4 +- .../files/bins/Xof_bin_wkr__fsys_base.java | 2 +- .../gplx/xowa/files/caches/Xof_cache_mgr.java | 3 +- .../gplx/xowa/files/caches/Xou_cache_itm.java | 2 +- .../gplx/xowa/files/caches/Xou_cache_mgr.java | 2 +- .../Xof_img_wkr_resize_img_imageMagick.java | 9 +- .../xowa/files/fsdb/Fsdb_regy_fil_tbl.java | 1 + .../files/fsdb/fs_roots/Fs_root_fsdb_mgr.java | 2 +- .../xowa/files/fsdb/tsts/Xof_file_fxt.java | 1 + .../Xof_img_wkr_convert_djvu_to_tiff_.java | 5 +- .../imgs/Xof_img_wkr_query_img_size.java | 5 +- .../gplx/xowa/files/repos/Xof_repo_itm_.java | 2 +- .../gplx/xowa/files/xfers/Xof_xfer_queue.java | 2 +- 400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java | 2 +- 400_xowa/src/gplx/xowa/guis/Xog_resizer.java | 1 + .../guis/urls/Xof_orig_file_downloader.java | 2 +- .../src/gplx/xowa/guis/urls/Xog_url_wkr.java | 8 +- .../gplx/xowa/guis/views/Load_page_wkr.java | 2 +- .../gplx/xowa/guis/views/Xog_html_itm.java | 2 +- .../src/gplx/xowa/guis/views/Xog_tab_itm.java | 2 +- .../src/gplx/xowa/guis/views/Xog_win_itm.java | 2 +- .../views/Xog_win_itm__prog_href_mgr.java | 2 +- .../xowa/guis/views/boots/Xog_error_data.java | 1 + .../xowa/guis/views/boots/Xog_error_win.java | 4 +- .../src/gplx/xowa/htmls/Xoh_cfg_file.java | 8 +- 400_xowa/src/gplx/xowa/htmls/Xoh_consts.java | 2 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page.java | 5 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page_.java | 2 +- .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 23 +- .../src/gplx/xowa/htmls/Xow_html_mgr.java | 8 +- .../gplx/xowa/htmls/core/Xow_hdump_mgr.java | 2 +- .../xowa/htmls/core/Xow_hdump_mgr__load.java | 2 +- .../xowa/htmls/core/Xow_hdump_mgr__save.java | 2 +- ...Xob_hdump_mgr.java => Xob_hdump_bldr.java} | 44 ++- .../core/bldrs/Xob_ns_to_db_wkr__html.java | 2 +- .../xowa/htmls/core/htmls/Xoh_html_wtr.java | 2 +- .../htmls/core/htmls/tidy/Xoh_tidy_mgr.java | 3 +- .../core/htmls/tidy/Xoh_tidy_wkr_jtidy.java | 2 + .../htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java | 1 + .../core/htmls/tidy/Xoh_tidy_wkr_tidy.java | 5 +- .../xowa/htmls/core/hzips/Hzip_stat_itm.java | 8 +- .../xowa/htmls/core/hzips/Hzip_stat_tbl.java | 8 +- .../xowa/htmls/core/hzips/Xoh_hzip_dict_.java | 3 + .../xowa/htmls/core/hzips/Xoh_hzip_fxt.java | 12 +- .../xowa/htmls/core/hzips/Xoh_hzip_mgr.java | 3 +- .../xowa/htmls/core/makes/Xoh_make_mgr.java | 2 +- .../xowa/htmls/core/makes/Xoh_make_trie_.java | 16 +- .../core/makes/imgs/Xohd_img_itm__base.java | 2 +- .../xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java | 6 +- .../xowa/htmls/core/wkrs/Xoh_hdoc_wkr.java | 1 + .../htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java | 1 + .../htmls/core/wkrs/Xoh_hdoc_wkr__make.java | 1 + .../core/wkrs/Xoh_itm_parser_fxt_base.java | 1 + .../core/wkrs/bfr_args/Bfr_arg__html_atr.java | 43 ++- .../core/wkrs/bfr_args/Bfr_arg__wrapper.java | 17 +- .../core/wkrs/glys/Xoh_gly_grp_parser.java | 17 +- .../htmls/core/wkrs/glys/Xoh_gly_hzip.java | 55 ++++ .../core/wkrs/glys/Xoh_gly_hzip_tst.java | 57 ++++ .../htmls/core/wkrs/imgs/Xoh_img_bldr.java | 15 +- .../wkrs/imgs/Xoh_img_html__dump__tst.java | 2 +- .../htmls/core/wkrs/imgs/Xoh_img_hzip.java | 225 ++++++++----- .../wkrs/imgs/Xoh_img_hzip__dump__tst.java | 36 +- .../wkrs/imgs/Xoh_img_hzip__view__tst.java | 10 +- .../wkrs/imgs/Xoh_img_make__dump__tst.java | 4 +- .../htmls/core/wkrs/imgs/Xoh_img_parser.java | 73 +++-- .../htmls/core/wkrs/imgs/Xoh_img_wtr.java | 15 +- .../core/wkrs/imgs/atrs/Xoh_anch_cls_.java | 6 +- .../wkrs/imgs/atrs/Xoh_anch_cls_parser.java | 9 +- .../core/wkrs/imgs/atrs/Xoh_img_cls_.java | 12 +- .../wkrs/imgs/atrs/Xoh_img_src_parser.java | 25 +- .../imgs/atrs/Xoh_img_src_parser_tst.java | 12 +- .../wkrs/imgs/atrs/Xoh_img_xoimg_parser.java | 2 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java | 10 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_html.java | 8 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java | 77 +++-- .../core/wkrs/lnkes/Xoh_lnke_hzip_tst.java | 8 +- .../core/wkrs/lnkes/Xoh_lnke_parser.java | 44 +-- .../htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java | 50 +++ .../htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java | 7 +- .../wkrs/lnkis/Xoh_lnki_html__basic__tst.java | 27 ++ .../wkrs/lnkis/Xoh_lnki_html__hdump__tst.java | 10 +- .../htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java | 179 +++++----- .../core/wkrs/lnkis/Xoh_lnki_hzip_tst.java | 110 +++++-- .../core/wkrs/lnkis/Xoh_lnki_parser.java | 109 +++++-- .../core/wkrs/lnkis/Xoh_ttl_matcher.java | 75 ----- .../lnkis/anchs/Xoh_anch_capt_parser.java | 61 ++++ .../Xoh_anch_capt_parser_tst.java} | 37 ++- .../lnkis/anchs/Xoh_anch_href_parser.java | 78 +++-- .../lnkis/anchs/Xoh_anch_href_parser_tst.java | 9 +- .../htmls/Xoh_file_html_fmtr__hdump.java | 43 +-- .../wkrs/lnkis/htmls/Xoh_file_wtr__basic.java | 38 +-- .../wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java | 2 +- .../core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java | 4 +- .../htmls/core/wkrs/mkrs/Xoh_hdoc_mkr.java | 5 +- .../core/wkrs/spaces/Xoh_space_hzip_tst.java | 4 +- .../htmls/core/wkrs/tags/Xoh_tag_parser.java | 27 +- .../htmls/core/wkrs/thms/Xoh_thm_bldr.java | 5 +- .../core/wkrs/thms/Xoh_thm_html_tst.java | 11 +- .../htmls/core/wkrs/thms/Xoh_thm_hzip.java | 31 +- .../core/wkrs/thms/Xoh_thm_hzip_tst.java | 54 ++- .../htmls/core/wkrs/thms/Xoh_thm_parser.java | 8 +- .../htmls/core/wkrs/thms/Xoh_thm_wtr.java | 32 +- .../thms/divs/Xoh_thm_caption_parser.java | 26 +- .../wkrs/xndes/styles/Xoh_style_regy.java | 28 ++ .../xowa/htmls/css/Xowd_css_core_mgr.java | 1 + .../gplx/xowa/htmls/hrefs/Xoh_href_wtr.java | 2 +- .../modules/popups/Xow_popup_html_mkr.java | 2 +- .../htmls/modules/popups/Xow_popup_mgr.java | 2 +- .../modules/popups/Xow_popup_parser.java | 2 +- .../htmls/ns_files/Xoh_ns_file_page_mgr.java | 2 +- .../xowa/htmls/portal/Xoh_subpages_bldr.java | 2 +- .../xowa/htmls/portal/Xow_portal_mgr.java | 2 +- .../xowa/htmls/sidebar/Xowh_sidebar_mgr.java | 2 +- .../src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java | 8 +- .../src/gplx/xowa/langs/Xol_lang_itm.java | 3 +- .../src/gplx/xowa/langs/Xol_lang_stub_.java | 2 +- .../langs/durations/Xol_duration_itm_.java | 2 +- .../gplx/xowa/langs/funcs/Xol_func_regy.java | 2 +- .../src/gplx/xowa/parsers/Xop_parser.java | 7 +- .../src/gplx/xowa/parsers/Xow_parser_mgr.java | 2 +- .../parsers/lnkes/Xop_lnke_wkr_brack_tst.java | 8 +- .../lnkes/Xop_lnke_wkr_relative_tst.java | 8 +- .../parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java | 18 +- .../xowa/parsers/lnkis/Xop_link_parser.java | 4 +- .../xowa/parsers/lnkis/Xop_lnki_align_h_.java | 2 +- .../parsers/lnkis/Xop_lnki_arg_parser.java | 2 +- .../gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java | 2 +- .../xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java | 2 +- .../xowa/parsers/lnkis/Xop_lnki_wkr_.java | 2 +- .../lnkis/Xop_lnki_wkr__basic_tst.java | 2 +- .../parsers/lnkis/Xop_lnki_wkr__link_tst.java | 18 +- .../redlinks/Xopg_redlink_lnki_list.java | 2 +- .../xowa/parsers/logs/Xop_log_basic_wkr.java | 1 + .../xowa/parsers/logs/Xop_log_invoke_wkr.java | 1 + .../parsers/logs/Xop_log_property_wkr.java | 1 + .../xowa/parsers/miscs/Xop_ignore_tkn.java | 4 +- .../gplx/xowa/parsers/miscs/Xop_pipe_lxr.java | 12 + .../tblws/Xop_tblw_wkr__uncommon_tst.java | 10 + .../src/gplx/xowa/parsers/tmpls/Arg_bldr.java | 2 +- .../xowa/parsers/tmpls/Xot_defn_tmpl.java | 2 +- .../gplx/xowa/parsers/tmpls/Xot_invk_tkn.java | 1 + .../parsers/tmpls/Xot_invk_wkr_basic_tst.java | 4 +- .../gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java | 1 + .../gplx/xowa/parsers/utils/TstObj_tst.java | 2 +- .../xowa/parsers/utils/Xop_redirect_mgr.java | 4 +- .../gplx/xowa/parsers/xndes/Xop_xnde_wkr.java | 2 +- .../specials/allPages/Xows_page_allpages.java | 4 +- .../search/Xog_search_suggest_mgr.java | 2 +- .../search/Xosrh_rslt_itm_sorter.java | 2 +- .../search/Xow_domain_sorter__manual_tid.java | 6 +- .../xowa/specials/search/Xows_db_row.java | 2 +- .../xowa/specials/search/Xows_db_word.java | 2 +- .../xowa/specials/xowa/diags/Db_rdr_utl.java | 1 + .../xowa/diags/Xows_cmd__file_check.java | 2 +- .../file_browsers/Xosp_fbrow_cmd__base.java | 6 +- .../src/gplx/xowa/users/Xoc_layout_mgr.java | 2 +- .../src/gplx/xowa/users/Xouc_setup_mgr.java | 3 +- .../src/gplx/xowa/users/Xouc_window_mgr.java | 1 + 400_xowa/src/gplx/xowa/users/Xoue_user.java | 1 + .../xowa/users/bmks/Dbui_tbl_itm__bmk.java | 2 +- .../users/history/Dbui_tbl_itm__history.java | 2 +- .../xowa/users/history/Xou_history_mgr.java | 2 +- .../users/history/Xou_history_sorter.java | 2 +- .../xowa/users/wikis/Xofs_url_itm_parser.java | 1 + .../users/wikis/Xofs_url_itm_parser_tst.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java | 4 +- .../gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java | 12 +- .../gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java | 21 +- .../xowa/wikis/ctgs/Xoctg_html_mgr_tst.java | 12 +- .../gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java | 2 +- .../xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java | 4 +- .../xowa/wikis/ctgs/Xoctg_pagelist_grp.java | 5 +- .../xowa/wikis/ctgs/Xoctg_pagelist_itms.java | 6 +- .../xowa/wikis/ctgs/Xoctg_pagelist_mgr.java | 7 +- .../xowa/wikis/ctgs/Xoctg_pagelist_wtr.java | 9 +- .../wikis/ctgs/Xoctg_pagelist_wtr_tst.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_view_itm.java | 54 ++- .../gplx/xowa/wikis/data/Xow_data_mgr.java | 2 +- .../wikis/data/tbls/Xowd_page_itm_sorter.java | 2 +- .../wikis/data/tbls/Xowd_xowa_db_tbl.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_sql.java | 10 +- .../xowa/wikis/dbs/Xodb_load_mgr_txt.java | 17 +- .../xowa/wikis/dbs/Xodb_save_mgr_txt.java | 2 +- .../wikis/domains/Xow_domain_itm_tst.java | 1 + .../gplx/xowa/wikis/metas/Xow_script_mgr.java | 2 +- 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java | 2 + .../src/gplx/xowa/wikis/nss/Xow_ns_mgr.java | 2 +- .../tdbs/hives/Bry_comparer_bgn_eos.java | 2 +- .../xowa/wikis/tdbs/hives/Xowd_hive_mgr.java | 4 +- .../xowa/wikis/tdbs/hives/Xowd_regy_mgr.java | 2 +- .../hives/Xowd_ttl_file_comparer_end.java | 2 +- .../xowa/wikis/tdbs/stats/Xob_stat_itm.java | 2 +- .../xowa/wikis/tdbs/stats/Xob_stat_type.java | 9 +- .../xowa/wikis/tdbs/xdats/Xob_xdat_file.java | 2 +- .../wikis/tdbs/xdats/Xob_xdat_file_tst.java | 2 +- .../wikis/tdbs/xdats/Xob_xdat_file_wtr.java | 4 +- .../xowa/xtns/dynamicPageList/Dpl_page.java | 2 +- .../xowa/xtns/dynamicPageList/Dpl_xnde.java | 6 +- .../xtns/gallery/Gallery_box_w_fmtr_arg.java | 36 +- .../xowa/xtns/gallery/Gallery_itm_parser.java | 2 +- .../xowa/xtns/gallery/Gallery_mgr_base.java | 28 +- .../xowa/xtns/insiders/Insider_html_bldr.java | 2 +- .../src/gplx/xowa/xtns/math/Xof_math_mgr.java | 8 +- .../xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java | 1 + .../pfuncs/stringutils/Pfunc_urldecode.java | 2 +- .../xowa/xtns/pfuncs/times/Pxd_itm_misc.java | 2 +- .../xtns/pfuncs/ttls/Pfunc_anchorencode.java | 3 +- .../xowa/xtns/pfuncs/ttls/Pfunc_filepath.java | 1 + .../xtns/pfuncs/ttls/Pfunc_urlencode.java | 2 +- .../src/gplx/xowa/xtns/poems/Poem_nde.java | 2 +- .../xtns/relatedSites/Sites_html_bldr.java | 2 +- .../src/gplx/xowa/xtns/scores/Score_xnde.java | 14 +- .../gplx/xowa/xtns/scribunto/Scrib_core.java | 1 + .../xtns/scribunto/Scrib_invoke_func.java | 2 +- .../scribunto/engines/luaj/Luaj_server.java | 1 + .../xtns/scribunto/libs/Scrib_lib_mw.java | 4 +- .../libs/Scrib_lib_mw__invoke_tst.java | 6 +- .../libs/Scrib_lib_text__json_util.java | 2 +- .../gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java | 2 +- .../xtns/wdatas/Wdata_xwiki_link_wtr.java | 2 +- .../xtns/wdatas/core/Wdata_lang_sorter.java | 2 +- .../xtns/wdatas/hwtrs/Wdata_fmtr__oview.java | 4 +- .../xtns/wdatas/hwtrs/Wdata_fmtr__slink.java | 8 +- .../xtns/wdatas/hwtrs/Wdata_fmtr__toc.java | 4 +- .../xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java | 2 +- .../xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java | 2 +- .../wdatas/imports/Io_stream_rdr_mgr.java | 7 +- .../xtns/wdatas/pfuncs/Wdata_pf_property.java | 1 + .../specials/Wdata_itemByTitle_page.java | 2 +- .../en.wikipedia.org-text.xowa | Bin 36864 -> 36864 bytes 581 files changed, 2897 insertions(+), 2097 deletions(-) rename 100_core/{src_101_types_object => src}/gplx/Array_.java (94%) rename 100_core/{src_101_types_object => src}/gplx/Array__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Bitmask_.java (100%) rename 100_core/{src_130_brys => src}/gplx/Bry_.java (95%) rename 100_core/{src_130_brys => src}/gplx/Bry__tst.java (97%) rename 100_core/{src_130_brys => src}/gplx/Bry_bfr.java (96%) rename 100_core/{src_130_brys => src}/gplx/Bry_bfr_.java (78%) rename 100_core/{src_130_brys => src}/gplx/Bry_bfr_tst.java (100%) rename 100_core/{src_130_brys => src}/gplx/Bry_find_.java (100%) rename 100_core/{src_130_brys => src}/gplx/Bry_find__tst.java (100%) rename 100_core/{src_130_brys => src}/gplx/Bry_split_.java (100%) rename 100_core/{src_130_brys => src}/gplx/Bry_split__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/DateAdp.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/DateAdp_.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/DateAdp__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/DateAdp_parser.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/DateAdp_parser_tst.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Decimal_adp.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Decimal_adp_.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Decimal_adp__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/EnmMgr.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Enm_.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Guid_adp.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Guid_adp_.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Guid_adp__tst.java (100%) rename 100_core/{src_140_list => src}/gplx/Hash_adp.java (89%) rename 100_core/{src_140_list => src}/gplx/Hash_adp_.java (83%) rename 100_core/{src_140_list => src}/gplx/Hash_adp_bry.java (97%) rename 100_core/{src_140_list => src}/gplx/Hash_adp_bry_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Io_url.java (96%) rename 100_core/{src_120_basicDataType => src}/gplx/Io_url_.java (96%) rename 100_core/{src_120_basicDataType => src}/gplx/KeyVal.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/KeyValHash.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/KeyValHash_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/KeyValList.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/KeyVal_.java (100%) rename 100_core/{src_140_list => src}/gplx/List_adp.java (95%) rename 100_core/{src_140_list => src}/gplx/List_adp_.java (95%) rename 100_core/{src_140_list => src}/gplx/List_adp_base.java (96%) rename 100_core/{src_140_list => src}/gplx/List_adp_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Math_.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Math__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/ObjAry.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Object_.java (100%) rename 100_core/{src_101_types_object => src}/gplx/Object__tst.java (100%) rename 100_core/{src_140_list => src}/gplx/Ordered_hash.java (94%) rename 100_core/{src_140_list => src}/gplx/Ordered_hash_.java (100%) rename 100_core/{src_140_list => src}/gplx/Ordered_hash_base.java (93%) rename 100_core/{src_140_list => src}/gplx/Ordered_hash_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/RandomAdp.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/RandomAdp_.java (100%) rename 100_core/{src_101_types_object => src}/gplx/String_.java (97%) rename 100_core/{src_101_types_object => src}/gplx/String__tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/TimeSpanAdp.java (96%) rename 100_core/{src_120_basicDataType => src}/gplx/TimeSpanAdp_.java (97%) rename 100_core/{src_120_basicDataType => src}/gplx/TimeSpanAdp__parse_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/TimeSpanAdp_basic_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/TimeSpanAdp_xtoStr_tst.java (100%) rename 100_core/{src_120_basicDataType => src}/gplx/Url_encoder_interface.java (100%) create mode 100644 100_core/src/gplx/core/brys/Bry_bfr_mkr.java create mode 100644 100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java create mode 100644 100_core/src/gplx/core/brys/Bry_bfr_mkr_tst.java rename 100_core/{src_130_brys/gplx => src/gplx/core/brys}/Bry_rdr_old.java (97%) rename 100_core/src/gplx/{ => core/envs}/Env_.java (95%) rename 100_core/src/gplx/{JarAdp_.java => core/envs/Jar_adp_.java} (93%) rename 100_core/src/gplx/{ => core/envs}/Op_sys.java (97%) rename 100_core/src/gplx/{ => core/envs}/Op_sys_.java (93%) rename 100_core/src/gplx/{ProcessAdp.java => core/envs/Process_adp.java} (76%) rename 100_core/src/gplx/{ProcessAdp_tst.java => core/envs/Process_adp_tst.java} (82%) rename 100_core/src/gplx/{ => core/errs}/Err_msg.java (95%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/ComparerAble.java (93%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/ComparerAble_.java (93%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/EnumerAble.java (92%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/Hash_adp_base.java (88%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/Hash_adp_list.java (94%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/Iterator_null.java (93%) rename 100_core/{src_100_interface/gplx/NewAble.java => src/gplx/core/lists/Iterator_objAry.java} (66%) rename 100_core/{src_140_list/gplx => src/gplx/core/lists}/List_adp_sorter.java (87%) rename 100_core/{src_140_list/gplx => src/gplx/core/lists}/List_adp_sorter_tst.java (94%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/StackAdp.java (92%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/StackAdp_.java (95%) rename 100_core/{src_140_list/gplx => src/gplx/core}/lists/StackAdp_tst.java (93%) rename 100_core/src/gplx/{ => core/primitives}/Int_ary_.java (96%) rename 100_core/src/gplx/{ => core/primitives}/Int_ary__tst.java (95%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/DataRdr.java (95%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/DataRdr_.java (97%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/DataRdr_base.java (97%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/DataRdr_mem.java (96%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/DataWtr.java (93%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/DataWtr_.java (94%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/DataWtr_base.java (96%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/GfoNdeRdr.java (92%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/GfoNdeRdr_.java (93%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/SrlMgr.java (94%) rename 100_core/{src_330_store/gplx => src/gplx/core/stores}/SrlObj.java (92%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/xmls/XmlDataRdr.java (95%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/xmls/XmlDataRdr_.java (90%) rename 100_core/{src_330_store/gplx => src/gplx/core}/stores/xmls/XmlDataWtr_.java (95%) rename 100_core/src/gplx/{ => core/tests}/TfdsEqListItmStr.java (92%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/BoolClassXtn.java (91%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/ByteClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/ClassXtn.java (93%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/ClassXtnPool.java (92%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/ClassXtn_base.java (94%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/DateAdpClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/DateAdpClassXtn_tst.java (93%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/DecimalAdpClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/DoubleClassXtn.java (94%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/FloatClassXtn.java (94%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/IntClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/IoUrlClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/LongClassXtn.java (95%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/ObjectClassXtn.java (94%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/StringClassXtn.java (89%) rename 100_core/{src_300_classXtn/gplx => src/gplx/core/type_xtns}/TimeSpanAdpClassXtn.java (95%) delete mode 100644 100_core/src_130_brys/gplx/Bry_bfr_mkr.java delete mode 100644 100_core/src_130_brys/gplx/Bry_bfr_mkr_tst.java rename 100_core/tst/gplx/{ => core}/stores/GfoNdeRdr_read_tst.java (91%) rename 100_core/tst/gplx/{ => core}/stores/GfoNdeRdr_tst.java (95%) rename 100_core/tst/gplx/{ => core}/stores/xmls/XmlDataRdr_tst.java (94%) rename 100_core/tst/gplx/{ => core}/stores/xmls/XmlDataWtr_tst.java (94%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprArg.java (93%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprItm.java (95%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprMgr.java (95%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprMgr_tst.java (97%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprRdr.java (96%) rename 140_dbs/src/gplx/{ => core}/stores/DbMaprWtr.java (96%) rename 140_dbs/src/gplx/{ => core}/stores/Db_data_rdr.java (96%) rename 140_dbs/src/gplx/{ => core}/stores/Db_data_rdr_.java (93%) rename 140_dbs/src/gplx/{ => core}/stores/MockDiscObj.java (97%) create mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder.java create mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java create mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java create mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_mkr.java create mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java delete mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java delete mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_mgr.java delete mode 100644 400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java rename 400_xowa/src/gplx/xowa/htmls/core/bldrs/{Xob_hdump_mgr.java => Xob_hdump_bldr.java} (57%) rename 100_core/src_100_interface/gplx/EqAble.java => 400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__wrapper.java (53%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__basic__tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser.java rename 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/{Xoh_ttl_matcher_tst.java => anchs/Xoh_anch_capt_parser_tst.java} (53%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Xoh_style_regy.java diff --git a/100_core/.classpath b/100_core/.classpath index 63319e41f..638416bed 100644 --- a/100_core/.classpath +++ b/100_core/.classpath @@ -2,13 +2,7 @@ - - - - - - diff --git a/100_core/src_101_types_object/gplx/Array_.java b/100_core/src/gplx/Array_.java similarity index 94% rename from 100_core/src_101_types_object/gplx/Array_.java rename to 100_core/src/gplx/Array_.java index 66edca48a..9a48331a2 100644 --- a/100_core/src_101_types_object/gplx/Array_.java +++ b/100_core/src/gplx/Array_.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx; import java.lang.reflect.Array; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.lists.*; public class Array_ { public static Object cast(Object o) {return (Object)o;} public static void Sort(Object[] obj) {List_adp_sorter.new_().Sort(obj, obj.length);} - public static void Sort(Object[] obj, gplx.lists.ComparerAble comparer) {List_adp_sorter.new_().Sort(obj, obj.length, true, comparer);} + public static void Sort(Object[] obj, gplx.core.lists.ComparerAble comparer) {List_adp_sorter.new_().Sort(obj, obj.length, true, comparer);} public static Object[] Insert(Object[] cur, Object[] add, int addPos) { int curLen = cur.length, addLen = add.length; Object[] rv = (Object[])Array_.Create(Array_.Component_type(cur), curLen + addLen); diff --git a/100_core/src_101_types_object/gplx/Array__tst.java b/100_core/src/gplx/Array__tst.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Array__tst.java rename to 100_core/src/gplx/Array__tst.java diff --git a/100_core/src_120_basicDataType/gplx/Bitmask_.java b/100_core/src/gplx/Bitmask_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/Bitmask_.java rename to 100_core/src/gplx/Bitmask_.java diff --git a/100_core/src_130_brys/gplx/Bry_.java b/100_core/src/gplx/Bry_.java similarity index 95% rename from 100_core/src_130_brys/gplx/Bry_.java rename to 100_core/src/gplx/Bry_.java index 8cf7dbe7f..e2a8c25d6 100644 --- a/100_core/src_130_brys/gplx/Bry_.java +++ b/100_core/src/gplx/Bry_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import java.lang.*; -import gplx.core.primitives.*; import gplx.core.ios.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.ios.*; public class Bry_ { public static final String Cls_val_name = "byte[]"; public static final byte[] Empty = new byte[0]; @@ -944,4 +944,28 @@ public class Bry_ { return rv; } public static byte[] Null_if_empty(byte[] v) {return Len_eq_0(v) ? null : v;} + + public static byte[] Escape_ws(byte[] bry) {Bry_bfr bfr = Bry_bfr_.Get(); byte[] rv = Escape_ws(bfr, bry); bfr.Mkr_rls(); return rv;} + public static byte[] Escape_ws(Bry_bfr bfr, byte[] src) { + boolean dirty = false; + int len = src.length; + for (int i = 0; i < len; ++i) { + byte b = src[i]; + byte escape = Byte_.Zero; + switch (b) { + case Byte_ascii.Tab: escape = Byte_ascii.Ltr_t; break; + case Byte_ascii.Nl: escape = Byte_ascii.Ltr_n; break; + case Byte_ascii.Cr: escape = Byte_ascii.Ltr_r; break; + default: if (dirty) bfr.Add_byte(b); break; + } + if (escape != Byte_.Zero) { + if (!dirty) { + dirty = true; + bfr.Add_mid(src, 0, i); + } + bfr.Add_byte_backslash().Add_byte(escape); + } + } + return dirty ? bfr.To_bry_and_clear() : src; + } } diff --git a/100_core/src_130_brys/gplx/Bry__tst.java b/100_core/src/gplx/Bry__tst.java similarity index 97% rename from 100_core/src_130_brys/gplx/Bry__tst.java rename to 100_core/src/gplx/Bry__tst.java index 009b7e7e2..7bfb878f2 100644 --- a/100_core/src_130_brys/gplx/Bry__tst.java +++ b/100_core/src/gplx/Bry__tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import org.junit.*; import gplx.core.primitives.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.core.brys.*; public class Bry__tst { private final Bry__fxt fxt = new Bry__fxt(); @Test public void new_ascii_() { diff --git a/100_core/src_130_brys/gplx/Bry_bfr.java b/100_core/src/gplx/Bry_bfr.java similarity index 96% rename from 100_core/src_130_brys/gplx/Bry_bfr.java rename to 100_core/src/gplx/Bry_bfr.java index 1e8f07e19..4b2b57b5a 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr.java +++ b/100_core/src/gplx/Bry_bfr.java @@ -108,6 +108,7 @@ public class Bry_bfr { bfr_len += len; return this; } + public Bry_bfr Add_bry_ref_obj(Bry_obj_ref v) {v.Bfr_arg__add(this); return this;} public Bry_bfr Add_bfr_and_preserve(Bry_bfr src) { int len = src.bfr_len; if (bfr_len + len > bfr_max) Resize((bfr_max + len) * 2); @@ -564,10 +565,10 @@ public class Bry_bfr { bfr_max = v; bfr = Bry_.Resize(bfr, 0, v); } - @gplx.Internal protected int Mkr_idx() {return mkr_idx;} private int mkr_idx = -1; - @gplx.Internal protected boolean Mkr_idx_is_null() {return mkr_idx == -1;} - @gplx.Internal protected int Bfr_max() {return bfr_max;} private int bfr_max; - @gplx.Internal protected Bry_bfr Mkr_init(Bry_bfr_mkr_mgr mkr_mgr, int itm) { + public int Mkr_idx() {return mkr_idx;} private int mkr_idx = -1; + public boolean Mkr_idx_is_null() {return mkr_idx == -1;} + public int Bfr_max() {return bfr_max;} private int bfr_max; + public Bry_bfr Mkr_init(Bry_bfr_mkr_mgr mkr_mgr, int itm) { synchronized (this) { this.mkr_mgr = mkr_mgr; this.mkr_idx = itm; } diff --git a/100_core/src_130_brys/gplx/Bry_bfr_.java b/100_core/src/gplx/Bry_bfr_.java similarity index 78% rename from 100_core/src_130_brys/gplx/Bry_bfr_.java rename to 100_core/src/gplx/Bry_bfr_.java index 613404d42..91ba57b20 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr_.java +++ b/100_core/src/gplx/Bry_bfr_.java @@ -16,8 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; +import gplx.core.brys.*; public class Bry_bfr_ { - public static Bry_bfr[] Ary_empty = new Bry_bfr[0]; + public static final Bry_bfr[] Ary_empty = new Bry_bfr[0]; + private static Bry_bfr_mkr_mgr dflt; + public static Bry_bfr Get() {if (dflt == null) dflt = new Bry_bfr_mkr_mgr(Bry_bfr_mkr.Tid_b128, 128); return dflt.Get();} // NOTE: lazy else "Object synchronization" error; DATE:2015-11-18 public static void Assert_at_end(Bry_bfr bfr, byte assert_byte) { int len = bfr.Len(); if (len == 0) return; int assert_count = 0; diff --git a/100_core/src_130_brys/gplx/Bry_bfr_tst.java b/100_core/src/gplx/Bry_bfr_tst.java similarity index 100% rename from 100_core/src_130_brys/gplx/Bry_bfr_tst.java rename to 100_core/src/gplx/Bry_bfr_tst.java diff --git a/100_core/src_130_brys/gplx/Bry_find_.java b/100_core/src/gplx/Bry_find_.java similarity index 100% rename from 100_core/src_130_brys/gplx/Bry_find_.java rename to 100_core/src/gplx/Bry_find_.java diff --git a/100_core/src_130_brys/gplx/Bry_find__tst.java b/100_core/src/gplx/Bry_find__tst.java similarity index 100% rename from 100_core/src_130_brys/gplx/Bry_find__tst.java rename to 100_core/src/gplx/Bry_find__tst.java diff --git a/100_core/src_130_brys/gplx/Bry_split_.java b/100_core/src/gplx/Bry_split_.java similarity index 100% rename from 100_core/src_130_brys/gplx/Bry_split_.java rename to 100_core/src/gplx/Bry_split_.java diff --git a/100_core/src_130_brys/gplx/Bry_split__tst.java b/100_core/src/gplx/Bry_split__tst.java similarity index 100% rename from 100_core/src_130_brys/gplx/Bry_split__tst.java rename to 100_core/src/gplx/Bry_split__tst.java diff --git a/100_core/src_120_basicDataType/gplx/DateAdp.java b/100_core/src/gplx/DateAdp.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/DateAdp.java rename to 100_core/src/gplx/DateAdp.java diff --git a/100_core/src_120_basicDataType/gplx/DateAdp_.java b/100_core/src/gplx/DateAdp_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/DateAdp_.java rename to 100_core/src/gplx/DateAdp_.java diff --git a/100_core/src_120_basicDataType/gplx/DateAdp__tst.java b/100_core/src/gplx/DateAdp__tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/DateAdp__tst.java rename to 100_core/src/gplx/DateAdp__tst.java diff --git a/100_core/src_120_basicDataType/gplx/DateAdp_parser.java b/100_core/src/gplx/DateAdp_parser.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/DateAdp_parser.java rename to 100_core/src/gplx/DateAdp_parser.java diff --git a/100_core/src_120_basicDataType/gplx/DateAdp_parser_tst.java b/100_core/src/gplx/DateAdp_parser_tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/DateAdp_parser_tst.java rename to 100_core/src/gplx/DateAdp_parser_tst.java diff --git a/100_core/src_101_types_object/gplx/Decimal_adp.java b/100_core/src/gplx/Decimal_adp.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Decimal_adp.java rename to 100_core/src/gplx/Decimal_adp.java diff --git a/100_core/src_101_types_object/gplx/Decimal_adp_.java b/100_core/src/gplx/Decimal_adp_.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Decimal_adp_.java rename to 100_core/src/gplx/Decimal_adp_.java diff --git a/100_core/src_101_types_object/gplx/Decimal_adp__tst.java b/100_core/src/gplx/Decimal_adp__tst.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Decimal_adp__tst.java rename to 100_core/src/gplx/Decimal_adp__tst.java diff --git a/100_core/src_120_basicDataType/gplx/EnmMgr.java b/100_core/src/gplx/EnmMgr.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/EnmMgr.java rename to 100_core/src/gplx/EnmMgr.java diff --git a/100_core/src_120_basicDataType/gplx/Enm_.java b/100_core/src/gplx/Enm_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/Enm_.java rename to 100_core/src/gplx/Enm_.java diff --git a/100_core/src/gplx/Err.java b/100_core/src/gplx/Err.java index 183ba6d2c..e7174a640 100644 --- a/100_core/src/gplx/Err.java +++ b/100_core/src/gplx/Err.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; +import gplx.core.errs.*; public class Err extends RuntimeException { private final boolean is_gplx; private final String trace; diff --git a/100_core/src/gplx/Err_.java b/100_core/src/gplx/Err_.java index d51f655aa..e6acf1ff8 100644 --- a/100_core/src/gplx/Err_.java +++ b/100_core/src/gplx/Err_.java @@ -52,6 +52,7 @@ public class Err_ { } public static String Message_lang(Throwable e) {return e.getMessage();} + public static String To_str(Exception e) {return e.toString();} // e.getMessage() is sometimes null? public static String Trace_lang(Throwable e) {return Trace_lang_exec(e.getStackTrace());} private static String Trace_lang_exec(StackTraceElement[] ary) { String rv = ""; diff --git a/100_core/src_101_types_object/gplx/Guid_adp.java b/100_core/src/gplx/Guid_adp.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Guid_adp.java rename to 100_core/src/gplx/Guid_adp.java diff --git a/100_core/src_101_types_object/gplx/Guid_adp_.java b/100_core/src/gplx/Guid_adp_.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Guid_adp_.java rename to 100_core/src/gplx/Guid_adp_.java diff --git a/100_core/src_101_types_object/gplx/Guid_adp__tst.java b/100_core/src/gplx/Guid_adp__tst.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Guid_adp__tst.java rename to 100_core/src/gplx/Guid_adp__tst.java diff --git a/100_core/src_140_list/gplx/Hash_adp.java b/100_core/src/gplx/Hash_adp.java similarity index 89% rename from 100_core/src_140_list/gplx/Hash_adp.java rename to 100_core/src/gplx/Hash_adp.java index 88461ff32..cb2548723 100644 --- a/100_core/src_140_list/gplx/Hash_adp.java +++ b/100_core/src/gplx/Hash_adp.java @@ -16,12 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface Hash_adp extends gplx.lists.EnumerAble { +public interface Hash_adp extends gplx.core.lists.EnumerAble { int Count(); boolean Has(Object key); Object Get_by(Object key); Object Get_by_or_fail(Object key); - Object Get_by_or_new(Object key, NewAble prototype); void Add(Object key, Object val); void Add_as_key_and_val(Object val); boolean Add_if_dupe_use_1st(Object key, Object val); diff --git a/100_core/src_140_list/gplx/Hash_adp_.java b/100_core/src/gplx/Hash_adp_.java similarity index 83% rename from 100_core/src_140_list/gplx/Hash_adp_.java rename to 100_core/src/gplx/Hash_adp_.java index afdff41ef..f160f0fa0 100644 --- a/100_core/src_140_list/gplx/Hash_adp_.java +++ b/100_core/src/gplx/Hash_adp_.java @@ -21,18 +21,17 @@ public class Hash_adp_ { public static Hash_adp new_() {return new Hash_adp_obj();} public static final Hash_adp Noop = new Hash_adp_noop(); } -class Hash_adp_obj extends gplx.lists.Hash_adp_base implements Hash_adp {}//_20110428 +class Hash_adp_obj extends gplx.core.lists.Hash_adp_base implements Hash_adp {}//_20110428 class Hash_adp_noop implements Hash_adp { public int Count() {return 0;} public boolean Has(Object key) {return false;} public Object Get_by(Object key) {return null;} public Object Get_by_or_fail(Object key) {throw Err_.new_missing_key(Object_.Xto_str_strict_or_null_mark(key));} - public Object Get_by_or_new(Object key, NewAble proto) {throw Err_.new_wo_type("could not add to null hash");} public void Add(Object key, Object val) {} public void Add_as_key_and_val(Object val) {} public void Add_if_dupe_use_nth(Object key, Object val) {} public boolean Add_if_dupe_use_1st(Object key, Object val) {return false;} public void Del(Object key) {} public void Clear() {} - public java.util.Iterator iterator() {return gplx.lists.Iterator_null.Instance;} + public java.util.Iterator iterator() {return gplx.core.lists.Iterator_null.Instance;} } diff --git a/100_core/src_140_list/gplx/Hash_adp_bry.java b/100_core/src/gplx/Hash_adp_bry.java similarity index 97% rename from 100_core/src_140_list/gplx/Hash_adp_bry.java rename to 100_core/src/gplx/Hash_adp_bry.java index accc9685b..5813ffdd6 100644 --- a/100_core/src_140_list/gplx/Hash_adp_bry.java +++ b/100_core/src/gplx/Hash_adp_bry.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx; import gplx.core.primitives.*; import gplx.core.intls.*; -public class Hash_adp_bry extends gplx.lists.Hash_adp_base implements Hash_adp { +public class Hash_adp_bry extends gplx.core.lists.Hash_adp_base implements Hash_adp { private final Hash_adp_bry_itm_base proto, key_ref; Hash_adp_bry(Hash_adp_bry_itm_base proto) { this.proto = proto; diff --git a/100_core/src_140_list/gplx/Hash_adp_bry_tst.java b/100_core/src/gplx/Hash_adp_bry_tst.java similarity index 100% rename from 100_core/src_140_list/gplx/Hash_adp_bry_tst.java rename to 100_core/src/gplx/Hash_adp_bry_tst.java diff --git a/100_core/src_120_basicDataType/gplx/Io_url.java b/100_core/src/gplx/Io_url.java similarity index 96% rename from 100_core/src_120_basicDataType/gplx/Io_url.java rename to 100_core/src/gplx/Io_url.java index 1caa50eeb..7f610815d 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url.java +++ b/100_core/src/gplx/Io_url.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; import gplx.core.ios.*; /*IoUrlInfo*/ -public class Io_url implements CompareAble, EqAble, ParseAble, GfoInvkAble { //_20101005 URL:doc/Io_url.txt +import gplx.core.strings.*; import gplx.core.ios.*; /*IoUrlInfo*/ import gplx.core.envs.*; +public class Io_url implements CompareAble, ParseAble, GfoInvkAble { //_20101005 URL:doc/Io_url.txt public IoUrlInfo Info() {return info;} IoUrlInfo info; public String Raw() {return raw;} final String raw; public byte[] RawBry() {return Bry_.new_u8(raw);} diff --git a/100_core/src_120_basicDataType/gplx/Io_url_.java b/100_core/src/gplx/Io_url_.java similarity index 96% rename from 100_core/src_120_basicDataType/gplx/Io_url_.java rename to 100_core/src/gplx/Io_url_.java index 0d20638e4..c9671d1f7 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url_.java +++ b/100_core/src/gplx/Io_url_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.ios.*; /*IoUrlInfo_*/ +import gplx.core.ios.*; /*IoUrlInfo_*/ import gplx.core.stores.*; import gplx.core.envs.*; public class Io_url_ { public static final Io_url Empty = new Io_url("", IoUrlInfo_.Nil); public static final Io_url NullPtr = null; diff --git a/100_core/src_120_basicDataType/gplx/KeyVal.java b/100_core/src/gplx/KeyVal.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/KeyVal.java rename to 100_core/src/gplx/KeyVal.java diff --git a/100_core/src_120_basicDataType/gplx/KeyValHash.java b/100_core/src/gplx/KeyValHash.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/KeyValHash.java rename to 100_core/src/gplx/KeyValHash.java diff --git a/100_core/src_120_basicDataType/gplx/KeyValHash_tst.java b/100_core/src/gplx/KeyValHash_tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/KeyValHash_tst.java rename to 100_core/src/gplx/KeyValHash_tst.java diff --git a/100_core/src_120_basicDataType/gplx/KeyValList.java b/100_core/src/gplx/KeyValList.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/KeyValList.java rename to 100_core/src/gplx/KeyValList.java diff --git a/100_core/src_120_basicDataType/gplx/KeyVal_.java b/100_core/src/gplx/KeyVal_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/KeyVal_.java rename to 100_core/src/gplx/KeyVal_.java diff --git a/100_core/src_140_list/gplx/List_adp.java b/100_core/src/gplx/List_adp.java similarity index 95% rename from 100_core/src_140_list/gplx/List_adp.java rename to 100_core/src/gplx/List_adp.java index d0d83fe1d..a822d003a 100644 --- a/100_core/src_140_list/gplx/List_adp.java +++ b/100_core/src/gplx/List_adp.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.lists.*; /*EnumerAble,ComparerAble*/ +import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ public interface List_adp extends EnumerAble { int Count(); Object Get_at(int i); diff --git a/100_core/src_140_list/gplx/List_adp_.java b/100_core/src/gplx/List_adp_.java similarity index 95% rename from 100_core/src_140_list/gplx/List_adp_.java rename to 100_core/src/gplx/List_adp_.java index f892df133..e5737425d 100644 --- a/100_core/src_140_list/gplx/List_adp_.java +++ b/100_core/src/gplx/List_adp_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.lists.*; /*EnumerAble,ComparerAble*/ +import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ public class List_adp_ { public static final List_adp Noop = new List_adp_noop(); public static List_adp as_(Object obj) {return obj instanceof List_adp ? (List_adp)obj : null;} diff --git a/100_core/src_140_list/gplx/List_adp_base.java b/100_core/src/gplx/List_adp_base.java similarity index 96% rename from 100_core/src_140_list/gplx/List_adp_base.java rename to 100_core/src/gplx/List_adp_base.java index 12e75789f..5a5f5078b 100644 --- a/100_core/src_140_list/gplx/List_adp_base.java +++ b/100_core/src/gplx/List_adp_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; import gplx.lists.*; +import gplx.core.strings.*; import gplx.core.lists.*; public abstract class List_adp_base implements List_adp, GfoInvkAble { private Object[] list; private int count; public List_adp_base(int capacity) { diff --git a/100_core/src_140_list/gplx/List_adp_tst.java b/100_core/src/gplx/List_adp_tst.java similarity index 100% rename from 100_core/src_140_list/gplx/List_adp_tst.java rename to 100_core/src/gplx/List_adp_tst.java diff --git a/100_core/src_120_basicDataType/gplx/Math_.java b/100_core/src/gplx/Math_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/Math_.java rename to 100_core/src/gplx/Math_.java diff --git a/100_core/src_120_basicDataType/gplx/Math__tst.java b/100_core/src/gplx/Math__tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/Math__tst.java rename to 100_core/src/gplx/Math__tst.java diff --git a/100_core/src_120_basicDataType/gplx/ObjAry.java b/100_core/src/gplx/ObjAry.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/ObjAry.java rename to 100_core/src/gplx/ObjAry.java diff --git a/100_core/src_101_types_object/gplx/Object_.java b/100_core/src/gplx/Object_.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Object_.java rename to 100_core/src/gplx/Object_.java diff --git a/100_core/src_101_types_object/gplx/Object__tst.java b/100_core/src/gplx/Object__tst.java similarity index 100% rename from 100_core/src_101_types_object/gplx/Object__tst.java rename to 100_core/src/gplx/Object__tst.java diff --git a/100_core/src_140_list/gplx/Ordered_hash.java b/100_core/src/gplx/Ordered_hash.java similarity index 94% rename from 100_core/src_140_list/gplx/Ordered_hash.java rename to 100_core/src/gplx/Ordered_hash.java index 17824797d..8d7be4eea 100644 --- a/100_core/src_140_list/gplx/Ordered_hash.java +++ b/100_core/src/gplx/Ordered_hash.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.lists.*; /*EnumerAble,ComparerAble*/ +import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ public interface Ordered_hash extends Hash_adp { Object Get_at(int i); void Add_at(int i, Object o); diff --git a/100_core/src_140_list/gplx/Ordered_hash_.java b/100_core/src/gplx/Ordered_hash_.java similarity index 100% rename from 100_core/src_140_list/gplx/Ordered_hash_.java rename to 100_core/src/gplx/Ordered_hash_.java diff --git a/100_core/src_140_list/gplx/Ordered_hash_base.java b/100_core/src/gplx/Ordered_hash_base.java similarity index 93% rename from 100_core/src_140_list/gplx/Ordered_hash_base.java rename to 100_core/src/gplx/Ordered_hash_base.java index ecf6e5134..7ce93a814 100644 --- a/100_core/src_140_list/gplx/Ordered_hash_base.java +++ b/100_core/src/gplx/Ordered_hash_base.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; -import gplx.lists.*; /*EnumerAble,ComparerAble*/ +import gplx.core.strings.*; import gplx.core.envs.*; +import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, GfoInvkAble { @Override protected void Add_base(Object key, Object val) { super.Add_base(key, val); @@ -59,7 +59,7 @@ public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, Gf public void Resize_bounds(int i) {if (locked) Lock_fail(); ordered.Resize_bounds(i);} public void Lock() {locked = true;} private boolean locked = false; void Lock_fail() {throw Err_.new_wo_type("collection is locked");} - static final String GRP_KEY = "gplx.lists.ordered_hash"; + static final String GRP_KEY = "gplx.core.lists.ordered_hash"; public void Add_at(int i, Object o) {if (locked) Lock_fail(); ordered.Add_at(i, o);} public Object Get_at(int i) {return Get_at_base(i);} public int Idx_of(Object obj) {return this.IndexOf_base(obj);} diff --git a/100_core/src_140_list/gplx/Ordered_hash_tst.java b/100_core/src/gplx/Ordered_hash_tst.java similarity index 100% rename from 100_core/src_140_list/gplx/Ordered_hash_tst.java rename to 100_core/src/gplx/Ordered_hash_tst.java diff --git a/100_core/src_120_basicDataType/gplx/RandomAdp.java b/100_core/src/gplx/RandomAdp.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/RandomAdp.java rename to 100_core/src/gplx/RandomAdp.java diff --git a/100_core/src_120_basicDataType/gplx/RandomAdp_.java b/100_core/src/gplx/RandomAdp_.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/RandomAdp_.java rename to 100_core/src/gplx/RandomAdp_.java diff --git a/100_core/src_101_types_object/gplx/String_.java b/100_core/src/gplx/String_.java similarity index 97% rename from 100_core/src_101_types_object/gplx/String_.java rename to 100_core/src/gplx/String_.java index 189a7306f..d9f3498b1 100644 --- a/100_core/src_101_types_object/gplx/String_.java +++ b/100_core/src/gplx/String_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import java.lang.*; -import gplx.core.strings.*; import gplx.langs.gfs.*; +import gplx.core.strings.*; import gplx.langs.gfs.*; import gplx.core.envs.*; public class String_ implements GfoInvkAble { public static final Class Cls_ref_type = String.class; public static final String Cls_val_name = "str" + "ing"; diff --git a/100_core/src_101_types_object/gplx/String__tst.java b/100_core/src/gplx/String__tst.java similarity index 100% rename from 100_core/src_101_types_object/gplx/String__tst.java rename to 100_core/src/gplx/String__tst.java diff --git a/100_core/src/gplx/Tfds.java b/100_core/src/gplx/Tfds.java index 04c60020f..8cbdd12fb 100644 --- a/100_core/src/gplx/Tfds.java +++ b/100_core/src/gplx/Tfds.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; import gplx.core.consoles.*; +import gplx.core.strings.*; import gplx.core.consoles.*; import gplx.core.tests.*; public class Tfds { // URL:doc/gplx.tfds/Tfds.txt public static boolean SkipDb = false; public static void Eq_bool (boolean expd , boolean actl) {Eq_exec_y(expd, actl, "", Object_.Ary_empty);} @@ -31,8 +31,6 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt public static void Eq_str (String expd, String actl, String fmt, Object... args) {Eq_exec_y(expd, actl, fmt, args);} public static void Eq(Object expd, Object actl) {Eq_wkr(expd, actl, true, EmptyStr);} - public static void Eq_able(EqAble expd, EqAble actl) {Eq_able_wkr(expd, actl, true, EmptyStr);} - public static void Eq_able(EqAble expd, EqAble actl, String fmt, Object... args) {Eq_able_wkr(expd, actl, true, String_.Format(fmt, args));} public static void Eq_byte(byte expd, byte actl) {Eq_wkr(expd, actl, true, EmptyStr);} public static void Eq_long(long expd, long actl) {Eq_wkr(expd, actl, true, EmptyStr);} public static void Eq_float(float expd, float actl) {Eq_wkr(expd, actl, true, EmptyStr);} @@ -75,15 +73,6 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt String msg = msgBldr.Eq_xtoStr(lhs, rhs, String_.Format(fmt, args)); throw Err_.new_wo_type(msg); } - static void Eq_able_wkr(EqAble lhs, EqAble rhs, boolean expd, String customMsg) { - boolean actl = false; - if (lhs == null && rhs != null) actl = false; - else if (lhs != null && rhs == null) actl = false; - else actl = lhs.Eq(rhs); - if (expd == actl) return; - String msg = msgBldr.Eq_xtoStr(lhs, rhs, customMsg); - throw Err_.new_wo_type(msg); - } static void Eq_wkr(Object lhs, Object rhs, boolean expd, String customMsg) { boolean actl = Object_.Eq(lhs, rhs); if (expd == actl) return; @@ -168,6 +157,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt public static void WriteText(String text) {Console_adp__sys.Instance.Write_str(text);} public static void Write(byte[] s, int b, int e) {Write(Bry_.Mid(s, b, e));} public static void Write() {Write("tmp");} + public static void Dbg(Object... ary) {Write(ary);} public static void Write(Object... ary) { String_bldr sb = String_bldr_.new_(); int aryLen = Array_.Len(ary); diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java b/100_core/src/gplx/TimeSpanAdp.java similarity index 96% rename from 100_core/src_120_basicDataType/gplx/TimeSpanAdp.java rename to 100_core/src/gplx/TimeSpanAdp.java index e8c8a708e..7c63ed198 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java +++ b/100_core/src/gplx/TimeSpanAdp.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import gplx.core.strings.*; -public class TimeSpanAdp implements CompareAble, EqAble { +public class TimeSpanAdp implements CompareAble { public long Fracs() {return fracs;} long fracs; public int FracsAsInt() {return (int)fracs;} public Decimal_adp TotalSecs() { return Decimal_adp_.divide_(fracs, TimeSpanAdp_.Divisors[TimeSpanAdp_.Idx_Sec]); diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java b/100_core/src/gplx/TimeSpanAdp_.java similarity index 97% rename from 100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java rename to 100_core/src/gplx/TimeSpanAdp_.java index 7ed125efa..6305808f6 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java +++ b/100_core/src/gplx/TimeSpanAdp_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class TimeSpanAdp_ { public static final TimeSpanAdp Zero = new TimeSpanAdp(0); public static final TimeSpanAdp Null = new TimeSpanAdp(-1); diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp__parse_tst.java b/100_core/src/gplx/TimeSpanAdp__parse_tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/TimeSpanAdp__parse_tst.java rename to 100_core/src/gplx/TimeSpanAdp__parse_tst.java diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_basic_tst.java b/100_core/src/gplx/TimeSpanAdp_basic_tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/TimeSpanAdp_basic_tst.java rename to 100_core/src/gplx/TimeSpanAdp_basic_tst.java diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_xtoStr_tst.java b/100_core/src/gplx/TimeSpanAdp_xtoStr_tst.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/TimeSpanAdp_xtoStr_tst.java rename to 100_core/src/gplx/TimeSpanAdp_xtoStr_tst.java diff --git a/100_core/src_120_basicDataType/gplx/Url_encoder_interface.java b/100_core/src/gplx/Url_encoder_interface.java similarity index 100% rename from 100_core/src_120_basicDataType/gplx/Url_encoder_interface.java rename to 100_core/src/gplx/Url_encoder_interface.java diff --git a/100_core/src/gplx/Yn.java b/100_core/src/gplx/Yn.java index ed32203c0..fc4a227a7 100644 --- a/100_core/src/gplx/Yn.java +++ b/100_core/src/gplx/Yn.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; +import gplx.core.stores.*; public class Yn { public static final String Y = "y", N = "n"; public static boolean parse_by_char_or(String v, boolean or) { diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr.java new file mode 100644 index 000000000..da5fe6d23 --- /dev/null +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr.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.core.brys; import gplx.*; import gplx.core.*; +public class Bry_bfr_mkr { + private final Bry_bfr_mkr_mgr mkr_b128 = new Bry_bfr_mkr_mgr(Tid_b128, 128); + public Bry_bfr Get_b128() {return mkr_b128.Get();} + public Bry_bfr Get_b512() {return mkr_b512.Get();} private final Bry_bfr_mkr_mgr mkr_b512 = new Bry_bfr_mkr_mgr(Tid_b512, 512); + public Bry_bfr Get_k004() {return mkr_k004.Get();} private final Bry_bfr_mkr_mgr mkr_k004 = new Bry_bfr_mkr_mgr(Tid_k004, 4 * Io_mgr.Len_kb); + public Bry_bfr Get_m001() {return mkr_m001.Get();} private final Bry_bfr_mkr_mgr mkr_m001 = new Bry_bfr_mkr_mgr(Tid_m001, 1 * Io_mgr.Len_mb); + public void Rls(Bry_bfr v) {v.Mkr_rls();} + public void Clear() { + for (byte i = Tid_b128; i <= Tid_m001; i++) + mkr(i).Clear(); + } + public void Clear_fail_check() { + for (byte i = Tid_b128; i <= Tid_m001; i++) + mkr(i).Clear_fail_check(); + } + private Bry_bfr_mkr_mgr mkr(byte tid) { + switch (tid) { + case Tid_b128: return mkr_b128; + case Tid_b512: return mkr_b512; + case Tid_k004: return mkr_k004; + case Tid_m001: return mkr_m001; + default: throw Err_.new_unhandled(tid); + } + } + public static final byte Tid_b128 = 0, Tid_b512 = 1, Tid_k004 = 2, Tid_m001 = 3; +} diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java new file mode 100644 index 000000000..df626ac24 --- /dev/null +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java @@ -0,0 +1,100 @@ +/* +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.brys; import gplx.*; import gplx.core.*; +public class Bry_bfr_mkr_mgr { + private final Object thread_lock = new Object(); + private Bry_bfr[] used = Bry_bfr_.Ary_empty; private int used_len = 0, used_max = 0; + private int[] free; private int free_len; private int reset; + public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 + this.mgr_id = mgr_id; + this.reset = reset; + this.free = Int_.Ary_empty; + this.free_len = 0; + } + public byte Mgr_id() {return mgr_id;} private byte mgr_id; + public Bry_bfr Get() { + synchronized (thread_lock) { + Bry_bfr rv = null; int rv_idx = -1; + if (free_len > 0) { + try {rv_idx = free[--free_len];} catch (Exception e) {throw Err_.new_exc(e, "core", "failed to get free", "idx", free_len, "free_len", free.length);} + try {rv = used[rv_idx];} catch (Exception e) {throw Err_.new_exc(e, "core", "failed to get used", "idx", rv_idx, "used_len", used.length);} + } + else { + if (used_len == used_max) Expand(); + rv_idx = used_len++; + rv = used[rv_idx]; + if (rv == null) { + rv = Bry_bfr.reset_(reset); + used[rv_idx] = rv; + } + } + rv.Mkr_init(this, rv_idx); + return rv.Clear(); // NOTE: ALWAYS call Clear when doing Get. caller may forget to call Clear, and reused bfr may have leftover bytes. unit tests will not catch, and difficult to spot in app + } + } + public void Rls(int idx) { + synchronized (thread_lock) { + if (idx == -1) throw Err_.new_wo_type("rls called on bfr that was not created by factory"); + int new_used_len = used_len - 1; + if (idx == new_used_len) + used_len = new_used_len; + else + free[free_len++] = idx; + } + } + public void Clear_fail_check() { + synchronized (thread_lock) { + for (int i = 0; i < used_max; i++) { + Bry_bfr itm = used[i]; + if (itm != null) { + if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.To_str(i)); + itm.Clear(); + } + used[i] = null; + } + used = Bry_bfr_.Ary_empty; + free = Int_.Ary_empty; + free_len = used_len = used_max = 0; + } + } + public void Clear() { + synchronized (thread_lock) { + for (int i = 0; i < used_max; i++) { + Bry_bfr itm = used[i]; + if (itm != null) itm.Clear(); + used[i] = null; + } + used = Bry_bfr_.Ary_empty; + free = Int_.Ary_empty; + free_len = 0; + used_len = used_max = 0; + } + } + @gplx.Internal protected Bry_bfr[] Used() {return used;} + @gplx.Internal protected int Used_len() {return used_len;} + private void Expand() { + int new_max = used_max == 0 ? 2 : used_max * 2; + Bry_bfr[] new_ary = new Bry_bfr[new_max]; + Array_.Copy_to(used, 0, new_ary, 0, used_max); + used = new_ary; + used_max = new_max; + int[] new_free = new int[used_max]; + Array_.Copy_to(free, 0, new_free, 0, free_len); + free = new_free; + } +} diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr_tst.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr_tst.java new file mode 100644 index 000000000..5919a2c17 --- /dev/null +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr_tst.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.core.brys; import gplx.*; import gplx.core.*; +import org.junit.*; +public class Bry_bfr_mkr_tst { + private final Bry_bfr_mkr_fxt fxt = new Bry_bfr_mkr_fxt(); + @Before public void setup() {fxt.Clear();} + @Test public void Get_1() {fxt.Clear().Get().Test__used(0);} + @Test public void Get_2() {fxt.Clear().Get().Get().Test__used(0, 1);} + @Test public void Get_3() {fxt.Clear().Get().Get().Get().Test__used(0, 1, 2);} + @Test public void Rls() {fxt.Clear().Get().Rls(0).Test__used();} + @Test public void Rls_skip_1() { + fxt.Clear().Get().Get().Rls(0).Test__used(-1, 1); + fxt.Get().Test__used(0, 1); + } + @Test public void Rls_skip_2_1() { + fxt.Clear().Get().Get().Get().Rls(1).Rls(0).Test__used(-1, -1, 2); + fxt.Get().Test__used(0, -1, 2); + fxt.Get().Test__used(0, 1, 2); + fxt.Get().Test__used(0, 1, 2, 3); + } + @Test public void Get_rls_get() { // PURPOSE: defect in which last rls failed b/c was not doing ++ if rv existed + fxt.Clear().Get().Rls(0).Get().Get().Rls(1).Rls(0).Test__used(); + } +} +class Bry_bfr_mkr_fxt { + private final Bry_bfr_mkr_mgr mkr = new Bry_bfr_mkr_mgr(Byte_.Zero, 32); + public Bry_bfr_mkr_fxt Clear() {mkr.Clear(); return this;} + public Bry_bfr_mkr_fxt Get() {mkr.Get(); return this;} + public Bry_bfr_mkr_fxt Rls(int i) {mkr.Used()[i].Mkr_rls(); return this;} + public Bry_bfr_mkr_fxt Test__used(int... expd) { + int actl_len = mkr.Used_len(); + int[] actl = new int[actl_len]; + for (int i = 0; i < actl_len; i++) { + Bry_bfr bfr = mkr.Used()[i]; + int actl_val = bfr == null ? -2 : bfr.Mkr_idx(); + actl[i] = actl_val; + } + Tfds.Eq_ary(expd, actl); + return this; + } +} diff --git a/100_core/src_130_brys/gplx/Bry_rdr_old.java b/100_core/src/gplx/core/brys/Bry_rdr_old.java similarity index 97% rename from 100_core/src_130_brys/gplx/Bry_rdr_old.java rename to 100_core/src/gplx/core/brys/Bry_rdr_old.java index b651fa847..7bcb26858 100644 --- a/100_core/src_130_brys/gplx/Bry_rdr_old.java +++ b/100_core/src/gplx/core/brys/Bry_rdr_old.java @@ -15,7 +15,7 @@ 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; +package gplx.core.brys; import gplx.*; import gplx.core.*; public class Bry_rdr_old { private byte[] scope = Bry_.Empty; public byte[] Src() {return src;} protected byte[] src; diff --git a/100_core/src/gplx/core/brys/args/Bfr_arg__bry.java b/100_core/src/gplx/core/brys/args/Bfr_arg__bry.java index 6eb4ea97f..1fdbdfe91 100644 --- a/100_core/src/gplx/core/brys/args/Bfr_arg__bry.java +++ b/100_core/src/gplx/core/brys/args/Bfr_arg__bry.java @@ -17,7 +17,8 @@ along with this program. If not, see . */ package gplx.core.brys.args; import gplx.*; import gplx.core.*; import gplx.core.brys.*; public class Bfr_arg__bry extends gplx.core.brys.Bfr_arg_base { - private final byte[] bry; + private byte[] bry; public Bfr_arg__bry(byte[] v) {this.bry = v;} + public void Set(byte[] v) {this.bry = v;} @Override public void Bfr_arg__add(Bry_bfr bfr) {bfr.Add(bry);} } diff --git a/100_core/src/gplx/core/consoles/Console_adp__sys.java b/100_core/src/gplx/core/consoles/Console_adp__sys.java index 60928782a..65fd80794 100644 --- a/100_core/src/gplx/core/consoles/Console_adp__sys.java +++ b/100_core/src/gplx/core/consoles/Console_adp__sys.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; +import gplx.core.envs.*; public class Console_adp__sys implements Console_adp { private String tmp_txt; public Console_adp__sys() { diff --git a/100_core/src/gplx/Env_.java b/100_core/src/gplx/core/envs/Env_.java similarity index 95% rename from 100_core/src/gplx/Env_.java rename to 100_core/src/gplx/core/envs/Env_.java index efd5ef7e0..6e2f83283 100644 --- a/100_core/src/gplx/Env_.java +++ b/100_core/src/gplx/core/envs/Env_.java @@ -15,20 +15,20 @@ 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; +package gplx.core.envs; import gplx.*; import gplx.core.*; import gplx.core.threads.*; public class Env_ { public static void Init(String[] args, String appNameAndExt, Class type) { mode_testing = false; mode_debug = String_.In("GPLX_DEBUG_MODE_ENABLED", args); appArgs = args; - appUrl = JarAdp_.Url_type(type).OwnerDir().GenSubFil(appNameAndExt); + appUrl = Jar_adp_.Url_type(type).OwnerDir().GenSubFil(appNameAndExt); } public static void Init_swt(String[] args, Class type) { // DATE:2014-06-23 mode_testing = false; mode_debug = String_.In("GPLX_DEBUG_MODE_ENABLED", args); appArgs = args; - appUrl = JarAdp_.Url_type(type); + appUrl = Jar_adp_.Url_type(type); } public static void Init_drd() { mode_testing = mode_debug = false; diff --git a/100_core/src/gplx/JarAdp_.java b/100_core/src/gplx/core/envs/Jar_adp_.java similarity index 93% rename from 100_core/src/gplx/JarAdp_.java rename to 100_core/src/gplx/core/envs/Jar_adp_.java index e7a8d3adb..5edeac6ac 100644 --- a/100_core/src/gplx/JarAdp_.java +++ b/100_core/src/gplx/core/envs/Jar_adp_.java @@ -15,8 +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; -public class JarAdp_ { +package gplx.core.envs; import gplx.*; import gplx.core.*; +public class Jar_adp_ { public static DateAdp ModifiedTime_type(Class type) {if (type == null) throw Err_.new_null(); Io_url url = Url_type(type); return Io_mgr.Instance.QueryFil(url).ModifiedTime(); diff --git a/100_core/src/gplx/Op_sys.java b/100_core/src/gplx/core/envs/Op_sys.java similarity index 97% rename from 100_core/src/gplx/Op_sys.java rename to 100_core/src/gplx/core/envs/Op_sys.java index 2876b2b6b..d7b3f51d4 100644 --- a/100_core/src/gplx/Op_sys.java +++ b/100_core/src/gplx/core/envs/Op_sys.java @@ -15,7 +15,7 @@ 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; +package gplx.core.envs; import gplx.*; import gplx.core.*; public class Op_sys { Op_sys(byte tid, byte sub_tid, String os_name, byte bitness, String nl_str, byte fsys_dir_spr_byte, boolean fsys_case_match) { this.tid = tid; this.sub_tid = sub_tid; this.os_name = os_name; this.bitness = bitness; this.nl_str = nl_str; this.fsys_dir_spr_byte = fsys_dir_spr_byte; this.fsys_dir_spr_str = Char_.To_str((char)fsys_dir_spr_byte); this.fsys_case_match = fsys_case_match; diff --git a/100_core/src/gplx/Op_sys_.java b/100_core/src/gplx/core/envs/Op_sys_.java similarity index 93% rename from 100_core/src/gplx/Op_sys_.java rename to 100_core/src/gplx/core/envs/Op_sys_.java index 324d5222d..ce6876a6e 100644 --- a/100_core/src/gplx/Op_sys_.java +++ b/100_core/src/gplx/core/envs/Op_sys_.java @@ -15,7 +15,7 @@ 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; +package gplx.core.envs; import gplx.*; import gplx.core.*; public class Op_sys_ { public static boolean Wnt_invalid_char(byte b) { switch (b) { diff --git a/100_core/src/gplx/ProcessAdp.java b/100_core/src/gplx/core/envs/Process_adp.java similarity index 76% rename from 100_core/src/gplx/ProcessAdp.java rename to 100_core/src/gplx/core/envs/Process_adp.java index 3cbacd837..556e1047c 100644 --- a/100_core/src/gplx/ProcessAdp.java +++ b/100_core/src/gplx/core/envs/Process_adp.java @@ -15,7 +15,26 @@ 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; +package gplx.core.envs; import gplx.*; import gplx.core.*; +import gplx.Bool_; +import gplx.Bry_; +import gplx.Bry_bfr; +import gplx.Err_; +import gplx.GfoInvkAble; +import gplx.GfoInvkAbleCmd; +import gplx.GfoInvkAble_; +import gplx.GfoMsg; +import gplx.Gfo_usr_dlg; +import gplx.Gfo_usr_dlg_; +import gplx.GfsCtx; +import gplx.Io_url; +import gplx.Io_url_; +import gplx.List_adp; +import gplx.List_adp_; +import gplx.RlsAble; +import gplx.String_; +import gplx.Tfds; +import gplx.Virtual; import gplx.core.threads.*; import java.io.BufferedReader; import java.io.File; @@ -24,40 +43,40 @@ import java.io.InputStream; import java.io.InputStreamReader; import javax.management.RuntimeErrorException; -import gplx.core.brys.fmtrs.*; -import gplx.core.strings.*; import gplx.langs.gfs.*; -public class ProcessAdp implements GfoInvkAble, RlsAble { - public boolean Enabled() {return enabled;} public ProcessAdp Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true; - public byte Exe_exists() {return exe_exists;} public ProcessAdp Exe_exists_(byte v) {exe_exists = v; return this;} private byte exe_exists = Bool_.__byte; - public Io_url Exe_url() {return exe_url;} public ProcessAdp Exe_url_(Io_url val) {exe_url = val; exe_exists = Bool_.__byte; return this;} Io_url exe_url; - public String Args_str() {return args_str;} public ProcessAdp Args_str_(String val) {args_str = val; return this;} private String args_str = ""; +import gplx.core.brys.fmtrs.*; import gplx.core.strings.*; +import gplx.langs.gfs.*; +public class Process_adp implements GfoInvkAble, RlsAble { + public boolean Enabled() {return enabled;} public Process_adp Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true; + public byte Exe_exists() {return exe_exists;} public Process_adp Exe_exists_(byte v) {exe_exists = v; return this;} private byte exe_exists = Bool_.__byte; + public Io_url Exe_url() {return exe_url;} public Process_adp Exe_url_(Io_url val) {exe_url = val; exe_exists = Bool_.__byte; return this;} Io_url exe_url; + public String Args_str() {return args_str;} public Process_adp Args_str_(String val) {args_str = val; return this;} private String args_str = ""; public Bry_fmtr Args_fmtr() {return args_fmtr;} Bry_fmtr args_fmtr = Bry_fmtr.new_(""); - public byte Run_mode() {return run_mode;} public ProcessAdp Run_mode_(byte v) {run_mode = v; return this;} private byte run_mode = Run_mode_sync_block; + public byte Run_mode() {return run_mode;} public Process_adp Run_mode_(byte v) {run_mode = v; return this;} private byte run_mode = Run_mode_sync_block; public static final byte Run_mode_async = 0, Run_mode_sync_block = 1, Run_mode_sync_timeout = 2; public int Exit_code() {return exit_code;} int exit_code; public boolean Exit_code_pass() {return exit_code == Exit_pass;} public String Rslt_out() {return rslt_out;} private String rslt_out; - public Io_url Working_dir() {return working_dir;} public ProcessAdp Working_dir_(Io_url v) {working_dir = v; return this;} Io_url working_dir; - public ProcessAdp Cmd_args(String cmd, String args) {this.Exe_url_(Io_url_.new_fil_(cmd)); this.args_fmtr.Fmt_(args); return this;} - public ProcessAdp WhenBgn_add(GfoInvkAbleCmd cmd) {whenBgnList.Add(cmd); return this;} - public ProcessAdp WhenBgn_del(GfoInvkAbleCmd cmd) {whenBgnList.Del(cmd); return this;} - public int Thread_timeout() {return thread_timeout;} public ProcessAdp Thread_timeout_seconds_(int v) {thread_timeout = v * 1000; return this;} int thread_timeout = 0; - public int Thread_interval() {return thread_interval;} public ProcessAdp Thread_interval_(int v) {thread_interval = v; return this;} int thread_interval = 20; - public String Thread_kill_name() {return thread_kill_name;} public ProcessAdp Thread_kill_name_(String v) {thread_kill_name = v; return this;} private String thread_kill_name = ""; - public Io_url Tmp_dir() {return tmp_dir;} @gplx.Virtual public ProcessAdp Tmp_dir_(Io_url v) {tmp_dir = v; return this;} Io_url tmp_dir; - private ProcessAdp WhenBgn_run() {return Invk_cmds(whenBgnList);} List_adp whenBgnList = List_adp_.new_(); - public ProcessAdp WhenEnd_add(GfoInvkAbleCmd cmd) {whenEndList.Add(cmd); return this;} - public ProcessAdp WhenEnd_del(GfoInvkAbleCmd cmd) {whenEndList.Del(cmd); return this;} - public Gfo_usr_dlg Prog_dlg() {return prog_dlg;} public ProcessAdp Prog_dlg_(Gfo_usr_dlg v) {prog_dlg = v; return this;} Gfo_usr_dlg prog_dlg; - public String Prog_fmt() {return prog_fmt;} public ProcessAdp Prog_fmt_(String v) {prog_fmt = v; return this;} private String prog_fmt = ""; // NOTE: set to "", else cmds that do not set prog_fmt will fail on fmtr.Fmt(null) + public Io_url Working_dir() {return working_dir;} public Process_adp Working_dir_(Io_url v) {working_dir = v; return this;} Io_url working_dir; + public Process_adp Cmd_args(String cmd, String args) {this.Exe_url_(Io_url_.new_fil_(cmd)); this.args_fmtr.Fmt_(args); return this;} + public Process_adp WhenBgn_add(GfoInvkAbleCmd cmd) {whenBgnList.Add(cmd); return this;} + public Process_adp WhenBgn_del(GfoInvkAbleCmd cmd) {whenBgnList.Del(cmd); return this;} + public int Thread_timeout() {return thread_timeout;} public Process_adp Thread_timeout_seconds_(int v) {thread_timeout = v * 1000; return this;} int thread_timeout = 0; + public int Thread_interval() {return thread_interval;} public Process_adp Thread_interval_(int v) {thread_interval = v; return this;} int thread_interval = 20; + public String Thread_kill_name() {return thread_kill_name;} public Process_adp Thread_kill_name_(String v) {thread_kill_name = v; return this;} private String thread_kill_name = ""; + public Io_url Tmp_dir() {return tmp_dir;} @gplx.Virtual public Process_adp Tmp_dir_(Io_url v) {tmp_dir = v; return this;} Io_url tmp_dir; + private Process_adp WhenBgn_run() {return Invk_cmds(whenBgnList);} List_adp whenBgnList = List_adp_.new_(); + public Process_adp WhenEnd_add(GfoInvkAbleCmd cmd) {whenEndList.Add(cmd); return this;} + public Process_adp WhenEnd_del(GfoInvkAbleCmd cmd) {whenEndList.Del(cmd); return this;} + public Gfo_usr_dlg Prog_dlg() {return prog_dlg;} public Process_adp Prog_dlg_(Gfo_usr_dlg v) {prog_dlg = v; return this;} Gfo_usr_dlg prog_dlg; + public String Prog_fmt() {return prog_fmt;} public Process_adp Prog_fmt_(String v) {prog_fmt = v; return this;} private String prog_fmt = ""; // NOTE: set to "", else cmds that do not set prog_fmt will fail on fmtr.Fmt(null) private GfoInvkAble owner; - private ProcessAdp WhenEnd_run() {return Invk_cmds(whenEndList);} List_adp whenEndList = List_adp_.new_(); - private ProcessAdp Invk_cmds(List_adp list) { + private Process_adp WhenEnd_run() {return Invk_cmds(whenEndList);} List_adp whenEndList = List_adp_.new_(); + private Process_adp Invk_cmds(List_adp list) { for (Object o : list) ((GfoInvkAbleCmd)o).Invk(); return this; } - public ProcessAdp Run(Object... args) { + public Process_adp Run(Object... args) { if (String_.Len_eq_0(exe_url.Raw())) return this; // noop if exe_url is ""; if (!args_fmtr.Fmt_null()) { Bry_bfr tmp_bfr = Bry_bfr.new_(); @@ -94,7 +113,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { } static final String Invk_cmd = "cmd", Invk_cmd_ = "cmd_", Invk_args = "args", Invk_args_ = "args_", Invk_cmd_args_ = "cmd_args_", Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_mode_ = "mode_", Invk_timeout_ = "timeout_", Invk_tmp_dir_ = "tmp_dir_", Invk_owner = "owner"; Bry_fmtr_eval_mgr cmd_url_eval; - public static ProcessAdp ini_(GfoInvkAble owner, Gfo_usr_dlg usr_dlg, ProcessAdp process, Bry_fmtr_eval_mgr cmd_url_eval, byte run_mode, int timeout, String cmd_url_fmt, String args_fmt, String... args_keys) { + public static Process_adp ini_(GfoInvkAble owner, Gfo_usr_dlg usr_dlg, Process_adp process, Bry_fmtr_eval_mgr cmd_url_eval, byte run_mode, int timeout, String cmd_url_fmt, String args_fmt, String... args_keys) { process.Run_mode_(run_mode).Thread_timeout_seconds_(timeout); process.cmd_url_eval = cmd_url_eval; Io_url cmd_url = Bry_fmtr_eval_mgr_.Eval_url(cmd_url_eval, Bry_.new_u8(cmd_url_fmt)); @@ -114,27 +133,27 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { private Bry_fmtr notify_fmtr = Bry_fmtr.new_("", "process_exe_name", "process_exe_args", "process_seconds"); Bry_bfr notify_bfr = Bry_bfr.reset_(255); public Process UnderProcess() {return process;} Process process; public void Rls() {if (process != null) process.destroy();} - public ProcessAdp Run_wait_sync() { + public Process_adp Run_wait_sync() { if (Env_.Mode_testing()) return Test_runs_add(); Process_bgn(); Process_start(); Process_run_and_end(); return this; } - public ProcessAdp Run_start() { + public Process_adp Run_start() { if (Env_.Mode_testing()) return Test_runs_add(); Process_bgn(); Process_start(); return this; } - public ProcessAdp Run_async() { + public Process_adp Run_async() { if (Env_.Mode_testing()) return Test_runs_add(); Process_bgn(); Thread_ProcessAdp_async thread = new Thread_ProcessAdp_async(this); thread.start(); return this; } - public ProcessAdp Run_wait() { + public Process_adp Run_wait() { if (Env_.Mode_testing()) return Test_runs_add(); int notify_interval = 100; int notify_checkpoint = notify_interval; int elapsed = 0; @@ -203,7 +222,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { kill_args = "-9 "; } kill_args += thread_kill_name; - ProcessAdp kill_process = new ProcessAdp().Exe_url_(Io_url_.new_fil_(kill_exe)).Args_str_(kill_args).Thread_kill_name_(""); + Process_adp kill_process = new Process_adp().Exe_url_(Io_url_.new_fil_(kill_exe)).Args_str_(kill_args).Thread_kill_name_(""); boolean pass = kill_process.Run_wait().Exit_code_pass(); return "killed|" + kill_exe + "|" + kill_args + "|" + pass + "|" + exe_url.Raw() + "|" + args_str; } @@ -252,15 +271,15 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { process.destroy(); } public static void run_wait_(Io_url url) { - ProcessAdp process = new ProcessAdp().Exe_url_(url); + Process_adp process = new Process_adp().Exe_url_(url); process.Run_start(); process.Process_run_and_end(); return; } public static final List_adp Test_runs = List_adp_.new_(); - private ProcessAdp Test_runs_add() {Test_runs.Add(exe_url.Raw() + " " + args_str); exit_code = Exit_pass; return this;} + private Process_adp Test_runs_add() {Test_runs.Add(exe_url.Raw() + " " + args_str); exit_code = Exit_pass; return this;} public static int run_wait_arg_(Io_url url, String arg) { - ProcessAdp process = new ProcessAdp(); + Process_adp process = new Process_adp(); process.Exe_url_(url).Args_str_(arg).Run_wait(); return process.Exit_code(); } @@ -288,7 +307,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { } } class Thread_ProcessAdp_async extends Thread { - public Thread_ProcessAdp_async(ProcessAdp process_adp) {this.process_adp = process_adp;} ProcessAdp process_adp; + public Thread_ProcessAdp_async(Process_adp process_adp) {this.process_adp = process_adp;} Process_adp process_adp; public boolean Done() {return done;} boolean done = false; public void Cancel() {process_adp.UnderProcess().destroy();} public void run() { @@ -296,7 +315,7 @@ class Thread_ProcessAdp_async extends Thread { } } class Thread_ProcessAdp_sync extends Thread { - public Thread_ProcessAdp_sync(ProcessAdp process_adp) {this.process_adp = process_adp;} private final ProcessAdp process_adp; + public Thread_ProcessAdp_sync(Process_adp process_adp) {this.process_adp = process_adp;} private final Process_adp process_adp; public boolean Done() {return done;} private boolean done = false; public void Cancel() { process_adp.UnderProcess().destroy(); diff --git a/100_core/src/gplx/ProcessAdp_tst.java b/100_core/src/gplx/core/envs/Process_adp_tst.java similarity index 82% rename from 100_core/src/gplx/ProcessAdp_tst.java rename to 100_core/src/gplx/core/envs/Process_adp_tst.java index b3d28f380..07193ad2d 100644 --- a/100_core/src/gplx/ProcessAdp_tst.java +++ b/100_core/src/gplx/core/envs/Process_adp_tst.java @@ -15,18 +15,18 @@ 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; +package gplx.core.envs; import gplx.*; import gplx.core.*; import org.junit.*; -public class ProcessAdp_tst { - private ProcessAdp_fxt fxt = new ProcessAdp_fxt(); +public class Process_adp_tst { + private Process_adp_fxt fxt = new Process_adp_fxt(); @Test public void Escape_ampersands_if_process_is_cmd() { fxt.Test_Escape_ampersands_if_process_is_cmd(Bool_.Y, "cmd" , "/c \"http://a.org?b=c&d=e\"", "/c \"http://a.org?b=c^&d=e\""); fxt.Test_Escape_ampersands_if_process_is_cmd(Bool_.Y, "cmd1", "/c \"http://a.org?b=c&d=e\"", "/c \"http://a.org?b=c&d=e\""); fxt.Test_Escape_ampersands_if_process_is_cmd(Bool_.N, "cmd" , "/c \"http://a.org?b=c&d=e\"", "/c \"http://a.org?b=c&d=e\""); } } -class ProcessAdp_fxt { +class Process_adp_fxt { public void Test_Escape_ampersands_if_process_is_cmd(boolean os_is_wnt, String exe_url, String exe_args, String expd) { - Tfds.Eq(expd, ProcessAdp.Escape_ampersands_if_process_is_cmd(os_is_wnt, exe_url, exe_args)); + Tfds.Eq(expd, Process_adp.Escape_ampersands_if_process_is_cmd(os_is_wnt, exe_url, exe_args)); } } diff --git a/100_core/src/gplx/Err_msg.java b/100_core/src/gplx/core/errs/Err_msg.java similarity index 95% rename from 100_core/src/gplx/Err_msg.java rename to 100_core/src/gplx/core/errs/Err_msg.java index a00793491..cf8691062 100644 --- a/100_core/src/gplx/Err_msg.java +++ b/100_core/src/gplx/core/errs/Err_msg.java @@ -15,7 +15,7 @@ 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; +package gplx.core.errs; import gplx.*; import gplx.core.*; public class Err_msg { private final String msg; private Object[] args; public Err_msg(String type, String msg, Object[] args) { diff --git a/100_core/src/gplx/core/gfo_ndes/GfoFld.java b/100_core/src/gplx/core/gfo_ndes/GfoFld.java index afe2ee690..36b84567f 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoFld.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoFld.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; +import gplx.core.type_xtns.*; public class GfoFld { public String Key() {return key;} private String key; public ClassXtn Type() {return type;} ClassXtn type; diff --git a/100_core/src/gplx/core/gfo_ndes/GfoFldList.java b/100_core/src/gplx/core/gfo_ndes/GfoFldList.java index 0218c6f83..2ee4773ea 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoFldList.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoFldList.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; +import gplx.core.type_xtns.*; public interface GfoFldList { int Count(); boolean Has(String key); diff --git a/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java b/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java index d15bc4ab9..aec972556 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.type_xtns.*; public class GfoFldList_ { public static final GfoFldList Null = new GfoFldList_null(); public static GfoFldList new_() {return new GfoFldList_base();} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNde.java b/100_core/src/gplx/core/gfo_ndes/GfoNde.java index 155fa48b1..c438f09ae 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNde.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNde.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.stores.*; public class GfoNde implements GfoInvkAble { public GfoFldList Flds() {return flds;} GfoFldList flds; public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNdeFxt.java b/100_core/src/gplx/core/gfo_ndes/GfoNdeFxt.java index 542d486b4..56418fc57 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNdeFxt.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNdeFxt.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; +import gplx.core.type_xtns.*; public class GfoNdeFxt { public GfoNde root_(GfoNde... subs) {return GfoNde_.root_(subs);} public GfoNde tbl_(String name, GfoNde... rows) {return GfoNde_.tbl_(name, GfoFldList_.Null, rows);} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNdeList.java b/100_core/src/gplx/core/gfo_ndes/GfoNdeList.java index 320763097..85c4c5038 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNdeList.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNdeList.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; -import gplx.lists.*; /*ComparerAble*/ +import gplx.core.lists.*; /*ComparerAble*/ public interface GfoNdeList { int Count(); GfoNde FetchAt_asGfoNde(int index); diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java b/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java index 269b951f4..4b54ba847 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; -import gplx.lists.*; /*ComparerAble*/ +import gplx.core.lists.*; /*ComparerAble*/ public class GfoNdeList_ { public static final GfoNdeList Null = new GfoNdeList_null(); public static GfoNdeList new_() {return new GfoNdeList_base();} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNde_.java b/100_core/src/gplx/core/gfo_ndes/GfoNde_.java index 3118532ee..9fcc0699e 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNde_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNde_.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; +import gplx.core.type_xtns.*; import gplx.core.stores.*; public class GfoNde_ { public static final GfoNde[] Ary_empty = new GfoNde[0]; public static GfoNde[] ary_(GfoNde... ary) {return ary;} diff --git a/100_core/src/gplx/core/gfo_regys/GfoRegy.java b/100_core/src/gplx/core/gfo_regys/GfoRegy.java index 260cb892f..0f2228403 100644 --- a/100_core/src/gplx/core/gfo_regys/GfoRegy.java +++ b/100_core/src/gplx/core/gfo_regys/GfoRegy.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfo_regys; import gplx.*; import gplx.core.*; -import gplx.langs.gfs.*; +import gplx.langs.gfs.*; import gplx.core.type_xtns.*; public class GfoRegy implements GfoInvkAble { public int Count() {return hash.Count();} public Hash_adp Parsers() {return parsers;} Hash_adp parsers = Hash_adp_.new_(); diff --git a/100_core/src/gplx/core/ios/IoEngine_system.java b/100_core/src/gplx/core/ios/IoEngine_system.java index 8814f20bd..69a6b0f61 100644 --- a/100_core/src/gplx/core/ios/IoEngine_system.java +++ b/100_core/src/gplx/core/ios/IoEngine_system.java @@ -27,7 +27,7 @@ import java.util.Date; import javax.print.FlavorException; import javax.tools.JavaCompiler; -import gplx.core.criterias.*; +import gplx.core.criterias.*; import gplx.core.envs.*; public class IoEngine_system extends IoEngine_base { @Override public String Key() {return IoEngine_.SysKey;} @Override public void DeleteDirDeep(IoEngine_xrg_deleteDir args) {utl.DeleteDirDeep(this, args.Url(), args);} diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java b/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java index 2bc3e76e8..21cff3942 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.core.texts.*; +import gplx.core.texts.*; import gplx.core.envs.*; public class IoEngine_xrg_loadFilStr { public Io_url Url() {return url;} public IoEngine_xrg_loadFilStr Url_(Io_url val) {url = val; return this;} Io_url url; public boolean MissingIgnored() {return missingIgnored;} public IoEngine_xrg_loadFilStr MissingIgnored_() {return MissingIgnored_(true);} public IoEngine_xrg_loadFilStr MissingIgnored_(boolean v) {missingIgnored = v; return this;} private boolean missingIgnored = false; diff --git a/100_core/src/gplx/core/ios/IoItmClassXtn.java b/100_core/src/gplx/core/ios/IoItmClassXtn.java index 51dca4100..0cfcf3ef0 100644 --- a/100_core/src/gplx/core/ios/IoItmClassXtn.java +++ b/100_core/src/gplx/core/ios/IoItmClassXtn.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.type_xtns.*; public class IoItmClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "ioItemType"; @Override public Class UnderClass() {return int.class;} diff --git a/100_core/src/gplx/core/ios/IoItmList.java b/100_core/src/gplx/core/ios/IoItmList.java index c3941edae..d60bd1162 100644 --- a/100_core/src/gplx/core/ios/IoItmList.java +++ b/100_core/src/gplx/core/ios/IoItmList.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.lists.*; /*Ordered_hash_base*/ +import gplx.core.lists.*; /*Ordered_hash_base*/ public class IoItmList extends Ordered_hash_base { public boolean Has(Io_url url) {return Has_base(MakeKey(url));} public void Add(IoItm_base itm) { diff --git a/100_core/src/gplx/core/ios/IoUrlInfo.java b/100_core/src/gplx/core/ios/IoUrlInfo.java index bdf50a433..e62a2aeb6 100644 --- a/100_core/src/gplx/core/ios/IoUrlInfo.java +++ b/100_core/src/gplx/core/ios/IoUrlInfo.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.envs.*; public interface IoUrlInfo { String Key(); byte DirSpr_byte(); diff --git a/100_core/src/gplx/core/ios/IoUrlInfoRegy.java b/100_core/src/gplx/core/ios/IoUrlInfoRegy.java index a9787951e..819690f0d 100644 --- a/100_core/src/gplx/core/ios/IoUrlInfoRegy.java +++ b/100_core/src/gplx/core/ios/IoUrlInfoRegy.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.envs.*; import gplx.langs.gfs.*; public class IoUrlInfoRegy implements GfoInvkAble { public void Reg(IoUrlInfo info) {hash.Add_if_dupe_use_nth(info.Key(), info);} diff --git a/100_core/src/gplx/core/ios/IoZipWkr.java b/100_core/src/gplx/core/ios/IoZipWkr.java index 0ee5062d6..a51c05e98 100644 --- a/100_core/src/gplx/core/ios/IoZipWkr.java +++ b/100_core/src/gplx/core/ios/IoZipWkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.stores.*; /*GfoNdeRdr_*/ +import gplx.core.envs.*; import gplx.core.stores.*; /*GfoNdeRdr_*/ import gplx.core.gfo_regys.*; public class IoZipWkr { public Io_url ExeUrl() {return (Io_url)GfoRegy.Instance.FetchValOrFail(Regy_ExeUrl);} @@ -29,7 +29,7 @@ public class IoZipWkr { @gplx.Internal protected String Expand_genCmdString(Io_url srcUrl, Io_url trgUrl) { return String_.Format(this.ExeArgFmt(), srcUrl.Xto_api(), trgUrl.Xto_api()); } - ProcessAdp process = new ProcessAdp(); + Process_adp process = new Process_adp(); public static IoZipWkr regy_() {return new IoZipWkr();} static final String Regy_ExeUrl = "gplx.core.ios.IoZipWkr.ExeUrl", Regy_ExeArgFmt = "gplx.core.ios.IoZipWkr.ExeArgFmt"; public static IoZipWkr new_(Io_url exeUrl, String expandArgs) { diff --git a/100_core/src/gplx/core/ios/Io_download_fmt.java b/100_core/src/gplx/core/ios/Io_download_fmt.java index d0bd2487a..22714a607 100644 --- a/100_core/src/gplx/core/ios/Io_download_fmt.java +++ b/100_core/src/gplx/core/ios/Io_download_fmt.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.core.brys.args.*; import gplx.core.brys.fmtrs.*; +import gplx.core.brys.args.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; public class Io_download_fmt { private final Io_size_fmtr_arg size_fmtr_arg = new Io_size_fmtr_arg(), rate_fmtr_arg = new Io_size_fmtr_arg().Suffix_(Bry_.new_a7("ps")); private final Bfr_arg__time prog_left_fmtr_arg = new Bfr_arg__time(); private final Bfr_arg__decimal_int prog_pct_fmtr_arg = new Bfr_arg__decimal_int().Places_(2); diff --git a/100_core/src/gplx/core/ios/Io_download_fmt_tst.java b/100_core/src/gplx/core/ios/Io_download_fmt_tst.java index d7527223a..8955465f8 100644 --- a/100_core/src/gplx/core/ios/Io_download_fmt_tst.java +++ b/100_core/src/gplx/core/ios/Io_download_fmt_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import org.junit.*; +import org.junit.*; import gplx.core.envs.*; public class Io_download_fmt_tst { Io_download_fmt_fxt fxt = new Io_download_fmt_fxt(); @Before public void init() {fxt.Clear();} diff --git a/100_core/src_140_list/gplx/lists/ComparerAble.java b/100_core/src/gplx/core/lists/ComparerAble.java similarity index 93% rename from 100_core/src_140_list/gplx/lists/ComparerAble.java rename to 100_core/src/gplx/core/lists/ComparerAble.java index e3cabb981..c70ca0801 100644 --- a/100_core/src_140_list/gplx/lists/ComparerAble.java +++ b/100_core/src/gplx/core/lists/ComparerAble.java @@ -15,6 +15,6 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public interface ComparerAble extends java.util.Comparator {} //_20110320 // public int compare(Object lhsObj, Object rhsObj) {} diff --git a/100_core/src_140_list/gplx/lists/ComparerAble_.java b/100_core/src/gplx/core/lists/ComparerAble_.java similarity index 93% rename from 100_core/src_140_list/gplx/lists/ComparerAble_.java rename to 100_core/src/gplx/core/lists/ComparerAble_.java index 2812d5cb5..100c2d1a8 100644 --- a/100_core/src_140_list/gplx/lists/ComparerAble_.java +++ b/100_core/src/gplx/core/lists/ComparerAble_.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public class ComparerAble_ { public static int Compare(ComparerAble comparer, Object lhs, Object rhs) {return comparer.compare(lhs, rhs);} } diff --git a/100_core/src_140_list/gplx/lists/EnumerAble.java b/100_core/src/gplx/core/lists/EnumerAble.java similarity index 92% rename from 100_core/src_140_list/gplx/lists/EnumerAble.java rename to 100_core/src/gplx/core/lists/EnumerAble.java index bfe79ff92..5554fd3a7 100644 --- a/100_core/src_140_list/gplx/lists/EnumerAble.java +++ b/100_core/src/gplx/core/lists/EnumerAble.java @@ -15,5 +15,5 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public interface EnumerAble extends java.lang.Iterable {}//_20110320 diff --git a/100_core/src_140_list/gplx/lists/Hash_adp_base.java b/100_core/src/gplx/core/lists/Hash_adp_base.java similarity index 88% rename from 100_core/src_140_list/gplx/lists/Hash_adp_base.java rename to 100_core/src/gplx/core/lists/Hash_adp_base.java index b7c5b9475..aa2b66072 100644 --- a/100_core/src_140_list/gplx/lists/Hash_adp_base.java +++ b/100_core/src/gplx/core/lists/Hash_adp_base.java @@ -15,19 +15,19 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public abstract class Hash_adp_base implements Hash_adp { public boolean Has(Object key) {return Has_base(key);} public Object Get_by(Object key) {return Fetch_base(key);} public Object Get_by_or_fail(Object key) {return Get_by_or_fail_base(key);} - public Object Get_by_or_new(Object key, NewAble proto) { - Object rv = Fetch_base(key); - if (rv == null) { - rv = proto.NewByKey(key); - Add_base(key, rv); - } - return rv; - } +// public Object Get_by_or_new(Object key, NewAble proto) { +// Object rv = Fetch_base(key); +// if (rv == null) { +// rv = proto.NewByKey(key); +// Add_base(key, rv); +// } +// return rv; +// } public void Add(Object key, Object val) {Add_base(key, val);} public void Add_as_key_and_val(Object val) {Add_base(val, val);} public void Add_if_dupe_use_nth(Object key, Object val) { diff --git a/100_core/src_140_list/gplx/lists/Hash_adp_list.java b/100_core/src/gplx/core/lists/Hash_adp_list.java similarity index 94% rename from 100_core/src_140_list/gplx/lists/Hash_adp_list.java rename to 100_core/src/gplx/core/lists/Hash_adp_list.java index c8a6eb09f..ea289df10 100644 --- a/100_core/src_140_list/gplx/lists/Hash_adp_list.java +++ b/100_core/src/gplx/core/lists/Hash_adp_list.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public class Hash_adp_list extends Hash_adp_base { @gplx.New public List_adp Get_by(Object key) {return List_adp_.as_(Fetch_base(key));} public List_adp Get_by_or_new(Object key) { diff --git a/100_core/src_140_list/gplx/lists/Iterator_null.java b/100_core/src/gplx/core/lists/Iterator_null.java similarity index 93% rename from 100_core/src_140_list/gplx/lists/Iterator_null.java rename to 100_core/src/gplx/core/lists/Iterator_null.java index 2963302ae..cef453964 100644 --- a/100_core/src_140_list/gplx/lists/Iterator_null.java +++ b/100_core/src/gplx/core/lists/Iterator_null.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public class Iterator_null implements java.util.Iterator { public boolean hasNext() {return false;} public Object next() {return null;} diff --git a/100_core/src_100_interface/gplx/NewAble.java b/100_core/src/gplx/core/lists/Iterator_objAry.java similarity index 66% rename from 100_core/src_100_interface/gplx/NewAble.java rename to 100_core/src/gplx/core/lists/Iterator_objAry.java index 24178b1b7..f30df9cca 100644 --- a/100_core/src_100_interface/gplx/NewAble.java +++ b/100_core/src/gplx/core/lists/Iterator_objAry.java @@ -15,7 +15,11 @@ 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; -public interface NewAble { - Object NewByKey(Object o); -} +package gplx.core.lists; import gplx.*; import gplx.core.*; +public class Iterator_objAry implements java.util.Iterator { + public boolean hasNext() {return ++pos < len;} + public Object next() {return ary[pos];} + public void remove() {pos = -1;} + Object[] ary; int pos = -1; int len = 0; + public Iterator_objAry(Object[] v, int count) {ary = v; len = count;} +} \ No newline at end of file diff --git a/100_core/src_140_list/gplx/List_adp_sorter.java b/100_core/src/gplx/core/lists/List_adp_sorter.java similarity index 87% rename from 100_core/src_140_list/gplx/List_adp_sorter.java rename to 100_core/src/gplx/core/lists/List_adp_sorter.java index ec32f5b1b..a4edea36c 100644 --- a/100_core/src_140_list/gplx/List_adp_sorter.java +++ b/100_core/src/gplx/core/lists/List_adp_sorter.java @@ -15,8 +15,7 @@ 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; -import gplx.lists.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public class List_adp_sorter { private ComparerAble comparer = null; public void Sort(Object[] orig, int origLen) {Sort(orig, origLen, true, null);} @@ -64,10 +63,3 @@ public class List_adp_sorter { public static List_adp_sorter new_() {return new List_adp_sorter();} List_adp_sorter() {} } -class Iterator_objAry implements java.util.Iterator { - public boolean hasNext() {return ++pos < len;} - public Object next() {return ary[pos];} - public void remove() {pos = -1;} - Object[] ary; int pos = -1; int len = 0; - public Iterator_objAry(Object[] v, int count) {ary = v; len = count;} -} \ No newline at end of file diff --git a/100_core/src_140_list/gplx/List_adp_sorter_tst.java b/100_core/src/gplx/core/lists/List_adp_sorter_tst.java similarity index 94% rename from 100_core/src_140_list/gplx/List_adp_sorter_tst.java rename to 100_core/src/gplx/core/lists/List_adp_sorter_tst.java index b397b7254..c3be7d455 100644 --- a/100_core/src_140_list/gplx/List_adp_sorter_tst.java +++ b/100_core/src/gplx/core/lists/List_adp_sorter_tst.java @@ -15,7 +15,7 @@ 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; +package gplx.core.lists; import gplx.*; import gplx.core.*; import org.junit.*; public class List_adp_sorter_tst { @Test public void Basic() { diff --git a/100_core/src_140_list/gplx/lists/StackAdp.java b/100_core/src/gplx/core/lists/StackAdp.java similarity index 92% rename from 100_core/src_140_list/gplx/lists/StackAdp.java rename to 100_core/src/gplx/core/lists/StackAdp.java index c7c1315bb..318ac6272 100644 --- a/100_core/src_140_list/gplx/lists/StackAdp.java +++ b/100_core/src/gplx/core/lists/StackAdp.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public interface StackAdp extends EnumerAble { int Count(); void Clear(); diff --git a/100_core/src_140_list/gplx/lists/StackAdp_.java b/100_core/src/gplx/core/lists/StackAdp_.java similarity index 95% rename from 100_core/src_140_list/gplx/lists/StackAdp_.java rename to 100_core/src/gplx/core/lists/StackAdp_.java index 96a401f43..58701a961 100644 --- a/100_core/src_140_list/gplx/lists/StackAdp_.java +++ b/100_core/src/gplx/core/lists/StackAdp_.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; public class StackAdp_ { public static StackAdp new_() {return new StackAdp_base();} } diff --git a/100_core/src_140_list/gplx/lists/StackAdp_tst.java b/100_core/src/gplx/core/lists/StackAdp_tst.java similarity index 93% rename from 100_core/src_140_list/gplx/lists/StackAdp_tst.java rename to 100_core/src/gplx/core/lists/StackAdp_tst.java index a5b495a09..065cf3c39 100644 --- a/100_core/src_140_list/gplx/lists/StackAdp_tst.java +++ b/100_core/src/gplx/core/lists/StackAdp_tst.java @@ -15,7 +15,7 @@ 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.lists; import gplx.*; +package gplx.core.lists; import gplx.*; import gplx.core.*; import org.junit.*; public class StackAdp_tst { @Test public void XtoList() { diff --git a/100_core/src/gplx/core/primitives/Bry_obj_ref.java b/100_core/src/gplx/core/primitives/Bry_obj_ref.java index b4f53bb07..5d1d641cc 100644 --- a/100_core/src/gplx/core/primitives/Bry_obj_ref.java +++ b/100_core/src/gplx/core/primitives/Bry_obj_ref.java @@ -21,7 +21,8 @@ public class Bry_obj_ref implements gplx.core.brys.Bfr_arg { public byte[] Val() {return val;} private byte[] val; public int Val_bgn() {return val_bgn;} private int val_bgn; public int Val_end() {return val_end;} private int val_end; - public Bry_obj_ref Val_(byte[] val) {this.val = val; this.val_bgn = 0; this.val_end = val.length; return this;} + public boolean Val_is_empty() {return val_bgn == val_end;} + public Bry_obj_ref Val_(byte[] val) {this.val = val; this.val_bgn = 0; this.val_end = val == null ? 0 : val.length; return this;} public Bry_obj_ref Mid_(byte[] val, int val_bgn, int val_end) {this.val = val; this.val_bgn = val_bgn; this.val_end = val_end; return this;} @Override public int hashCode() {return CalcHashCode(val, val_bgn, val_end);} @Override public boolean equals(Object obj) { @@ -30,7 +31,7 @@ public class Bry_obj_ref implements gplx.core.brys.Bfr_arg { return Bry_.Match(val, val_bgn, val_end, comp.val, comp.val_bgn, comp.val_end); } public void Bfr_arg__clear() {val = null;} - public boolean Bfr_arg__exists() {return val != null && val_end > val_bgn;} + public boolean Bfr_arg__exists() {return val != null;} public void Bfr_arg__add(Bry_bfr bfr) { if (Bfr_arg__exists()) bfr.Add_mid(val, val_bgn, val_end); diff --git a/100_core/src/gplx/Int_ary_.java b/100_core/src/gplx/core/primitives/Int_ary_.java similarity index 96% rename from 100_core/src/gplx/Int_ary_.java rename to 100_core/src/gplx/core/primitives/Int_ary_.java index c73f41e75..0f3af5094 100644 --- a/100_core/src/gplx/Int_ary_.java +++ b/100_core/src/gplx/core/primitives/Int_ary_.java @@ -15,7 +15,7 @@ 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; +package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_ary_ { public static int[] Parse_list_or(byte[] src, int[] or) { try { diff --git a/100_core/src/gplx/Int_ary__tst.java b/100_core/src/gplx/core/primitives/Int_ary__tst.java similarity index 95% rename from 100_core/src/gplx/Int_ary__tst.java rename to 100_core/src/gplx/core/primitives/Int_ary__tst.java index d051ed2b6..426824681 100644 --- a/100_core/src/gplx/Int_ary__tst.java +++ b/100_core/src/gplx/core/primitives/Int_ary__tst.java @@ -15,7 +15,7 @@ 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; +package gplx.core.primitives; import gplx.*; import gplx.core.*; import org.junit.*; public class Int_ary__tst { private Int_ary__fxt fxt = new Int_ary__fxt(); diff --git a/100_core/src/gplx/core/security/HashAlgo_.java b/100_core/src/gplx/core/security/HashAlgo_.java index 8227ef3e8..e3d329b81 100644 --- a/100_core/src/gplx/core/security/HashAlgo_.java +++ b/100_core/src/gplx/core/security/HashAlgo_.java @@ -19,7 +19,7 @@ package gplx.core.security; import gplx.*; import gplx.core.*; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import gplx.core.consoles.*; +import gplx.core.consoles.*; import gplx.core.stores.*; import gplx.core.ios.*; /*IoStream*/import gplx.core.texts.*; /*Base32Converter*/ public class HashAlgo_ { public static final HashAlgo Null = new HashAlgo_null(); diff --git a/100_core/src_330_store/gplx/DataRdr.java b/100_core/src/gplx/core/stores/DataRdr.java similarity index 95% rename from 100_core/src_330_store/gplx/DataRdr.java rename to 100_core/src/gplx/core/stores/DataRdr.java index 0a9ff2110..a428b4373 100644 --- a/100_core/src_330_store/gplx/DataRdr.java +++ b/100_core/src/gplx/core/stores/DataRdr.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public interface DataRdr extends SrlMgr, RlsAble { String NameOfNode(); String To_str(); diff --git a/100_core/src_330_store/gplx/DataRdr_.java b/100_core/src/gplx/core/stores/DataRdr_.java similarity index 97% rename from 100_core/src_330_store/gplx/DataRdr_.java rename to 100_core/src/gplx/core/stores/DataRdr_.java index 367288e02..f3a37a55f 100644 --- a/100_core/src_330_store/gplx/DataRdr_.java +++ b/100_core/src/gplx/core/stores/DataRdr_.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class DataRdr_ { public static final DataRdr Null = new DataRdr_null(); diff --git a/100_core/src_330_store/gplx/stores/DataRdr_base.java b/100_core/src/gplx/core/stores/DataRdr_base.java similarity index 97% rename from 100_core/src_330_store/gplx/stores/DataRdr_base.java rename to 100_core/src/gplx/core/stores/DataRdr_base.java index 23e2f45aa..9eef9e0cb 100644 --- a/100_core/src_330_store/gplx/stores/DataRdr_base.java +++ b/100_core/src/gplx/core/stores/DataRdr_base.java @@ -15,8 +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.stores; import gplx.*; -import gplx.core.strings.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; +import gplx.core.strings.*; import gplx.core.type_xtns.*; public abstract class DataRdr_base implements SrlMgr { public boolean Parse() {return parse;} public void Parse_set(boolean v) {parse = v;} private boolean parse; public Io_url Uri() {return uri;} public void Uri_set(Io_url s) {uri = s;} Io_url uri = Io_url_.Empty; diff --git a/100_core/src_330_store/gplx/stores/DataRdr_mem.java b/100_core/src/gplx/core/stores/DataRdr_mem.java similarity index 96% rename from 100_core/src_330_store/gplx/stores/DataRdr_mem.java rename to 100_core/src/gplx/core/stores/DataRdr_mem.java index 082f32914..582f9b24e 100644 --- a/100_core/src_330_store/gplx/stores/DataRdr_mem.java +++ b/100_core/src/gplx/core/stores/DataRdr_mem.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.gfo_ndes.*; public class DataRdr_mem extends DataRdr_base implements GfoNdeRdr { @Override public String NameOfNode() {return cur.Name();} diff --git a/100_core/src_330_store/gplx/DataWtr.java b/100_core/src/gplx/core/stores/DataWtr.java similarity index 93% rename from 100_core/src_330_store/gplx/DataWtr.java rename to 100_core/src/gplx/core/stores/DataWtr.java index a5bf82298..b8a39bf41 100644 --- a/100_core/src_330_store/gplx/DataWtr.java +++ b/100_core/src/gplx/core/stores/DataWtr.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.gfo_ndes.*; public interface DataWtr extends SrlMgr { Hash_adp EnvVars(); diff --git a/100_core/src_330_store/gplx/DataWtr_.java b/100_core/src/gplx/core/stores/DataWtr_.java similarity index 94% rename from 100_core/src_330_store/gplx/DataWtr_.java rename to 100_core/src/gplx/core/stores/DataWtr_.java index b2d21da47..fdb532401 100644 --- a/100_core/src_330_store/gplx/DataWtr_.java +++ b/100_core/src/gplx/core/stores/DataWtr_.java @@ -15,8 +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; -import gplx.stores.*; /*DsvDataWtr_*/ import gplx.core.gfo_ndes.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; +import gplx.core.gfo_ndes.*; public class DataWtr_ { public static final DataWtr Null = new DataWtr_null(); } diff --git a/100_core/src_330_store/gplx/DataWtr_base.java b/100_core/src/gplx/core/stores/DataWtr_base.java similarity index 96% rename from 100_core/src_330_store/gplx/DataWtr_base.java rename to 100_core/src/gplx/core/stores/DataWtr_base.java index 17112e3b6..8bfd69a0b 100644 --- a/100_core/src_330_store/gplx/DataWtr_base.java +++ b/100_core/src/gplx/core/stores/DataWtr_base.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; public abstract class DataWtr_base implements SrlMgr { @gplx.Virtual public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); public boolean Type_rdr() {return false;} diff --git a/100_core/src_330_store/gplx/stores/GfoNdeRdr.java b/100_core/src/gplx/core/stores/GfoNdeRdr.java similarity index 92% rename from 100_core/src_330_store/gplx/stores/GfoNdeRdr.java rename to 100_core/src/gplx/core/stores/GfoNdeRdr.java index 6ccecf592..bca5d712c 100644 --- a/100_core/src_330_store/gplx/stores/GfoNdeRdr.java +++ b/100_core/src/gplx/core/stores/GfoNdeRdr.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.gfo_ndes.*; public interface GfoNdeRdr extends DataRdr { GfoNde UnderNde(); diff --git a/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java b/100_core/src/gplx/core/stores/GfoNdeRdr_.java similarity index 93% rename from 100_core/src_330_store/gplx/stores/GfoNdeRdr_.java rename to 100_core/src/gplx/core/stores/GfoNdeRdr_.java index b6e5e4e66..1e5ece94f 100644 --- a/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java +++ b/100_core/src/gplx/core/stores/GfoNdeRdr_.java @@ -15,8 +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.stores; import gplx.*; -import gplx.core.gfo_ndes.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; +import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class GfoNdeRdr_ { public static GfoNdeRdr kvs_(KeyValList kvList) { GfoFldList flds = GfoFldList_.new_(); diff --git a/100_core/src_330_store/gplx/SrlMgr.java b/100_core/src/gplx/core/stores/SrlMgr.java similarity index 94% rename from 100_core/src_330_store/gplx/SrlMgr.java rename to 100_core/src/gplx/core/stores/SrlMgr.java index d7a46aa49..684406e62 100644 --- a/100_core/src_330_store/gplx/SrlMgr.java +++ b/100_core/src/gplx/core/stores/SrlMgr.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; public interface SrlMgr { boolean Type_rdr(); Object StoreRoot(SrlObj root, String key); diff --git a/100_core/src_330_store/gplx/SrlObj.java b/100_core/src/gplx/core/stores/SrlObj.java similarity index 92% rename from 100_core/src_330_store/gplx/SrlObj.java rename to 100_core/src/gplx/core/stores/SrlObj.java index a2297a79d..f0f6bbf9d 100644 --- a/100_core/src_330_store/gplx/SrlObj.java +++ b/100_core/src/gplx/core/stores/SrlObj.java @@ -15,7 +15,7 @@ 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; +package gplx.core.stores; import gplx.*; import gplx.core.*; public interface SrlObj { SrlObj SrlObj_New(Object o); void SrlObj_Srl(SrlMgr mgr); diff --git a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java b/100_core/src/gplx/core/stores/xmls/XmlDataRdr.java similarity index 95% rename from 100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java rename to 100_core/src/gplx/core/stores/xmls/XmlDataRdr.java index d3abf0abe..3ad80b676 100644 --- a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java +++ b/100_core/src/gplx/core/stores/xmls/XmlDataRdr.java @@ -15,7 +15,7 @@ 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.stores.xmls; import gplx.*; import gplx.stores.*; +package gplx.core.stores.xmls; import gplx.*; import gplx.core.*; import gplx.core.stores.*; import gplx.langs.xmls.*; /*Xpath_*/ public class XmlDataRdr extends DataRdr_base implements DataRdr { @Override public String NameOfNode() {return nde.Name();} public String To_str() {return nde.Xml_outer();} diff --git a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java b/100_core/src/gplx/core/stores/xmls/XmlDataRdr_.java similarity index 90% rename from 100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java rename to 100_core/src/gplx/core/stores/xmls/XmlDataRdr_.java index 26c45f3af..f0ee30374 100644 --- a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java +++ b/100_core/src/gplx/core/stores/xmls/XmlDataRdr_.java @@ -15,7 +15,7 @@ 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.stores.xmls; import gplx.*; import gplx.stores.*; +package gplx.core.stores.xmls; import gplx.*; import gplx.core.*; import gplx.core.stores.*; public class XmlDataRdr_ { public static XmlDataRdr file_(Io_url url) { String text = Io_mgr.Instance.LoadFilStr(url); diff --git a/100_core/src_330_store/gplx/stores/xmls/XmlDataWtr_.java b/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java similarity index 95% rename from 100_core/src_330_store/gplx/stores/xmls/XmlDataWtr_.java rename to 100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java index 6cee66940..367c6b8d8 100644 --- a/100_core/src_330_store/gplx/stores/xmls/XmlDataWtr_.java +++ b/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java @@ -15,7 +15,7 @@ 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.stores.xmls; import gplx.*; import gplx.stores.*; +package gplx.core.stores.xmls; import gplx.*; import gplx.core.*; import gplx.core.stores.*; import gplx.core.strings.*; import gplx.core.gfo_ndes.*; public class XmlDataWtr_ { public static DataWtr new_() {return XmlDataWtr.new_();} diff --git a/100_core/src/gplx/core/strings/String_bldr.java b/100_core/src/gplx/core/strings/String_bldr.java index 6e06635b8..f5280156a 100644 --- a/100_core/src/gplx/core/strings/String_bldr.java +++ b/100_core/src/gplx/core/strings/String_bldr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.strings; import gplx.*; import gplx.core.*; +import gplx.core.envs.*; public interface String_bldr { boolean Has_none(); boolean Has_some(); diff --git a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java index 0def28ba9..ec7728059 100644 --- a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java +++ b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.tests; import gplx.*; import gplx.core.*; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class PerfLogMgr_fxt { public void Init(Io_url url, String text) { this.url = url; diff --git a/100_core/src/gplx/TfdsEqListItmStr.java b/100_core/src/gplx/core/tests/TfdsEqListItmStr.java similarity index 92% rename from 100_core/src/gplx/TfdsEqListItmStr.java rename to 100_core/src/gplx/core/tests/TfdsEqListItmStr.java index 38fa86b87..774a87c33 100644 --- a/100_core/src/gplx/TfdsEqListItmStr.java +++ b/100_core/src/gplx/core/tests/TfdsEqListItmStr.java @@ -15,7 +15,7 @@ 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; +package gplx.core.tests; import gplx.*; import gplx.core.*; public interface TfdsEqListItmStr { String To_str(Object cur, Object actl); } diff --git a/100_core/src_300_classXtn/gplx/BoolClassXtn.java b/100_core/src/gplx/core/type_xtns/BoolClassXtn.java similarity index 91% rename from 100_core/src_300_classXtn/gplx/BoolClassXtn.java rename to 100_core/src/gplx/core/type_xtns/BoolClassXtn.java index 6743111b6..92b239568 100644 --- a/100_core/src_300_classXtn/gplx/BoolClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/BoolClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class BoolClassXtn extends ClassXtn_base implements ClassXtn { public static final String Key_const = "bo" + "ol"; public String Key() {return Key_const;} @@ -24,7 +24,7 @@ public class BoolClassXtn extends ClassXtn_base implements ClassXtn { public boolean Eq(Object lhs, Object rhs) {try {return Bool_.cast(lhs) == Bool_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) { if ( String_.Eq(raw, "true") - || String_.Eq(raw, "True") // needed for Store_Wtr() {boolVal.toString();} + || String_.Eq(raw, "True") // needed for Store_Wtr() {boolVal.toString();} || String_.Eq(raw, "1") // needed for db; gplx field for boolean is int; need simple way to convert from dbInt to langBool ) return true; diff --git a/100_core/src_300_classXtn/gplx/ByteClassXtn.java b/100_core/src/gplx/core/type_xtns/ByteClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/ByteClassXtn.java rename to 100_core/src/gplx/core/type_xtns/ByteClassXtn.java index df360c59f..a874c0060 100644 --- a/100_core/src_300_classXtn/gplx/ByteClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/ByteClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class ByteClassXtn extends ClassXtn_base implements ClassXtn { public static final String Key_const = "byte"; public String Key() {return Key_const;} diff --git a/100_core/src_300_classXtn/gplx/ClassXtn.java b/100_core/src/gplx/core/type_xtns/ClassXtn.java similarity index 93% rename from 100_core/src_300_classXtn/gplx/ClassXtn.java rename to 100_core/src/gplx/core/type_xtns/ClassXtn.java index 3732eb6e6..e2ac23f7a 100644 --- a/100_core/src_300_classXtn/gplx/ClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/ClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public interface ClassXtn { String Key(); Class UnderClass(); diff --git a/100_core/src_300_classXtn/gplx/ClassXtnPool.java b/100_core/src/gplx/core/type_xtns/ClassXtnPool.java similarity index 92% rename from 100_core/src_300_classXtn/gplx/ClassXtnPool.java rename to 100_core/src/gplx/core/type_xtns/ClassXtnPool.java index 70fb0249c..b6cc16cbb 100644 --- a/100_core/src_300_classXtn/gplx/ClassXtnPool.java +++ b/100_core/src/gplx/core/type_xtns/ClassXtnPool.java @@ -15,8 +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; -import gplx.lists.*; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; +import gplx.core.lists.*; public class ClassXtnPool extends Hash_adp_base { public void Add(ClassXtn typx) {Add_base(typx.Key(), typx);} public ClassXtn Get_by_or_fail(String key) {return (ClassXtn)Get_by_or_fail_base(key);} diff --git a/100_core/src_300_classXtn/gplx/ClassXtn_base.java b/100_core/src/gplx/core/type_xtns/ClassXtn_base.java similarity index 94% rename from 100_core/src_300_classXtn/gplx/ClassXtn_base.java rename to 100_core/src/gplx/core/type_xtns/ClassXtn_base.java index d3b6ecf6b..7b92fc58f 100644 --- a/100_core/src_300_classXtn/gplx/ClassXtn_base.java +++ b/100_core/src/gplx/core/type_xtns/ClassXtn_base.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public abstract class ClassXtn_base { public abstract Class UnderClass(); public abstract Object ParseOrNull(String raw); diff --git a/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java b/100_core/src/gplx/core/type_xtns/DateAdpClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/DateAdpClassXtn.java rename to 100_core/src/gplx/core/type_xtns/DateAdpClassXtn.java index af78d69c4..598828521 100644 --- a/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/DateAdpClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class DateAdpClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "datetime"; public boolean Eq(Object lhs, Object rhs) {try {return DateAdp_.cast(lhs).Eq(DateAdp_.cast(rhs));} catch (Exception e) {Err_.Noop(e); return false;}} diff --git a/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java b/100_core/src/gplx/core/type_xtns/DateAdpClassXtn_tst.java similarity index 93% rename from 100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java rename to 100_core/src/gplx/core/type_xtns/DateAdpClassXtn_tst.java index 2819da891..8d5f5a7ad 100644 --- a/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java +++ b/100_core/src/gplx/core/type_xtns/DateAdpClassXtn_tst.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; import org.junit.*; public class DateAdpClassXtn_tst { @Test public void XtoDb() { diff --git a/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java b/100_core/src/gplx/core/type_xtns/DecimalAdpClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java rename to 100_core/src/gplx/core/type_xtns/DecimalAdpClassXtn.java index bd3276d14..73485e6a6 100644 --- a/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/DecimalAdpClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class DecimalAdpClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "decimal"; // current dsv files reference "decimal" @Override public Class UnderClass() {return Decimal_adp.class;} diff --git a/100_core/src_300_classXtn/gplx/DoubleClassXtn.java b/100_core/src/gplx/core/type_xtns/DoubleClassXtn.java similarity index 94% rename from 100_core/src_300_classXtn/gplx/DoubleClassXtn.java rename to 100_core/src/gplx/core/type_xtns/DoubleClassXtn.java index 0fa9129d3..81e82064c 100644 --- a/100_core/src_300_classXtn/gplx/DoubleClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/DoubleClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class DoubleClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "double"; @Override public Class UnderClass() {return double.class;} diff --git a/100_core/src_300_classXtn/gplx/FloatClassXtn.java b/100_core/src/gplx/core/type_xtns/FloatClassXtn.java similarity index 94% rename from 100_core/src_300_classXtn/gplx/FloatClassXtn.java rename to 100_core/src/gplx/core/type_xtns/FloatClassXtn.java index 2d92523e6..4522d4279 100644 --- a/100_core/src_300_classXtn/gplx/FloatClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/FloatClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class FloatClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "float"; @Override public Class UnderClass() {return float.class;} diff --git a/100_core/src_300_classXtn/gplx/IntClassXtn.java b/100_core/src/gplx/core/type_xtns/IntClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/IntClassXtn.java rename to 100_core/src/gplx/core/type_xtns/IntClassXtn.java index 40a9d1ab4..25bfc9b8d 100644 --- a/100_core/src_300_classXtn/gplx/IntClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/IntClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class IntClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "int"; @Override public Class UnderClass() {return Integer.class;} diff --git a/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java b/100_core/src/gplx/core/type_xtns/IoUrlClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/IoUrlClassXtn.java rename to 100_core/src/gplx/core/type_xtns/IoUrlClassXtn.java index d01f3c7bf..7c3e16e61 100644 --- a/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/IoUrlClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class IoUrlClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "ioPath"; @Override public Class UnderClass() {return Io_url.class;} diff --git a/100_core/src_300_classXtn/gplx/LongClassXtn.java b/100_core/src/gplx/core/type_xtns/LongClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/LongClassXtn.java rename to 100_core/src/gplx/core/type_xtns/LongClassXtn.java index 82c6d7ab8..3169b6842 100644 --- a/100_core/src_300_classXtn/gplx/LongClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/LongClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class LongClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "long"; @Override public Class UnderClass() {return long.class;} diff --git a/100_core/src_300_classXtn/gplx/ObjectClassXtn.java b/100_core/src/gplx/core/type_xtns/ObjectClassXtn.java similarity index 94% rename from 100_core/src_300_classXtn/gplx/ObjectClassXtn.java rename to 100_core/src/gplx/core/type_xtns/ObjectClassXtn.java index 408b4d9cd..48e9a45c1 100644 --- a/100_core/src_300_classXtn/gplx/ObjectClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/ObjectClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class ObjectClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "Object"; @Override public Class UnderClass() {return Object.class;} diff --git a/100_core/src_300_classXtn/gplx/StringClassXtn.java b/100_core/src/gplx/core/type_xtns/StringClassXtn.java similarity index 89% rename from 100_core/src_300_classXtn/gplx/StringClassXtn.java rename to 100_core/src/gplx/core/type_xtns/StringClassXtn.java index c6acbd6ee..f85e3f319 100644 --- a/100_core/src_300_classXtn/gplx/StringClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/StringClassXtn.java @@ -15,10 +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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class StringClassXtn extends ClassXtn_base implements ClassXtn { - public static final String Key_const = "string"; - public String Key() {return Key_const;} + public static final String Key_const = "string"; + public String Key() {return Key_const;} @Override public Class UnderClass() {return String.class;} public Object DefaultValue() {return "";} @Override public Object ParseOrNull(String raw) {return raw;} diff --git a/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java b/100_core/src/gplx/core/type_xtns/TimeSpanAdpClassXtn.java similarity index 95% rename from 100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java rename to 100_core/src/gplx/core/type_xtns/TimeSpanAdpClassXtn.java index f82f4b8d0..81a6d1d06 100644 --- a/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java +++ b/100_core/src/gplx/core/type_xtns/TimeSpanAdpClassXtn.java @@ -15,7 +15,7 @@ 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; +package gplx.core.type_xtns; import gplx.*; import gplx.core.*; public class TimeSpanAdpClassXtn extends ClassXtn_base implements ClassXtn { public String Key() {return Key_const;} public static final String Key_const = "timeSpan"; @Override public Class UnderClass() {return TimeSpanAdp.class;} diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java index 5f591d0ec..7fdfd2e3d 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import gplx.core.strings.*; import gplx.core.gfo_ndes.*; import gplx.stores.*; +import gplx.core.strings.*; import gplx.core.gfo_ndes.*; import gplx.core.stores.*; import gplx.core.type_xtns.*; import gplx.core.texts.*; /*CharStream*/ public class DsvDataRdr_ { public static DataRdr dsv_(String text) {return DsvParser.dsv_().ParseAsRdr(text);} diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java index 26c94ce77..1cf43d07a 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class DsvDataRdr_dsv_hdr_tst { @Before public void setup() {fx.Clear();} DsvDataRdr_fxt fx = DsvDataRdr_fxt.new_(); @Test public void Names() { diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java index b4a90ec04..477319e39 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class DsvDataRdr_dsv_misc_tst { @Before public void setup() {fx.Clear();} DsvDataRdr_fxt fx = DsvDataRdr_fxt.new_(); @Test public void CmdDlm_NearMatches() { diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java index 5d8e50a80..dfb52c4c6 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class DsvDataRdr_layout_tst { @Test public void TableName() { run_parse_lines("table0, ,\" \",#"); diff --git a/100_core/src/gplx/langs/dsvs/DsvDataWtr.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr.java index 41a228a74..e8e01f0e2 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataWtr.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import gplx.core.strings.*; import gplx.core.gfo_ndes.*; +import gplx.core.strings.*; import gplx.core.gfo_ndes.*; import gplx.core.stores.*; public class DsvDataWtr extends DataWtr_base implements DataWtr { public void InitWtr(String key, Object val) { if (key == DsvStoreLayout.Key_const) layout = (DsvStoreLayout)val; diff --git a/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java index ebc14d024..dd18b9cb3 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class DsvDataWtr_csv_tst { @Test public void Dat_Val_0() { root = fx_nde.csv_dat_(); this.AddCsvRow(root); diff --git a/100_core/src/gplx/langs/regxs/Regx_adp__tst.java b/100_core/src/gplx/langs/regxs/Regx_adp__tst.java index 1d3eae357..7945e9419 100644 --- a/100_core/src/gplx/langs/regxs/Regx_adp__tst.java +++ b/100_core/src/gplx/langs/regxs/Regx_adp__tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.regxs; import gplx.*; import gplx.langs.*; -import org.junit.*; +import org.junit.*; import gplx.core.tests.*; public class Regx_adp__tst implements TfdsEqListItmStr { @Test public void Match() { tst_Match("a", "a", true); // basic diff --git a/100_core/src/gplx/langs/xmls/HierStrBldr.java b/100_core/src/gplx/langs/xmls/HierStrBldr.java index 59b50f1d4..54ce53ae8 100644 --- a/100_core/src/gplx/langs/xmls/HierStrBldr.java +++ b/100_core/src/gplx/langs/xmls/HierStrBldr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.xmls; import gplx.*; import gplx.langs.*; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class HierStrBldr { public String Root() {return root;} public HierStrBldr Root_(String v) {root = v; return this;} private String root; public Io_url RootAsIoUrl() {return Io_url_.new_dir_(root);} diff --git a/100_core/src_100_interface/gplx/CompareAble_.java b/100_core/src_100_interface/gplx/CompareAble_.java index 3915e3ea1..58168de29 100644 --- a/100_core/src_100_interface/gplx/CompareAble_.java +++ b/100_core/src_100_interface/gplx/CompareAble_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.lists.*; +import gplx.core.lists.*; public class CompareAble_ { public static Comparable as_(Object obj) {return obj instanceof Comparable ? (Comparable)obj : null;} public static int Compare_obj(Object lhs, Object rhs) {return CompareComparables(as_(lhs), as_(rhs));} diff --git a/100_core/src_100_interface/gplx/CompareAble_tst.java b/100_core/src_100_interface/gplx/CompareAble_tst.java index b167ca0a8..01df932d0 100644 --- a/100_core/src_100_interface/gplx/CompareAble_tst.java +++ b/100_core/src_100_interface/gplx/CompareAble_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import org.junit.*; -import gplx.lists.*; +import gplx.core.lists.*; public class CompareAble_tst implements ComparerAble { @Test public void Basic() { String[] slotAry = new String[] {"b", "e", "h"}; // 0=b 1=e 2=h diff --git a/100_core/src_130_brys/gplx/Bry_bfr_mkr.java b/100_core/src_130_brys/gplx/Bry_bfr_mkr.java deleted file mode 100644 index c91b096e3..000000000 --- a/100_core/src_130_brys/gplx/Bry_bfr_mkr.java +++ /dev/null @@ -1,143 +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; -public class Bry_bfr_mkr { - public static final byte Tid_b128 = 0, Tid_b512 = 1, Tid_k004 = 2, Tid_m001 = 3; - private Bry_bfr_mkr_mgr mkr_b128 = new Bry_bfr_mkr_mgr(Tid_b128, 128), mkr_b512 = new Bry_bfr_mkr_mgr(Tid_b512, 512), mkr_k004 = new Bry_bfr_mkr_mgr(Tid_k004, 4 * Io_mgr.Len_kb), mkr_m001 = new Bry_bfr_mkr_mgr(Tid_m001, 1 * Io_mgr.Len_mb); - public Bry_bfr Get_b128() {return mkr_b128.Get();} - public Bry_bfr Get_b512() {return mkr_b512.Get();} - public Bry_bfr Get_k004() {return mkr_k004.Get();} - public Bry_bfr Get_m001() {return mkr_m001.Get();} - public void Rls(Bry_bfr v) { - v.Mkr_rls(); - } - public void Reset_if_gt(int v) { - for (byte i = Tid_b128; i <= Tid_m001; i++) - mkr(i).Reset_if_gt(v); - } - public void Clear_fail_check() { - for (byte i = Tid_b128; i <= Tid_m001; i++) - mkr(i).Clear_fail_check(); - } - public void Clear() { - for (byte i = Tid_b128; i <= Tid_m001; i++) - mkr(i).Clear(); - } - private Bry_bfr_mkr_mgr mkr(byte tid) { - switch (tid) { - case Tid_b128: return mkr_b128; - case Tid_b512: return mkr_b512; - case Tid_k004: return mkr_k004; - case Tid_m001: return mkr_m001; - default: throw Err_.new_unhandled(tid); - } - } -} -class Bry_bfr_mkr_mgr { - private final Object thread_lock = new Object(); - public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 - synchronized (thread_lock) { - this.mgr_id = mgr_id; - this.reset = reset; - this.free = Int_.Ary_empty; - this.free_len = 0; - } - } private int reset; - public byte Mgr_id() {return mgr_id;} private byte mgr_id; - private Bry_bfr[] ary = Ary_empty; private int nxt_idx = 0, ary_max = 0; - private int[] free; private int free_len; - public void Reset_if_gt(int v) { - this.Clear(); // TODO: for now, just call clear - } - public void Clear_fail_check() { - synchronized (thread_lock) { - for (int i = 0; i < ary_max; i++) { - Bry_bfr itm = ary[i]; - if (itm != null) { - if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.To_str(i)); - itm.Clear(); - } - ary[i] = null; - } - ary = Ary_empty; - free = Int_.Ary_empty; - free_len = 0; - nxt_idx = ary_max = 0; - } - } - public void Clear() { - synchronized (thread_lock) { - for (int i = 0; i < ary_max; i++) { - Bry_bfr itm = ary[i]; - if (itm != null) itm.Clear(); - ary[i] = null; - } - ary = Ary_empty; - free = Int_.Ary_empty; - free_len = 0; - nxt_idx = ary_max = 0; - } - } - public Bry_bfr[] Ary() {return ary;} - public int Nxt_idx() {return nxt_idx;} - public Bry_bfr Get() { - synchronized (thread_lock) { - Bry_bfr rv = null; - int rv_idx = -1; - if (free_len > 0) { - try {rv_idx = free[--free_len];} - catch (Exception e) {throw Err_.new_exc(e, "core", "failed to get free index", "free_len", free_len, "free.length", free.length);} - try {rv = ary[rv_idx];} - catch (Exception e) {throw Err_.new_exc(e, "core", "failed to get bfr", "rv_idx", rv_idx, "ary.length", ary.length);} - } - else { - if (nxt_idx == ary_max) - Expand(); - rv_idx = nxt_idx++; - rv = ary[rv_idx]; - if (rv == null) { - rv = Bry_bfr.reset_(reset); - ary[rv_idx] = rv; - } - } - rv.Mkr_init(this, rv_idx); - return rv.Clear(); // NOTE: ALWAYS call Clear when doing Get. caller may forget to call Clear, and reused bfr may have leftover bytes. unit tests will not catch, and difficult to spot in app - } - } - private void Expand() { - int new_max = ary_max == 0 ? 2 : ary_max * 2; - Bry_bfr[] new_ary = new Bry_bfr[new_max]; - Array_.Copy_to(ary, 0, new_ary, 0, ary_max); - ary = new_ary; - ary_max = new_max; - int[] new_free = new int[ary_max]; - Array_.Copy_to(free, 0, new_free, 0, free_len); - free = new_free; - } - public void Rls(int idx) { - synchronized (thread_lock) { - if (idx == -1) throw Err_.new_wo_type("rls called on bfr that was not created by factory"); - int new_ary_len = nxt_idx - 1; - if (idx == new_ary_len) - nxt_idx = new_ary_len; - else - free[free_len++] = idx; - } - } - public static final Bry_bfr[] Ary_empty = new Bry_bfr[0]; -} diff --git a/100_core/src_130_brys/gplx/Bry_bfr_mkr_tst.java b/100_core/src_130_brys/gplx/Bry_bfr_mkr_tst.java deleted file mode 100644 index 2cb5e3ef0..000000000 --- a/100_core/src_130_brys/gplx/Bry_bfr_mkr_tst.java +++ /dev/null @@ -1,74 +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; -import org.junit.*; -public class Bry_bfr_mkr_tst { - Bry_bfr_mkr_fxt fxt = new Bry_bfr_mkr_fxt(); - @Before public void setup() {fxt.Clear();} - @Test public void Get_1() {fxt.Clear().Get().Tst_idxs(0);} - @Test public void Get_2() {fxt.Clear().Get().Get().Tst_idxs(0, 1);} - @Test public void Get_3() {fxt.Clear().Get().Get().Get().Tst_idxs(0, 1, 2);} - @Test public void Rls() { - fxt.Clear().Get().Rls(0).Tst_idxs(); - } - @Test public void Rls_skip_1() { - fxt.Clear().Get().Get().Rls(0).Tst_idxs(-1, 1); - fxt.Get().Tst_idxs(0, 1); - } - @Test public void Rls_skip_2_1() { - fxt.Clear().Get().Get().Get().Rls(1).Rls(0).Tst_idxs(-1, -1, 2); - fxt.Get().Tst_idxs(0, -1, 2); - fxt.Get().Tst_idxs(0, 1, 2); - fxt.Get().Tst_idxs(0, 1, 2, 3); - } - @Test public void Get_rls_get() { // PURPOSE: defect in which last rls failed b/c was not doing ++ if rv existed - fxt.Clear().Get().Rls(0).Get().Get().Rls(1).Rls(0).Tst_idxs(); - } - public static final int Int_null = -2; -} -class Bry_bfr_mkr_fxt { - Bry_bfr_mkr_mgr mkr; - public Bry_bfr_mkr_fxt Clear() { - if (mkr == null) { - mkr = new Bry_bfr_mkr_mgr(Byte_.Zero, 32); - } - mkr.Clear(); - return this; - } - public Bry_bfr_mkr_fxt Get() { - mkr.Get(); - return this; - } - public Bry_bfr_mkr_fxt Rls(int i) { - Bry_bfr bfr = mkr.Ary()[i]; - bfr.Mkr_rls(); - return this; - } - public Bry_bfr_mkr_fxt Tst_idxs(int... expd) { - int actl_len = mkr.Nxt_idx(); - int[] actl = new int[actl_len]; - for (int i = 0; i < actl_len; i++) { - Bry_bfr bfr = mkr.Ary()[i]; - int actl_val = Bry_bfr_mkr_tst.Int_null; - if (bfr != null) actl_val = bfr.Mkr_idx(); - actl[i] = actl_val; - } - Tfds.Eq_ary(expd, actl); - return this; - } -} diff --git a/100_core/src_311_gfoObj/gplx/GfoEvMgr.java b/100_core/src_311_gfoObj/gplx/GfoEvMgr.java index a67a1a55d..ed2b67cc4 100644 --- a/100_core/src_311_gfoObj/gplx/GfoEvMgr.java +++ b/100_core/src_311_gfoObj/gplx/GfoEvMgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.lists.*; +import gplx.core.lists.*; public class GfoEvMgr { @gplx.Internal protected void AddSub(GfoEvMgrOwner pub, String pubEvt, GfoEvObj sub, String subPrc) { GfoEvLnk lnk = new GfoEvLnk(pub, pubEvt, sub, subPrc); diff --git a/100_core/src_311_gfoObj/gplx/GfoMsg_.java b/100_core/src_311_gfoObj/gplx/GfoMsg_.java index 1c267b5bb..154b2f7de 100644 --- a/100_core/src_311_gfoObj/gplx/GfoMsg_.java +++ b/100_core/src_311_gfoObj/gplx/GfoMsg_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.primitives.*; import gplx.core.strings.*; +import gplx.core.primitives.*; import gplx.core.strings.*; import gplx.core.brys.*; public class GfoMsg_ { public static GfoMsg as_(Object obj) {return obj instanceof GfoMsg ? (GfoMsg)obj : null;} public static final GfoMsg Null = new GfoMsg_base().ctor_("<>", false); diff --git a/100_core/src_420_usrMsg/gplx/UsrMsg.java b/100_core/src_420_usrMsg/gplx/UsrMsg.java index 0160fba95..dcd711980 100644 --- a/100_core/src_420_usrMsg/gplx/UsrMsg.java +++ b/100_core/src_420_usrMsg/gplx/UsrMsg.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class UsrMsg { public int VisibilityDuration() {return visibilityDuration;} public UsrMsg VisibilityDuration_(int v) {visibilityDuration = v; return this;} int visibilityDuration = 3000; public String Hdr() {return hdr;} public UsrMsg Hdr_(String val) {hdr = val; return this;} private String hdr; diff --git a/100_core/tst/gplx/TfdsTstr_fxt.java b/100_core/tst/gplx/TfdsTstr_fxt.java index 96b83c255..b206ecb34 100644 --- a/100_core/tst/gplx/TfdsTstr_fxt.java +++ b/100_core/tst/gplx/TfdsTstr_fxt.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import gplx.core.strings.*; -import gplx.lists.*; +import gplx.core.lists.*; public class TfdsTstr_fxt { public TfdsTstr_fxt Eq_str(Object expd, Object actl, String name) { int nameLen = String_.Len(name); if (nameLen > nameLenMax) nameLenMax = nameLen; diff --git a/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java b/100_core/tst/gplx/core/stores/GfoNdeRdr_read_tst.java similarity index 91% rename from 100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java rename to 100_core/tst/gplx/core/stores/GfoNdeRdr_read_tst.java index 98632eeb9..fea0d3ff4 100644 --- a/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java +++ b/100_core/tst/gplx/core/stores/GfoNdeRdr_read_tst.java @@ -15,8 +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.stores; import gplx.*; -import org.junit.*; import gplx.core.gfo_ndes.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class GfoNdeRdr_read_tst { @Test public void ReadInt() { rdr = rdr_(IntClassXtn.Instance, "id", 1); diff --git a/100_core/tst/gplx/stores/GfoNdeRdr_tst.java b/100_core/tst/gplx/core/stores/GfoNdeRdr_tst.java similarity index 95% rename from 100_core/tst/gplx/stores/GfoNdeRdr_tst.java rename to 100_core/tst/gplx/core/stores/GfoNdeRdr_tst.java index c4ba9fd98..111332010 100644 --- a/100_core/tst/gplx/stores/GfoNdeRdr_tst.java +++ b/100_core/tst/gplx/core/stores/GfoNdeRdr_tst.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import org.junit.*; import gplx.core.gfo_ndes.*; public class GfoNdeRdr_tst { @Test public void Subs_leafs() { diff --git a/100_core/tst/gplx/stores/xmls/XmlDataRdr_tst.java b/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java similarity index 94% rename from 100_core/tst/gplx/stores/xmls/XmlDataRdr_tst.java rename to 100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java index cb5252131..40ed6ce28 100644 --- a/100_core/tst/gplx/stores/xmls/XmlDataRdr_tst.java +++ b/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java @@ -15,7 +15,7 @@ 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.stores.xmls; import gplx.*; import gplx.stores.*; +package gplx.core.stores.xmls; import gplx.*; import gplx.core.*; import gplx.core.stores.*; import org.junit.*; public class XmlDataRdr_tst { @Test public void Read() { diff --git a/100_core/tst/gplx/stores/xmls/XmlDataWtr_tst.java b/100_core/tst/gplx/core/stores/xmls/XmlDataWtr_tst.java similarity index 94% rename from 100_core/tst/gplx/stores/xmls/XmlDataWtr_tst.java rename to 100_core/tst/gplx/core/stores/xmls/XmlDataWtr_tst.java index 28810694c..fada26334 100644 --- a/100_core/tst/gplx/stores/xmls/XmlDataWtr_tst.java +++ b/100_core/tst/gplx/core/stores/xmls/XmlDataWtr_tst.java @@ -15,7 +15,7 @@ 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.stores.xmls; import gplx.*; import gplx.stores.*; +package gplx.core.stores.xmls; import gplx.*; import gplx.core.*; import gplx.core.stores.*; import org.junit.*; public class XmlDataWtr_tst { @Before public void setup() { diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java index d5c99fce1..f245d5975 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.lists.*;/*StackAdp*/ +import gplx.core.lists.*;/*StackAdp*/ class GfmlTypeMgr { public GfmlTypRegy TypeRegy() {return typeRegy;} GfmlTypRegy typeRegy = GfmlTypRegy.new_(); public GfmlFldPool FldPool() {return fldPool;} GfmlFldPool fldPool = GfmlFldPool.new_(GfmlType_.new_any_()); diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java index 5a11439d5..af5528ec5 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.lists.*;/*Hash_adp_list*/ +import gplx.core.lists.*;/*Hash_adp_list*/ interface GfmlPragma { String KeyOfPragma(); void Exec(GfmlBldr bldr, GfmlNde pragmaNde); diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java index 5e1503003..779306d1a 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.lists.*; +import gplx.core.lists.*; class GfmlPragmaType implements GfmlPragma { public String KeyOfPragma() {return pragmaKey;} private String pragmaKey = "_type"; public void Exec(GfmlBldr bldr, GfmlNde pragmaNde) { diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlFrame.java b/110_gfml/src_500_build/gplx/gfml/GfmlFrame.java index 3ce19b851..d602b262b 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlFrame.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlFrame.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.lists.*; /*StackAdp*/ +import gplx.core.lists.*; /*StackAdp*/ public interface GfmlFrame { GfmlLxr Lxr(); // each frame has only one lxr int FrameType(); diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataNde.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataNde.java index b257edcf5..1da50b7e8 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataNde.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataNde.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.stores.*; import gplx.core.gfo_ndes.*; +import gplx.core.stores.*; import gplx.core.gfo_ndes.*; public class GfmlDataNde { public GfmlDoc Doc() {return gdoc;} GfmlDoc gdoc; public DataRdr XtoRdr() { diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr.java index c22abd303..a546b18bb 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; +import gplx.core.stores.*; public class GfmlDataRdr extends GfmlDataRdr_base { public static DataRdr raw_root_(String raw) { GfmlDoc gdoc = GfmlDoc_.parse_any_eol_(raw); diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr_base.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr_base.java index 4ea5faf7b..1e9db8317 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr_base.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataRdr_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.stores.*; /*DataRdr_base*/ +import gplx.core.stores.*; /*DataRdr_base*/ public abstract class GfmlDataRdr_base extends DataRdr_base implements DataRdr { @Override public String NameOfNode() {return curNde.Hnd();} @Override public int FieldCount() {return curNde.SubKeys().Count();} diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java index a4f40b7ec..df2595c8a 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import gplx.lists.*; /*StackAdp*/ import gplx.core.gfo_ndes.*; +import gplx.core.lists.*; /*StackAdp*/ import gplx.core.gfo_ndes.*; import gplx.core.stores.*; public class GfmlDataWtr extends DataWtr_base implements DataWtr { public void InitWtr(String key, Object val) { if (!String_.Eq(key, GfmlDataWtrOpts.Key_const)) return; diff --git a/110_gfml/tst/gplx/gfml/GfmlDataRdr_tst.java b/110_gfml/tst/gplx/gfml/GfmlDataRdr_tst.java index 2d49f936e..5be3e90b3 100644 --- a/110_gfml/tst/gplx/gfml/GfmlDataRdr_tst.java +++ b/110_gfml/tst/gplx/gfml/GfmlDataRdr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import org.junit.*; +import org.junit.*; import gplx.core.stores.*; public class GfmlDataRdr_tst { @Test public void Raw() { raw = "root:{}"; diff --git a/110_gfml/tst/gplx/gfml/z081_GfmlDataWtr_tst.java b/110_gfml/tst/gplx/gfml/z081_GfmlDataWtr_tst.java index 9bf2ee4f8..4d0f7b2b3 100644 --- a/110_gfml/tst/gplx/gfml/z081_GfmlDataWtr_tst.java +++ b/110_gfml/tst/gplx/gfml/z081_GfmlDataWtr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import org.junit.*; +import org.junit.*; import gplx.core.stores.*; public class z081_GfmlDataWtr_tst { @Before public void setup() { wtr = GfmlDataWtr.new_(); diff --git a/110_gfml/tst/gplx/gfml/z082_GfmlDataWtrOpts_tst.java b/110_gfml/tst/gplx/gfml/z082_GfmlDataWtrOpts_tst.java index 8610cf2f7..754773c63 100644 --- a/110_gfml/tst/gplx/gfml/z082_GfmlDataWtrOpts_tst.java +++ b/110_gfml/tst/gplx/gfml/z082_GfmlDataWtrOpts_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import org.junit.*; +import org.junit.*; import gplx.core.stores.*; public class z082_GfmlDataWtrOpts_tst { @Before public void setup() { wtr = GfmlDataWtr.new_(); diff --git a/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java b/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java index a15c82c66..927d1acc3 100644 --- a/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java +++ b/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; import org.junit.*; -import gplx.stores.*; +import gplx.core.stores.*; public class z801_useCase_DataRdr_tst { String raw; @Test public void Subs_byName() { diff --git a/110_gfml/tst/gplx/gfml/z901_perf_tst.java b/110_gfml/tst/gplx/gfml/z901_perf_tst.java index f2fbc5d7b..869c2163f 100644 --- a/110_gfml/tst/gplx/gfml/z901_perf_tst.java +++ b/110_gfml/tst/gplx/gfml/z901_perf_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.gfml; import gplx.*; -import org.junit.*; import gplx.core.strings.*; +import org.junit.*; import gplx.core.strings.*; import gplx.core.envs.*; public class z901_perf_tst { TimerWatch tmr = TimerWatch.new_(); @Test public void EmptyTestSoJunitWillNotFail() {} diff --git a/140_dbs/src/gplx/stores/DbMaprArg.java b/140_dbs/src/gplx/core/stores/DbMaprArg.java similarity index 93% rename from 140_dbs/src/gplx/stores/DbMaprArg.java rename to 140_dbs/src/gplx/core/stores/DbMaprArg.java index 2f4e345b1..6d83a5ae3 100644 --- a/140_dbs/src/gplx/stores/DbMaprArg.java +++ b/140_dbs/src/gplx/core/stores/DbMaprArg.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; public class DbMaprArg { public String ObjProp() {return objProp;} private String objProp; public String DbFld() {return dbFld;} private String dbFld; diff --git a/140_dbs/src/gplx/stores/DbMaprItm.java b/140_dbs/src/gplx/core/stores/DbMaprItm.java similarity index 95% rename from 140_dbs/src/gplx/stores/DbMaprItm.java rename to 140_dbs/src/gplx/core/stores/DbMaprItm.java index 87e1c6b8d..13a66f480 100644 --- a/140_dbs/src/gplx/stores/DbMaprItm.java +++ b/140_dbs/src/gplx/core/stores/DbMaprItm.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; public class DbMaprItm { public String TableName() {return tableName;} public DbMaprItm TableName_(String val) {tableName = val; return this;} private String tableName; public Ordered_hash Flds() {return flds;} Ordered_hash flds = Ordered_hash_.New(); diff --git a/140_dbs/src/gplx/stores/DbMaprMgr.java b/140_dbs/src/gplx/core/stores/DbMaprMgr.java similarity index 95% rename from 140_dbs/src/gplx/stores/DbMaprMgr.java rename to 140_dbs/src/gplx/core/stores/DbMaprMgr.java index f781bdcf7..17f995639 100644 --- a/140_dbs/src/gplx/stores/DbMaprMgr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprMgr.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; public class DbMaprMgr { public DbMaprArg[] RootIndexFlds() {return rootIndexFlds;} public DbMaprMgr RootIndexFlds_(DbMaprArg... val) {rootIndexFlds = val; return this;} DbMaprArg[] rootIndexFlds; public DbMaprItm Root() {return root;} public DbMaprMgr Root_(DbMaprItm v) {root = v; return this;} DbMaprItm root; diff --git a/140_dbs/src/gplx/stores/DbMaprMgr_tst.java b/140_dbs/src/gplx/core/stores/DbMaprMgr_tst.java similarity index 97% rename from 140_dbs/src/gplx/stores/DbMaprMgr_tst.java rename to 140_dbs/src/gplx/core/stores/DbMaprMgr_tst.java index ab9a07f59..56d1aabd1 100644 --- a/140_dbs/src/gplx/stores/DbMaprMgr_tst.java +++ b/140_dbs/src/gplx/core/stores/DbMaprMgr_tst.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import org.junit.*; import gplx.dbs.*; /*Db_conn_info*/ public class DbMaprMgr_tst { diff --git a/140_dbs/src/gplx/stores/DbMaprRdr.java b/140_dbs/src/gplx/core/stores/DbMaprRdr.java similarity index 96% rename from 140_dbs/src/gplx/stores/DbMaprRdr.java rename to 140_dbs/src/gplx/core/stores/DbMaprRdr.java index 96d45b450..5091d5688 100644 --- a/140_dbs/src/gplx/stores/DbMaprRdr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprRdr.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.criterias.*; import gplx.dbs.*; import gplx.core.gfo_ndes.*; public class DbMaprRdr extends DataRdr_base implements SrlMgr { @Override public String NameOfNode() {return "DbMaprRdr";} diff --git a/140_dbs/src/gplx/stores/DbMaprWtr.java b/140_dbs/src/gplx/core/stores/DbMaprWtr.java similarity index 96% rename from 140_dbs/src/gplx/stores/DbMaprWtr.java rename to 140_dbs/src/gplx/core/stores/DbMaprWtr.java index b2a8f3aef..7e0d10483 100644 --- a/140_dbs/src/gplx/stores/DbMaprWtr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprWtr.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.criterias.*; import gplx.core.gfo_ndes.*; import gplx.dbs.*; import gplx.dbs.qrys.*; public class DbMaprWtr extends DataWtr_base implements DataWtr { diff --git a/140_dbs/src/gplx/stores/Db_data_rdr.java b/140_dbs/src/gplx/core/stores/Db_data_rdr.java similarity index 96% rename from 140_dbs/src/gplx/stores/Db_data_rdr.java rename to 140_dbs/src/gplx/core/stores/Db_data_rdr.java index affe83163..526ef73c2 100644 --- a/140_dbs/src/gplx/stores/Db_data_rdr.java +++ b/140_dbs/src/gplx/core/stores/Db_data_rdr.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/140_dbs/src/gplx/stores/Db_data_rdr_.java b/140_dbs/src/gplx/core/stores/Db_data_rdr_.java similarity index 93% rename from 140_dbs/src/gplx/stores/Db_data_rdr_.java rename to 140_dbs/src/gplx/core/stores/Db_data_rdr_.java index d6575914a..9947d1d33 100644 --- a/140_dbs/src/gplx/stores/Db_data_rdr_.java +++ b/140_dbs/src/gplx/core/stores/Db_data_rdr_.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; import java.sql.ResultSet; public class Db_data_rdr_ { public static Db_data_rdr new_(ResultSet rdr, String commandText) {return new Db_data_rdr().ctor_db_data_rdr(rdr, commandText);} diff --git a/140_dbs/src/gplx/stores/MockDiscObj.java b/140_dbs/src/gplx/core/stores/MockDiscObj.java similarity index 97% rename from 140_dbs/src/gplx/stores/MockDiscObj.java rename to 140_dbs/src/gplx/core/stores/MockDiscObj.java index 5a1d9013c..529e1d67a 100644 --- a/140_dbs/src/gplx/stores/MockDiscObj.java +++ b/140_dbs/src/gplx/core/stores/MockDiscObj.java @@ -15,7 +15,7 @@ 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.stores; import gplx.*; +package gplx.core.stores; import gplx.*; import gplx.core.*; class MockDisc implements SrlObj, GfoInvkAble { public int Id() {return id;} public MockDisc Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; public String Name() {return name;} public MockDisc Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index 0249ed053..dcc71514b 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; -import gplx.dbs.engines.*; import gplx.dbs.qrys.*; +import gplx.dbs.engines.*; import gplx.dbs.qrys.*; import gplx.core.stores.*; public class Db_conn { private final List_adp rls_list = List_adp_.new_(); private final Db_engine engine; public Db_conn(Db_engine engine) {this.engine = engine;} diff --git a/140_dbs/src/gplx/dbs/Db_conn_.java b/140_dbs/src/gplx/dbs/Db_conn_.java index bdc6dffa5..05d91ad1e 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_.java +++ b/140_dbs/src/gplx/dbs/Db_conn_.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; +import gplx.core.stores.*; import gplx.dbs.qrys.*; public class Db_conn_ { public static final Db_conn Noop = Db_conn_pool.Instance.Get_or_new(Db_conn_info_.Null); diff --git a/140_dbs/src/gplx/dbs/Db_crt_tst.java b/140_dbs/src/gplx/dbs/Db_crt_tst.java index a230eaf47..c662345fd 100644 --- a/140_dbs/src/gplx/dbs/Db_crt_tst.java +++ b/140_dbs/src/gplx/dbs/Db_crt_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; -import org.junit.*; import gplx.core.criterias.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.core.criterias.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class Db_crt_tst { @Before public void setup() { row = GfoNde_.vals_(GfoFldList_.new_().Add("id", IntClassXtn.Instance).Add("name", StringClassXtn.Instance), Object_.Ary(1, "me")); diff --git a/140_dbs/src/gplx/dbs/Db_stmt.java b/140_dbs/src/gplx/dbs/Db_stmt.java index 10d68cf25..16a38fdd0 100644 --- a/140_dbs/src/gplx/dbs/Db_stmt.java +++ b/140_dbs/src/gplx/dbs/Db_stmt.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; -import gplx.dbs.engines.*; +import gplx.dbs.engines.*; import gplx.core.stores.*; public interface Db_stmt extends RlsAble { Db_stmt Crt_bool_as_byte(String k, boolean v); Db_stmt Val_bool_as_byte(String k, boolean v); diff --git a/140_dbs/src/gplx/dbs/engines/Db_engine.java b/140_dbs/src/gplx/dbs/engines/Db_engine.java index a3cd2bfa0..e4cd0ce6c 100644 --- a/140_dbs/src/gplx/dbs/engines/Db_engine.java +++ b/140_dbs/src/gplx/dbs/engines/Db_engine.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines; import gplx.*; import gplx.dbs.*; +import gplx.core.stores.*; public interface Db_engine { String Tid(); Db_conn_info Conn_info(); diff --git a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java index 0c28f60ba..2ec9e145c 100644 --- a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java +++ b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines; import gplx.*; import gplx.dbs.*; import java.sql.*; +import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; public abstract class Db_engine_sql_base implements Db_engine { @gplx.Internal protected void Ctor(Db_conn_info conn_info) {this.conn_info = conn_info;} @@ -79,7 +80,7 @@ public abstract class Db_engine_sql_base implements Db_engine { @gplx.Virtual public void Env_db_detach(String alias) {} @gplx.Virtual public boolean Meta_tbl_exists(String tbl) {return false;} @gplx.Virtual public boolean Meta_fld_exists(String tbl, String fld) {return false;} - @gplx.Virtual public DataRdr New_rdr(ResultSet rdr, String sql) {return gplx.stores.Db_data_rdr_.new_(rdr, sql);} + @gplx.Virtual public DataRdr New_rdr(ResultSet rdr, String sql) {return gplx.core.stores.Db_data_rdr_.new_(rdr, sql);} @gplx.Virtual public Sql_qry_wtr SqlWtr() {return Sql_qry_wtr_.new_ansi();} private Db_rdr New_rdr(Db_stmt stmt, Object rdr, String sql) { Db_rdr__basic rv = (Db_rdr__basic)New_rdr_clone(); diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java index 5a9d75ad9..d00a57096 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java @@ -16,6 +16,7 @@ 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.*; +import gplx.core.stores.*; public class Db_engine__mem implements Db_engine { private final Hash_adp tbl_hash = Hash_adp_.new_(); Db_engine__mem(Db_conn_info conn_info) {this.conn_info = conn_info;} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java index 3381fe0d8..a077ce4a3 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java @@ -16,6 +16,7 @@ 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.*; +import gplx.core.stores.*; public class Db_stmt__mem implements Db_stmt { private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); private final Ordered_hash val_list = Ordered_hash_.New(); diff --git a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java index 81f92cc2a..d299d4bb4 100644 --- a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java +++ b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.mysql; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; +import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; import java.sql.*; public class Mysql_engine extends Db_engine_sql_base { @Override public String Tid() {return Mysql_conn_info.Tid_const;} diff --git a/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java b/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java index 54f051204..ecd2fe93b 100644 --- a/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java +++ b/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.nulls; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; + import gplx.core.stores.*; public class Noop_engine implements Db_engine { public String Tid() {return Noop_conn_info.Tid_const;} public Db_conn_info Conn_info() {return Db_conn_info_.Null;} diff --git a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java index 2a6216520..e47e7a67f 100644 --- a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java +++ b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.postgres; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; +import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; import java.sql.*; public class Postgres_engine extends Db_engine_sql_base { @Override public String Tid() {return Postgres_conn_info.Tid_const;} diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java index 96360f1e9..5cc7b009f 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines.sqlite; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import java.sql.*; -import gplx.stores.*; import gplx.dbs.engines.*; import gplx.dbs.engines.sqlite.*; +import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.engines.sqlite.*; import gplx.dbs.qrys.*; public class Sqlite_engine extends Db_engine_sql_base { private final Sqlite_txn_mgr txn_mgr; private final Sqlite_schema_mgr schema_mgr; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java index dd154a39d..c522d5a6a 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; +import gplx.core.stores.*; class TdbDbLoadMgr { public TdbDatabase LoadTbls(Io_url dbInfo) { TdbDatabase db = TdbDatabase.new_(dbInfo); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_tst.java index 5778aca75..281cdcfed 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_tst.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import org.junit.*; import gplx.core.gfo_ndes.*; -import gplx.stores.*; /*DsvDataRdr*/ import gplx.langs.dsvs.*; /*DsvDataWtr*/ +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; +import gplx.core.stores.*; /*DsvDataRdr*/ import gplx.langs.dsvs.*; /*DsvDataWtr*/ public class TdbDbLoadMgr_tst { @Before public void setup() { Io_url dbInfo = Io_url_.mem_fil_("mem/dir/db0.dsv"); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java index 4a3a5d6ca..97cddfda8 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; +import gplx.core.stores.*; class TdbDbSaveMgr { public void SaveDb(TdbDatabase db) { for (Object filObj : db.Files()) { diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java index 4da9b703b..de2ad7985 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import org.junit.*; -import gplx.langs.dsvs.*; /*DsvDataWtr*/ +import org.junit.*; import gplx.core.stores.*; +import gplx.langs.dsvs.*; import gplx.core.type_xtns.*; public class TdbDbSaveMgr_tst { @Before public void setup() { Io_url dbInfo = Io_url_.mem_fil_("mem/dir/db0.dsv"); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java index a202fc49e..7369b452e 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.core.criterias.*; import gplx.lists.*; /*GfoNde*/ import gplx.dbs.qrys.*; import gplx.core.gfo_ndes.*; +import gplx.core.criterias.*; import gplx.core.lists.*; /*GfoNde*/ import gplx.dbs.qrys.*; import gplx.core.gfo_ndes.*; class TdbDeleteWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { TdbEngine engine = TdbEngine.cast(engineObj); Db_qry_delete cmd = (Db_qry_delete)cmdObj; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java index d0af22d42..541ce91e0 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; +import gplx.core.stores.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; public class TdbEngine implements Db_engine { public String Tid() {return Tdb_conn_info.Tid_const;} diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java index c4c84bb9a..314d09f07 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.core.gfo_ndes.*; -import gplx.lists.*; /*Ordered_hash_base*/ import gplx.langs.dsvs.*; /*DsvStoreLayout*/ +import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; import gplx.core.stores.*; +import gplx.core.lists.*; /*Ordered_hash_base*/ import gplx.langs.dsvs.*; /*DsvStoreLayout*/ public class TdbFileList extends Ordered_hash_base { public TdbFile Get_by_or_fail(int id) {return TdbFile.as_(Get_by_or_fail_base(id));} public void Add(TdbFile src) {Add_base(src.Id(), src);} diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush.java index 0e799d7c5..8c83d33b4 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.lists.*; /*GfoNde*/ import gplx.dbs.qrys.*; +import gplx.core.lists.*; /*GfoNde*/ import gplx.dbs.qrys.*; class TdbFlushWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { TdbEngine engine = TdbEngine.cast(engineObj); Db_qry_flush cmd = Db_qry_flush.cast(cmdObj); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java index 73912f4dd..97e0d9f93 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import org.junit.*; -import gplx.core.ios.*; /*IoMgrFxt*/ import gplx.dbs.qrys.*; +import gplx.core.ios.*; /*IoMgrFxt*/ import gplx.dbs.qrys.*; import gplx.core.type_xtns.*; public class TdbFlush_tst { @Before public void setup() { Io_mgr.Instance.InitEngine_mem(); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java index 3c2537d8d..26287e4ac 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.core.gfo_ndes.*; -import gplx.lists.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; +import gplx.core.gfo_ndes.*; import gplx.core.stores.*; +import gplx.core.lists.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; class TdbInsertWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { TdbEngine engine = TdbEngine.cast(engineObj); Db_qry_insert cmd = (Db_qry_insert)cmdObj; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java index 35f46ae9b..75635a9c8 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import gplx.core.criterias.*; import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; -import gplx.lists.*; /*ComparerAble*/ import gplx.stores.*; /*GfoNdeRdr*/ +import gplx.core.lists.*; /*ComparerAble*/ import gplx.core.stores.*; /*GfoNdeRdr*/ class TdbSelectWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { TdbEngine engine = TdbEngine.cast(engineObj); Db_qry__select_cmd cmd = (Db_qry__select_cmd)cmdObj; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java index 4bcb814c0..c9a0299e9 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java @@ -16,10 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.stores.*; -import gplx.stores.xmls.*; /*XmlDataRdr*/ +import gplx.core.stores.*; +import gplx.core.stores.xmls.*; /*XmlDataRdr*/ import gplx.langs.dsvs.*; /*DsvDataWtr*/ -import gplx.lists.*; /*GfoNdeRdr*/ +import gplx.core.lists.*; /*GfoNdeRdr*/ class TdbStores { public static final String Dsv = "dsv"; public static final String Xml = "xml"; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java index 8bbd3565f..8643c6006 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.*; /*GfoNdeList*/ import gplx.stores.*; import gplx.langs.dsvs.*; /*DsvStoreLayout*/ import gplx.core.gfo_ndes.*; +import gplx.*; /*GfoNdeList*/ import gplx.core.stores.*; import gplx.langs.dsvs.*; /*DsvStoreLayout*/ import gplx.core.gfo_ndes.*; public class TdbTable { public int Id() {return id;} int id; public String Name() {return name;} private String name; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java index 01c53a92e..a42a0f71a 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.lists.*; /*Ordered_hash_base*/ import gplx.langs.dsvs.*; /*DsvStoreLayout*/ import gplx.core.gfo_ndes.*; +import gplx.core.lists.*; /*Ordered_hash_base*/ import gplx.langs.dsvs.*; /*DsvStoreLayout*/ import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; import gplx.core.stores.*; public class TdbTableList extends Ordered_hash_base { public TdbTable Get_by(String name) {return TdbTable.as_(Fetch_base(name));} public TdbTable Get_by_or_fail(String name) { diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbUpdate.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbUpdate.java index 034f9b4e0..15780a4a2 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbUpdate.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbUpdate.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -import gplx.core.criterias.*; import gplx.lists.*; /*GfoNde*/ import gplx.core.gfo_ndes.*; +import gplx.core.criterias.*; import gplx.core.lists.*; /*GfoNde*/ import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; class TdbUpdateWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java index 6651f02c5..b9a6f29fb 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*; -import gplx.core.criterias.*; import gplx.dbs.sqls.*; import gplx.core.gfo_ndes.*; +import gplx.core.criterias.*; import gplx.dbs.sqls.*; import gplx.core.gfo_ndes.*; import gplx.core.stores.*; public class Db_qry__select_cmd implements Db_qry { public int Tid() {return Db_qry_.Tid_select;} public boolean Exec_is_rdr() {return true;} diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java index 16f500149..1d138a988 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*; import java.sql.*; -import gplx.dbs.engines.*; import gplx.dbs.sqls.*; +import gplx.dbs.engines.*; import gplx.dbs.sqls.*; import gplx.core.stores.*; public class Db_stmt_cmd implements Db_stmt { private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); private Db_engine engine; diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java index 17cc0d8f0..840836803 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.stores.*; import gplx.dbs.engines.*; public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statements; not used for actual insert into database private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_order_by_sorter.java b/140_dbs/src/gplx/dbs/sqls/Sql_order_by_sorter.java index 93d837202..49b73eed1 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_order_by_sorter.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_order_by_sorter.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; import gplx.core.gfo_ndes.*; -import gplx.lists.*; +import gplx.core.lists.*; public class Sql_order_by_sorter implements ComparerAble { public int compare(Object lhsObj, Object rhsObj) { GfoNde lhs = (GfoNde)lhsObj; GfoNde rhs = (GfoNde)rhsObj; diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java index f6f28e91d..8c34888f8 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; -import gplx.core.gfo_ndes.*; +import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public class Sql_select_fld_ { public static Sql_select_fld_base new_fld(String tbl, String fld, String alias) {return new Sql_select_fld_fld(tbl, fld, alias);} public static Sql_select_fld_base new_count(String tbl, String fld, String alias) {return new Sql_select_fld_count(tbl, fld, alias);} diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java index 4a089258a..8170be88e 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; -import gplx.core.gfo_ndes.*; +import gplx.core.gfo_ndes.*; import gplx.core.type_xtns.*; public abstract class Sql_select_fld_base { public String Tbl() {return tbl;} public void Tbl_set(String val) {tbl = val;} private String tbl; public String Fld() {return fld;} public void Fld_set(String val) {fld = val;} private String fld; diff --git a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java index de3e491dc..ad5e758b4 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java +++ b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*; +import gplx.core.envs.*; public class Db_cmd_backup implements GfoInvkAble { public String DbName() {return dbName;} public Db_cmd_backup DbName_(String val) {dbName = val; return this;} private String dbName = "db"; public Io_url ExeUrl() {return exeUrl;} public Db_cmd_backup ExeUrl_(Io_url val) {exeUrl = val; return this;} Io_url exeUrl; @@ -51,7 +52,7 @@ public class Db_cmd_backup implements GfoInvkAble { Io_url bkpCmdFil = bkpDir.GenSubFil_ary("backup_", dbName, ".cmd"); // Io_url bkpCmdFil = Io_url_.new_dir_("/home/").GenSubFil_ary("backup_", dbName, ".cmd"); // LNX: uncomment Io_mgr.Instance.SaveFilStr_args(bkpCmdFil, cmdText).Exec(); // explicitly state utf8; - ProcessAdp.run_wait_(bkpCmdFil); + Process_adp.run_wait_(bkpCmdFil); Io_mgr.Instance.DeleteFil(bkpCmdFil); return this; } diff --git a/140_dbs/src/gplx/dbs/utls/PoolIds.java b/140_dbs/src/gplx/dbs/utls/PoolIds.java index 6c1c5f346..43d2dec7a 100644 --- a/140_dbs/src/gplx/dbs/utls/PoolIds.java +++ b/140_dbs/src/gplx/dbs/utls/PoolIds.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*; +import gplx.core.stores.*; import gplx.dbs.qrys.*; public class PoolIds { public int FetchNext(Db_conn conn, String url) { diff --git a/140_dbs/tst/gplx/dbs/Db_conn_fxt.java b/140_dbs/tst/gplx/dbs/Db_conn_fxt.java index f1ede83ba..6419f459e 100644 --- a/140_dbs/tst/gplx/dbs/Db_conn_fxt.java +++ b/140_dbs/tst/gplx/dbs/Db_conn_fxt.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; +import gplx.core.stores.*; import gplx.dbs.engines.sqlite.*; import gplx.dbs.engines.mysql.*; import gplx.dbs.engines.postgres.*; import gplx.core.gfo_ndes.*; public class Db_conn_fxt implements RlsAble { public Db_conn Conn() {return conn;} public Db_conn_fxt Conn_(Db_conn v) {conn = v; return this;} Db_conn conn; diff --git a/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java b/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java index 73a3b9cef..b2cafa9a5 100644 --- a/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java +++ b/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines; import gplx.*; import gplx.dbs.*; -import org.junit.*; +import org.junit.*; import gplx.core.type_xtns.*; import gplx.core.stores.*; public class db_DataTypes_tst { DataTypes_base_fxt fx = new DataTypes_base_fxt(); @Test public void Mysql() {if (Tfds.SkipDb) return; diff --git a/140_dbs/tst/gplx/dbs/groupBys/GroupBys_base_tst.java b/140_dbs/tst/gplx/dbs/groupBys/GroupBys_base_tst.java index 51d8e1af9..247993611 100644 --- a/140_dbs/tst/gplx/dbs/groupBys/GroupBys_base_tst.java +++ b/140_dbs/tst/gplx/dbs/groupBys/GroupBys_base_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.groupBys; import gplx.*; import gplx.dbs.*; -import org.junit.*; import gplx.dbs.qrys.*; import gplx.core.gfo_ndes.*; +import org.junit.*; import gplx.dbs.qrys.*; import gplx.core.gfo_ndes.*; import gplx.core.stores.*; public abstract class GroupBys_base_tst { protected abstract Db_conn provider_(); protected Db_conn conn; diff --git a/140_dbs/tst/gplx/dbs/insertIntos/InsertIntos_base_tst.java b/140_dbs/tst/gplx/dbs/insertIntos/InsertIntos_base_tst.java index 45f8d6d72..8c7cc032c 100644 --- a/140_dbs/tst/gplx/dbs/insertIntos/InsertIntos_base_tst.java +++ b/140_dbs/tst/gplx/dbs/insertIntos/InsertIntos_base_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.insertIntos; import gplx.*; import gplx.dbs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; import gplx.core.stores.*; public abstract class InsertIntos_base_tst { protected abstract Db_conn provider_(); protected Db_conn conn; diff --git a/140_dbs/tst/gplx/dbs/joins/Joins_base_tst.java b/140_dbs/tst/gplx/dbs/joins/Joins_base_tst.java index 6fa8bb7e6..e9e2adf67 100644 --- a/140_dbs/tst/gplx/dbs/joins/Joins_base_tst.java +++ b/140_dbs/tst/gplx/dbs/joins/Joins_base_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.joins; import gplx.*; import gplx.dbs.*; -import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; +import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; import gplx.core.stores.*; public abstract class Joins_base_tst { protected Db_conn conn; @Before public void setup() { diff --git a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java index 9006b6820..e55fc3798 100644 --- a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java +++ b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; -import gplx.*; import gplx.core.consoles.*; import gplx.dbs.engines.sqlite.*; +import gplx.*; import gplx.core.consoles.*; import gplx.core.envs.Env_; +import gplx.dbs.engines.sqlite.*; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; diff --git a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java b/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java index 1c62df5f6..e2b3f071f 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import java.awt.Font; import java.awt.Toolkit; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class FontAdp implements GfoInvkAble { public String Name() {return name;} public FontAdp Name_(String val) {name = val; InitUnder(); return this;} private String name; public float Size() {return size;} public FontAdp Size_(float val) {size = val; InitUnder(); return this;} float size; diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java b/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java index dc78cf29e..de7808b08 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java +++ b/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import java.awt.font.TextAttribute; import java.text.AttributedString; +import gplx.core.envs.*; public class GfxStringData { public String Val() { if (ownerElem == null) return val; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java index d5ca3ef5d..814b4ecef 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java @@ -16,6 +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.*; +import gplx.core.type_xtns.*; public class IptBnd_txt_cmd implements InjectAble, GfoInvkAble, GfoEvObj { public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; public void Inject(Object owner) { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java index a0a0bb225..feed9a7f5 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java @@ -16,6 +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.*; +import gplx.core.type_xtns.*; public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; public void Inject(Object owner) { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java index 8440b8f60..7e61861c0 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java @@ -16,8 +16,9 @@ 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.*; -public interface IptCfg extends NewAble, GfoInvkAble { +public interface IptCfg extends GfoInvkAble { String CfgKey(); + Object NewByKey(Object o); IptCfgItm GetOrDefaultArgs(String key, GfoMsg m, IptArg[] argAry); void Owners_add(String key, IptBndsOwner owner); void Owners_del(String key); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java index 82e5b9f23..24971b847 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java @@ -18,7 +18,14 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; public class IptCfgRegy implements GfoInvkAble { public void Clear() {hash.Clear();} - public IptCfg GetOrNew(String k) {return (IptCfg)hash.Get_by_or_new(k, IptCfg_base.HashProto);} + public IptCfg GetOrNew(String k) { + IptCfg rv = (IptCfg)hash.Get_by(k); + if (rv == null) { + rv = (IptCfg)IptCfg_base.HashProto.NewByKey(k); + hash.Add(k, rv); + } + return rv; + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.MatchIn(k, Invk_Get, Invk_get)) { String key = m.ReadStr("key"); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java b/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java index f0a9b96c2..6bbbbce1f 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; import java.awt.event.KeyEvent; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.stores.*; public class IptKey_ { private static EnmMgr enm_mgr = EnmMgr.new_().BitRngBgn_(65536).BitRngEnd_(262144).Prefix_("key."); public static IptKey[] Ary(IptKey... ary) {return ary;} diff --git a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java index 39d9fb9c5..9f9fba73e 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java +++ b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java @@ -16,6 +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.*; +import gplx.core.envs.*; import gplx.gfml.*; import gplx.langs.gfs.*; public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { GfuiWin win; GfoConsoleWinCmds cmds; GfuiTextBox statusBox, resultBox; GfuiTextBoxLogger logger; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java b/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java index 15b9bea57..8d6a3d50b 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java @@ -16,7 +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.*; -import gplx.lists.*; /*ComparerAble*/ +import gplx.core.lists.*; /*ComparerAble*/ class GfuiFocusOrderer { public static void OrderByX(GfuiElem owner) {Order(owner, xcomparer, 0);} public static void OrderByY(GfuiElem owner) {Order(owner, ycomparer, 0);} diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java b/150_gfui/src_400_win/gplx/gfui/GfuiWin.java index 48a82495c..db49bdbbb 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiWin.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; import java.awt.Window; +import gplx.core.envs.*; public class GfuiWin extends GfuiElemBase { private GxwWin win; private List_adp loadList = List_adp_.new_(); public void Show() {win.ShowWin();} diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java b/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java index b8a000993..b4030caf2 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java @@ -16,7 +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.*; -import gplx.lists.*; /*Hash_adp_list*/ +import gplx.core.lists.*; /*Hash_adp_list*/ class GfuiWinKeyCmdMgr implements GfuiWinOpenAble, GfoInvkAble, GfoEvObj { private Hash_adp_list listHash = Hash_adp_list.new_(); public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} private GfoEvMgr evMgr; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java b/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java index 51e8b6c9b..4acc01dc9 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java @@ -16,6 +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.*; +import gplx.core.envs.*; public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin owner, String text, int interval) { this.TaskbarParkingWindowFix(owner); ShowPopup(text, interval); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java index a3346f77c..170f93e45 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java @@ -16,7 +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.*; -import gplx.lists.*; /*EnumerAble*/ +import gplx.core.lists.*; /*EnumerAble*/ public class GfuiListBox extends GfuiElemBase { @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.listBox_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java b/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java index 78ab45941..fbda648ce 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java @@ -16,7 +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.*; -import gplx.lists.*; +import gplx.core.lists.*; public class GfuiCheckListBox extends GfuiElemBase { public void Items_reverse() {checkListBox.Items_reverse();} public void Items_count() {checkListBox.Items_count();} diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java b/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java index 0cfe3e7c8..73b50d891 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java @@ -16,6 +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.*; +import gplx.core.envs.*; public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public GfuiStatusBox Active_(boolean v) {active = v; return this;} private boolean active = true; public GfuiStatusBox VisibilityDuration_(int v) {timer.Interval_(v); visibilityDuration = v; return this;} int visibilityDuration; @Override public void Opened_cbk() { diff --git a/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java b/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java index 75b8a3889..65f062d89 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java +++ b/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java @@ -22,7 +22,7 @@ import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; -import gplx.core.strings.*; +import gplx.core.strings.*; import gplx.core.envs.*; public class ClipboardAdp_ { public static void SetText(String text) { StringSelection data = new StringSelection(text); diff --git a/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java b/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java index 6fc7e9bdd..6c2556b3b 100644 --- a/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java +++ b/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import javax.swing.Timer; import java.awt.event.ActionListener; +import gplx.core.envs.*; public class TimerAdp implements RlsAble { public TimerAdp Interval_(int interval) { underTimer.setInitialDelay(interval); diff --git a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java b/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java index c8053d938..95d3c33e0 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java +++ b/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java @@ -16,7 +16,10 @@ 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.gfml.*; import gplx.langs.gfs.*; +import gplx.gfml.*; import gplx.langs.gfs.*; import gplx.core.envs.*; +import gplx.core.envs.Env_; +import gplx.core.envs.Op_sys; +import gplx.core.envs.Process_adp; import gplx.core.threads.*; import java.awt.AWTKeyStroke; import java.awt.Font; @@ -79,7 +82,7 @@ public class GfuiEnv_ { public static IptCfg IptBndMgr_win; public static void DoEvents() {;} public static void ShowMsg(String message) {javax.swing.JOptionPane.showMessageDialog(null, message, "", javax.swing.JOptionPane.INFORMATION_MESSAGE, null);} - public static void BringToFront(ProcessAdp process) {} + public static void BringToFront(Process_adp process) {} public static void DoEvents(int milliseconds) { Thread_adp_.Sleep(milliseconds); } diff --git a/150_gfui/xtn/gplx/gfui/Swt_app_browser.java b/150_gfui/xtn/gplx/gfui/Swt_app_browser.java index 972138305..4a884cf77 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_app_browser.java +++ b/150_gfui/xtn/gplx/gfui/Swt_app_browser.java @@ -17,6 +17,8 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; +import gplx.core.envs.Env_; + import org.eclipse.swt.*; import org.eclipse.swt.browser.*; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; public class Swt_app_browser { diff --git a/150_gfui/xtn/gplx/gfui/Swt_html.java b/150_gfui/xtn/gplx/gfui/Swt_html.java index 7dc277294..be427acbb 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_html.java +++ b/150_gfui/xtn/gplx/gfui/Swt_html.java @@ -16,6 +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.core.envs.Env_; import gplx.core.primitives.*; import gplx.core.threads.Thread_adp_; diff --git a/400_xowa/src/gplx/core/brys/Bry_comparer.java b/400_xowa/src/gplx/core/brys/Bry_comparer.java index 0c0411a7f..2ea6c25e2 100644 --- a/400_xowa/src/gplx/core/brys/Bry_comparer.java +++ b/400_xowa/src/gplx/core/brys/Bry_comparer.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.brys; import gplx.*; import gplx.core.*; -import gplx.lists.*; +import gplx.core.lists.*; public class Bry_comparer implements ComparerAble { public int compare(Object lhsObj, Object rhsObj) { byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj; diff --git a/400_xowa/src/gplx/core/brys/Bry_rdr.java b/400_xowa/src/gplx/core/brys/Bry_rdr.java index 80936fb90..3272e0033 100644 --- a/400_xowa/src/gplx/core/brys/Bry_rdr.java +++ b/400_xowa/src/gplx/core/brys/Bry_rdr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.brys; import gplx.*; import gplx.core.*; +import gplx.core.errs.*; public class Bry_rdr { private final gplx.core.primitives.Int_obj_ref pos_ref = gplx.core.primitives.Int_obj_ref.neg1_(); private String ctx; private String wkr; private int err_bgn; @@ -144,10 +145,16 @@ public class Bry_rdr { pos = find_end; return pos; } - public byte Chk(gplx.core.btries.Btrie_slim_mgr trie) {return Chk(trie, pos, src_end);} + public byte Chk(gplx.core.btries.Btrie_slim_mgr trie) {return Chk(trie, pos, src_end);} + public byte Chk_or(gplx.core.btries.Btrie_slim_mgr trie, byte or) {return Chk_or(trie, pos, src_end, or);} public byte Chk(gplx.core.btries.Btrie_slim_mgr trie, int itm_bgn, int itm_end) { + byte rv = Chk_or(trie, itm_bgn, itm_end, Byte_.Max_value_127); + if (rv == Byte_.Max_value_127) {Fail("failed trie check", "mid", String_.new_u8(Bry_.Mid_by_len_safe(src, pos, 16))); return Byte_.Max_value_127;} + return rv; + } + public byte Chk_or(gplx.core.btries.Btrie_slim_mgr trie, int itm_bgn, int itm_end, byte or) { Object rv_obj = trie.Match_bgn(src, itm_bgn, itm_end); - if (rv_obj == null) {Fail("failed trie check", "mid", String_.new_u8(Bry_.Mid_by_len_safe(src, pos, 16))); return Byte_.Max_value_127;} + if (rv_obj == null) return or; pos = trie.Match_pos(); return ((gplx.core.primitives.Byte_obj_val)rv_obj).Val(); } @@ -162,9 +169,9 @@ public class Bry_rdr { public Err Err_make(String msg, String arg_key, Object arg_val, int excerpt_bgn, int excerpt_end) {return Err_.new_("Bry_rdr", Msg_make(msg, arg_key, arg_val, excerpt_bgn, excerpt_end));} private String Msg_make(String msg, String arg_key, Object arg_val, int excerpt_bgn, int excerpt_end) { if (String_.EqEmpty(arg_key)) - return String_.Replace(Err_msg.To_str(msg, "ctx", ctx, "wkr", wkr, "excerpt", Bry_.Mid_safe(src, excerpt_bgn, excerpt_end)), "\n", "\\n"); + return Err_msg.To_str(msg, "ctx", ctx, "wkr", wkr, "excerpt", Bry_.Escape_ws(Bry_.Mid_safe(src, excerpt_bgn, excerpt_end))); else - return String_.Replace(Err_msg.To_str(msg, arg_key, arg_val, "ctx", ctx, "wkr", wkr, "excerpt", Quote(String_.new_u8(Bry_.Mid_safe(src, excerpt_bgn, excerpt_end)))), "\n", "\\n"); + return Err_msg.To_str(msg, arg_key, arg_val, "ctx", ctx, "wkr", wkr, "excerpt", Bry_.Escape_ws(Bry_.Mid_safe(src, excerpt_bgn, excerpt_end))); } private static String Quote(String v) {return "'" + v + "'";} } diff --git a/400_xowa/src/gplx/core/brys/Int_flag_bldr__tst.java b/400_xowa/src/gplx/core/brys/Int_flag_bldr__tst.java index 345654e1f..e88a705cd 100644 --- a/400_xowa/src/gplx/core/brys/Int_flag_bldr__tst.java +++ b/400_xowa/src/gplx/core/brys/Int_flag_bldr__tst.java @@ -58,6 +58,8 @@ class Int_flag_bldr__fxt { public void Test__to_int(int[] seg_ary, int[] val_ary, int expd) { int[] pow_ary = Int_flag_bldr_.Bld_pow_ary(seg_ary); Tfds.Eq(expd, Int_flag_bldr_.To_int(pow_ary, val_ary)); + int[] actl_val_ary = Int_flag_bldr_.To_int_ary(pow_ary, expd); + Tfds.Eq_ary(val_ary, actl_val_ary); } public void Test__to_int_ary(int[] seg_ary, int val, int[] expd) { int[] pow_ary = Int_flag_bldr_.Bld_pow_ary(seg_ary); diff --git a/400_xowa/src/gplx/core/caches/GfoCacheMgr_tst.java b/400_xowa/src/gplx/core/caches/GfoCacheMgr_tst.java index e8c00d9c1..54e2371f8 100644 --- a/400_xowa/src/gplx/core/caches/GfoCacheMgr_tst.java +++ b/400_xowa/src/gplx/core/caches/GfoCacheMgr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.caches; import gplx.*; import gplx.core.*; -import org.junit.*; +import org.junit.*; import gplx.core.envs.*; public class GfoCacheMgr_tst { @Before public void init() {fxt = new GfoCacheMgr_fxt();} GfoCacheMgr_fxt fxt; @Test public void teardown() {Env_.TickCount_Test = -1;} diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java index e6d4c6dfa..cd20cfae1 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.caches; import gplx.*; import gplx.core.*; -import gplx.core.consoles.*; +import gplx.core.consoles.*; import gplx.core.envs.*; public class Gfo_cache_mgr { private Ordered_hash hash = Ordered_hash_.New_bry(); private Ordered_hash recent = Ordered_hash_.New_bry(); diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java index 5456877d6..32cf29720 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.caches; import gplx.*; import gplx.core.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.envs.*; public class Gfo_cache_mgr_bry extends Gfo_cache_mgr_base { public Object Get_or_null(byte[] key) {return Base_get_or_null(key);} public void Add(byte[] key, Object val) {Base_add(key, val);} @@ -29,7 +29,7 @@ class Gfo_cache_itm { public long Touched() {return touched;} private long touched; public Gfo_cache_itm Touched_update() {touched = Env_.TickCount(); return this;} } -class Gfo_cache_itm_comparer implements gplx.lists.ComparerAble { +class Gfo_cache_itm_comparer implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Gfo_cache_itm lhs = (Gfo_cache_itm)lhsObj; Gfo_cache_itm rhs = (Gfo_cache_itm)rhsObj; diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java index 31ec77f61..271d1971f 100644 --- a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; +import gplx.core.envs.*; public class Gfo_cmd_arg_itm_ { public static final int Tid_general = 0, Tid_system = 1; public static final int Val_tid_string = 0, Val_tid_yn = 1, Val_tid_url = 2, Val_tid_list_string = 3; diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java index f2893acc6..db78611c5 100644 --- a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; -import org.junit.*; import gplx.core.tests.*; +import org.junit.*; import gplx.core.tests.*; import gplx.core.envs.*; public class Gfo_cmd_arg_mgr_tst { @Before public void init() {fxt.Clear();} private final Gfo_cmd_arg_mgr_fxt fxt = new Gfo_cmd_arg_mgr_fxt(); @Test public void Val__many() { diff --git a/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java index 6010c45e3..687929f97 100644 --- a/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java +++ b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.lists.*; +import gplx.core.lists.*; class BinaryHeap_Io_line_rdr { public BinaryHeap_Io_line_rdr(ComparerAble comparer) {this.comparer = comparer;} ComparerAble comparer; Io_line_rdr[] ary = Ary_empty; int ary_len = 0, ary_max = 0; diff --git a/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java b/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java index 4f763aaf6..662c5a0a5 100644 --- a/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import org.junit.*; +import org.junit.*; import gplx.core.envs.*; public class Io_line_rdr_tst { Io_line_rdr_fxt fxt; @Before public void init() { diff --git a/400_xowa/src/gplx/core/ios/Io_sort.java b/400_xowa/src/gplx/core/ios/Io_sort.java index ec7b988a4..da0dd65d5 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort.java +++ b/400_xowa/src/gplx/core/ios/Io_sort.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.lists.*; +import gplx.core.envs.*; +import gplx.core.lists.*; public class Io_sort { public Io_sort Memory_max_(int v) {memory_max = v; return this;} private int memory_max = Io_mgr.Len_kb; public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, Io_line_rdr_key_gen key_gen) {return Split(usr_dlg, src_fil_gen, trg_fil_gen, Io_sort_split_itm_sorter.Instance, key_gen);} diff --git a/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java index a4f325084..299cccba9 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -public class Io_sort_split_itm_sorter implements gplx.lists.ComparerAble { +public class Io_sort_split_itm_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Io_sort_split_itm lhs = (Io_sort_split_itm)lhsObj, rhs = (Io_sort_split_itm)rhsObj; // Tfds.Write(String_.new_u8(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end()), String_.new_u8(rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end())); diff --git a/400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java b/400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java index 0f029fc7e..69e9dc84e 100644 --- a/400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java +++ b/400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.*; import java.util.zip.*; +import gplx.core.envs.*; public class Io_zip_mgr_base implements Io_zip_mgr { public void Zip_fil(Io_url src_fil, Io_url trg_fil) { byte[] src_bry = Io_mgr.Instance.LoadFilBry(src_fil); diff --git a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java b/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java index 70915f25e..7df5f715a 100644 --- a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java +++ b/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java @@ -73,10 +73,10 @@ public class Gfo_qarg_mgr { public byte[] To_bry() { int len = list.Count(); if (len == 0) return Bry_.Empty; Bry_bfr bfr = Bry_bfr.new_(); - To_bry(bfr, gplx.xowa.Xoa_app_.Utl__encoder_mgr().Href(), false); + To_bry(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, false); return bfr.To_bry_and_clear(); } - public void To_bry(Bry_bfr bfr, Url_encoder href_encoder, boolean encode) { + public void To_bry(Bry_bfr bfr, Gfo_url_encoder href_encoder, boolean encode) { int len = list.Count(); if (len == 0) return; for (int i = 0; i < len; ++i) { Gfo_qarg_itm itm = (Gfo_qarg_itm)list.Get_at(i); @@ -86,8 +86,8 @@ public class Gfo_qarg_mgr { Write_or_encode(bfr, href_encoder, encode, itm.Val_bry()); } } - public static void Concat_bfr(Bry_bfr bfr, Url_encoder href_encoder, Gfo_qarg_itm[] ary) {Concat_bfr(bfr, href_encoder, ary, true);} - private static void Concat_bfr(Bry_bfr bfr, Url_encoder href_encoder, Gfo_qarg_itm[] ary, boolean encode) { + public static void Concat_bfr(Bry_bfr bfr, Gfo_url_encoder href_encoder, Gfo_qarg_itm[] ary) {Concat_bfr(bfr, href_encoder, ary, true);} + private static void Concat_bfr(Bry_bfr bfr, Gfo_url_encoder href_encoder, Gfo_qarg_itm[] ary, boolean encode) { int ary_len = ary.length; for (int i = 0; i < ary_len; i++) { Gfo_qarg_itm itm = ary[i]; @@ -97,7 +97,7 @@ public class Gfo_qarg_mgr { Write_or_encode(bfr, href_encoder, encode, itm.Val_bry()); } } - private static void Write_or_encode(Bry_bfr bfr, Url_encoder href_encoder, boolean encode, byte[] bry) { + private static void Write_or_encode(Bry_bfr bfr, Gfo_url_encoder href_encoder, boolean encode, byte[] bry) { if (bry == null) return; // NOTE: need null check b/c itm.Val_bry can be null if (encode) href_encoder.Encode(bfr, bry); diff --git a/400_xowa/src/gplx/core/net/Gfo_url_parser.java b/400_xowa/src/gplx/core/net/Gfo_url_parser.java index 40c944c3e..a34079f41 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser.java @@ -16,11 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; -import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; +import gplx.core.primitives.*; import gplx.core.btries.*; public class Gfo_url_parser { private final Btrie_slim_mgr protocols = Btrie_slim_mgr.ci_a7(); // ASCII:url_protocol; EX:"http:", "ftp:", etc private final Bry_ary segs_ary = new Bry_ary(4), qargs = new Bry_ary(4); - private final Url_encoder encoder = Url_encoder.new_html_href_mw_().Itms_raw_same_many(Byte_ascii.Underline); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(500); public byte[] Relative_url_protocol_bry() {return Gfo_protocol_itm.Itm_https.Key_w_colon_bry();} // NOTE: https b/c any WMF wiki will now default to WMF; DATE:2015-07-26 public Gfo_url_parser() { @@ -223,7 +222,7 @@ public class Gfo_url_parser { return pos + 1; } private byte[] Make_bry(int bgn, int end) { - return encoded ? encoder.Decode(tmp_bfr, src, bgn, end) : Bry_.Mid(src, bgn, end); + return encoded ? gplx.langs.htmls.encoders.Gfo_url_encoder_.Xourl.Decode(tmp_bfr, Bool_.N, src, bgn, end).To_bry_and_clear() : Bry_.Mid(src, bgn, end); } private Gfo_qarg_itm[] Make_qargs() { int qargs_len = qargs.Len(); if (qargs_len == 0) return Gfo_qarg_itm.Ary_empty; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java index 8ad51fd8b..f62a32fd7 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.bldrs.cmds.utils.*; public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { - public Gfo_thread_cmd_unzip Init(Gfo_usr_dlg usr_dlg, Gfui_kit kit, ProcessAdp bzip2_process, ProcessAdp zip_process, ProcessAdp gz_process, Io_url src, Io_url trg) { + public Gfo_thread_cmd_unzip Init(Gfo_usr_dlg usr_dlg, Gfui_kit kit, Process_adp bzip2_process, Process_adp zip_process, Process_adp gz_process, Io_url src, Io_url trg) { this.src = src; this.trg = trg; this.kit = kit; this.usr_dlg = usr_dlg; - unzip_wkr = new Xob_unzip_wkr().Init(bzip2_process, zip_process, gz_process).Process_run_mode_(ProcessAdp.Run_mode_async); + unzip_wkr = new Xob_unzip_wkr().Init(bzip2_process, zip_process, gz_process).Process_run_mode_(Process_adp.Run_mode_async); return this; } private Io_url src, trg; private Gfui_kit kit; private Gfo_usr_dlg usr_dlg; private Xob_unzip_wkr unzip_wkr; public GfoInvkAble Owner() {return owner;} public Gfo_thread_cmd_unzip Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; @@ -55,7 +55,7 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { } return Gfo_thread_cmd_.Init_ok; } - public boolean Async_running() {return unzip_wkr.Process_exit_code() == ProcessAdp.Exit_init;} + public boolean Async_running() {return unzip_wkr.Process_exit_code() == Process_adp.Exit_init;} public void Async_run() { usr_dlg.Prog_many(GRP_KEY, "bgn", "unzipping"); unzip_wkr.Decompress(src, trg); 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 694d020f4..1e0ea2653 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java @@ -16,7 +16,7 @@ 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.core.primitives.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.core.ios.*; import gplx.dbs.engines.sqlite.*; public class Fsd_bin_tbl implements RlsAble { diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java index 8822220d0..c729a5934 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java @@ -49,7 +49,7 @@ public class Fsd_thm_itm { public static final Fsd_thm_itm[] Ary_empty = new Fsd_thm_itm[0]; public static Fsd_thm_itm new_() {return new Fsd_thm_itm();} Fsd_thm_itm() {} } -class Fsdb_thm_itm_sorter implements gplx.lists.ComparerAble { +class Fsdb_thm_itm_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Fsd_thm_itm lhs = (Fsd_thm_itm)lhsObj; Fsd_thm_itm rhs = (Fsd_thm_itm)rhsObj; diff --git a/400_xowa/src/gplx/langs/htmls/Html_tag_.java b/400_xowa/src/gplx/langs/htmls/Html_tag_.java index 171044e0b..c995470f7 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_tag_.java +++ b/400_xowa/src/gplx/langs/htmls/Html_tag_.java @@ -34,6 +34,7 @@ public class Html_tag_ { , Id__ul = 11 , Id__li = 12 , Id__p = 13 + , Id__hr = 14 ; public static final byte[] Bry__a = Bry_.new_a7("a") @@ -49,6 +50,8 @@ public class Html_tag_ { .Add_str_int("span" , Id__span) .Add_str_int("div" , Id__div) .Add_str_int("img" , Id__img) + .Add_str_int("hr" , Id__hr) + .Add_str_int("ul" , Id__ul) ; public static String To_str(int tid) { switch (tid) { @@ -65,6 +68,7 @@ public class Html_tag_ { case Id__span: return "span"; case Id__div: return "div"; case Id__img: return "img"; + case Id__hr: return "hr"; default: throw Err_.new_unhandled(tid); } } diff --git a/400_xowa/src/gplx/langs/htmls/Html_utl.java b/400_xowa/src/gplx/langs/htmls/Html_utl.java index e49eb3e77..d42010d55 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_utl.java +++ b/400_xowa/src/gplx/langs/htmls/Html_utl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.htmls; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; public class Html_utl { - private static final Url_encoder encoder_id = Url_encoder.new_html_id_(); private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private static final Gfo_url_encoder encoder_id = Gfo_url_encoder_.Id; private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public static String Encode_id_as_str(byte[] key) {return String_.new_u8(Encode_id_as_bry(key));} public static byte[] Encode_id_as_bry(byte[] key) { byte[] escaped = Escape_html_as_bry(tmp_bfr, key, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y); @@ -178,4 +178,9 @@ public class Html_utl { return bfr.To_bry_and_clear(); } public static String Replace_apos(String s) {return String_.Replace(s, "'", "\"");} + public static void Log(Exception e, String head, byte[] page_url, byte[] src, int pos) { + Err err = Err_.cast_or_make(e); if (err.Logged()) return; + String msg = String_.Format("{0}; page={1} err={2} mid={3} trace={4}", head, page_url, Err_.To_str(e), Bry_.Escape_ws(Bry_.Mid_by_len_safe(src, pos, 255)), err.To_str__log()); + Gfo_usr_dlg_.Instance.Warn_many("", "", msg); + } } diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder.java new file mode 100644 index 000000000..cf58b26ec --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder.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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.btries.*; import gplx.xowa.parsers.amps.*; +public class Gfo_url_encoder implements Url_encoder_interface { + private Gfo_url_encoder_itm[] encode_ary, decode_ary; private Gfo_url_encoder anchor_encoder = null; + public Gfo_url_encoder(Gfo_url_encoder_itm[] encode_ary, Gfo_url_encoder_itm[] decode_ary, Gfo_url_encoder anchor_encoder) { + this.encode_ary = encode_ary; this.decode_ary = decode_ary; this.anchor_encoder = anchor_encoder; + } + public String Encode_str(String str) {return String_.new_u8(Encode(Bry_.new_u8(str)));} + public byte[] Encode_bry(String str) {return Encode(Bry_.new_u8(str));} + public byte[] Encode(byte[] bry) {Bry_bfr bfr = Bry_bfr_.Get(); Encode(bfr, bry, 0, bry.length); return bfr.To_bry_and_rls();} + public Bry_bfr Encode(Bry_bfr bfr, byte[] bry) { Encode(bfr, bry, 0, bry.length); return bfr;} + public void Encode(Bry_bfr bfr, byte[] bry, int bgn, int end) { + for (int i = bgn; i < end; ++i) { + byte b = bry[i]; + if (anchor_encoder != null && b == Byte_ascii.Hash) { + bfr.Add_byte(Byte_ascii.Hash); + anchor_encoder.Encode(bfr, bry, i + 1, end); + break; + } + Gfo_url_encoder_itm itm = encode_ary[b & 0xff];// PATCH.JAVA:need to convert to unsigned byte + i += itm.Encode(bfr, bry, end, i, b); + } + } + public byte[] Encode_to_file_protocol(Io_url url) { + Bry_bfr bfr = Bry_bfr_.Get(); + bfr.Add(Io_url.Http_file_bry); + Encode(bfr, url.RawBry()); + return bfr.To_bry_and_rls(); + } + public String Decode_str(String str) {return String_.new_u8(Decode(Bry_.new_u8(str)));} + public byte[] Decode(byte[] bry) {return Decode(Bool_.N, bry, 0, bry.length);} + public byte[] Decode(byte[] bry, int bgn, int end) {return Decode(Bool_.N, bry, bgn, end);} + private byte[] Decode(boolean fail, byte[] bry, int bgn, int end) {Bry_bfr bfr = Bry_bfr_.Get(); Decode(bfr, fail, bry, bgn, end); return bfr.To_bry_and_rls();} + public Bry_bfr Decode(Bry_bfr bfr, boolean fail, byte[] bry, int bgn, int end) { + for (int i = bgn; i < end; ++i) { + byte b = bry[i]; + if (anchor_encoder != null && b == Byte_ascii.Hash) { + bfr.Add_byte(Byte_ascii.Hash); + anchor_encoder.Decode(bfr, Bool_.N, bry, i + 1, end); + break; + } + Gfo_url_encoder_itm itm = decode_ary[b & 0xff];// PATCH.JAVA:need to convert to unsigned byte + i += itm.Decode(bfr, bry, end, i, b, fail); + } + return bfr; + } +} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java new file mode 100644 index 000000000..f5c4eb4f9 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java @@ -0,0 +1,87 @@ +/* +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.btries.*; +import gplx.xowa.parsers.amps.*; +public class Gfo_url_encoder_ { + public static final Gfo_url_encoder + Id = Gfo_url_encoder_.New__html_id().Make() + , Href = Gfo_url_encoder_.New__html_href_mw().Make() + , Href_quotes = Gfo_url_encoder_.New__html_href_quotes().Make() + , Href_qarg = Gfo_url_encoder_.New__html_href_qarg().Make() + , Xourl = Gfo_url_encoder_.New__html_href_mw().Init__same__many(Byte_ascii.Underline).Make() + , Http_url = Gfo_url_encoder_.New__http_url().Make() + , Http_url_ttl = Gfo_url_encoder_.New__http_url_ttl().Make() + , Fsys = Gfo_url_encoder_.New__fsys_lnx().Make() + , Fsys_safe = Gfo_url_encoder_.New__fsys_wnt().Make() + , Gfs = Gfo_url_encoder_.New__gfs().Make() + ; + private static Gfo_url_encoder_mkr New__html_id() { // EX: "" -> "" + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Dot).Init_common(Bool_.Y) + .Init__decode_mark(Byte_ascii.Dot) + .Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline) + .Init__html_ent(Byte_ascii.Amp, Xop_amp_trie.Instance); + } + private static Gfo_url_encoder_mkr New__html_href_mw() { // EX: "" -> "" + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y) + .Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline) + .Init__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 + ) + .Init__anchor_encoder(New__html_id().Make()); + } + private static Gfo_url_encoder_mkr New__html_href_qarg() { // same as regular href encoder, but also do not encode qarg characters "?" and "=" + return New__html_href_mw().Init__same__many(Byte_ascii.Question, Byte_ascii.Eq); + } + private static Gfo_url_encoder_mkr New__html_href_quotes() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent) + .Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline) // convert " " to "_" + .Init__same__rng(0, 255) // default everything to same; + .Init__diff__many(Byte_ascii.Percent, Byte_ascii.Apos + , Byte_ascii.Quote, Byte_ascii.Lt, Byte_ascii.Gt); // encode ', ", <, > + } + public static Gfo_url_encoder_mkr New__http_url() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.N) + .Init__diff__one(Byte_ascii.Space, Byte_ascii.Plus); + } + private static Gfo_url_encoder_mkr New__http_url_ttl() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y); + } + private static Gfo_url_encoder_mkr New__fsys_lnx() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y) + .Init__same__many(Byte_ascii.Slash) + .Init__diff__one(Byte_ascii.Backslash, Byte_ascii.Slash); + } + private static Gfo_url_encoder_mkr New__fsys_wnt() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent) + .Init__same__rng(Byte_ascii.Num_0, Byte_ascii.Num_9) + .Init__same__rng(Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z) + .Init__same__rng(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z) + .Init__same__many + ( Byte_ascii.Bang, Byte_ascii.At, Byte_ascii.Hash, Byte_ascii.Dollar, Byte_ascii.Percent, Byte_ascii.Pow, Byte_ascii.Amp + , Byte_ascii.Plus, Byte_ascii.Eq, Byte_ascii.Underline, Byte_ascii.Dash + , Byte_ascii.Dot, Byte_ascii.Comma + , Byte_ascii.Tick, Byte_ascii.Tilde, Byte_ascii.Brack_bgn, Byte_ascii.Brack_end, Byte_ascii.Curly_bgn, Byte_ascii.Curly_end); + } + private static Gfo_url_encoder_mkr New__gfs() { + return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y) + .Init__same__many(Byte_ascii.Paren_bgn, Byte_ascii.Paren_end, Byte_ascii.Apos, Byte_ascii.Semic); + } +} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java new file mode 100644 index 000000000..0ecbae6fa --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java @@ -0,0 +1,101 @@ +/* +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.btries.*; import gplx.xowa.parsers.amps.*; +public interface Gfo_url_encoder_itm { + int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b); + int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid); +} +class Gfo_url_encoder_itm_same implements Gfo_url_encoder_itm { + public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;} + public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;} + public static final Gfo_url_encoder_itm Instance = new Gfo_url_encoder_itm_same(); +} +class Gfo_url_encoder_itm_diff implements Gfo_url_encoder_itm { + public Gfo_url_encoder_itm_diff(byte orig, byte repl) {this.orig = orig; this.repl = repl;} private byte orig, repl; + public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(repl); return 0;} + public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(orig); return 0;} +} +class Gfo_url_encoder_itm_hex implements Gfo_url_encoder_itm { + public Gfo_url_encoder_itm_hex(byte encode_marker) {this.encode_marker = encode_marker;} private byte encode_marker; + public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {Encode_byte(b, bfr, encode_marker); return 0;} + public static void Encode_byte(byte b, Bry_bfr bfr, byte encode_marker) { + int b_int = b & 0xFF;// PATCH.JAVA:need to convert to unsigned byte + bfr.Add_byte(encode_marker); + bfr.Add_byte(HexBytes[b_int >> 4]); + bfr.Add_byte(HexBytes[b_int & 15]); + } + public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) { + if (idx + 2 >= end) { + if (fail_when_invalid) throw Err_.new_wo_type("decode needs 3 bytes", "idx", idx, "len", end, "snip", String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3))); + else { + bfr.Add_byte(b); + return 0; + } + } + int hex_val = Int_.To_int_hex(src[idx + 1]); + if (hex_val == -1) { // invalid hex byte; EX: %GC; DATE:2014-04-10 + bfr.Add_byte(b); + return 0; + } + int v_0 = hex_val * 16; + if (v_0 != -1) { + int v_1 = Int_.To_int_hex(src[idx + 2]); + if (v_1 != -1) { + bfr.Add_byte((byte)(v_0 + v_1)); + return 2; + } + } + if (fail_when_invalid) + throw Err_.new_wo_type("decode is invalid", "idx", idx, "snip", String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3))); + else { + bfr.Add_byte(b); + return 0; + } + } + public static final byte[] HexBytes = new byte[] + { Byte_ascii.Num_0, Byte_ascii.Num_1, Byte_ascii.Num_2, Byte_ascii.Num_3, Byte_ascii.Num_4, Byte_ascii.Num_5, Byte_ascii.Num_6, Byte_ascii.Num_7 + , Byte_ascii.Num_8, Byte_ascii.Num_9, Byte_ascii.Ltr_A, Byte_ascii.Ltr_B, Byte_ascii.Ltr_C, Byte_ascii.Ltr_D, Byte_ascii.Ltr_E, Byte_ascii.Ltr_F + }; +} +class Gfo_url_encoder_itm_html_ent implements Gfo_url_encoder_itm { + public Gfo_url_encoder_itm_html_ent(Btrie_slim_mgr amp_trie) {this.amp_trie = amp_trie;} Btrie_slim_mgr amp_trie; + public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) { + ++idx; // b is &; get next character afterwards + if (idx == end) { // & is last char; return + Gfo_url_encoder_itm_hex.Encode_byte(Byte_ascii.Amp, bfr, Byte_ascii.Dot); + return 0; + } + b = src[idx]; + Object o = amp_trie.Match_bgn_w_byte(b, src, idx, end); + if (o == null) { // unknown entity (EX:&unknown;); return &; + Gfo_url_encoder_itm_hex.Encode_byte(Byte_ascii.Amp, bfr, Byte_ascii.Dot); + return 0; + } + else { + Xop_amp_trie_itm itm = (Xop_amp_trie_itm)o; + byte[] bry_u8 = itm.U8_bry(); // NOTE: must utf8 encode val; EX:   is 160 but must become 192,160 + for (int i = 0; i < bry_u8.length; i++) + Gfo_url_encoder_itm_hex.Encode_byte(bry_u8[i], bfr, Byte_ascii.Dot); + return itm.Xml_name_bry().length - 1; // -1 to ignore & in XmlEntityName + } + } + public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) { + bfr.Add_byte(b); return 0; + } +} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_mkr.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_mkr.java new file mode 100644 index 000000000..5ec1d5ae2 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_mkr.java @@ -0,0 +1,83 @@ +/* +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.btries.*; +public class Gfo_url_encoder_mkr { + private Gfo_url_encoder_itm[] encode_ary, decode_ary; private Gfo_url_encoder anchor_encoder; + public Gfo_url_encoder_mkr Init(byte bicode_mark) { + encode_ary = new Gfo_url_encoder_itm[256]; decode_ary = new Gfo_url_encoder_itm[256]; + Gfo_url_encoder_itm_hex hex = new Gfo_url_encoder_itm_hex(bicode_mark); + for (int i = 0; i < 256; ++i) { + encode_ary[i] = hex; // default encode to hex + decode_ary[i] = Gfo_url_encoder_itm_same.Instance; // default decode to same; needed for files; EX: A!%21.png -> A!!.png; + } + decode_ary[bicode_mark] = hex; + return this; + } + public Gfo_url_encoder_mkr Init__same__rng(int bgn, int end) { + for (int i = bgn; i <= end; ++i) + encode_ary[i] = decode_ary[i] = Gfo_url_encoder_itm_same.Instance; + return this; + } + public Gfo_url_encoder_mkr Init__same__many(int... ary) { + int len = ary.length; + for (int i = 0; i < len; i++) { + int idx = ary[i]; + encode_ary[idx] = decode_ary[idx] = Gfo_url_encoder_itm_same.Instance; + } + return this; + } + public Gfo_url_encoder_mkr Init_common(boolean encode_colon) { + Init__same__rng(Byte_ascii.Num_0, Byte_ascii.Num_9); + Init__same__rng(Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z); + Init__same__rng(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z); + Init__same__many(Byte_ascii.Dash, Byte_ascii.Dot, Byte_ascii.Underline); + if (encode_colon) Init__same__many(Byte_ascii.Colon); + return this; + } + public Gfo_url_encoder_mkr Init__decode_mark(byte decode_mark) { + decode_ary[decode_mark & 0xff] = new Gfo_url_encoder_itm_hex(decode_mark);// PATCH.JAVA:need to convert to unsigned byte + return this; + } + public Gfo_url_encoder_mkr Init__diff__one(byte src, byte trg) { + Gfo_url_encoder_itm_diff itm = new Gfo_url_encoder_itm_diff(src, trg); + encode_ary[src] = decode_ary[trg] = itm; + return this; + } + public Gfo_url_encoder_mkr Init__diff__many(byte bicode_mark, int... ary) { + Gfo_url_encoder_itm_hex hex = new Gfo_url_encoder_itm_hex(bicode_mark); + int len = ary.length; + for (int i = 0; i < len; i++) { + int idx = ary[i]; + encode_ary[idx] = decode_ary[idx] = hex; + } + decode_ary[bicode_mark] = hex; + return this; + } + public Gfo_url_encoder_mkr Init__html_ent(byte src, Btrie_slim_mgr trie) { + Gfo_url_encoder_itm_html_ent itm = new Gfo_url_encoder_itm_html_ent(trie); + encode_ary[src] = itm; + return this; + } + public Gfo_url_encoder_mkr Init__anchor_encoder(Gfo_url_encoder v) {this.anchor_encoder = v; return this;} + public Gfo_url_encoder Make() { + Gfo_url_encoder rv = new Gfo_url_encoder(encode_ary, decode_ary, anchor_encoder); + encode_ary = decode_ary = null; anchor_encoder = null; + return rv; + } +} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java new file mode 100644 index 000000000..974e4505c --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java @@ -0,0 +1,68 @@ +/* +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import org.junit.*; +public class Gfo_url_encoder_tst { + private final Gfo_url_encoder_fxt fxt = new Gfo_url_encoder_fxt(); + @Test public void Id__nums() {fxt.Encoder_id().Test__bicode("0123456789" , "0123456789");} + @Test public void Id__ltrs_lower() {fxt.Encoder_id().Test__bicode("abcdefghijklmnopqrstuvwxyz" , "abcdefghijklmnopqrstuvwxyz");} + @Test public void Id__ltrs_upper() {fxt.Encoder_id().Test__bicode("ABCDEFGHIJKLMNOPQRSTUVWXYZ" , "ABCDEFGHIJKLMNOPQRSTUVWXYZ");} + @Test public void Id__syms() {fxt.Encoder_id().Test__encode("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ".21.22.23.24.25.26.27.28.29.2A.2B.2C-..2F:.3B.3C.3D.3E.3F.40.5B.5C.5D.5E_.60.7B.7C.7D.7E");} // NOTE: not reversible since "." is encode_marker but not encoded + @Test public void Id__foreign() {fxt.Encoder_id().Test__bicode("aéb", "a.C3.A9b");} + @Test public void Id__nbsp() {fxt.Encoder_id().Test__encode("a b", "a.C2.A0b");} // NOTE: not just .A0 (160) but utf8-encoded .C2.A0 + @Test public void Id__space() {fxt.Encoder_id().Test__bicode("a b", "a_b");} + @Test public void Id__err() { + byte[] raw = Bry_.new_a7("0%.jpg"); + Bry_bfr tmp_bfr = Bry_bfr.new_(); + fxt.Encoder_id().Encoder().Decode(tmp_bfr, Bool_.N, raw, 0, raw.length); + Tfds.Eq("0%.jpg", tmp_bfr.To_str_and_clear()); + } + @Test public void Url__syms() {fxt.Encoder_url().Test__bicode("!?^~", "%21%3F%5E%7E");} + @Test public void Url__foreign() {fxt.Encoder_url().Test__bicode("aéb", "a%C3%A9b");} + @Test public void Url__space() {fxt.Encoder_url().Test__bicode("a b", "a+b");} + @Test public void Href__space() { + fxt.Encoder_href().Test__encode("a b", "a_b"); + } + @Test public void Href__special_and_anchor() { // PURPOSE: MediaWiki encodes with % for ttls, but . for anchors; REF:Title.php!(before-anchor)getLocalUrl;wfUrlencode (after-anchor)escapeFragmentForURL + fxt.Encoder_href().Test__bicode("^#^", "%5E#.5E"); + fxt.Encoder_href().Test__encode("A#", "A#"); + } + @Test public void Href__invalid() { // PURPOSE: check that invalid url decodings are rendered literally; DATE:2014-04-10 + fxt.Encoder_href().Test__encode("%GC", "%25GC"); + } + @Test public void Fsys__wnt() { + fxt.Encoder_fsys_safe().Test__encode("Help:Options/HTML", "Help%3AOptions%2FHTML"); + } +} +class Gfo_url_encoder_fxt { + public Gfo_url_encoder Encoder() {return encoder;} private Gfo_url_encoder encoder; + public Gfo_url_encoder_fxt Encoder_id() {encoder = Gfo_url_encoder_.Id; return this;} + public Gfo_url_encoder_fxt Encoder_href() {encoder = Gfo_url_encoder_.Href; return this;} + public Gfo_url_encoder_fxt Encoder_url() {encoder = Gfo_url_encoder_.Http_url; return this;} + public Gfo_url_encoder_fxt Encoder_fsys_safe() {encoder = Gfo_url_encoder_.Fsys_safe; return this;} + public void Test__bicode(String raw, String encoded) { + Test__encode(raw, encoded); + Test__decode(encoded, raw); + } + public void Test__encode(String raw, String expd) { + Tfds.Eq(expd, String_.new_u8(encoder.Encode(Bry_.new_u8(raw)))); + } + public void Test__decode(String raw, String expd) { + Tfds.Eq(expd, String_.new_u8(encoder.Decode(Bry_.new_u8(raw)))); + } +} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java deleted file mode 100644 index e67eece58..000000000 --- a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java +++ /dev/null @@ -1,307 +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -import gplx.core.btries.*; -import gplx.xowa.parsers.amps.*; -public class Url_encoder implements Url_encoder_interface { - private Url_encoder_itm[] encode_ary = new Url_encoder_itm[256], decode_ary = new Url_encoder_itm[256]; - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - private Url_encoder anchor_encoder = null; - private Object thread_lock = new Object(); - public void Itms_ini(byte primary_encode_marker) { - Url_encoder_itm_hex hex = new Url_encoder_itm_hex(primary_encode_marker); - for (int i = 0; i < 256; i++) { - encode_ary[i] = hex; // default encode to hex - decode_ary[i] = Url_encoder_itm_same.Instance; // default decode to same; needed for files; EX: A!%21.png -> A!!.png; - } - decode_ary[primary_encode_marker] = hex; - } - public void Itms_raw_diff_many(byte primary_encode_marker, int... ary) { - Url_encoder_itm_hex hex = new Url_encoder_itm_hex(primary_encode_marker); - int ary_len = ary.length; - for (int i = 0; i < ary_len; i++) { - encode_ary[ary[i]] = hex; - decode_ary[ary[i]] = hex; - } - decode_ary[primary_encode_marker] = hex; - } - public void Itms_decode_marker(byte decode_marker) { - Url_encoder_itm_hex hex = new Url_encoder_itm_hex(decode_marker); - decode_ary[decode_marker & 0xff] = hex;// PATCH.JAVA:need to convert to unsigned byte - } - public void Itms_decode_diff(byte orig, byte repl) { - decode_ary[orig & 0xff] = new Url_encoder_itm_diff(orig, repl);// PATCH.JAVA:need to convert to unsigned byte - } - public void Itms_raw_same_rng(int bgn, int end) { - for (int i = bgn; i <= end; i++) { - encode_ary[i] = Url_encoder_itm_same.Instance; - decode_ary[i] = Url_encoder_itm_same.Instance; - } - } - public Url_encoder Itms_raw_same_many(int... ary) { - int ary_len = ary.length; - for (int i = 0; i < ary_len; i++) { - encode_ary[ary[i]] = Url_encoder_itm_same.Instance; - decode_ary[ary[i]] = Url_encoder_itm_same.Instance; - } - return this; - } - public void Itms_raw_html_ent(byte src, Btrie_slim_mgr trie) { - Url_encoder_itm_html_ent itm = new Url_encoder_itm_html_ent(trie); - encode_ary[src] = itm; - } - public Url_encoder Itms_raw_diff(byte src, byte trg) { - Url_encoder_itm_diff itm = new Url_encoder_itm_diff(src, trg); - encode_ary[src] = itm; - decode_ary[trg] = itm; - return this; - } - public byte[] Encode_http(Io_url url) { - synchronized (thread_lock) { - tmp_bfr.Add(Io_url.Http_file_bry); - Encode(tmp_bfr, url.RawBry()); - return tmp_bfr.To_bry_and_clear(); - } - } - public String Encode_str(String str) { - synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_str_and_clear(); - } - } - public byte[] Encode_bry(String str) { - synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_bry_and_clear(); - } - } - public byte[] Encode(byte[] bry) {Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_bry_and_clear();} - public Bry_bfr Encode(Bry_bfr bfr, byte[] bry) {Encode(bfr, bry, 0, bry.length); return bfr;} - public void Encode(Bry_bfr bfr, byte[] bry, int bgn, int end) { - synchronized (thread_lock) { - for (int i = bgn; i < end; i++) { - byte b = bry[i]; - if (anchor_encoder != null && b == Byte_ascii.Hash) { - bfr.Add_byte(Byte_ascii.Hash); - anchor_encoder.Encode(bfr, bry, i + 1, end); - break; - } - Url_encoder_itm itm = encode_ary[b & 0xff];// PATCH.JAVA:need to convert to unsigned byte - i += itm.Encode(bfr, bry, end, i, b); - } - } - } - public String Decode_str(String str) { - synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Decode(bry, 0, bry.length, tmp_bfr, true); return tmp_bfr.To_str_and_clear(); - } - } - public byte[] Decode(byte[] bry) {return Decode(tmp_bfr, bry, 0, bry.length);} - public byte[] Decode(byte[] bry, int bgn, int end) {return Decode(tmp_bfr, bry, bgn, end);} - public byte[] Decode(Bry_bfr bfr, byte[] bry, int bgn, int end) {Decode(bry, bgn, end, bfr , false); return bfr.To_bry_and_clear();} - public byte[] Decode_lax(byte[] bry) { - synchronized (thread_lock) { - Decode(bry, 0, bry.length, tmp_bfr, false); return tmp_bfr.To_bry_and_clear(); - } - } - public void Decode(byte[] bry, int bgn, int end, Bry_bfr bfr, boolean fail_when_invalid) { - synchronized (thread_lock) { - for (int i = bgn; i < end; i++) { - byte b = bry[i]; - if (anchor_encoder != null && b == Byte_ascii.Hash) { - bfr.Add_byte(Byte_ascii.Hash); - anchor_encoder.Decode(bry, i + 1, end, bfr, false); - break; - } - Url_encoder_itm itm = decode_ary[b & 0xff];// PATCH.JAVA:need to convert to unsigned byte - i += itm.Decode(bfr, bry, end, i, b, fail_when_invalid); - } - } - } - private static void mediawiki_base(Url_encoder rv, boolean encode_colon) { - rv.Itms_raw_same_rng(Byte_ascii.Num_0, Byte_ascii.Num_9); - rv.Itms_raw_same_rng(Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z); - rv.Itms_raw_same_rng(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z); - rv.Itms_raw_same_many(Byte_ascii.Dash, Byte_ascii.Dot, Byte_ascii.Underline); - if (encode_colon) - rv.Itms_raw_same_many(Byte_ascii.Colon); - } - public static Url_encoder new_html_id_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Dot); - mediawiki_base(rv, true); - rv.Itms_decode_marker(Byte_ascii.Dot); - rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); - rv.Itms_raw_html_ent(Byte_ascii.Amp, Xop_amp_trie.Instance); - return rv; - } - public static Url_encoder new_http_url_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - mediawiki_base(rv, false); - rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Plus); - return rv; - } - public static Url_encoder new_http_url_ttl_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - mediawiki_base(rv, true); - return rv; - } - public static Url_encoder new_http_url_space_is_space() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - mediawiki_base(rv, true); - return rv; - } - public static Url_encoder new_fsys_lnx_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - mediawiki_base(rv, true); - rv.Itms_raw_same_many(Byte_ascii.Slash); - rv.Itms_raw_diff(Byte_ascii.Backslash, Byte_ascii.Slash); - return rv; - } - public static Url_encoder new_fsys_wnt_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - rv.Itms_raw_same_rng(Byte_ascii.Num_0, Byte_ascii.Num_9); - rv.Itms_raw_same_rng(Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z); - rv.Itms_raw_same_rng(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z); - rv.Itms_raw_same_many - ( Byte_ascii.Bang, Byte_ascii.At, Byte_ascii.Hash, Byte_ascii.Dollar, Byte_ascii.Percent, Byte_ascii.Pow, Byte_ascii.Amp - , Byte_ascii.Plus, Byte_ascii.Eq, Byte_ascii.Underline, Byte_ascii.Dash - , Byte_ascii.Dot, Byte_ascii.Comma - , Byte_ascii.Tick, Byte_ascii.Tilde, Byte_ascii.Brack_bgn, Byte_ascii.Brack_end, Byte_ascii.Curly_bgn, Byte_ascii.Curly_end); - return rv; - } - public static Url_encoder new_file_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - mediawiki_base(rv, true); - return rv; - } - public static Url_encoder new_gfs_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - rv.Itms_raw_same_many(Byte_ascii.Paren_bgn, Byte_ascii.Paren_end, Byte_ascii.Apos, Byte_ascii.Semic); - mediawiki_base(rv, true); - return rv; - } - public static Url_encoder new_html_href_mw_() { - Url_encoder rv = new Url_encoder(); - 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.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 - ); - rv.anchor_encoder = new_html_id_(); - return rv; - } - public static Url_encoder new_html_href_quotes_() { - Url_encoder rv = new Url_encoder(); - rv.Itms_ini(Byte_ascii.Percent); - rv.Itms_raw_same_rng(0, 255); // default everything to same; - rv.Itms_raw_diff_many(Byte_ascii.Percent - , Byte_ascii.Apos, Byte_ascii.Quote, Byte_ascii.Lt, Byte_ascii.Gt); // encode ', ", <, > - rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); // convert " " to "_" - return rv; - } -} -interface Url_encoder_itm { - int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b); - int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid); -} -class Url_encoder_itm_same implements Url_encoder_itm { - public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;} - public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;} - public static final Url_encoder_itm Instance = new Url_encoder_itm_same(); -} -class Url_encoder_itm_diff implements Url_encoder_itm { - public Url_encoder_itm_diff(byte orig, byte repl) {this.orig = orig; this.repl = repl;} private byte orig, repl; - public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(repl); return 0;} - public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(orig); return 0;} -} -class Url_encoder_itm_hex implements Url_encoder_itm { - public Url_encoder_itm_hex(byte encode_marker) {this.encode_marker = encode_marker;} private byte encode_marker; - public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {Encode_byte(b, bfr, encode_marker); return 0;} - public static void Encode_byte(byte b, Bry_bfr bfr, byte encode_marker) { - int b_int = b & 0xFF;// PATCH.JAVA:need to convert to unsigned byte - bfr.Add_byte(encode_marker); - bfr.Add_byte(HexBytes[b_int >> 4]); - bfr.Add_byte(HexBytes[b_int & 15]); - } - public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) { - if (idx + 2 >= end) { - if (fail_when_invalid) throw Err_.new_wo_type("decode needs 3 bytes", "idx", idx, "len", end, "snip", String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3))); - else { - bfr.Add_byte(b); - return 0; - } - } - int hex_val = Int_.To_int_hex(src[idx + 1]); - if (hex_val == -1) { // invalid hex byte; EX: %GC; DATE:2014-04-10 - bfr.Add_byte(b); - return 0; - } - int v_0 = hex_val * 16; - if (v_0 != -1) { - int v_1 = Int_.To_int_hex(src[idx + 2]); - if (v_1 != -1) { - bfr.Add_byte((byte)(v_0 + v_1)); - return 2; - } - } - if (fail_when_invalid) - throw Err_.new_wo_type("decode is invalid", "idx", idx, "snip", String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3))); - else { - bfr.Add_byte(b); - return 0; - } - } - public static final byte[] HexBytes = new byte[] - { Byte_ascii.Num_0, Byte_ascii.Num_1, Byte_ascii.Num_2, Byte_ascii.Num_3, Byte_ascii.Num_4, Byte_ascii.Num_5, Byte_ascii.Num_6, Byte_ascii.Num_7 - , Byte_ascii.Num_8, Byte_ascii.Num_9, Byte_ascii.Ltr_A, Byte_ascii.Ltr_B, Byte_ascii.Ltr_C, Byte_ascii.Ltr_D, Byte_ascii.Ltr_E, Byte_ascii.Ltr_F - }; -} -class Url_encoder_itm_html_ent implements Url_encoder_itm { - public Url_encoder_itm_html_ent(Btrie_slim_mgr amp_trie) {this.amp_trie = amp_trie;} Btrie_slim_mgr amp_trie; - public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) { - ++idx; // b is &; get next character afterwards - if (idx == end) { // & is last char; return - Url_encoder_itm_hex.Encode_byte(Byte_ascii.Amp, bfr, Byte_ascii.Dot); - return 0; - } - b = src[idx]; - Object o = amp_trie.Match_bgn_w_byte(b, src, idx, end); - if (o == null) { // unknown entity (EX:&unknown;); return &; - Url_encoder_itm_hex.Encode_byte(Byte_ascii.Amp, bfr, Byte_ascii.Dot); - return 0; - } - else { - Xop_amp_trie_itm itm = (Xop_amp_trie_itm)o; - byte[] bry_u8 = itm.U8_bry(); // NOTE: must utf8 encode val; EX:   is 160 but must become 192,160 - for (int i = 0; i < bry_u8.length; i++) - Url_encoder_itm_hex.Encode_byte(bry_u8[i], bfr, Byte_ascii.Dot); - return itm.Xml_name_bry().length - 1; // -1 to ignore & in XmlEntityName - } - } - public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) { - bfr.Add_byte(b); return 0; - } -} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_mgr.java b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_mgr.java deleted file mode 100644 index 804be50c5..000000000 --- a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_mgr.java +++ /dev/null @@ -1,30 +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -public class Url_encoder_mgr { - public Url_encoder File() {return file;} private final Url_encoder file = Url_encoder.new_file_(); - public Url_encoder Http_url() {return http_url;} private final Url_encoder http_url = Url_encoder.new_http_url_(); - public Url_encoder Http_url_ttl() {return http_url_ttl;} private final Url_encoder http_url_ttl = Url_encoder.new_http_url_ttl_(); - public Url_encoder Id() {return html_id;} private final Url_encoder html_id = Url_encoder.new_html_id_(); - public Url_encoder Href() {return href;} private final Url_encoder href = Url_encoder.new_html_href_mw_(); - public Url_encoder Href_quotes() {return href_quotes;} private final Url_encoder href_quotes = Url_encoder.new_html_href_quotes_(); - public Url_encoder Gfs() {return gfs;} private final Url_encoder gfs = Url_encoder.new_gfs_(); - public Url_encoder Fsys() {return fsys;} private final Url_encoder fsys = Url_encoder.new_fsys_lnx_(); - public Url_encoder Fsys_safe() {return fsys_safe;} private final Url_encoder fsys_safe = Url_encoder.new_fsys_wnt_(); - public Url_encoder Xourl() {return xourl;} private final Url_encoder xourl = Url_encoder.new_html_href_mw_().Itms_raw_same_many(Byte_ascii.Underline); -} diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java deleted file mode 100644 index b9529b6a3..000000000 --- a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java +++ /dev/null @@ -1,72 +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.langs.htmls.encoders; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -import org.junit.*; -public class Url_encoder_tst { - @Before public void init() {fxt = new Url_encoder_fxt();} Url_encoder_fxt fxt; - @Test public void Id_nums() {fxt.Encoder_id().Test_encode_decode("0123456789", "0123456789");} - @Test public void Id_ltrs_lower() {fxt.Encoder_id().Test_encode_decode("abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz");} - @Test public void Id_ltrs_upper() {fxt.Encoder_id().Test_encode_decode("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");} - @Test public void Id_syms() {fxt.Encoder_id().Test_encode("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ".21.22.23.24.25.26.27.28.29.2A.2B.2C-..2F:.3B.3C.3D.3E.3F.40.5B.5C.5D.5E_.60.7B.7C.7D.7E");} // NOTE: not reversible since "." is encode_marker but not encoded - @Test public void Id_foreign() {fxt.Encoder_id().Test_encode_decode("aéb", "a.C3.A9b");} - @Test public void Id_space() {fxt.Encoder_id().Test_encode_decode("a b", "a_b");} - @Test public void Id_err() { - byte[] raw = Bry_.new_a7("0%.jpg"); - Bry_bfr tmp_bfr = Bry_bfr.new_(); - fxt.Encoder_id().Encoder().Decode(raw, 0, raw.length, tmp_bfr, false); - Tfds.Eq("0%.jpg", tmp_bfr.To_str_and_clear()); - } - @Test public void Id_nbsp() {fxt.Encoder_id().Test_encode("a b", "a.C2.A0b");} // NOTE: not just .A0 (160) but utf8-encoded .C2.A0 - @Test public void Url_syms() {fxt.Encoder_url().Test_encode_decode("!?^~", "%21%3F%5E%7E");} - @Test public void Url_foreign() {fxt.Encoder_url().Test_encode_decode("aéb", "a%C3%A9b");} - @Test public void Url_space() {fxt.Encoder_url().Test_encode_decode("a b", "a+b");} - @Test public void File_space() { - fxt.Encoder_href().Test_encode("a b", "a_b"); -// fxt.Encoder_url().tst_decode("a_b", "a_b"); - } - @Test public void Href_special_and_anchor() { // PURPOSE: MediaWiki encodes with % for ttls, but . for anchors; REF:Title.php!(before-anchor)getLocalUrl;wfUrlencode (after-anchor)escapeFragmentForURL - fxt.Encoder_href().Test_encode("^#^", "%5E#.5E"); - fxt.Encoder_href().Test_encode("A#", "A#"); - fxt.Encoder_href().tst_decode("%5E#.5E", "^#^"); - } - @Test public void Fsys_wnt() { - fxt.Encoder_fsys_safe().Test_encode("Help:Options/HTML", "Help%3AOptions%2FHTML"); - } - @Test public void Invalid_url_decode() { // PURPOSE: check that invalid url decodings are rendered literally; DATE:2014-04-10 - fxt.Encoder_href().Test_encode("%GC", "%25GC"); - } -} -class Url_encoder_fxt { - public Url_encoder Encoder() {return encoder;} Url_encoder encoder; - public Url_encoder_fxt Encoder_id() {encoder = Url_encoder.new_html_id_(); return this;} - public Url_encoder_fxt Encoder_href() {encoder = Url_encoder.new_html_href_mw_(); return this;} - public Url_encoder_fxt Encoder_url() {encoder = Url_encoder.new_http_url_(); return this;} - public Url_encoder_fxt Encoder_fsys_safe() {encoder = Url_encoder.new_fsys_wnt_(); return this;} - public void Test_encode_decode(String raw, String encoded) { - Test_encode(raw, encoded); - tst_decode(encoded, raw); - } - public void Test_encode(String raw, String expd) { - byte[] bry = encoder.Encode(Bry_.new_u8(raw)); - Tfds.Eq(expd, String_.new_u8(bry)); - } - public void tst_decode(String raw, String expd) { - byte[] bry = encoder.Decode(Bry_.new_u8(raw)); - Tfds.Eq(expd, String_.new_u8(bry)); - } -} diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java index fffe8d638..2e0308c1d 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java @@ -26,7 +26,8 @@ public class Html_atr extends gplx.core.brys.Bfr_arg_base { public byte[] Key() {return key;} private final byte[] key; public int Val_bgn() {return val_bgn;} private final int val_bgn; public int Val_end() {return val_end;} private final int val_end; - public boolean Val_exists() {return val_end > val_bgn;} + public boolean Val_dat_exists() {return val_end > val_bgn;} + public boolean Val_dat_missing() {return val_end == -1;} public byte[] Val() { if (val == null) val = Bry_.Mid(src, val_bgn, val_end); @@ -36,9 +37,9 @@ public class Html_atr extends gplx.core.brys.Bfr_arg_base { if (val_end > val_bgn) bfr.Add_mid(src, val_bgn, val_end); } - @Override public boolean Bfr_arg__exists() {return this.Val_exists();} + @Override public boolean Bfr_arg__exists() {return this.Val_dat_exists();} @Override public void Bfr_arg__add(Bry_bfr bfr) { - if (Val_exists()) + if (Val_dat_exists()) bfr.Add_mid(src, val_bgn, val_end); } public static final Html_atr Noop = new Html_atr(-1, Bry_.Empty, Bry_.Empty, Bry_.Empty, -1, -1); diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java index cf3befdae..d7051a3c9 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java @@ -42,8 +42,7 @@ public class Html_doc_parser { Html_doc_wkr wkr = (Html_doc_wkr)o; try {pos = wkr.Parse(src, src_bgn, src_end, pos);} catch (Exception e) { - Err err = Err_.cast_or_make(e); - if (!err.Logged()) Gfo_usr_dlg_.Instance.Warn_many("", "", Err_.Message_gplx_log(e), "page_url", page_url, "mid", Bry_.Mid_by_len_safe(src, pos, 255)); + Html_utl.Log(e, "html parse failed", page_url, src, pos); txt_bgn = pos; // set txt_bgn to hook_bgn which is "pos"; i.e.: txt resumes from start of failed hook pos = trie.Match_pos(); // set pos to hook_end } diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java index 05d70a922..3dac6b8c8 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java @@ -20,15 +20,15 @@ import gplx.xowa.parsers.htmls.*; import gplx.langs.htmls.parsers.styles.*; impo public class Html_tag implements Mwh_atr_wkr { private Html_tag_rdr tag_rdr; private Ordered_hash atrs_hash; private boolean atrs_null; private int atrs_bgn, atrs_end; - public Html_tag Init(Html_tag_rdr tag_rdr, boolean tag_is_tail, boolean tag_is_inline, int src_bgn, int src_end, int atrs_bgn, int atrs_end, int name_id) { - this.tag_rdr = tag_rdr; this.src = tag_rdr.Src(); this.atrs_null = true; + public Html_tag Init(Html_tag_rdr tag_rdr, byte[] src, boolean tag_is_tail, boolean tag_is_inline, int src_bgn, int src_end, int atrs_bgn, int atrs_end, int name_id) { + this.tag_rdr = tag_rdr; this.src = src; this.atrs_null = true; this.tag_is_tail = tag_is_tail; this.tag_is_inline = tag_is_inline; this.atrs_bgn = atrs_bgn; this.atrs_end = atrs_end; this.name_id = name_id; this.src_bgn = src_bgn; this.src_end = src_end; return this; } public Html_tag Copy() { - Html_tag rv = new Html_tag().Init(tag_rdr, tag_is_tail, tag_is_inline, src_bgn, src_end, atrs_bgn, atrs_end, name_id); + Html_tag rv = new Html_tag().Init(tag_rdr, src, tag_is_tail, tag_is_inline, src_bgn, src_end, atrs_bgn, atrs_end, name_id); rv.atrs_null = false; rv.atrs_hash = Copy(atrs_hash); return rv; diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java index ffdf94c83..214a52d12 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java @@ -26,10 +26,10 @@ public class Html_tag_rdr { public byte[] Src() {return src;} private byte[] src; public int Src_end() {return src_end;} private int src_end; public Bry_rdr Rdr() {return rdr;} private final Bry_rdr rdr = new Bry_rdr(); - public void Init(byte[] src, int src_bgn, int src_end) { + public void Init(byte[] ctx, byte[] src, int src_bgn, int src_end) { this.src = src; this.pos = src_bgn; this.src_end = src_end; - tag__eos.Init(this, Bool_.N, Bool_.N, src_end, src_end, src_end, src_end, Html_tag_.Id__eos); - rdr.Init_by_page(Bry_.Empty, src, src_end); + tag__eos.Init(this, src, Bool_.N, Bool_.N, src_end, src_end, src_end, src_end, Html_tag_.Id__eos); + rdr.Init_by_page(ctx, src, src_end); } public int Pos() {return pos;} private int pos; public void Pos_(int v) {this.pos = v;} @@ -169,7 +169,7 @@ public class Html_tag_rdr { ++tag_end; // position after ">" } Html_tag tmp = move ? tag__tmp__move : tag__tmp__peek; - return tmp.Init(this, cur_is_tail, inline, tag_bgn, tag_end, name_end, atrs_end, name_hash.Get_as_int_or(src, name_bgn, name_end, -1)); + return tmp.Init(this, src, cur_is_tail, inline, tag_bgn, tag_end, name_end, atrs_end, name_hash.Get_as_int_or(src, name_bgn, name_end, -1)); } public boolean Read_and_move(byte match) { byte b = src[pos]; @@ -215,11 +215,11 @@ public class Html_tag_rdr { } private Html_tag Tag__comment(int tag_bgn) { int tag_end = Bry_find_.Move_fwd(src, gplx.langs.htmls.Html_tag_.Comm_end, tag_bgn, src_end); if (tag_end == Bry_find_.Not_found) tag_end = src_end; - return tag__comment.Init(this, Bool_.N, Bool_.N, tag_bgn, tag_end, tag_end, tag_end, Html_tag_.Id__comment); + return tag__comment.Init(this, src, Bool_.N, Bool_.N, tag_bgn, tag_end, tag_end, tag_end, Html_tag_.Id__comment); } private Html_tag Tag__eos(int tag_bgn) { int tag_end = tag_bgn + 255; if (tag_end > src_end) tag_end = src_end; - return tag__comment.Init(this, Bool_.N, Bool_.N, tag_bgn, tag_end, tag_end, tag_end, Html_tag_.Id__eos); + return tag__comment.Init(this, src, Bool_.N, Bool_.N, tag_bgn, tag_end, tag_end, tag_end, Html_tag_.Id__eos); } private static final byte[] Bry__comment__mid = Bry_.new_a7("--"); } diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_tst.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_tst.java index e2c0d8d80..59d6c2ba1 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_tst.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_tst.java @@ -50,7 +50,7 @@ class Html_tag_rdr_fxt { private final Html_tag_rdr rdr = new Html_tag_rdr(); public void Init(String src_str) { byte[] src_bry = Bry_.new_u8(src_str); - rdr.Init(src_bry, 0, src_bry.length); + rdr.Init(Bry_.Empty, src_bry, 0, src_bry.length); } public void Test__move_fwd_head(String expd) {Test__move_fwd_head(Html_tag_.Id__any, expd);} public void Test__move_fwd_head(int match_name_id, String expd) { diff --git a/400_xowa/src/gplx/langs/htmls/parsers/clses/Html_atr_class_parser_.java b/400_xowa/src/gplx/langs/htmls/parsers/clses/Html_atr_class_parser_.java index bd0c75820..ef3404683 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/clses/Html_atr_class_parser_.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/clses/Html_atr_class_parser_.java @@ -19,7 +19,7 @@ package gplx.langs.htmls.parsers.clses; import gplx.*; import gplx.langs.*; impo public class Html_atr_class_parser_ { public static void Parse(Html_tag tag, Html_atr_class_wkr wkr) { Html_atr atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__class); - if (atr.Val_exists()) + if (atr.Val_dat_exists()) Parse(tag.Src(), atr.Val_bgn(), atr.Val_end(), wkr); } public static void Parse(byte[] src, int src_bgn, int src_end, Html_atr_class_wkr wkr) { diff --git a/400_xowa/src/gplx/langs/htmls/parsers/styles/Html_atr_style_parser_.java b/400_xowa/src/gplx/langs/htmls/parsers/styles/Html_atr_style_parser_.java index 02e61f26c..4566f39d2 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/styles/Html_atr_style_parser_.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/styles/Html_atr_style_parser_.java @@ -19,7 +19,7 @@ package gplx.langs.htmls.parsers.styles; import gplx.*; import gplx.langs.*; imp public class Html_atr_style_parser_ { public static void Parse(Html_tag tag, Html_atr_style_wkr wkr) { Html_atr atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__style); - if (atr.Val_exists()) + if (atr.Val_dat_exists()) Parse(tag.Src(), atr.Val_bgn(), atr.Val_end(), wkr); } public static void Parse(byte[] src, int src_bgn, int src_end, Html_atr_style_wkr wkr) { diff --git a/400_xowa/src/gplx/xowa/Xoa_app.java b/400_xowa/src/gplx/xowa/Xoa_app.java index b7a608082..39e05ace2 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app.java +++ b/400_xowa/src/gplx/xowa/Xoa_app.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.ios.*; import gplx.core.net.*; +import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.net.*; import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.metas.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.gfs.*; @@ -51,7 +51,6 @@ public interface Xoa_app extends GfoInvkAble { boolean Bldr__running(); void Bldr__running_(boolean v); Gfo_usr_dlg Usr_dlg(); Bry_bfr_mkr Utl__bfr_mkr(); - Url_encoder_mgr Utl__encoder_mgr(); Json_parser Utl__json_parser(); Gfo_inet_conn Utl__inet_conn(); Xoa_meta_mgr Meta_mgr(); diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index 54422c432..a9f72b5bb 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.ios.*; import gplx.core.log_msgs.*; +import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.log_msgs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.guis.views.boots.*; import gplx.xowa.apps.boots.*; import gplx.xowa.apps.gfs.*; @@ -34,14 +34,13 @@ public class Xoa_app_ { } } public static final String Name = "xowa"; - public static final String Version = "2.11.3.1"; + public static final String Version = "2.11.4.1"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys_str; public static String User_agent = ""; public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name); public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg; public static Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private static final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); - public static Url_encoder_mgr Utl__encoder_mgr() {return utl__encoder_mgr;} private static final Url_encoder_mgr utl__encoder_mgr = new Url_encoder_mgr(); public static Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private static final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr(); public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr; public static Gfo_usr_dlg usr_dlg_console_() { diff --git a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java index 3840b4321..dd9fe28e8 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; +import gplx.core.envs.*; import gplx.langs.gfs.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; diff --git a/400_xowa/src/gplx/xowa/Xoa_ttl.java b/400_xowa/src/gplx/xowa/Xoa_ttl.java index 7625b9db5..56aff166d 100644 --- a/400_xowa/src/gplx/xowa/Xoa_ttl.java +++ b/400_xowa/src/gplx/xowa/Xoa_ttl.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.langs.cases.*; import gplx.core.log_msgs.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.langs.cases.*; import gplx.core.log_msgs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.apps.urls.*; @@ -54,7 +54,8 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. public byte[] Subj_txt() {return ns.Id_is_subj() ? Full_txt() : Bry_.Add(tors_txt, Page_txt());} public byte[] Full_url() {return Xoa_url_encoder.Instance.Encode(full_txt);} public String Full_db_as_str() {return String_.new_u8(Full_db());} - public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());} + public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());} + public byte[] Full_db_w_anch() {return Replace_spaces(full_txt);} public byte[] Page_url() {return Xoa_url_encoder.Instance.Encode(this.Page_txt());} public byte[] Leaf_url() {return Xoa_url_encoder.Instance.Encode(this.Leaf_txt());} public byte[] Base_url() {return Xoa_url_encoder.Instance.Encode(this.Base_txt());} @@ -135,7 +136,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. - forbid ~~~ - handle ip address urls for User and User talk */ - Url_encoder anchor_encoder = null; + Gfo_url_encoder anchor_encoder = null; Bry_bfr anchor_encoder_bfr = null; bfr.Clear(); if (end - bgn == 0) {msg_log.Add_itm_none(Xop_ttl_log.Len_0, src, bgn, bgn); return false;} @@ -278,7 +279,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. } if (anch_bgn != -1) { if (anchor_encoder == null) { - anchor_encoder = Url_encoder.new_html_id_(); + anchor_encoder = Gfo_url_encoder_.Id; anchor_encoder_bfr = Bry_bfr.reset_(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); @@ -291,7 +292,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Curly_bgn: case Byte_ascii.Curly_end: if (anch_bgn != -1) { if (anchor_encoder == null) { - anchor_encoder = Url_encoder.new_html_id_(); + anchor_encoder = Gfo_url_encoder_.Id; anchor_encoder_bfr = Bry_bfr.reset_(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 0613b8fb1..69361b768 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.java @@ -100,7 +100,7 @@ public class Xoa_url { if (show_qargs || qargs_ary.length > 0) { Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); bfr.Add(rv); - Gfo_qarg_mgr.Concat_bfr(bfr, Xoa_app_.Utl__encoder_mgr().Href(), qargs_ary); + Gfo_qarg_mgr.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary); return bfr.To_bry_and_rls(); } else diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index f2b6b9e63..af61db015 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.btries.*; import gplx.core.brys.fmtrs.*; import gplx.core.flds.*; import gplx.core.ios.*; import gplx.core.threads.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.log_msgs.*; +import gplx.core.brys.*; import gplx.core.btries.*; import gplx.core.brys.fmtrs.*; import gplx.core.flds.*; import gplx.core.ios.*; import gplx.core.threads.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.log_msgs.*; import gplx.core.envs.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.caches.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.metas.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.progs.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.langs.*; import gplx.xowa.specials.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.bldrs.installs.*; @@ -32,7 +32,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Xoae_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url user_dir, Io_url css_dir, String bin_dir_name) { Xoa_app_.Usr_dlg_(usr_dlg); this.mode = mode; - Io_url.Http_file_str_encoder = Xoa_app_.Utl__encoder_mgr().Fsys(); + Io_url.Http_file_str_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys; fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir, wiki_dir, file_dir, css_dir); log_wtr = usr_dlg.Log_wkr(); cfg_mgr = new Xoa_cfg_mgr(this); @@ -79,7 +79,6 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr; public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} - public Url_encoder_mgr Utl__encoder_mgr() {return Xoa_app_.Utl__encoder_mgr();} public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); public Xoa_meta_mgr Meta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index 6d9b10a5f..52bea55df 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -25,7 +25,7 @@ public class Xoae_page implements Xoa_page { Xoae_page(Xowe_wiki wiki, Xoa_ttl ttl) { this.wiki = wiki; this.ttl = ttl; this.lang = wiki.Lang(); // default to wiki.lang; can be override later by wikitext - hdr_mgr = new Xow_hdr_mgr(this, Xoa_app_.Utl__encoder_mgr()); + hdr_mgr = new Xow_hdr_mgr(this); redlink_lnki_list = new Xopg_redlink_lnki_list(ttl.Ns().Id_is_module()); Ttl_(ttl); } Xoae_page() {} // called by Null diff --git a/400_xowa/src/gplx/xowa/Xop_fxt.java b/400_xowa/src/gplx/xowa/Xop_fxt.java index a5c00d317..4db5d8755 100644 --- a/400_xowa/src/gplx/xowa/Xop_fxt.java +++ b/400_xowa/src/gplx/xowa/Xop_fxt.java @@ -366,6 +366,10 @@ public class Xop_fxt { public void Test_html_wiki_frag(String raw, String... expd_frags) {Test_str_part_y(Exec_html_wiki(raw), expd_frags);} public void Test_html_full_frag(String raw, String... expd_frags) {Test_str_part_y(Exec_html_full(raw), expd_frags);} public void Test_html_full_frag_n(String raw, String... expd_frags) {Test_str_part_n(Exec_html_full(raw), expd_frags);} + public void Test__parse__wtxt_to_html(String raw, String expd) { + String actl = Exec_html_wiki(raw); + Tfds.Eq_str_lines(gplx.langs.htmls.Html_utl.Replace_apos(expd), actl, raw); + } public void Test_str_full(String raw, String expd, String actl) {Tfds.Eq_str_lines(expd, actl, raw);} private void Test_str_part_y(String actl, String... expd_parts) { diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index dad27a8a3..885721a7e 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.apps.urls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_app.java b/400_xowa/src/gplx/xowa/apps/Xoav_app.java index 3509d6153..3cbfd05d5 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_app.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_app.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; -import gplx.core.net.*; import gplx.core.log_msgs.*; import gplx.langs.jsons.*; +import gplx.core.net.*; import gplx.core.log_msgs.*; import gplx.langs.jsons.*; import gplx.core.brys.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.metas.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.langs.cases.*; import gplx.core.intls.*; import gplx.xowa.users.data.*; import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.urls.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; @@ -72,13 +72,12 @@ public class Xoav_app implements Xoa_app, GfoInvkAble { public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; Xoa_app_.Usr_dlg_(usr_dlg);} private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Noop; public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} - public Url_encoder_mgr Utl__encoder_mgr() {return Xoa_app_.Utl__encoder_mgr();} public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running; public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.Instance; public Xol_case_mgr Utl_case_mgr() {return utl_case_mgr;} private Xol_case_mgr utl_case_mgr = Xol_case_mgr_.U8(); - public Url_encoder Utl_encoder_fsys() {return utl_encoder_fsys;} private Url_encoder utl_encoder_fsys = Url_encoder.new_fsys_lnx_(); +// public Gfo_url_encoder Utl_encoder_fsys() {return utl_encoder_fsys;} private Gfo_url_encoder utl_encoder_fsys = Gfo_url_encoder.New_fsys_lnx(); public Gfo_msg_log Utl_msg_log() {return utl_msg_log;} private Gfo_msg_log utl_msg_log; public Xoav_url_parser Utl_url_parser_xo() {return utl_url_parser_xo;} private Xoav_url_parser utl_url_parser_xo = new Xoav_url_parser(); public Gfo_url_parser Utl_url_parser_gfo() {return utl_url_parser_gfo;} private final Gfo_url_parser utl_url_parser_gfo = new Gfo_url_parser(); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java index be8227f10..d6b103eca 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.core.envs.*; public class Xoapi_fsys implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { this.plat_jar = Env_.AppUrl(); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java index 928ef5aea..274126e04 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; import gplx.core.envs.*; public class Xoapi_url implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private GfuiTextBox Url_box() {return app.Gui_mgr().Browser_win().Url_box();} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java index 22840657e..e16e9267c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; +import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.core.envs.*; public class Xoapi_selection implements GfoInvkAble { private Xoae_app app; private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java index 73f572573..d7d8be51d 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java @@ -36,7 +36,7 @@ public class Xoapi_view implements GfoInvkAble { public void Save_as() { if (this.Active_tab_is_null()) return; Xog_tab_itm tab = win.Tab_mgr().Active_tab(); - String file_name = Xoa_app_.Utl__encoder_mgr().Fsys_safe().Encode_str(String_.new_u8(tab.Page().Ttl().Full_url())) + ".html"; + String file_name = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_safe.Encode_str(String_.new_u8(tab.Page().Ttl().Full_url())) + ".html"; String file_url = app.Gui_mgr().Kit().New_dlg_file(Gfui_kit_.File_dlg_type_save, "Select file to save to:").Init_file_(file_name).Ask(); if (String_.Len_eq_0(file_url)) return; Io_mgr.Instance.SaveFilStr(file_url, tab.Html_box().Text()); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java index a81ec028e..93eb94b5f 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java @@ -21,10 +21,13 @@ public class Xoapi_page implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { toggle_mgr.Ctor_by_app(app); } + public boolean View_html_generates_hdump() {return view_html_generates_hdump;} private boolean view_html_generates_hdump = false; public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_toggles)) return toggle_mgr; + if (ctx.Match(k, Invk_toggles)) return toggle_mgr; + else if (ctx.Match(k, Invk_view_html_generates_hdump_)) view_html_generates_hdump = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; + return this; } - private static final String Invk_toggles = "toggles"; + private static final String Invk_toggles = "toggles", Invk_view_html_generates_hdump_ = "view_html_generates_hdump_"; } diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java index 00c3ecf60..097f9f1c1 100644 --- a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.core.consoles.*; +import gplx.core.consoles.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.gfui.*; import gplx.xowa.guis.views.boots.*; import gplx.xowa.langs.*; diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java index 8c70f7220..2e32b6a7c 100644 --- a/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.core.consoles.*; +import gplx.core.consoles.*; import gplx.core.envs.*; import gplx.xowa.apps.*; public class Xoa_cmd_arg_mgr { Xoa_cmd_arg_mgr(Gfo_cmd_arg_mgr arg_mgr) {this.arg_mgr = arg_mgr;} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java index f512762d3..bd1c73489 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java @@ -42,7 +42,7 @@ public class Xocfg_bnd_mgr implements GfoInvkAble, Gfo_sort_able { private Xocfg_bnd_itm_srl Init(String key) {return new Xocfg_bnd_itm_srl(app, key);} public Xocfg_bnd_itm Get_at(int i) {return (Xocfg_bnd_itm)regy.Get_at(i);} public int Len() {return regy.Count();} - public void Sort(gplx.lists.ComparerAble comparer) {regy.Sort_by(comparer);} + public void Sort(gplx.core.lists.ComparerAble comparer) {regy.Sort_by(comparer);} private void Set_bulk(byte[] src) { try { bnd_mgr_srl.Load_by_bry(src); diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Gfo_sort_able.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Gfo_sort_able.java index 7c28c8a29..7478ed6f2 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Gfo_sort_able.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Gfo_sort_able.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.xowa.apps.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public interface Gfo_sort_able { - void Sort(gplx.lists.ComparerAble comparer); + void Sort(gplx.core.lists.ComparerAble comparer); } diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java index e9b3282a7..0bdf46f5f 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java @@ -47,7 +47,7 @@ class Xoa_fmtr_sort_itm { public int Comp_mult() {return comp_mult;} private int comp_mult; public String Key() {return key;} private String key; } -class Xoa_fmtr_sort_wkr implements gplx.lists.ComparerAble { +class Xoa_fmtr_sort_wkr implements gplx.core.lists.ComparerAble { public Xoa_fmtr_sort_itm[] Itms() {return itms;} public void Itms_(Xoa_fmtr_sort_itm[] v) {itms = v; itms_len = v.length;} private Xoa_fmtr_sort_itm[] itms; private int itms_len; public int compare(Object lhsObj, Object rhsObj) { GfoInvkAble lhs_invk = (GfoInvkAble)lhsObj; diff --git a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java index 132bdf7a3..263171872 100644 --- a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java @@ -16,52 +16,52 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.progs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.xowa.apps.fsys.*; import gplx.xowa.files.*; +import gplx.xowa.apps.fsys.*; import gplx.xowa.files.*; import gplx.core.envs.*; public class Xoa_prog_mgr implements GfoInvkAble { public void Init_by_app(Xoa_fsys_eval cmd_eval) { Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg(); - ProcessAdp.ini_(this, usr_dlg, app_query_img_size , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}imagemagick\\identify", "-ping -format \"<{%w,%h}>\" \"~{file}\"", "file"); - ProcessAdp.ini_(this, usr_dlg, app_resize_img , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}imagemagick\\convert", "\"~{source}\" -coalesce -resize ~{width}x~{height} \"~{target}\"", "source", "target", "width", "height"); - ProcessAdp.ini_(this, usr_dlg, app_convert_svg_to_png , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}inkscape\\inkscape", "-z -w ~{width} -f \"~{source}\" -e \"~{target}\"", "source", "target", "width").Thread_kill_name_("inkscape.exe"); // // -z=without-gui; -w=width; -f=file -e=export-png - ProcessAdp.ini_(this, usr_dlg, app_convert_tex_to_dvi , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 2 * 60, "~{<>bin_plat_dir<>}miktex\\miktex\\bin\\latex", "-quiet -output-directory=~{temp_dir} -job-name=xowa_temp ~{tex_file}", "tex_file", "temp_dir"); - ProcessAdp.ini_(this, usr_dlg, app_convert_dvi_to_png , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 2 * 60, "~{<>bin_plat_dir<>}miktex\\miktex\\bin\\dvipng", "~{dvi_file} -o ~{png_file} -q* -T tight -bg Transparent", "dvi_file", "png_file", "temp_dir"); - ProcessAdp.ini_(this, usr_dlg, app_convert_djvu_to_tiff , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}djvulibre\\ddjvu", "-format=tiff -page=1 \"~{source}\" \"~{target}\"", "source", "target"); - ProcessAdp.ini_(this, usr_dlg, app_decompress_bz2 , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir - ProcessAdp.ini_(this, usr_dlg, app_decompress_bz2_by_stdout , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -so \"~{src}\"", "src"); // x=extract; -so=stdout - ProcessAdp.ini_(this, usr_dlg, app_decompress_zip , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir - ProcessAdp.ini_(this, usr_dlg, app_decompress_gz , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir - ProcessAdp.ini_(this, usr_dlg, app_lua , cmd_eval, ProcessAdp.Run_mode_async , 0 , "~{<>bin_plat_dir<>}lua\\lua", "", ""); - ProcessAdp.ini_(this, usr_dlg, app_lilypond , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\lilypond.exe", "\"-dsafe=#t\" -dbackend=ps --png --header=texidoc -dmidi-extension=midi \"~{file}\"", "file"); - ProcessAdp.ini_(this, usr_dlg, app_abc2ly , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\python.exe", "abc2ly.py -s \"--output=~{target}\" \"~{source}\"", "source", "target"); - ProcessAdp.ini_(this, usr_dlg, app_trim_img , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}imagemagick\\convert", "-trim \"~{source}\" \"~{target}\"", "source", "target"); - ProcessAdp.ini_(this, usr_dlg, app_convert_midi_to_ogg , cmd_eval, ProcessAdp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}timidity\\timidity", "-Ov \"--output-file=~{target}\" \"~{source}\"", "source", "target"); - ProcessAdp.ini_(this, usr_dlg, app_view_web , cmd_eval, ProcessAdp.Run_mode_async , 0 , "cmd", "/c start \"~{url}\"", "url"); - ProcessAdp.ini_(this, usr_dlg, app_view_text , cmd_eval, ProcessAdp.Run_mode_async , 0 , "cmd", "/c start \"~{url}\"", "url"); + Process_adp.ini_(this, usr_dlg, app_query_img_size , cmd_eval, Process_adp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}imagemagick\\identify", "-ping -format \"<{%w,%h}>\" \"~{file}\"", "file"); + Process_adp.ini_(this, usr_dlg, app_resize_img , cmd_eval, Process_adp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}imagemagick\\convert", "\"~{source}\" -coalesce -resize ~{width}x~{height} \"~{target}\"", "source", "target", "width", "height"); + Process_adp.ini_(this, usr_dlg, app_convert_svg_to_png , cmd_eval, Process_adp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}inkscape\\inkscape", "-z -w ~{width} -f \"~{source}\" -e \"~{target}\"", "source", "target", "width").Thread_kill_name_("inkscape.exe"); // // -z=without-gui; -w=width; -f=file -e=export-png + Process_adp.ini_(this, usr_dlg, app_convert_tex_to_dvi , cmd_eval, Process_adp.Run_mode_sync_timeout , 2 * 60, "~{<>bin_plat_dir<>}miktex\\miktex\\bin\\latex", "-quiet -output-directory=~{temp_dir} -job-name=xowa_temp ~{tex_file}", "tex_file", "temp_dir"); + Process_adp.ini_(this, usr_dlg, app_convert_dvi_to_png , cmd_eval, Process_adp.Run_mode_sync_timeout , 2 * 60, "~{<>bin_plat_dir<>}miktex\\miktex\\bin\\dvipng", "~{dvi_file} -o ~{png_file} -q* -T tight -bg Transparent", "dvi_file", "png_file", "temp_dir"); + Process_adp.ini_(this, usr_dlg, app_convert_djvu_to_tiff , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}djvulibre\\ddjvu", "-format=tiff -page=1 \"~{source}\" \"~{target}\"", "source", "target"); + Process_adp.ini_(this, usr_dlg, app_decompress_bz2 , cmd_eval, Process_adp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir + Process_adp.ini_(this, usr_dlg, app_decompress_bz2_by_stdout , cmd_eval, Process_adp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -so \"~{src}\"", "src"); // x=extract; -so=stdout + Process_adp.ini_(this, usr_dlg, app_decompress_zip , cmd_eval, Process_adp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir + Process_adp.ini_(this, usr_dlg, app_decompress_gz , cmd_eval, Process_adp.Run_mode_sync_timeout , 0 , "~{<>bin_plat_dir<>}7-zip\\7za", "x -y \"~{src}\" -o\"~{trg_dir}\"", "src", "trg", "trg_dir"); // x=extract; -y=yes on all queries; -o=output_dir + Process_adp.ini_(this, usr_dlg, app_lua , cmd_eval, Process_adp.Run_mode_async , 0 , "~{<>bin_plat_dir<>}lua\\lua", "", ""); + Process_adp.ini_(this, usr_dlg, app_lilypond , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\lilypond.exe", "\"-dsafe=#t\" -dbackend=ps --png --header=texidoc -dmidi-extension=midi \"~{file}\"", "file"); + Process_adp.ini_(this, usr_dlg, app_abc2ly , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\python.exe", "abc2ly.py -s \"--output=~{target}\" \"~{source}\"", "source", "target"); + Process_adp.ini_(this, usr_dlg, app_trim_img , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}imagemagick\\convert", "-trim \"~{source}\" \"~{target}\"", "source", "target"); + Process_adp.ini_(this, usr_dlg, app_convert_midi_to_ogg , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}timidity\\timidity", "-Ov \"--output-file=~{target}\" \"~{source}\"", "source", "target"); + Process_adp.ini_(this, usr_dlg, app_view_web , cmd_eval, Process_adp.Run_mode_async , 0 , "cmd", "/c start \"~{url}\"", "url"); + Process_adp.ini_(this, usr_dlg, app_view_text , cmd_eval, Process_adp.Run_mode_async , 0 , "cmd", "/c start \"~{url}\"", "url"); int cmds_view_file_by_ext_len = cmds_view_file_by_ext.length; for (int i= 0; i < cmds_view_file_by_ext_len; i++) { - ProcessAdp cmd = new ProcessAdp(); + Process_adp cmd = new Process_adp(); cmds_view_file_by_ext [i] = cmd; - ProcessAdp.ini_(this, usr_dlg, cmd , cmd_eval, ProcessAdp.Run_mode_async , 0 , "cmd", "/c start \"~{file}\"", "file"); + Process_adp.ini_(this, usr_dlg, cmd , cmd_eval, Process_adp.Run_mode_async , 0 , "cmd", "/c start \"~{file}\"", "file"); } } - public ProcessAdp App_query_img_size() {return app_query_img_size;} private ProcessAdp app_query_img_size = new ProcessAdp(); - public ProcessAdp App_resize_img() {return app_resize_img;} private ProcessAdp app_resize_img = new ProcessAdp(); - public ProcessAdp App_convert_svg_to_png() {return app_convert_svg_to_png;} private ProcessAdp app_convert_svg_to_png = new ProcessAdp(); - public ProcessAdp App_convert_tex_to_dvi() {return app_convert_tex_to_dvi;} private ProcessAdp app_convert_tex_to_dvi = new ProcessAdp(); - public ProcessAdp App_convert_dvi_to_png() {return app_convert_dvi_to_png;} private ProcessAdp app_convert_dvi_to_png = new ProcessAdp(); - public ProcessAdp App_convert_djvu_to_tiff() {return app_convert_djvu_to_tiff;} private ProcessAdp app_convert_djvu_to_tiff = new ProcessAdp(); - public ProcessAdp App_view_web() {return app_view_web;} private ProcessAdp app_view_web = new ProcessAdp(); - public ProcessAdp App_view_text() {return app_view_text;} private ProcessAdp app_view_text = new ProcessAdp(); - public ProcessAdp App_decompress_bz2() {return app_decompress_bz2;} private ProcessAdp app_decompress_bz2 = new ProcessAdp(); - public ProcessAdp App_decompress_zip() {return app_decompress_zip;} private ProcessAdp app_decompress_zip = new ProcessAdp(); - public ProcessAdp App_decompress_gz() {return app_decompress_gz;} private ProcessAdp app_decompress_gz = new ProcessAdp(); - public ProcessAdp App_decompress_bz2_by_stdout() {return app_decompress_bz2_by_stdout;} private ProcessAdp app_decompress_bz2_by_stdout = new ProcessAdp(); - public ProcessAdp App_lua() {return app_lua;} private ProcessAdp app_lua = new ProcessAdp(); - public ProcessAdp App_lilypond() {return app_lilypond;} private ProcessAdp app_lilypond = new ProcessAdp(); - public ProcessAdp App_abc2ly() {return app_abc2ly;} private ProcessAdp app_abc2ly = new ProcessAdp(); - public ProcessAdp App_trim_img() {return app_trim_img;} private ProcessAdp app_trim_img = new ProcessAdp(); - public ProcessAdp App_convert_midi_to_ogg() {return app_convert_midi_to_ogg;} private ProcessAdp app_convert_midi_to_ogg = new ProcessAdp(); - public ProcessAdp App_by_ext(String ext) {return App_by_ext_key(String_.Mid(ext, 1));} // ignore 1st . in ext; EX: ".png" -> "png" + public Process_adp App_query_img_size() {return app_query_img_size;} private Process_adp app_query_img_size = new Process_adp(); + public Process_adp App_resize_img() {return app_resize_img;} private Process_adp app_resize_img = new Process_adp(); + public Process_adp App_convert_svg_to_png() {return app_convert_svg_to_png;} private Process_adp app_convert_svg_to_png = new Process_adp(); + public Process_adp App_convert_tex_to_dvi() {return app_convert_tex_to_dvi;} private Process_adp app_convert_tex_to_dvi = new Process_adp(); + public Process_adp App_convert_dvi_to_png() {return app_convert_dvi_to_png;} private Process_adp app_convert_dvi_to_png = new Process_adp(); + public Process_adp App_convert_djvu_to_tiff() {return app_convert_djvu_to_tiff;} private Process_adp app_convert_djvu_to_tiff = new Process_adp(); + public Process_adp App_view_web() {return app_view_web;} private Process_adp app_view_web = new Process_adp(); + public Process_adp App_view_text() {return app_view_text;} private Process_adp app_view_text = new Process_adp(); + public Process_adp App_decompress_bz2() {return app_decompress_bz2;} private Process_adp app_decompress_bz2 = new Process_adp(); + public Process_adp App_decompress_zip() {return app_decompress_zip;} private Process_adp app_decompress_zip = new Process_adp(); + public Process_adp App_decompress_gz() {return app_decompress_gz;} private Process_adp app_decompress_gz = new Process_adp(); + public Process_adp App_decompress_bz2_by_stdout() {return app_decompress_bz2_by_stdout;} private Process_adp app_decompress_bz2_by_stdout = new Process_adp(); + public Process_adp App_lua() {return app_lua;} private Process_adp app_lua = new Process_adp(); + public Process_adp App_lilypond() {return app_lilypond;} private Process_adp app_lilypond = new Process_adp(); + public Process_adp App_abc2ly() {return app_abc2ly;} private Process_adp app_abc2ly = new Process_adp(); + public Process_adp App_trim_img() {return app_trim_img;} private Process_adp app_trim_img = new Process_adp(); + public Process_adp App_convert_midi_to_ogg() {return app_convert_midi_to_ogg;} private Process_adp app_convert_midi_to_ogg = new Process_adp(); + public Process_adp App_by_ext(String ext) {return App_by_ext_key(String_.Mid(ext, 1));} // ignore 1st . in ext; EX: ".png" -> "png" public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_query_img_size)) return app_query_img_size; else if (ctx.Match(k, Invk_resize_img)) return app_resize_img; @@ -93,18 +93,18 @@ public class Xoa_prog_mgr implements GfoInvkAble { public void Exec_view_web(byte[] url) { url = Bry_.Replace(url, Quote_normal, Quote_escape); // escape quotes; DATE:2013-03-31 String url_str = String_.new_u8(url); - url_str = ProcessAdp.Escape_ampersands_if_process_is_cmd(Op_sys.Cur().Tid_is_wnt(), app_view_web.Exe_url().Raw(), url_str); // escape ampersands; DATE:2014-05-20 + url_str = Process_adp.Escape_ampersands_if_process_is_cmd(Op_sys.Cur().Tid_is_wnt(), app_view_web.Exe_url().Raw(), url_str); // escape ampersands; DATE:2014-05-20 app_view_web.Run(url_str); } private static final byte[] Quote_normal = new byte[] {Byte_ascii.Quote}, Quote_escape = new byte[] {Byte_ascii.Quote, Byte_ascii.Quote}; - private ProcessAdp App_by_ext_key(String ext) {return cmds_view_file_by_ext[Xof_ext_.Get_id_by_ext_(Bry_.new_a7(ext))];} + private Process_adp App_by_ext_key(String ext) {return cmds_view_file_by_ext[Xof_ext_.Get_id_by_ext_(Bry_.new_a7(ext))];} public void Exec_view_by_ext(String exts_raw, String cmd, String args) { String[] exts_ary = String_.Split(exts_raw, '|'); int exts_ary_len = exts_ary.length; for (int i = 0; i < exts_ary_len; i++) App_by_ext_key(exts_ary[i]).Cmd_args(cmd, args); - } ProcessAdp[] cmds_view_file_by_ext = new ProcessAdp[Xof_ext_.Id__max]; - private ProcessAdp Init_by_exts(String... exts) { - ProcessAdp rv = App_by_ext_key(exts[0]); + } Process_adp[] cmds_view_file_by_ext = new Process_adp[Xof_ext_.Id__max]; + private Process_adp Init_by_exts(String... exts) { + Process_adp rv = App_by_ext_key(exts[0]); int len = exts.length; for (int i = 0; i < len; i++) { cmds_view_file_by_ext[Xof_ext_.Get_id_by_ext_(Bry_.new_a7(exts[i]))] = rv; diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index d31c12a84..c39529f71 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -33,7 +33,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.threads.*; import gplx.core.net.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; +import gplx.core.threads.*; import gplx.core.net.*; import gplx.core.primitives.*; import gplx.core.envs.*; +import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.pages.*; public class Http_server_mgr implements GfoInvkAble { private final Object thread_lock = new Object(); @@ -49,7 +50,7 @@ public class Http_server_mgr implements GfoInvkAble { public Xoae_app App() {return app;} private final Xoae_app app; public Http_server_wtr Server_wtr() {return server_wtr;} private final Http_server_wtr server_wtr = Http_server_wtr_.new_console(); public Http_request_parser Request_parser() {return request_parser;} private final Http_request_parser request_parser; - public Url_encoder Encoder() {return encoder;} private final Url_encoder encoder = Url_encoder.new_http_url_(); + public Gfo_url_encoder Encoder() {return encoder;} private final Gfo_url_encoder encoder = Gfo_url_encoder_.New__http_url().Make(); public int Port() {return port;} public Http_server_mgr Port_(int v) {port = v; return this;} private int port = 8080; public Http_server_wkr_pool Wkr_pool() {return wkr_pool;} private final Http_server_wkr_pool wkr_pool = new Http_server_wkr_pool(); public Int_pool Uid_pool() {return uid_pool;} private final Int_pool uid_pool = new Int_pool(); @@ -84,7 +85,7 @@ public class Http_server_mgr implements GfoInvkAble { Note("HTTP Server started: Navigate to http://localhost:" + Int_.To_str(port)); } public void Run_xowa_cmd(Xoae_app app, String url_encoded_str) { - Url_encoder url_converter = Url_encoder.new_http_url_(); // create instance for each call + Gfo_url_encoder url_converter = Gfo_url_encoder_.New__http_url().Make(); // create instance for each call String cmd = url_converter.Decode_str(url_encoded_str); app.Gfs_mgr().Run_str(cmd); } diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java index 34dae2918..d632ce9c4 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; +import gplx.core.envs.Op_sys; import gplx.core.net.*; import gplx.core.threads.*; import gplx.langs.htmls.encoders.*; import java.io.*; import java.net.*; @@ -72,7 +73,7 @@ class Http_server_wkr_v1 implements Runnable{ 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"; + Gfo_url_encoder url_converter = Gfo_url_encoder_.Http_url; err_line = "21"; path = url_converter.Decode_str(path); err_line = "22"; if(path.contains("?")){ path = path.substring(0, path.indexOf("?")); err_line = "23"; @@ -100,7 +101,7 @@ class Http_server_wkr_v1 implements Runnable{ for(int i = 4; i <= req_split.length-1; i++){ page_name += "/"+req_split[i]; err_line = "36"; } - Url_encoder url_converter = Url_encoder.new_http_url_(); err_line = "37"; + Gfo_url_encoder url_converter = Gfo_url_encoder_.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); } diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java index 426547b76..fc28de6b3 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java @@ -27,7 +27,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { private final Http_client_wtr client_wtr = Http_client_wtr_.new_stream(); private final Http_client_rdr client_rdr = Http_client_rdr_.new_stream(); private final Http_request_parser request_parser; - private final Url_encoder url_encoder; + private final Gfo_url_encoder url_encoder; private final Xoae_app app; private final String root_dir_http; private final byte[] root_dir_fsys; @@ -82,7 +82,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { int question_pos = Bry_find_.Find_fwd(url, Byte_ascii.Question); int url_bgn = Bry_.Has_at_bgn(url, Url__fsys) ? Url__fsys_len : 0; // most files will have "/fsys/" at start, but Mathjax will not int url_end = question_pos == Bry_find_.Not_found ? url.length : question_pos; // ignore files with query params; EX: /file/A.png?key=val - url_encoder.Decode(url, url_bgn, url_end, tmp_bfr, false); // decode url to actual chars; note that XOWA stores on fsys in UTF-8 chars; "�" not "%C3" + url_encoder.Decode(tmp_bfr, Bool_.N, url, url_bgn, url_end); // decode url to actual chars; note that XOWA stores on fsys in UTF-8 chars; "�" not "%C3" byte[] path = tmp_bfr.To_bry_and_clear(); client_wtr.Write_bry(Xosrv_http_wkr_.Rsp__http_ok); // client_wtr.Write_str("Expires: Sun, 17-Jan-2038 19:14:07 GMT\n"); diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java index 3443a2505..72e8da0e5 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.langs.jsons.*; import gplx.core.threads.*; +import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.core.envs.*; import gplx.core.threads.*; +import gplx.langs.jsons.*; public class Xosrv_server implements GfoInvkAble { private long last_cmd; public Xosrv_socket_rdr Rdr() {return rdr;} private Xosrv_socket_rdr rdr = new Xosrv_socket_rdr(); diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java index 9783dd017..f9ee2aac6 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java @@ -22,7 +22,7 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.*; public class Xoa_url_parser { - private final Url_encoder encoder; + private final Gfo_url_encoder encoder; private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url gfo_url = new Gfo_url(); private final Xoa_app app; private final Xow_wiki wiki; private final byte[] domain_bry; @@ -36,7 +36,7 @@ public class Xoa_url_parser { public Xoa_url_parser(Xow_wiki wiki) { this.app = wiki.App(); this.wiki = wiki; this.domain_bry = wiki.Domain_bry(); - this.encoder = app.Utl__encoder_mgr().Xourl(); + this.encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Xourl; this.vnt_mgr = wiki.Type_is_edit() ? wiki.Lang().Vnt_mgr() : null; } public Xoa_url Parse_by_urlbar_or_null(String str) { @@ -101,7 +101,7 @@ public class Xoa_url_parser { Bld_qargs(); if (tmp_page_is_main) tmp_page = Xoa_page_.Main_page_bry_empty; if (tmp_anch != null) { - byte[] anchor_bry = Xoa_app_.Utl__encoder_mgr().Id().Encode(tmp_anch); // reencode for anchors (which use . encoding, not % encoding); PAGE:en.w:Enlightenment_Spain#Enlightened_despotism_.281759%E2%80%931788.29 + byte[] anchor_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode(tmp_anch); // reencode for anchors (which use . encoding, not % encoding); PAGE:en.w:Enlightenment_Spain#Enlightened_despotism_.281759%E2%80%931788.29 tmp_anch = anchor_bry; } Make(rv); @@ -138,7 +138,7 @@ public class Xoa_url_parser { private void Bld_xowa() { tmp_tid = Xoa_url_.Tid_xcmd; tmp_page = Bry_.Mid(tmp_raw, Gfo_protocol_itm.Len_xcmd); // NOTE: just get String after protocol; anchor (#) or query params (?) must not be parsed - tmp_page = Xoa_app_.Utl__encoder_mgr().Gfs().Decode(tmp_page); // NOTE: should be decoded; EX: %20 -> " " + tmp_page = gplx.langs.htmls.encoders.Gfo_url_encoder_.Gfs.Decode(tmp_page); // NOTE: should be decoded; EX: %20 -> " " } private void Bld_page_by_file_ns() { tmp_tid = Xoa_url_.Tid_page; diff --git a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java index 6d61980aa..7ecffc030 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java @@ -96,7 +96,7 @@ public class Db_mgr_fxt { int len = grp.Itms_list().Count(); for (int i = 0; i < len; i++) { Xoctg_view_itm itm = (Xoctg_view_itm)grp.Itms_list().Get_at(i); - list.Add(itm.Id()); + list.Add(itm.Page_id()); } } return (int[])list.To_ary_and_clear(int.class); diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java index 0514bc845..990a9a5bf 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; -import gplx.core.consoles.*; +import gplx.core.consoles.*; import gplx.core.envs.*; import gplx.xowa.apps.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cfgs.*; import gplx.xowa.langs.bldrs.*; public class Xob_bldr implements GfoInvkAble { private boolean pause_at_end = false; private long prv_prog_time; private Xob_xml_parser dump_parser; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java index fe3dc9322..2a8c2a2c7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; -import gplx.core.ios.*; import gplx.lists.*; +import gplx.core.ios.*; import gplx.core.lists.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.wtrs.*; public class Xobdc_merger { diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java index 5bd20b7f4..4adcf30a8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; -import gplx.core.ios.*; import gplx.lists.*; +import gplx.core.ios.*; import gplx.core.lists.*; import gplx.xowa.wikis.tdbs.*; class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1 public Io_sort_filCmd_reg() {} diff --git a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java index faa4c44f6..b7bb268be 100644 --- a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java @@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.aria2; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.core.envs.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.bldrs.wms.dumps.*; public class Aria2_lib_mgr implements GfoInvkAble { - public ProcessAdp Lib() {return lib;} private ProcessAdp lib = new ProcessAdp(); + public Process_adp Lib() {return lib;} private Process_adp lib = new Process_adp(); public void Init_by_app(Xoae_app app) { Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); - ProcessAdp.ini_(this, app.Usr_dlg(), lib, cmd_eval, ProcessAdp.Run_mode_sync_block, Int_.Max_value + Process_adp.ini_(this, app.Usr_dlg(), lib, cmd_eval, Process_adp.Run_mode_sync_block, Int_.Max_value , "~{<>bin_plat_dir<>}aria2" + Op_sys.Cur().Fsys_dir_spr_str() + "aria2c" , Lib_args_fmt , "wiki_abrv", "wiki_date", "wiki_type"); @@ -29,7 +30,7 @@ public class Aria2_lib_mgr implements GfoInvkAble { // private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public void Exec(Xowm_dump_file dump_file) { // byte[] args_bry = lib.Args_fmtr().Bld_bry_many(tmp_bfr, dump_file.Wiki_alias(), dump_file.Dump_date(), dump_file.Dump_file_type()); - // ProcessAdp process = new ProcessAdp().Exe_url_(lib.Exe_url()).Args_str_(String_.new_u8(args_bry)); + // Process_adp process = new Process_adp().Exe_url_(lib.Exe_url()).Args_str_(String_.new_u8(args_bry)); // process.Run_wait(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java index d40bb7e6e..4eae17ca4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java @@ -16,6 +16,7 @@ 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; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.nss.*; @@ -41,8 +42,8 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo public void Cmd_bgn(Xob_bldr bldr) { parser = wiki.Parser_mgr().Main(); ctx = wiki.Parser_mgr().Ctx(); - root = ctx.Tkn_mkr().Root(Bry_.Empty); - wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql + root = ctx.Tkn_mkr().Root(Bry_.Empty); + wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql wiki.Db_mgr_as_sql().Core_data_mgr().Init_by_load(gplx.xowa.wikis.Xow_fsys_mgr.Find_core_fil(wiki)); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed) wiki.File__orig_mgr().Wkrs_del(Xof_orig_wkr_.Tid_wmf_api); db_fsys_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); @@ -50,7 +51,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo poll_interval = poll_mgr.Poll_interval(); page_src = new Xob_dump_src_id().Init(wiki, this.Init_redirect(), select_size); - ns_ary = Init_ns_ary(); + ns_ary = Init_ns_ary(); Db_conn conn = Init_db_file(); Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); bmk_mgr.Cfg_url_(wiki_dir.GenSubFil("xowa.file.make.cfg.gfs")); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java index 3d6252ce0..1a8dda740 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java @@ -16,6 +16,7 @@ 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; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.core.stores.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; class Xob_dump_src_id { private Xodb_mgr_sql db_mgr; private byte redirect; 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 0639bf34f..96057e19a 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 @@ -73,7 +73,7 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement private static final byte[] Fld_cl_from = Bry_.new_a7("cl_from"), Fld_cl_to = Bry_.new_a7("cl_to"), Fld_cl_timestamp = Bry_.new_a7("cl_timestamp"), Fld_cl_collation = Bry_.new_a7("cl_collation"), Fld_cl_sortkey = Bry_.new_a7("cl_sortkey"), Fld_cl_type = Bry_.new_a7("cl_type"); private static final byte[] Collation_uca = Bry_.new_a7("uca"), Sortkey_space = new byte[] {Byte_ascii.Space}; } -class Xoctg_link_sql_sorter implements gplx.lists.ComparerAble { +class Xoctg_link_sql_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Io_sort_split_itm lhs = (Io_sort_split_itm)lhsObj, rhs = (Io_sort_split_itm)rhsObj; byte[] lhs_bry = lhs.Bfr(); int lhs_bgn = 0, lhs_end = lhs.Row_bgn() - 1; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java index ea6a8324c..9f59a854d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java @@ -16,7 +16,7 @@ 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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import org.junit.*; import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.core.stores.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; public class Xob_categorylinks_sql_tst { @Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt(); @After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java index 41f27e5b0..9537047c7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java @@ -16,6 +16,7 @@ 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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.data.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java index 73a3e0d76..9d647b8c5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.fsdb.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_diff_regy_make_cmd extends Xob_itm_basic_base implements Xob_cmd { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java index 882713777..c915bdd3b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.fsdb.*; import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; 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 index dd40f59ab..65f99faff 100644 --- 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 @@ -16,6 +16,7 @@ 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.core.envs.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.fsdb.meta.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_fsdb_reduce_cmd extends Xob_itm_basic_base implements Xob_cmd { @@ -39,10 +40,10 @@ public class Xob_fsdb_reduce_cmd extends Xob_itm_basic_base implements Xob_cmd { } } class Fsdb_reduce_wkr { - private final ProcessAdp convert_process; + private final Process_adp 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) { + public Fsdb_reduce_wkr(Process_adp 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"); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java index 518fa875a..7d967616c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java @@ -28,10 +28,9 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink private Xob_lnki_temp_tbl tbl; private boolean wdata_enabled = true, xtn_ref_enabled = true, gen_html, gen_hdump; private Xop_log_invoke_wkr invoke_wkr; private Xop_log_property_wkr property_wkr; private boolean ns_file_is_case_match_all = true; private Xowe_wiki commons_wiki; - private Xob_hdump_mgr hdump_bldr; private Xob_link_dump_cmd link_dump_cmd; private boolean hzip_enabled = false; - private Vnt_convert_lang converter_lang; + private final Xob_hdump_bldr hdump_bldr = new Xob_hdump_bldr(); private Vnt_convert_lang converter_lang; public Xob_lnki_temp_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} - @Override public String Cmd_key() {return Xob_cmd_keys.Key_file_lnki_temp;} + @Override public String Cmd_key() {return Xob_cmd_keys.Key_file_lnki_temp;} @Override public byte Init_redirect() {return Bool_.N_byte;} // lnki_temp does not look at redirect pages @Override public int[] Init_ns_ary() {return ns_ids;} private int[] ns_ids = Int_.Ary(Xow_ns_.Tid__main); @Override protected void Init_reset(Db_conn conn) { @@ -42,16 +41,16 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink } @Override protected Db_conn Init_db_file() { ctx.Lnki().File_wkr_(this); - Xob_db_file make_db_file = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()); - Db_conn conn = make_db_file.Conn(); - this.tbl = new Xob_lnki_temp_tbl(conn); - tbl.Create_tbl(); + Xob_db_file make_db = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()); + Db_conn make_conn = make_db.Conn(); + this.tbl = new Xob_lnki_temp_tbl(make_conn); tbl.Create_tbl(); + this.gen_hdump = hdump_bldr.Init(wiki, make_conn); Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); if (vnt_mgr.Enabled()) { this.converter_lang = vnt_mgr.Convert_lang(); - converter_lang.Log__init(conn); + converter_lang.Log__init(make_conn); } - return conn; + return make_conn; } @Override protected void Cmd_bgn_end() { ns_file_is_case_match_all = Ns_file_is_case_match_all(wiki); // NOTE: must call after wiki.init @@ -84,12 +83,6 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink trg_mnt_mgr = new Fsm_mnt_mgr(); trg_mnt_mgr.Ctor_by_load(fsdb_core); trg_mnt_mgr.Mnts__get_insert_idx_(Fsm_mnt_mgr.Mnt_idx_main); Fsm_mnt_mgr.Patch(trg_mnt_mgr.Mnts__get_main().Cfg_mgr().Tbl()); // NOTE: see fsdb_make; DATE:2014-04-26 - if (gen_hdump) { - gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import(); - hdump_bldr = new Xob_hdump_mgr(wiki, tbl.Conn(), import_cfg.Html_db_max(), import_cfg.Zip_tid_html(), hzip_enabled); - link_dump_cmd = new Xob_link_dump_cmd(); - link_dump_cmd.Init_by_wiki(wiki); - } tbl.Insert_bgn(); log_mgr.Txn_bgn(); } @@ -103,27 +96,15 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink page.Bldr__ns_ord_(ns_ord); page.Ttl_(ttl).Revision_data().Id_(db_page.Id()); page.Redlink_lnki_list().Clear(); + page.Url_(Xoa_url.new_(wiki.Domain_bry(), ttl.Full_db())); if (ns.Id_is_tmpl()) parser.Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), wiki.Ns_mgr().Ns_template(), ttl_bry, page_src); else { parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src); - if (gen_html) { - page.Root_(root); - if (!page.Redirected()) - wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Cur_page(), Xopg_page_.Tid_read); - } - if (gen_hdump) { - page.Root_(root); - hdump_bldr.Insert(page); - link_dump_cmd.Page_bgn(page.Revision_data().Id()); - List_adp lnki_list = page.Redlink_lnki_list().Lnki_list(); - int len = lnki_list.Count(); - for (int i = 0; i < len; ++i) { - Xop_lnki_tkn lnki = (Xop_lnki_tkn)lnki_list.Get_at(i); - Xoa_ttl trg_ttl = lnki.Ttl(); - link_dump_cmd.Add(lnki.Html_uid(), trg_ttl.Ns().Id(), trg_ttl.Page_db()); - } - } + if (gen_html && !page.Redirected()) + wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Cur_page().Root_(root), Xopg_page_.Tid_read); + if (gen_hdump) + hdump_bldr.Insert(page.Root_(root)); root.Clear(); } } @@ -132,14 +113,12 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink // if (converter_lang != null) converter_lang.Log__save(); if (gen_hdump) { hdump_bldr.Commit(); - link_dump_cmd.Wkr_commit(); } } @Override public void Exec_end_hook() { // if (converter_lang != null) converter_lang.Log__rls(); if (gen_hdump) { hdump_bldr.Bld_term(); - link_dump_cmd.Wkr_end(); } String err_filter_mgr = invoke_wkr.Err_filter_mgr().Print(); if (String_.Len_gt_0(err_filter_mgr)) usr_dlg.Warn_many("", "", err_filter_mgr); @@ -163,20 +142,18 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wdata_enabled_)) wdata_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_xtn_ref_enabled_)) xtn_ref_enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_gen_html_)) gen_html = m.ReadYn("v"); - else if (ctx.Match(k, Invk_gen_hdump_)) gen_hdump = m.ReadYn("v"); - else if (ctx.Match(k, Invk_hzip_enabled_)) hzip_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_ns_ids_)) ns_ids = Int_.Ary_parse(m.ReadStr("v"), "|"); else if (ctx.Match(k, Invk_ns_ids_by_aliases)) ns_ids = Xob_lnki_temp_wkr_.Ns_ids_by_aliases(wiki, m.ReadStrAry("v", "|")); + else if (ctx.Match(k, Invk_gen_html_)) gen_html = m.ReadYn("v"); + else if (ctx.Match(k, Invk_hdump_bldr)) return hdump_bldr; else if (ctx.Match(k, Invk_property_wkr)) return this.Property_wkr(); else if (ctx.Match(k, Invk_invoke_wkr)) return this.Invoke_wkr(); else return super.Invk(ctx, ikey, k, m); return this; } - private static final String Invk_wdata_enabled_ = "wdata_enabled_", Invk_xtn_ref_enabled_ = "xtn_ref_enabled_" + private static final String Invk_wdata_enabled_ = "wdata_enabled_", Invk_xtn_ref_enabled_ = "xtn_ref_enabled_", Invk_gen_html_ = "gen_html_" , Invk_ns_ids_ = "ns_ids_", Invk_ns_ids_by_aliases = "ns_ids_by_aliases" - , Invk_invoke_wkr = "invoke_wkr", Invk_property_wkr = "property_wkr" - , Invk_gen_html_ = "gen_html_", Invk_gen_hdump_ = "gen_hdump_", Invk_hzip_enabled_ = "hzip_enabled_" + , Invk_invoke_wkr = "invoke_wkr", Invk_property_wkr = "property_wkr", Invk_hdump_bldr = "hdump_bldr" ; private Xop_log_invoke_wkr Invoke_wkr() { if (invoke_wkr == null) invoke_wkr = ((Scrib_xtn_mgr)bldr.App().Xtn_mgr().Get_or_fail(Scrib_xtn_mgr.XTN_KEY)).Invoke_wkr_or_new(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java index bec0af55e..446ea9981 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.origs.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_orig_regy_update_cmd extends Xob_itm_basic_base implements Xob_cmd { // downloads latest orig data diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_regy_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_regy_tbl.java index efaeb1fc2..c3206d32b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_regy_tbl.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; public class Xob_xfer_regy_tbl { public static final String Tbl_name = "xfer_regy" diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java index bdbcedf2e..86f15e886 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.exts.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.parsers.lnkis.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_thumb.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_thumb.java index 7ae394630..c6f79e4de 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_thumb.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_thumb.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.xowa.files.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_xfer_temp_cmd_thumb extends Xob_itm_basic_base implements Xob_cmd { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm.java index 302befe25..0b28d271f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm.java @@ -16,6 +16,7 @@ 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.core.stores.*; import gplx.dbs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*; class Xob_xfer_temp_itm { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm_tst.java index 26742e6cc..efd1c733e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_itm_tst.java @@ -18,7 +18,7 @@ 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 org.junit.*; import gplx.core.gfo_ndes.*; -import gplx.stores.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; +import gplx.core.stores.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.parsers.lnkis.*; public class Xob_xfer_temp_itm_tst { private Xob_xfer_temp_itm_fxt fxt = new Xob_xfer_temp_itm_fxt(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java index 18a902b7c..6964fbae2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java @@ -38,7 +38,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInv this.text_zip_mgr = Xoa_app_.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__text(), db_mgr, import_cfg.Text_db_max()); if (redirect_id_enabled) { - this.redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl__encoder_mgr().Http_url_ttl()).Create_table(); + this.redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl).Create_table(); redirect_tbl.Conn().Txn_bgn("bldr__page__redirect"); } this.dg_match_mgr = app.Api_root().Bldr().Wiki().Filter().Dansguardian().New_mgr(wiki.Domain_str(), wiki.Fsys_mgr().Root_dir()); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java index e3f8c331e..6f939fb3f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java @@ -16,6 +16,7 @@ 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.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; +import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java index 7f67ce279..eaecb5c0a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java @@ -16,7 +16,7 @@ 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.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.core.ios.*; import gplx.core.encoders.*; +import gplx.core.ios.*; import gplx.core.encoders.*; import gplx.core.envs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java index dc5f07026..48632d898 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java @@ -16,7 +16,7 @@ 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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.core.ios.*; import gplx.core.threads.*; +import gplx.core.ios.*; import gplx.core.threads.*; import gplx.core.envs.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_decompress_bz2_cmd extends Xob_itm_basic_base implements Xob_cmd { public Xob_decompress_bz2_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} @@ -42,10 +42,10 @@ public class Xob_decompress_bz2_cmd extends Xob_itm_basic_base implements Xob_cm static final String GRP_KEY = "xowa.bldr.cmd.decompress_bz2"; public static boolean Decompress(Xoae_app app, String src_fil, Io_url trg_fil) { Io_mgr.Instance.CreateDirIfAbsent(trg_fil.OwnerDir()); // 7zip will fail if dir does not exist - ProcessAdp decompress = app.Prog_mgr().App_decompress_bz2(); - decompress.Prog_dlg_(app.Usr_dlg()).Run_mode_(ProcessAdp.Run_mode_async); + Process_adp decompress = app.Prog_mgr().App_decompress_bz2(); + decompress.Prog_dlg_(app.Usr_dlg()).Run_mode_(Process_adp.Run_mode_async); decompress.Run(src_fil, trg_fil, trg_fil.OwnerDir().Xto_api()); - while (decompress.Exit_code() == ProcessAdp.Exit_init) { + while (decompress.Exit_code() == Process_adp.Exit_init) { String size = gplx.core.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg_fil).Size()); app.Usr_dlg().Prog_many(GRP_KEY, "decompress", "decompressing: ~{0}", size); Thread_adp_.Sleep(1000); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java index 07695a52a..65af5e23e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java @@ -16,7 +16,7 @@ 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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.dbs.*; import gplx.core.ios.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.envs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd { @@ -48,7 +48,7 @@ public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd { usr_dlg.Warn_many("", "", "download failed: src=~{0} trg=~{1} err=~{2}", dump_src, dump_trg_zip.Raw(), Err_.Message_gplx_full(download_wkr.Rslt_err())); if (unzip) { usr_dlg.Note_many("", "", "unzipping file: now=~{0} trg=~{1}", DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_trg_bin.Raw()); - Xob_unzip_wkr unzip_wkr = new Xob_unzip_wkr().Init(app).Process_run_mode_(ProcessAdp.Run_mode_sync_block); + Xob_unzip_wkr unzip_wkr = new Xob_unzip_wkr().Init(app).Process_run_mode_(Process_adp.Run_mode_sync_block); unzip_wkr.Decompress(dump_trg_zip, dump_trg_bin); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java index a12a919e7..c43a8fe80 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java @@ -16,12 +16,13 @@ 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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; +import gplx.core.envs.*; public class Xob_unzip_wkr { - private ProcessAdp decompress_bz2, decompress_zip, decompress_gz, process; + private Process_adp decompress_bz2, decompress_zip, decompress_gz, process; public int Process_exit_code() {return process.Exit_code();} - public byte Process_run_mode() {return process_run_mode;} public Xob_unzip_wkr Process_run_mode_(byte v) {process_run_mode = v; return this;} private byte process_run_mode = ProcessAdp.Run_mode_async; + public byte Process_run_mode() {return process_run_mode;} public Xob_unzip_wkr Process_run_mode_(byte v) {process_run_mode = v; return this;} private byte process_run_mode = Process_adp.Run_mode_async; public Xob_unzip_wkr Init(Xoae_app app) {return Init(app.Prog_mgr().App_decompress_bz2(), app.Prog_mgr().App_decompress_zip(), app.Prog_mgr().App_decompress_gz());} - public Xob_unzip_wkr Init(ProcessAdp decompress_bz2, ProcessAdp decompress_zip, ProcessAdp decompress_gz) { + public Xob_unzip_wkr Init(Process_adp decompress_bz2, Process_adp decompress_zip, Process_adp decompress_gz) { this.decompress_bz2 = decompress_bz2; this.decompress_zip = decompress_zip; this.decompress_gz = decompress_gz; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java index 4a1794c5c..f29d33db9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java @@ -22,7 +22,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; public class Xob_redirect_cmd extends Xob_dump_mgr_base { private Db_conn conn; private Xob_redirect_tbl redirect_tbl; - private Xodb_mgr_sql db_mgr; private Xop_redirect_mgr redirect_mgr; private Url_encoder encoder; + private Xodb_mgr_sql db_mgr; private Xop_redirect_mgr redirect_mgr; private Gfo_url_encoder encoder; public Xob_redirect_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.Reset_db_y_();} @Override public String Cmd_key() {return Xob_cmd_keys.Key_wiki_redirect;} @Override public int[] Init_ns_ary() {return Int_.Ary(Xow_ns_.Tid__file);} // restrict to file ns @@ -35,8 +35,8 @@ public class Xob_redirect_cmd extends Xob_dump_mgr_base { @Override protected Db_conn Init_db_file() { this.db_mgr = wiki.Db_mgr_as_sql(); redirect_mgr = wiki.Redirect_mgr(); - encoder = Xoa_app_.Utl__encoder_mgr().Http_url_ttl(); - redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl__encoder_mgr().Http_url_ttl()).Create_table(); + encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl; + redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl).Create_table(); conn = redirect_tbl.Conn(); conn.Txn_bgn("bldr__redirect"); return conn; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_tbl.java index 6bc874a98..fa8ccd926 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_tbl.java @@ -19,8 +19,8 @@ package gplx.xowa.bldrs.cmds.wikis; import gplx.*; import gplx.xowa.*; import gp import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.langs.htmls.encoders.*; public class Xob_redirect_tbl { - private Url_encoder encoder; private Db_stmt insert_stmt; - public Xob_redirect_tbl(Io_url root_dir, Url_encoder encoder) { + private Gfo_url_encoder encoder; private Db_stmt insert_stmt; + public Xob_redirect_tbl(Io_url root_dir, Gfo_url_encoder encoder) { this.db_file = Xob_db_file.new__wiki_redirect(root_dir); this.conn = db_file.Conn(); this.encoder = encoder; diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java index 251d6cafe..978e9ce36 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.brys.fmtrs.*; import gplx.core.ios.*; import gplx.xowa.htmls.*; -import gplx.langs.htmls.encoders.*; +import gplx.core.brys.fmtrs.*; import gplx.core.ios.*; import gplx.core.envs.*; +import gplx.xowa.htmls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.downloads.*; @@ -33,7 +33,7 @@ public class Xoa_css_extractor { public Xoa_css_extractor Page_fetcher_(Xow_page_fetcher v) {page_fetcher = v; return this;} private Xow_page_fetcher page_fetcher; public Xoa_css_extractor Css_img_downloader_(Xoa_css_img_downloader v) {this.css_img_downloader = v; return this;} private Xoa_css_img_downloader css_img_downloader; public Xoa_css_extractor Opt_download_css_common_(boolean v) {opt_download_css_common = v; return this;} private boolean opt_download_css_common; - public Xoa_css_extractor Url_encoder_(Url_encoder v) {url_encoder = v; return this;} private Url_encoder url_encoder; + public Xoa_css_extractor Url_encoder_(Gfo_url_encoder v) {url_encoder = v; return this;} private Gfo_url_encoder url_encoder; public Xoa_css_extractor Wiki_code_(byte[] v) {this.wiki_code = v; return this;} private byte[] wiki_code = null; private byte[] mainpage_html; private boolean lang_is_ltr = true; private final Gfo_url_parser url_parser = new Gfo_url_parser(); @@ -43,7 +43,7 @@ public class Xoa_css_extractor { this.download_xrg = download_wkr.Download_xrg(); css_img_downloader = new Xoa_css_img_downloader().Ctor(usr_dlg, download_wkr, Bry_.new_u8(protocol_prefix)); failover_dir = app.Fsys_mgr().Bin_xowa_dir().GenSubDir_nest("html", "css", "failover"); - url_encoder = Xoa_app_.Utl__encoder_mgr().Http_url(); + url_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url; } public void Install(Xow_wiki wiki, String css_key) { try { diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java index d90d48f24..a8efe1ef2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java @@ -56,7 +56,7 @@ public class Xoa_css_extractor_basic_tst { fxt.Test_fil("mem/xowa/user/anonymous/wiki/en.wikipedia.org/html/xowa_common.css", "failover"); } @Test public void Css_scrape_download() { - fxt.Css_installer().Url_encoder_(Url_encoder.new_http_url_()); + fxt.Css_installer().Url_encoder_(Gfo_url_encoder_.Http_url); fxt.Init_fil("mem/http/en.wikipedia.org" , Xoa_css_extractor_fxt.Main_page_html); fxt.Init_fil("mem/http/en.wikipedia.org/common.css" , "download"); fxt.Init_fil("mem/http/www/a&0|b,c" , "data=css_0"); 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 79ebbd713..c2e6f1ef3 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 @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xowa.files.downloads.*; +import gplx.xowa.files.downloads.*; import gplx.core.envs.*; public class Xoa_css_img_downloader { private byte[] wiki_domain; public Xoa_css_img_downloader Ctor(Gfo_usr_dlg usr_dlg, Xof_download_wkr download_wkr, byte[] stylesheet_prefix) { 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 47a59d879..571688e9a 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 @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.core.envs.*; abstract class Xob_css_tkn__base { public void Init(int tid, int pos_bgn, int pos_end) { this.tid = tid; this.pos_bgn = pos_bgn; this.pos_end = pos_end; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java index de966f64c..5fe2fd465 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java @@ -58,8 +58,8 @@ class Xoi_cmd_msg_ok extends Gfo_thread_cmd_base implements Gfo_thread_cmd { // return Gfo_thread_cmd_.Init_ok; // } // public override void Async_run() { -// ProcessAdp process = new ProcessAdp().Exe_url_(exec_url).Args_str_(exec_args).Prog_dlg_(usr_dlg); -// process.Run_mode_(ProcessAdp.Run_mode_sync_block); +// Process_adp process = new Process_adp().Exe_url_(exec_url).Args_str_(exec_args).Prog_dlg_(usr_dlg); +// process.Run_mode_(Process_adp.Run_mode_sync_block); // process.Run(); // } // public static final String KEY = "exec.sync"; diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java index 5b317409d..e4b130683 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java @@ -16,18 +16,18 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.envs.*; import gplx.xowa.apps.fsys.*; public class Xoi_firefox_installer implements GfoInvkAble { private Io_url src_xpi, trg_xpi; private Io_url trg_xpi_package; - private ProcessAdp program = new ProcessAdp(); + private Process_adp program = new Process_adp(); public void Init_by_app(Xoae_app app) { src_xpi = app.Fsys_mgr().Bin_any_dir().GenSubFil_nest("firefox", "xowa_viewer", "default", "xowa_viewer@piotrex.xpi"); trg_xpi = app.Fsys_mgr().Bin_any_dir().GenSubFil_nest("firefox", "xowa_viewer", "install", "xowa_viewer@piotrex.xpi"); trg_xpi_package = trg_xpi.OwnerDir().GenSubDir("package"); Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); - ProcessAdp.ini_(this, app.Usr_dlg(), program, cmd_eval, ProcessAdp.Run_mode_async, 0, "firefox", "\"~{url}\"", "url"); + Process_adp.ini_(this, app.Usr_dlg(), program, cmd_eval, Process_adp.Run_mode_async, 0, "firefox", "\"~{url}\"", "url"); } public void Install_via_process() { Generate(); diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java index c2cddbbbb..4ea45ab02 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; -import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.envs.*; +import gplx.langs.htmls.encoders.*; import gplx.xowa.files.downloads.*; import gplx.xowa.htmls.hrefs.*; public class Xoapi_orig_wmf extends Xoapi_orig_base { @@ -80,7 +81,7 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base { return tmp_bfr.To_str_and_clear(); } } - private static Url_encoder tmp_encoder = Url_encoder.new_http_url_().Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); + private static Gfo_url_encoder tmp_encoder = Gfo_url_encoder_.New__http_url().Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline).Make(); private static final Bry_bfr tmp_bfr = Bry_bfr.new_(); private static final byte[] Bry_api = Bry_.new_a7("/w/api.php?action=query&format=xml&prop=imageinfo&iiprop=size|url&redirects&titles=File:") // NOTE: using File b/c it should be canonical diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java index 9b447d2a7..9a5fe73c5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.envs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*; public class Xob_import_cfg { public Xob_import_cfg(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; private boolean src_fil_is_bz2 = true; @@ -43,7 +43,7 @@ public class Xob_import_cfg { src_fil = src_fil_bz2; src_rdr_len = Io_mgr.Instance.QueryFil(src_fil_bz2).Size(); Xoae_app app = wiki.Appe(); if (app.Setup_mgr().Dump_mgr().Import_bz2_by_stdout()) { - ProcessAdp process = app.Prog_mgr().App_decompress_bz2_by_stdout(); + Process_adp process = app.Prog_mgr().App_decompress_bz2_by_stdout(); return Io_stream_rdr_process.new_(process.Exe_url(), src_fil_bz2, process.Xto_process_bldr_args(src_fil_bz2.Raw())); } else diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java b/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java index 3b3fb2162..7e71a9d17 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.files; import gplx.*; import gplx.xowa.*; import gplx.core.consoles.*; import gplx.langs.htmls.encoders.*; public class Xof_file_wkr_ { - public static final Url_encoder Md5_decoder = Url_encoder.new_http_url_().Itms_raw_same_many(Byte_ascii.Plus); + public static final Gfo_url_encoder Md5_decoder = Gfo_url_encoder_.New__http_url().Init__same__many(Byte_ascii.Plus).Make(); public static byte[] Md5_fast(byte[] v) {return Bry_.new_a7(gplx.core.security.HashAlgo_.Md5.CalcHash(Console_adp_.Noop, gplx.core.ios.IoStream_.ary_(v)));} public static byte[] Md5(byte[] ttl) { - ttl = Md5_decoder.Decode_lax(Ttl_standardize(ttl)); + ttl = Md5_decoder.Decode(Ttl_standardize(ttl)); return Xof_file_wkr_.Md5_fast(ttl); // NOTE: md5 is calculated off of url_decoded ttl; EX: A%2Cb is converted to A,b and then md5'd. note that A%2Cb still remains the title } public static byte[] Ttl_standardize(byte[] ttl) { diff --git a/400_xowa/src/gplx/xowa/files/Xof_lnki_page.java b/400_xowa/src/gplx/xowa/files/Xof_lnki_page.java index 5fef1e02b..3a0134b6b 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_lnki_page.java +++ b/400_xowa/src/gplx/xowa/files/Xof_lnki_page.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; +import gplx.core.stores.*; import gplx.dbs.*; public class Xof_lnki_page { public static final int Null = -1; diff --git a/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java b/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java index a2e70e3ab..b767cfb58 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java +++ b/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; +import gplx.core.stores.*; import gplx.dbs.*; public class Xof_lnki_time { public static double Db_save_double(double v) {return v;} diff --git a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java index b8da8df52..ffb9016ac 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; public class Xof_url_bldr { @@ -204,7 +205,7 @@ public class Xof_url_bldr { Bry_lossy_page = Bry_.new_a7("lossy-page"), Bry_page = Bry_.new_a7("page") , Bry_lossy_page1 = Bry_.new_a7("lossy-page1-"), Bry_page1 = Bry_.new_a7("page1-"), Bry_seek = Bry_.new_a7("seek%3D"); public static final Xof_url_bldr Temp = new Xof_url_bldr(); - private static final Url_encoder encoder_src_http = Url_encoder.new_http_url_(); // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb + private static final Gfo_url_encoder encoder_src_http = Gfo_url_encoder_.Http_url; // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb public static Xof_url_bldr new_v2() { Xof_url_bldr rv = new Xof_url_bldr(); rv.time_dlm = Byte_ascii.Dash; diff --git a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java index b38c3724a..d07d03958 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java +++ b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java @@ -73,7 +73,7 @@ public class Xof_xfer_itm implements Xof_file_itm { this.lnki_exec_tid = exec_tid; this.lnki_wiki_abrv = wiki_abrv; this.lnki_type = lnki_type; this.lnki_upright = upright; this.lnki_w = w; this.lnki_h = h; this.lnki_time = time; this.lnki_page = page; this.file_is_orig = !Xof_xfer_itm_.Lnki_thumbable_calc(lnki_type, lnki_w, lnki_h); - this.lnki_ttl = Xof_file_wkr_.Md5_decoder.Decode_lax(Xof_file_wkr_.Ttl_standardize(ttl)); + this.lnki_ttl = Xof_file_wkr_.Md5_decoder.Decode(Xof_file_wkr_.Ttl_standardize(ttl)); this.Orig_ttl_(ttl); this.orig_ext = Xof_ext_.new_by_ttl_(ttl); if (lnki_time != Xof_lnki_time.Null && !orig_ext.Id_is_media()) // thumbtime is set, but ext is not media; PAGE:en.w:Moon; EX:[[File:A.png|thumbtime=0:02]] DATE:2014-07-22 @@ -110,7 +110,7 @@ public class Xof_xfer_itm implements Xof_file_itm { public void Orig_ttl_and_redirect_(byte[] ttl, byte[] redirect) { this.orig_redirect = redirect; this.lnki_ttl = orig_redirect == Xop_redirect_mgr.Redirect_null_bry ? Bry_.Copy(ttl) : orig_redirect; - this.lnki_ttl = Xof_file_wkr_.Md5_decoder.Decode_lax(Xof_file_wkr_.Ttl_standardize(lnki_ttl)); // NOTE: this line is repeated in static method below + this.lnki_ttl = Xof_file_wkr_.Md5_decoder.Decode(Xof_file_wkr_.Ttl_standardize(lnki_ttl)); // NOTE: this line is repeated in static method below this.orig_ttl = lnki_ttl; this.orig_ttl_md5 = Xof_file_wkr_.Md5_fast(lnki_ttl); // NOTE: md5 is calculated off of url_decoded ttl; EX: A%2Cb is converted to A,b and then md5'd. note that A%2Cb still remains the title this.orig_ext = Xof_ext_.new_by_ttl_(lnki_ttl); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java index 3d9a5820c..a42a0bee3 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.envs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble { public Xof_bin_wkr__fsys_base() {} diff --git a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java index 6ffe89cbc..50e539072 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.primitives.*; import gplx.dbs.*; +import gplx.core.primitives.*; import gplx.core.envs.*; +import gplx.dbs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wikis.*; public class Xof_cache_mgr implements GfoInvkAble { private final Gfo_usr_dlg usr_dlg; private final Xoae_wiki_mgr wiki_mgr; private final Xoa_repo_mgr repo_mgr; diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java index 6f9678672..1ac0dfd6e 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java @@ -79,7 +79,7 @@ public class Xou_cache_itm { return key_bfr.To_bry_and_clear(); } } -class Xof_cache_mgr_sorter implements gplx.lists.ComparerAble { +class Xof_cache_mgr_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xou_cache_itm lhs = (Xou_cache_itm)lhsObj; Xou_cache_itm rhs = (Xou_cache_itm)rhsObj; 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 a7e51a3a4..508c60201 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 @@ -207,7 +207,7 @@ class Xou_cache_grp { } public Xou_cache_itm Get_at(int i) {return (Xou_cache_itm)list.Get_at(i);} } -class Xou_cache_grp_sorter implements gplx.lists.ComparerAble { +class Xou_cache_grp_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xou_cache_grp lhs = (Xou_cache_grp)lhsObj; Xou_cache_grp rhs = (Xou_cache_grp)rhsObj; diff --git a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java index 870aafffb..f0220ea4c 100644 --- a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java +++ b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.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.xowa.files.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.primitives.*; import gplx.xowa.bldrs.wms.*; +import gplx.core.primitives.*; import gplx.core.envs.*; +import gplx.xowa.bldrs.wms.*; public class Xof_img_wkr_resize_img_imageMagick implements Xof_img_wkr_resize_img { - private final Xowmf_mgr wmf_mgr; private final ProcessAdp cmd_convert, cmd_convert_svg_to_png; + private final Xowmf_mgr wmf_mgr; private final Process_adp cmd_convert, cmd_convert_svg_to_png; private boolean init_needed = true; - public Xof_img_wkr_resize_img_imageMagick(Xowmf_mgr wmf_mgr, ProcessAdp cmd_convert, ProcessAdp cmd_convert_svg_to_png) { + public Xof_img_wkr_resize_img_imageMagick(Xowmf_mgr wmf_mgr, Process_adp cmd_convert, Process_adp cmd_convert_svg_to_png) { this.wmf_mgr = wmf_mgr; this.cmd_convert = cmd_convert; this.cmd_convert_svg_to_png = cmd_convert_svg_to_png; } public boolean Resize_exec(Io_url src, Io_url trg, int trg_w, int trg_h, int ext_id, String_obj_ref rslt_val) { @@ -32,7 +33,7 @@ public class Xof_img_wkr_resize_img_imageMagick implements Xof_img_wkr_resize_im cmd_convert.Prog_dlg_(usr_dlg); cmd_convert_svg_to_png.Prog_dlg_(usr_dlg); } - ProcessAdp cmd = ext_id == Xof_ext_.Id_svg ? cmd_convert_svg_to_png : cmd_convert; + Process_adp cmd = ext_id == Xof_ext_.Id_svg ? cmd_convert_svg_to_png : cmd_convert; cmd.Prog_fmt_(String_.Replace(wmf_mgr.Download_wkr().Download_xrg().Prog_fmt_hdr(), "~", "~~") + " converting: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}"); cmd.Run(src.Raw(), trg.Raw(), trg_w, trg_h); rslt_val.Val_(cmd.Rslt_out()); diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Fsdb_regy_fil_tbl.java b/400_xowa/src/gplx/xowa/files/fsdb/Fsdb_regy_fil_tbl.java index 006811172..d68e95365 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/Fsdb_regy_fil_tbl.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/Fsdb_regy_fil_tbl.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.fsdb; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; +import gplx.core.stores.*; import gplx.dbs.*; class Fsdb_regy_fil_tbl { public Fsdb_regy_fil_itm Select(String name, boolean is_orig, int w, int thumbtime) { diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java index ca656ac34..e314aa35f 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; -import gplx.core.ios.*; import gplx.core.brys.fmtrs.*; +import gplx.core.ios.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; import gplx.xowa.files.gui.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read images from file-system dir diff --git a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java index 246955d92..b22d693b6 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.fsdb.tsts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; +import gplx.core.envs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.dbs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.gui.*; import gplx.fsdb.data.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.*; diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java index 37ebc6965..9243bf795 100644 --- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java +++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java @@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; +import gplx.core.envs.*; public class Xof_img_wkr_convert_djvu_to_tiff_ { - public static Xof_img_wkr_convert_djvu_to_tiff new_app(ProcessAdp process) {return new Xof_img_wkr_convert_djvu_to_tiff_app(process);} + public static Xof_img_wkr_convert_djvu_to_tiff new_app(Process_adp process) {return new Xof_img_wkr_convert_djvu_to_tiff_app(process);} public static Xof_img_wkr_convert_djvu_to_tiff new_mok(int w, int h) {return new Xof_img_wkr_convert_djvu_to_tiff_mok(w, h);} } class Xof_img_wkr_convert_djvu_to_tiff_app implements Xof_img_wkr_convert_djvu_to_tiff { - public Xof_img_wkr_convert_djvu_to_tiff_app(ProcessAdp process) {this.process = process;} ProcessAdp process; + public Xof_img_wkr_convert_djvu_to_tiff_app(Process_adp process) {this.process = process;} Process_adp process; public boolean Exec(Io_url src, Io_url trg) { process.Run(src, trg); return process.Exit_code_pass(); diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java index f01d14493..01ae31af8 100644 --- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java +++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java @@ -16,14 +16,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; +import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.bldrs.wms.*; public interface Xof_img_wkr_query_img_size { SizeAdp Exec(Io_url url); } class Xof_img_wkr_query_img_size_imageMagick implements Xof_img_wkr_query_img_size { - private final Xowmf_mgr wmf_mgr; private final ProcessAdp cmd; - public Xof_img_wkr_query_img_size_imageMagick(Xowmf_mgr wmf_mgr, ProcessAdp cmd) {this.wmf_mgr = wmf_mgr; this.cmd = cmd;} + private final Xowmf_mgr wmf_mgr; private final Process_adp cmd; + public Xof_img_wkr_query_img_size_imageMagick(Xowmf_mgr wmf_mgr, Process_adp cmd) {this.wmf_mgr = wmf_mgr; this.cmd = cmd;} public SizeAdp Exec(Io_url url) { cmd.Prog_fmt_(String_.Replace(wmf_mgr.Download_wkr().Download_xrg().Prog_fmt_hdr(), "~", "~~") + " querying: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}"); cmd.Run(url); diff --git a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java index abe28a8f6..b29717428 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.btries.*; +import gplx.core.btries.*; import gplx.core.envs.*; public class Xof_repo_itm_ { public static final int Dir_depth_null = -1, Dir_depth_wmf = 2, Dir_depth_xowa = 4; public static final byte Mode_orig = 0, Mode_thumb = 1, Mode_nil = Byte_.Max_value_127; diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java index 73e2fb7b3..304d09314 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.gui.*; import gplx.xowa.wikis.tdbs.metas.*; diff --git a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java index 2bd9c20f5..035ecb034 100644 --- a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.specials.search.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.users.*; import gplx.xowa.langs.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.urls.url_macros.*; diff --git a/400_xowa/src/gplx/xowa/guis/Xog_resizer.java b/400_xowa/src/gplx/xowa/guis/Xog_resizer.java index b19db1538..f149d6ec1 100644 --- a/400_xowa/src/gplx/xowa/guis/Xog_resizer.java +++ b/400_xowa/src/gplx/xowa/guis/Xog_resizer.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.users.*; import gplx.xowa.guis.views.*; public class Xog_resizer { public void Exec_win_resize(Xoae_app app, int main_w, int main_h) { diff --git a/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java b/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java index 7e9abd48a..314784f07 100644 --- a/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java +++ b/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java @@ -21,7 +21,7 @@ import gplx.xowa.parsers.lnkis.*; public class Xof_orig_file_downloader { public static Xof_fsdb_itm Make_fsdb(Xowe_wiki wiki, byte[] lnki_ttl, Xof_img_size img_size, Xof_url_bldr url_bldr) { Xof_fsdb_itm fsdb = new Xof_fsdb_itm(); - lnki_ttl = Xoa_ttl.Replace_spaces(Xoa_app_.Utl__encoder_mgr().Http_url().Decode(lnki_ttl)); + lnki_ttl = Xoa_ttl.Replace_spaces(gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Decode(lnki_ttl)); fsdb.Init_at_lnki(Xof_exec_tid.Tid_viewer_app, wiki.Domain_itm().Abrv_xo(), lnki_ttl, Xop_lnki_type.Id_none, Xop_lnki_tkn.Upright_null, Xof_img_size.Size__neg1, Xof_img_size.Size__neg1, Xof_lnki_time.Null, Xof_lnki_page.Null, Xof_patch_upright_tid_.Tid_all); fsdb.Init_at_hdoc(Int_.Max_value, Xof_html_elem.Tid_img);// NOTE: set elem_id to "impossible" number, otherwise it will auto-update an image on the page with a super-large size; [[File:Alfred Sisley 062.jpg]] Xof_orig_itm orig = wiki.File__orig_mgr().Find_by_ttl_or_null(lnki_ttl); if (orig == Xof_orig_itm.Null) return null; // orig not found; need orig in order to get repo diff --git a/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java index e97f7d554..143a21942 100644 --- a/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.net.*; +import gplx.core.net.*; import gplx.core.envs.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.doms.*; import gplx.xowa.guis.views.*; @@ -60,13 +60,13 @@ public class Xog_url_wkr { } private Xoa_url Exec_url_file(Xoae_app app, Xowe_wiki cur_wiki, Xoae_page page, Xog_win_itm win, byte[] href_bry) { // EX: file:///xowa/A.png Xowe_wiki wiki = (Xowe_wiki)page.Commons_mgr().Source_wiki_or(cur_wiki); - 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()); + Io_url href_url = Io_url_.http_any_(String_.new_u8(gplx.langs.htmls.encoders.Gfo_url_encoder_.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_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, gplx.xowa.htmls.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))); if (xowa_ttl == null) {app.Gui_mgr().Kit().Ask_ok("", "", "could not find find anchor with href in html: href=~{0}", href_bry); return Rslt_handled;} - byte[] lnki_ttl = Xoa_app_.Utl__encoder_mgr().Http_url().Decode(Xoa_ttl.Replace_spaces(Bry_.new_u8(xowa_ttl))); + byte[] lnki_ttl = gplx.langs.htmls.encoders.Gfo_url_encoder_.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.Instance.ExistsFil(href_url)) { // if (!Xof_orig_file_downloader.Get_to_url(fsdb, href_url, wiki, lnki_ttl, url_bldr)) @@ -75,7 +75,7 @@ public class Xog_url_wkr { } gplx.core.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(href_url); if (fil.Exists()) { - ProcessAdp media_player = app.Prog_mgr().App_by_ext(href_url.Ext()); + Process_adp media_player = app.Prog_mgr().App_by_ext(href_url.Ext()); media_player.Run(href_url); fsdb.File_size_(fil.Size()); gplx.xowa.files.caches.Xou_cache_mgr cache_mgr = wiki.Appe().User().User_db_mgr().Cache_mgr(); diff --git a/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java index cf395b047..477ad2f6b 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.threads.*; +import gplx.core.threads.*; import gplx.core.envs.*; public class Load_page_wkr implements Gfo_thread_wkr { private static final Object thread_lock = new Object(); private static boolean running = false; private final Xog_tab_itm tab; diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java index 561c7f33b..15bee4156 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java @@ -172,7 +172,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { private boolean Scroll_page_by_id(String id) { return (id == null) ? false - : 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)); + : html_box.Html_js_eval_proc_as_bool(Xog_js_procs.Win__scroll_elem_into_view, gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode_str(id)); } public void Js_enabled_(boolean v) { html_box.Html_js_enabled_(v); diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java index 8107d0ccf..94d065bea 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.threads.*; import gplx.gfui.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.bnds.*; +import gplx.core.threads.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.apps.cfgs.old.*; diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java index 3020074ae..8478b14dc 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.threads.*; +import gplx.core.threads.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.urls.*; import gplx.xowa.guis.views.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.apps.urls.*; import gplx.xowa.files.*; diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java index b8ea4f0fa..35e8422ef 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java @@ -20,7 +20,7 @@ import gplx.gfui.*; import gplx.xowa.htmls.hrefs.*; public class Xog_win_itm__prog_href_mgr { 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_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 + href = gplx.langs.htmls.encoders.Gfo_url_encoder_.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/guis/views/boots/Xog_error_data.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.java index 141a06f9b..a2d4346aa 100644 --- a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.java +++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; +import gplx.core.envs.*; public class Xog_error_data { public Xog_error_data(String full_msg, String err_details, String err_msg) { this.full_msg = full_msg; diff --git a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java index 1b5a771c4..0fb2a13b2 100644 --- a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java +++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; -import gplx.langs.htmls.encoders.*; +import gplx.langs.htmls.encoders.*; import gplx.core.envs.*; import java.awt.*; import java.awt.event.*; import java.io.IOException; @@ -77,7 +77,7 @@ public class Xog_error_win extends JFrame implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_send_mail)) { try { - Url_encoder url_encoder = Xoa_app_.Utl__encoder_mgr().Fsys_safe(); + Gfo_url_encoder url_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_safe; String subject = url_encoder.Encode_str("XOWA boot error: " + error_data.Err_msg()); String body = url_encoder.Encode_str(error_data.Err_details()); Desktop.getDesktop().mail(new URI("mailto:gnosygnu+xowa_error_boot@gmail.com?subject=" + subject + "&body=" + body)); diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java b/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java index 43a871ea2..1dbb85ec4 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java @@ -18,11 +18,11 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.langs.htmls.encoders.*; public class Xoh_cfg_file { - public Xoh_cfg_file(Url_encoder url_encoder, Io_url xowa_dir) { + public Xoh_cfg_file(Gfo_url_encoder url_encoder, Io_url xowa_dir) { Io_url mw_file_dir = xowa_dir.GenSubDir_nest("file", "mediawiki.file"); - img_media_play_btn = url_encoder.Encode_http(mw_file_dir.GenSubFil("play.png")); - img_media_info_btn = url_encoder.Encode_http(mw_file_dir.GenSubFil("info.png")); - img_thumb_magnify = url_encoder.Encode_http(mw_file_dir.GenSubFil("magnify-clip.png")); + img_media_play_btn = url_encoder.Encode_to_file_protocol(mw_file_dir.GenSubFil("play.png")); + img_media_info_btn = url_encoder.Encode_to_file_protocol(mw_file_dir.GenSubFil("info.png")); + img_thumb_magnify = url_encoder.Encode_to_file_protocol(mw_file_dir.GenSubFil("magnify-clip.png")); } public byte[] Img_media_play_btn() {return img_media_play_btn;} private final byte[] img_media_play_btn; public byte[] Img_media_info_btn() {return img_media_info_btn;} private final byte[] img_media_info_btn; diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_consts.java b/400_xowa/src/gplx/xowa/htmls/Xoh_consts.java index e26b8237b..6a6c7293f 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_consts.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_consts.java @@ -30,7 +30,7 @@ public class Xoh_consts { , Space_2 = Bry_.new_a7(" ") , A_bgn = Bry_.new_a7("") , Div_bgn_open = Bry_.new_a7("
") diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java index 842f42b1d..4f91564ee 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java @@ -44,7 +44,7 @@ public class Xoh_page implements Xoa_page { public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr(); public int Exec_tid() {return exec_tid;} private int exec_tid = Xof_exec_tid.Tid_wiki_page; public byte[] Html_head_xtn() {return html_head_xtn;} public void Html_head_xtn_(byte[] v) {html_head_xtn = v;} private byte[] html_head_xtn = Bry_.Empty; // drd:web_browser - public byte[] Url_bry_safe() {return page_url == null ? Bry_.Empty : page_url.Raw();} + public byte[] Url_bry_safe() {return page_url == null ? Bry_.Empty : page_url.To_bry(Bool_.Y, Bool_.Y);} public void Init(Xow_wiki wiki, Xoa_url page_url, Xoa_ttl page_ttl, int page_id) { this.wiki = wiki; this.page_url = page_url; this.page_ttl = page_ttl; this.page_id = page_id; this.Clear(); @@ -56,6 +56,7 @@ public class Xoh_page implements Xoa_page { public Xoh_page Ctor_by_page(Bry_bfr tmp_bfr, Xoae_page page) { this.page_id = page.Revision_data().Id(); this.body = page.Hdump_data().Body(); + this.page_url = page.Url(); Xopg_html_data html_data = page.Html_data(); Xoh_head_mgr mod_mgr = html_data.Head_mgr(); head_mgr.Init(mod_mgr.Itm__mathjax().Enabled(), mod_mgr.Itm__popups().Bind_hover_area(), mod_mgr.Itm__gallery().Enabled(), mod_mgr.Itm__hiero().Enabled()); @@ -64,7 +65,7 @@ public class Xoh_page implements Xoa_page { this.sidebar_div = Xoh_page_.Save_sidebars(tmp_bfr, page, html_data); return this; } - private void Clear() { + public void Clear() { this.body_zip_tid = -1; this.body_hzip_tid = -1; display_ttl = content_sub = sidebar_div = Bry_.Empty; img_itms = Xohd_img_itm__base.Ary_empty; diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java index d46025445..d2044cb27 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; -class Xoh_page_ { +public class Xoh_page_ { public static byte[] Save_sidebars(Bry_bfr tmp_bfr, Xoae_page page, Xopg_html_data html_data) { Xopg_xtn_skin_mgr mgr = html_data.Xtn_skin_mgr(); int len = mgr.Count(); diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 7d6058c3c..5d2fac80f 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -21,7 +21,7 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.langs.htmls import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.portal.*; -public class Xoh_page_wtr_wkr extends gplx.core.brys.Bfr_arg_base { +public class Xoh_page_wtr_wkr { private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); private final Xoh_page_wtr_mgr mgr; private final byte page_mode; private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); // In other languages @@ -44,14 +44,20 @@ public class Xoh_page_wtr_wkr extends gplx.core.brys.Bfr_arg_base { break; } Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page bfr to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do - Bfr_arg__add(page_bfr); - Write_page_by_tid(view_mode, bfr, fmtr, page_bfr.To_bry_and_rls()); - if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time - Write_page_by_tid(page_mode, bfr, mgr.Page_html_fmtr(), Html_utl.Escape_html_as_bry(bfr.To_bry_and_clear())); - wdata_lang_wtr.Page_(null); + if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Html().Page().View_html_generates_hdump()) { + Write_body(page_bfr, Xoh_wtr_ctx.Hdump, page); + Write_page_by_tid(page_mode, bfr, mgr.Page_html_fmtr(), Html_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear())); + } + else { + Write_body(page_bfr, Xoh_wtr_ctx.Basic, page); + Write_page_by_tid(view_mode, bfr, fmtr, page_bfr.To_bry_and_rls()); + if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time + Write_page_by_tid(page_mode, bfr, mgr.Page_html_fmtr(), Html_utl.Escape_html_as_bry(bfr.To_bry_and_clear())); + wdata_lang_wtr.Page_(null); + } } else - Bfr_arg__add(bfr); + Write_body(bfr, Xoh_wtr_ctx.Basic, page); this.page = null; return bfr.To_bry_and_clear(); } @@ -97,7 +103,6 @@ public class Xoh_page_wtr_wkr extends gplx.core.brys.Bfr_arg_base { Xoh_page_wtr_wkr_.Bld_head_end(bfr, page); // add after Xoh_page_wtr_wkr_.Bld_html_end(bfr, page); // add after } - @Override public void Bfr_arg__add(Bry_bfr bfr) {Write_body(bfr, Xoh_wtr_ctx.Basic, page);} public void Write_body(Bry_bfr bfr, Xoh_wtr_ctx hctx, Xoae_page page) { synchronized (thread_lock_2) { this.page = page; this.wiki = page.Wikie(); this.app = wiki.Appe(); @@ -166,7 +171,7 @@ public class Xoh_page_wtr_wkr extends gplx.core.brys.Bfr_arg_base { ) { app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len); if (app.Ctg_mgr().Pagecats_grouping_enabled()) - app.Ctg_mgr().Pagectgs_wtr().Write(bfr, wiki, page); + app.Ctg_mgr().Pagectgs_wtr().Write(bfr, wiki, page, hctx); else wiki.Html_mgr().Ctg_mgr().Bld(bfr, page, ctgs_len); } diff --git a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java index 151b45cb7..e6f3a35bc 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -26,10 +26,10 @@ public class Xow_html_mgr implements GfoInvkAble { Xoae_app app = wiki.Appe(); page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != gplx.gfui.Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem Io_url file_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("mediawiki.file"); - img_media_play_btn = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(file_dir.GenSubFil("play.png")); - img_media_info_btn = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(file_dir.GenSubFil("info.png")); - img_thumb_magnify = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(file_dir.GenSubFil("magnify-clip.png")); - img_xowa_protocol = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(app.Fsys_mgr().Bin_xowa_file_dir().GenSubFil_nest("app.general", "xowa_exec.png")); + img_media_play_btn = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys.Encode_to_file_protocol(file_dir.GenSubFil("play.png")); + img_media_info_btn = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys.Encode_to_file_protocol(file_dir.GenSubFil("info.png")); + img_thumb_magnify = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys.Encode_to_file_protocol(file_dir.GenSubFil("magnify-clip.png")); + img_xowa_protocol = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys.Encode_to_file_protocol(app.Fsys_mgr().Bin_xowa_file_dir().GenSubFil_nest("app.general", "xowa_exec.png")); portal_mgr = new Xow_portal_mgr(wiki); imgs_mgr = new Xoh_imgs_mgr(this); module_mgr = new Xow_module_mgr(wiki); diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java index a0c45ba4c..7e54b98c3 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java @@ -40,7 +40,7 @@ public class Xow_hdump_mgr { Init_by_db(default_zip_tid, default_hzip_enable); } public void Init_by_db(byte default_zip_tid, boolean default_hzip_enable) { - int dflt_hzip_tid = default_hzip_enable ? Xoh_hzip_dict_.Hzip__none : Xoh_hzip_dict_.Hzip__v1; + int dflt_hzip_tid = default_hzip_enable ? Xoh_hzip_dict_.Hzip__v1 : Xoh_hzip_dict_.Hzip__none; save_mgr.Init_by_db(default_zip_tid, dflt_hzip_tid); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java index e2f307462..53e7c296c 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java @@ -25,7 +25,7 @@ public class Xow_hdump_mgr__load { private final Xoh_page tmp_hpg; private final Bry_bfr tmp_bfr; private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm(); public Xow_hdump_mgr__load(Xow_wiki wiki, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, Xoh_page tmp_hpg, Bry_bfr tmp_bfr) { this.wiki = wiki; this.hzip_mgr = hzip_mgr; this.zip_mgr = zip_mgr; this.tmp_hpg = tmp_hpg; this.tmp_bfr = tmp_bfr; - this.make_mgr = new Xoh_make_mgr(wiki.App().Usr_dlg(), wiki.App().Fsys_mgr(), Xoa_app_.Utl__encoder_mgr().Fsys(), wiki.Domain_bry()); + this.make_mgr = new Xoh_make_mgr(wiki.App().Usr_dlg(), wiki.App().Fsys_mgr(), gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys, wiki.Domain_bry()); } public Xoh_make_mgr Make_mgr() {return make_mgr;} private final Xoh_make_mgr make_mgr; public void Load(Xoae_page wpg) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java index d7c7aedae..1a93f5d3f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java @@ -48,7 +48,7 @@ public class Xow_hdump_mgr__save { private static byte[] Write(Bry_bfr bfr, Xow_wiki wiki, Xoh_page hpg, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, int zip_tid, int hzip_tid, byte[] src) { if (hzip_tid == Xoh_hzip_dict_.Hzip__v1) { hzip_mgr.Encode(bfr.Clear(), wiki, hpg, src); - src = bfr.To_bry_and_rls(); + src = bfr.To_bry_and_clear(); } if (zip_tid > gplx.core.ios.Io_stream_.Tid_raw) src = zip_mgr.Zip((byte)zip_tid, src); diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java similarity index 57% rename from 400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java index 339ca96b0..ed39ac87f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java @@ -19,23 +19,34 @@ package gplx.xowa.htmls.core.bldrs; import gplx.*; import gplx.xowa.*; import gp import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.dbs.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.*; -public class Xob_hdump_mgr { - private final Xowe_wiki wiki; private final Xow_hdump_mgr hdump_mgr; - private final Xob_ns_to_db_mgr ns_to_db_mgr; int prv_row_len = 0; - private final Hzip_stat_tbl stats_tbl; private final Hzip_stat_itm tmp_stat_itm; - private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_mb); - public Xob_hdump_mgr(Xowe_wiki wiki, Db_conn make_conn, long hdump_db_max, byte zip_tid, boolean hzip_enabled) { +import gplx.xowa.apps.apis.xowa.bldrs.imports.*; +public class Xob_hdump_bldr implements GfoInvkAble { + private boolean enabled, hzip_enabled, hzip_compare; + private Xowe_wiki wiki; private Xow_hdump_mgr hdump_mgr; + private Xob_ns_to_db_mgr ns_to_db_mgr; int prv_row_len = 0; + private Hzip_stat_tbl stats_tbl; private Hzip_stat_itm tmp_stat_itm; + private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_mb); + public boolean Init(Xowe_wiki wiki, Db_conn make_conn) { + if (!enabled) return false; this.wiki = wiki; this.hdump_mgr = wiki.Html__hdump_mgr(); this.tmp_stat_itm = hdump_mgr.Hzip_mgr().Hctx().Bicode__stat(); - hdump_mgr.Init_by_db(zip_tid, hzip_enabled); this.stats_tbl = new Hzip_stat_tbl(make_conn); + Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import(); + hdump_mgr.Init_by_db(import_cfg.Zip_tid_html(), hzip_enabled); Xowd_db_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); - this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(core_data_mgr.Db__core()), core_data_mgr, hdump_db_max); + this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(core_data_mgr.Db__core()), core_data_mgr, import_cfg.Html_db_max()); Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_html_data, wiki.Ns_mgr(), gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); + return true; } public void Insert(Xoae_page page) { - Make_page_body(page); - Xowd_db_file html_db = ns_to_db_mgr.Get_by_ns(page.Ttl().Ns().Bldr_data(), prv_row_len); // get html_db - this.prv_row_len = hdump_mgr.Save_mgr().Save(tmp_hpg.Ctor_by_page(tmp_bfr, page), html_db, true); // save to db + page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last + wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // write to html in hdump mode + byte[] html_orig_bry = tmp_bfr.To_bry_and_clear(); + page.Hdump_data().Body_(html_orig_bry); // write to body bry + Xowd_db_file html_db = ns_to_db_mgr.Get_by_ns(page.Ttl().Ns().Bldr_data(), prv_row_len); // get html_db + this.prv_row_len = hdump_mgr.Save_mgr().Save(tmp_hpg.Ctor_by_page(tmp_bfr, page), html_db, true); // save to db + if (hzip_compare) { + // Compare(html_orig_bry, hdump_mgr.Save_mgr()); + } stats_tbl.Insert(tmp_hpg, tmp_stat_itm, page.Root().Root_src().length, tmp_hpg.Body().length, prv_row_len); // save stats } public void Bld_term() {this.Commit(); ns_to_db_mgr.Rls_all();} @@ -43,9 +54,12 @@ public class Xob_hdump_mgr { ns_to_db_mgr.Commit(); // wiki_db_mgr.Tbl__cfg().Update_long(Cfg_grp_hdump_make, Cfg_itm_hdump_size, hdump_db_size); // update cfg; should happen after commit entries } - private void Make_page_body(Xoae_page page) { - page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last - wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // write to html again, except in hdump mode - page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); // write to body bry + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); + else if (ctx.Match(k, Invk_hzip_enabled_)) hzip_enabled = m.ReadYn("v"); + else if (ctx.Match(k, Invk_hzip_compare_)) hzip_compare = m.ReadYn("v"); + else return GfoInvkAble_.Rv_unhandled; + return this; } + private static final String Invk_enabled_ = "enabled_", Invk_hzip_enabled_ = "hzip_enabled_", Invk_hzip_compare_ = "hzip_compare_"; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java index 3935d64cd..035980f31 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java @@ -48,6 +48,6 @@ class Xob_ns_to_db_wkr__html implements Xob_ns_to_db_wkr { , ", {0}" , ", p.page_redirect_id" , "FROM page p" - , " JOIN html_page h ON p.page_id = h.page_id" + , " JOIN html h ON p.page_id = h.page_id" ); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java index b4a4435b7..b1c92403b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java @@ -445,7 +445,7 @@ public class Xoh_html_wtr { bfr.Add_byte(quote_byte); } private static void Xnde_atr_write_id(Bry_bfr bfr, Xoae_app app, byte[] bry, int bgn, int end) { - Xoa_app_.Utl__encoder_mgr().Id().Encode(bfr, bry, bgn, end); + gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode(bfr, bry, bgn, end); } private void Xnde_subs(Xop_ctx ctx, Xoh_wtr_ctx hctx, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) { int subs_len = xnde.Subs_len(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java index 0adc08c45..d4ab02466 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.core.envs.*; import gplx.langs.htmls.*; import gplx.xowa.apps.fsys.*; public class Xoh_tidy_mgr implements GfoInvkAble { @@ -25,7 +26,7 @@ public class Xoh_tidy_mgr implements GfoInvkAble { wkr_tidy.Init_by_app(app); wkr_jtidy.Init_by_app(app); Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); - ProcessAdp.ini_(this, app.Usr_dlg(), wkr_tidy, cmd_eval, ProcessAdp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target"); + Process_adp.ini_(this, app.Usr_dlg(), wkr_tidy, cmd_eval, Process_adp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target"); Wkr_tid_(Xoh_tidy_wkr_.Tid_jtidy); } public boolean Enabled() {return enabled;} private boolean enabled = true; diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy.java index 007efdbfa..0b1456c09 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy.java @@ -21,6 +21,8 @@ import java.io.ByteArrayOutputStream; import org.w3c.tidy.Configuration; import org.w3c.tidy.Tidy; +import gplx.core.envs.*; +import gplx.core.envs.*; class Xoh_tidy_wkr_jtidy implements Xoh_tidy_wkr { private Tidy tidy; private ByteArrayOutputStream wtr; diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java index bcdb1e517..eec8530ba 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.core.envs.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.w3c.tidy.Tidy; diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_tidy.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_tidy.java index 82ea75e59..2fc91d967 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_tidy.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_tidy.java @@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; -public class Xoh_tidy_wkr_tidy extends ProcessAdp implements Xoh_tidy_wkr { private Xoae_app app; private Io_url tidy_source, tidy_target; +import gplx.core.envs.*; +public class Xoh_tidy_wkr_tidy extends Process_adp implements Xoh_tidy_wkr { private Xoae_app app; private Io_url tidy_source, tidy_target; public byte Tid() {return Xoh_tidy_wkr_.Tid_tidy;} public void Init_by_app(Xoae_app app) { this.app = app; } - @Override public ProcessAdp Tmp_dir_(Io_url v) { + @Override public Process_adp Tmp_dir_(Io_url v) { tidy_source = v.GenSubFil("tidy_source.html"); tidy_target = v.GenSubFil("tidy_target.html"); return super.Tmp_dir_(v); diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_itm.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_itm.java index 5707a551f..0ad5f31d2 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; public class Hzip_stat_itm { public void Clear() { - a_rhs = lnki_text_n = lnki_text_y = lnke_txt = lnke_brk_text_n = lnke_brk_text_y = 0; + a_rhs = lnki_text_n = lnki_text_y = lnke__free = lnke__auto = lnke__text = 0; hdr_1 = hdr_2 = hdr_3 = hdr_4 = hdr_5 = hdr_6 = 0; img_full = 0; space = 0; @@ -27,9 +27,9 @@ public class Hzip_stat_itm { public int A_rhs() {return a_rhs;} public void A_rhs_add() {++a_rhs;} private int a_rhs; public int Lnki_text_n() {return lnki_text_n;} public void Lnki_text_n_add() {++lnki_text_n;} private int lnki_text_n; public int Lnki_text_y() {return lnki_text_y;} public void Lnki_text_y_add() {++lnki_text_y;} private int lnki_text_y; - public int Lnke_txt() {return lnke_txt;} public void Lnke_txt_add() {++lnke_txt;} private int lnke_txt; - public int Lnke_brk_text_n() {return lnke_brk_text_n;} public void Lnke_brk_text_n_add() {++lnke_brk_text_n;} private int lnke_brk_text_n; - public int Lnke_brk_text_y() {return lnke_brk_text_y;} public void Lnke_brk_text_y_add() {++lnke_brk_text_y;} private int lnke_brk_text_y; + public int Lnke__free() {return lnke__free;} public void Lnke__free__add() {++lnke__free;} private int lnke__free; + public int Lnke__auto() {return lnke__auto;} public void Lnke__auto__add() {++lnke__auto;} private int lnke__auto; + public int Lnke__text() {return lnke__text;} public void Lnke__text__add() {++lnke__text;} private int lnke__text; public int Img_full() {return img_full;} public void Img_full_add() {++img_full;} private int img_full; public int Hdr_1() {return hdr_1;} private int hdr_1; public int Hdr_2() {return hdr_2;} private int hdr_2; diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_tbl.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_tbl.java index 45c716314..b53cf24f1 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Hzip_stat_tbl.java @@ -25,7 +25,7 @@ public class Hzip_stat_tbl implements RlsAble { , fld_body_len = flds.Add_int("body_len"), fld_display_ttl_len = flds.Add_int("display_ttl_len"), fld_content_sub_len = flds.Add_int("content_sub_len"), fld_sidebar_div_len = flds.Add_int("sidebar_div_len") , fld_js_math = flds.Add_int("js_math"), fld_js_imap = flds.Add_int("js_imap"), fld_js_packed = flds.Add_int("js_packed"), fld_js_hiero = flds.Add_int("js_hiero") , fld_a_rhs = flds.Add_int("a_rhs"), fld_lnki_text_n = flds.Add_int("lnki_text_n"), fld_lnki_text_y = flds.Add_int("lnki_text_y") - , fld_lnke_txt = flds.Add_int("lnke_txt"), fld_lnke_brk_text_n = flds.Add_int("lnke_brk_text_n"), fld_lnke_brk_text_y = flds.Add_int("lnke_brk_text_y") + , fld_lnke_free = flds.Add_int("lnke_free"), fld_lnke_auto = flds.Add_int("lnke_auto"), fld_lnke_text = flds.Add_int("lnke_text") , fld_hdr_1 = flds.Add_int("hdr_1"), fld_hdr_2 = flds.Add_int("hdr_2"), fld_hdr_3 = flds.Add_int("hdr_3"), fld_hdr_4 = flds.Add_int("hdr_4"), fld_hdr_5 = flds.Add_int("hdr_5"), fld_hdr_6 = flds.Add_int("hdr_6") , fld_img_full = flds.Add_int("img_full") ; @@ -59,9 +59,9 @@ public class Hzip_stat_tbl implements RlsAble { .Val_int(fld_a_rhs , hzip.A_rhs()) .Val_int(fld_lnki_text_n , hzip.Lnki_text_n()) .Val_int(fld_lnki_text_y , hzip.Lnki_text_y()) - .Val_int(fld_lnke_txt , hzip.Lnke_txt()) - .Val_int(fld_lnke_brk_text_n , hzip.Lnke_brk_text_n()) - .Val_int(fld_lnke_brk_text_y , hzip.Lnke_brk_text_y()) + .Val_int(fld_lnke_free , hzip.Lnke__free()) + .Val_int(fld_lnke_auto , hzip.Lnke__auto()) + .Val_int(fld_lnke_text , hzip.Lnke__text()) .Val_int(fld_hdr_1 , hzip.Hdr_1()) .Val_int(fld_hdr_2 , hzip.Hdr_2()) .Val_int(fld_hdr_3 , hzip.Hdr_3()) diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_dict_.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_dict_.java index 318203380..721d5e055 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_dict_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_dict_.java @@ -28,6 +28,7 @@ public class Xoh_hzip_dict_ { , Tid__lnki = 3 + Base85_ascii , Tid__img = 4 + Base85_ascii , Tid__thm = 5 + Base85_ascii + , Tid__gly = 6 + Base85_ascii , Tid__escape = 84 + Base85_ascii ; public static final byte[] @@ -38,6 +39,7 @@ public class Xoh_hzip_dict_ { , Bry__lnki = Bry_.new_ints(Escape, Tid__lnki) , Bry__img = Bry_.new_ints(Escape, Tid__img) , Bry__thm = Bry_.new_ints(Escape, Tid__thm) + , Bry__gly = Bry_.new_ints(Escape, Tid__gly) ; public static final String Key__escape = "escape" @@ -47,6 +49,7 @@ public class Xoh_hzip_dict_ { , Key__lnki = "lnki" , Key__img = "img" , Key__thm = "thm" + , Key__gly = "gly" ; public static final int Hzip__none = 0, Hzip__v1 = 1; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_fxt.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_fxt.java index aabea14dc..1b7b8823e 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_fxt.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_fxt.java @@ -30,11 +30,21 @@ public class Xoh_hzip_fxt { this.hzip_mgr = parser_fxt.Wiki().Html__hdump_mgr().Hzip_mgr(); hpg.Init(wiki, Xoa_url.blank(), parser_fxt.Wiki().Ttl_parse(Xoa_page_.Main_page_bry), 1); } + public Xow_wiki Wiki() {return parser_fxt.Wiki();} + public void Clear() {hpg.Clear();} + public Xowe_wiki Prep_create_wiki(String alias, String domain) { + Xowe_wiki rv = Xoa_app_fxt.wiki_(parser_fxt.App(), domain); + parser_fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_u8(alias), Bry_.new_u8(domain), null); + return rv; + } public void Test__bicode(String hzip, String html) {Test__bicode(hzip, html, html);} public void Test__bicode(String hzip, String html_enc, String html_dec) { - hzip = Html_utl.Replace_apos(Xoh_hzip_fxt.Escape(hzip)); html_enc = Html_utl.Replace_apos(html_enc); html_dec = Html_utl.Replace_apos(html_dec); + Test__bicode_raw(hzip, html_enc, html_dec); + } + public void Test__bicode_raw(String hzip, String html_enc, String html_dec) { + hzip = Xoh_hzip_fxt.Escape(hzip); Test__encode__raw(hzip, html_enc); Test__decode__raw(hzip, html_dec); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_mgr.java index 072f184c4..6d8b9962b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_mgr.java @@ -44,8 +44,7 @@ public class Xoh_hzip_mgr { pos = rdr.Pos(); } catch (Exception e) { wkr.Pool__rls(); - Err err = Err_.cast_or_make(e); - if (!err.Logged()) Gfo_usr_dlg_.Instance.Warn_many("", "", Err_.Message_gplx_log(e), "page_url", page_url, "mid", Bry_.Mid_by_len_safe(src, pos, 255)); + gplx.langs.htmls.Html_utl.Log(e, "hzip decode failed", hpg.Url_bry_safe(), src, pos); pos += 2; // 2: skip escape and hook } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java index 0b0cfa828..ee2ded9ae 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java @@ -29,7 +29,7 @@ public class Xoh_make_mgr { private final Bry_rdr parser = new Bry_rdr(); private final Xoh_hdoc_ctx hctx = new Xoh_hdoc_ctx(); private final Xoh_hdoc_parser make_parser = new Xoh_hdoc_parser(new Xoh_hdoc_wkr__make()); - public Xoh_make_mgr(Gfo_usr_dlg usr_dlg, Xoa_fsys_mgr fsys_mgr, Url_encoder fsys_encoder, byte[] wiki_domain) { + public Xoh_make_mgr(Gfo_usr_dlg usr_dlg, Xoa_fsys_mgr fsys_mgr, Gfo_url_encoder fsys_encoder, byte[] wiki_domain) { this.usr_dlg = usr_dlg; this.root_dir = fsys_mgr.Root_dir().To_http_file_bry(); this.file_dir = fsys_mgr.File_dir().To_http_file_bry(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java index 89e72f936..568a341a3 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java @@ -31,10 +31,10 @@ public class Xoh_make_trie_ { , Bry__file_info = Bry_.new_a7(". */ package gplx.xowa.htmls.core.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.mkrs.*; import gplx.xowa.htmls.core.hzips.*; -import gplx.xowa.files.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.ttls.*; +import gplx.xowa.files.*; import gplx.xowa.apps.fsys.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.apps.metas.*; public class Xoh_hdoc_ctx { private byte[] fsys__file; public byte[] Fsys__root() {return fsys__root;} private byte[] fsys__root; public byte[] Fsys__file__comm() {return fsys__file__comm;} private byte[] fsys__file__comm; public byte[] Fsys__file__wiki() {return fsys__file__wiki;} private byte[] fsys__file__wiki; + public Xoa_app App() {return app;} private Xoa_app app; public byte[] Wiki__domain_bry() {return wiki__domain_bry;} private byte[] wiki__domain_bry; public Xow_ttl_parser Wiki__ttl_parser() {return wiki__ttl_parser;} private Xow_ttl_parser wiki__ttl_parser; public Xoa_file_mgr File__mgr() {return file__mgr;} private final Xoa_file_mgr file__mgr = new Xoa_file_mgr(); @@ -33,6 +35,7 @@ public class Xoh_hdoc_ctx { public int Lnki__uid__nxt() {return ++lnki__uid;} private int lnki__uid; // NOTE: should be 0, but for historical reasons, 1st lnki starts at 2; EX: id='xowa_lnki_2' public void Init_by_app(Xoa_app app) { Xoa_fsys_mgr fsys_mgr = app.Fsys_mgr(); + this.app = app; this.fsys__root = fsys_mgr.Root_dir().To_http_file_bry(); this.fsys__file = fsys_mgr.File_dir().To_http_file_bry(); this.fsys__file__comm = Bry_.Add(fsys__file, Xow_domain_itm_.Bry__commons, Byte_ascii.Slash_bry); @@ -49,4 +52,5 @@ public class Xoh_hdoc_ctx { bicode__stat.Clear(); this.lnki__uid = 1; // NOTE: should be 0, but for historical reasons, 1st lnki starts at 2; EX: id='xowa_lnki_2' } + public static final int Invalid = -1; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr.java index d8c19cb94..d1c57116f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr.java @@ -28,4 +28,5 @@ public interface Xoh_hdoc_wkr { void On_lnki (gplx.xowa.htmls.core.wkrs.lnkis.Xoh_lnki_parser arg); void On_img (gplx.xowa.htmls.core.wkrs.imgs.Xoh_img_parser arg); void On_thm (gplx.xowa.htmls.core.wkrs.thms.Xoh_thm_parser arg); + void On_gly (gplx.xowa.htmls.core.wkrs.glys.Xoh_gly_grp_parser arg); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java index 0de5193db..cf0dc8aaa 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java @@ -33,4 +33,5 @@ public class Xoh_hdoc_wkr__hzip implements Xoh_hdoc_wkr { public void On_lnki (gplx.xowa.htmls.core.wkrs.lnkis.Xoh_lnki_parser arg) {hctx.Mkr().Lnki__hzip().Encode(bfr, hctx, stat_itm, src, arg).Pool__rls();} public void On_thm (gplx.xowa.htmls.core.wkrs.thms.Xoh_thm_parser arg) {hctx.Mkr().Thm__hzip().Encode(bfr, this, stat_itm, src, arg).Pool__rls();} public void On_img (gplx.xowa.htmls.core.wkrs.imgs.Xoh_img_parser arg) {hctx.Mkr().Img__hzip().Encode(bfr, stat_itm, src, arg, Bool_.Y).Pool__rls();} + public void On_gly (gplx.xowa.htmls.core.wkrs.glys.Xoh_gly_grp_parser arg) {hctx.Mkr().Gly__hzip().Encode(bfr, stat_itm, src, arg).Pool__rls();} } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__make.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__make.java index baed77284..80e620bf2 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__make.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_wkr__make.java @@ -35,4 +35,5 @@ public class Xoh_hdoc_wkr__make implements Xoh_hdoc_wkr { public void On_hdr (gplx.xowa.htmls.core.wkrs.hdrs.Xoh_hdr_parser arg) {wkr__hdr.Make(bfr, hpg, src, arg);} public void On_img (gplx.xowa.htmls.core.wkrs.imgs.Xoh_img_parser arg) {wkr__img.Make_by_parse(bfr, hpg, hctx, src, arg);} public void On_thm (gplx.xowa.htmls.core.wkrs.thms.Xoh_thm_parser arg) {bfr.Add_mid(src, arg.Rng_bgn(), arg.Rng_end());} + public void On_gly (gplx.xowa.htmls.core.wkrs.glys.Xoh_gly_grp_parser arg) {} } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_itm_parser_fxt_base.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_itm_parser_fxt_base.java index 6b743e7eb..f7991a9bc 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_itm_parser_fxt_base.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_itm_parser_fxt_base.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.core.brys.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; public abstract class Xoh_itm_parser_fxt_base { private final Bry_rdr rdr = new Bry_rdr(); protected byte[] src; protected int src_len; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__html_atr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__html_atr.java index 644bd54c9..862403273 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__html_atr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__html_atr.java @@ -21,33 +21,56 @@ public class Bfr_arg__html_atr implements Bfr_arg, Clear_able { private final byte[] atr_bgn; private int val_type; private int val_as_int; + private byte[] val_as_bry; private int val_as_bry_bgn, val_as_bry_end; + private byte[][] val_as_ary; private Bfr_arg val_as_arg; public Bfr_arg__html_atr(byte[] key) {this.atr_bgn = Bld_atr_bgn(key);} public void Clear() { - val_type = Type__null; + val_type = Tid__null; val_as_arg = null; val_as_int = Int_.Min_value; + val_as_bry = null; + val_as_ary = null; } - public Bfr_arg__html_atr Set_by_arg(Bfr_arg v) {val_type = Type__arg; val_as_arg = v; return this;} - public Bfr_arg__html_atr Set_by_int(int v) {val_type = Type__int; val_as_int = v; return this;} + public byte[] Val_as_bry() {return val_as_bry;} + public int Val_as_bry_bgn() {return val_as_bry_bgn;} + public int Val_as_bry_end() {return val_as_bry_end;} + public Bfr_arg__html_atr Set_by_arg(Bfr_arg v) {val_type = Tid__arg; val_as_arg = v; return this;} + public Bfr_arg__html_atr Set_by_int(int v) {val_type = Tid__int; val_as_int = v; return this;} + public Bfr_arg__html_atr Set_by_ary(byte[]... ary) {val_type = Tid__bry__ary; val_as_ary = ary; return this;} + public Bfr_arg__html_atr Set_by_bry(byte[] bry) {val_type = Tid__bry__val; val_as_bry = bry; return this;} + public Bfr_arg__html_atr Set_by_mid(byte[] bry, int bgn, int end) {val_type = Tid__bry__mid; val_as_bry = bry; val_as_bry_bgn = bgn; val_as_bry_end = end; return this;} public void Bfr_arg__clear() {this.Clear();} public boolean Bfr_arg__exists() { switch (val_type) { - case Type__null: return false; - case Type__arg: return val_as_arg.Bfr_arg__exists(); - case Type__int: return val_as_int != Int_.Min_value; - default: throw Err_.new_unhandled(val_type); + case Tid__null: return false; + case Tid__arg: return val_as_arg.Bfr_arg__exists(); + case Tid__int: return val_as_int != Int_.Min_value; + case Tid__bry__ary: return val_as_ary != null; + case Tid__bry__val: return val_as_bry != null; + case Tid__bry__mid: return val_as_bry != null; + default: throw Err_.new_unhandled(val_type); } } public void Bfr_arg__add(Bry_bfr bfr) { if (!Bfr_arg__exists()) return; bfr.Add(atr_bgn); switch (val_type) { - case Type__arg: val_as_arg.Bfr_arg__add(bfr); break; - case Type__int: bfr.Add_int_variable(val_as_int); break; + case Tid__arg: val_as_arg.Bfr_arg__add(bfr); break; + case Tid__int: bfr.Add_int_variable(val_as_int); break; + case Tid__bry__val: bfr.Add(val_as_bry); break; + case Tid__bry__mid: bfr.Add_mid(val_as_bry, val_as_bry_bgn, val_as_bry_end); break; + case Tid__bry__ary: + int len = val_as_ary.length; + for (int i = 0; i < len; ++i) { + if (i != 0) bfr.Add_byte_space(); + byte[] v = val_as_ary[i]; + bfr.Add(v); + } + break; } bfr.Add_byte_quote(); } public static byte[] Bld_atr_bgn(byte[] key) {return Bry_.Add(Byte_ascii.Space_bry, key, Byte_ascii.Eq_bry, Byte_ascii.Quote_bry);} // ' key="' - private static final int Type__null = 0, Type__arg = 1, Type__int = 2; + private static final int Tid__null = 0, Tid__arg = 1, Tid__int = 2, Tid__bry__mid = 3, Tid__bry__val = 4, Tid__bry__ary = 5; } diff --git a/100_core/src_100_interface/gplx/EqAble.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__wrapper.java similarity index 53% rename from 100_core/src_100_interface/gplx/EqAble.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__wrapper.java index c23db7e63..012ee8347 100644 --- a/100_core/src_100_interface/gplx/EqAble.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__wrapper.java @@ -15,7 +15,18 @@ 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; -public interface EqAble { - boolean Eq(Object comp); +package gplx.xowa.htmls.core.wkrs.bfr_args; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.core.brys.*; +public class Bfr_arg__wrapper implements Bfr_arg { + private Bfr_arg inner; + public void Clear() { + inner = Bfr_arg_.Noop; + } + public Bfr_arg__wrapper Set(Bfr_arg v) {inner = v; return this;} + public void Bfr_arg__clear() {this.Clear();} + public boolean Bfr_arg__exists() {return inner != Bfr_arg_.Noop;} + public void Bfr_arg__add(Bry_bfr bfr) { + if (!Bfr_arg__exists()) return; + inner.Bfr_arg__add(bfr); + } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_parser.java index c2e0488dc..f23a507eb 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_parser.java @@ -21,21 +21,21 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.langs. public class Xoh_gly_grp_parser implements Html_atr_class_wkr { public int Rng_bgn() {return rng_bgn;} private int rng_bgn; public int Rng_end() {return rng_end;} private int rng_end; - private Xoh_gly_itm_parser itm_parser = new Xoh_gly_itm_parser(); +// private Xoh_gly_itm_parser itm_parser = new Xoh_gly_itm_parser(); public int Parse(Xoh_hdoc_wkr hdoc_wkr, Xoh_hdoc_ctx hctx, byte[] src, Html_tag_rdr tag_rdr, Html_tag ul_tag) { this.rng_bgn = ul_tag.Src_bgn(); /* parse class for traditional parse style for max_width */ - Html_tag cur_tag = null; - while (true) { - cur_tag = tag_rdr.Tag__move_fwd_head(); - if (cur_tag.Name_id() != Html_tag_.Id__li) break; // no more
  • ; break; - itm_parser.Parse(hdoc_wkr, hctx, src, tag_rdr, cur_tag); - } +// Html_tag cur_tag = null; +// while (true) { +// cur_tag = tag_rdr.Tag__move_fwd_head(); +// if (cur_tag.Name_id() != Html_tag_.Id__li) break; // no more
  • ; break; +// itm_parser.Parse(hdoc_wkr, hctx, src, tag_rdr, cur_tag); +// } // hdoc_wkr.On_thm(this); - cur_tag = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__ul); + Html_tag cur_tag = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__ul); this.rng_end = cur_tag.Src_end(); return rng_end; } @@ -45,4 +45,5 @@ public class Xoh_gly_grp_parser implements Html_atr_class_wkr { // } return false; } + public static final byte[] Atr__class__gallery = Bry_.new_a7("gallery"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java new file mode 100644 index 000000000..c285a0a60 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java @@ -0,0 +1,55 @@ +/* +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.htmls.core.wkrs.glys; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.threads.poolables.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.hzips.*; +import gplx.xowa.htmls.core.wkrs.bfr_args.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import gplx.xowa.htmls.core.wkrs.lnkis.anchs.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; +import gplx.xowa.files.*; import gplx.xowa.files.repos.*; +public class Xoh_gly_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { + public String Key() {return Xoh_hzip_dict_.Key__gly;} + public Xoh_gly_hzip Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, byte[] src, Xoh_gly_grp_parser arg) { + bfr.Add_mid(src, arg.Rng_bgn(), arg.Rng_end()); + return this; + } + public int Decode(Bry_bfr bfr, boolean write_to_bfr, Xoh_hdoc_ctx hctx, Xoh_page hpg, Bry_rdr rdr, byte[] src, int hook_bgn) { + return hook_bgn; + } + public int Pool__idx() {return pool_idx;} private int pool_idx; + public void Pool__clear (Object[] args) {} + public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; + public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_gly_hzip rv = new Xoh_gly_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} +// private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_( 1, 1, 1, 1 , 1, 1, 1, 1 , 2, 1, 1, 1 , 1, 2, 2); +// private static final int // SERIALIZED +// Flag__file__w_diff_from_html = 0 +// , Flag__file__time_exists = 1 +// , Flag__file__page_exists = 2 +// , Flag__file__is_orig = 3 +// , Flag__file__repo_is_local = 4 +// , Flag__file__src_exists = 5 +// , Flag__img__cls_other_exists = 6 +// , Flag__anch__ns_is_image = 7 +// , Flag__anch__cls_tid = 8 // none, image +// , Flag__anch__ns_id_needs_saving = 9 +// , Flag__img__alt_diff_from_anch_title = 10 +// , Flag__anch__href_diff_file = 11 +// , Flag__anch__title_missing = 12 +// , Flag__img__cls_tid = 13 // none, thumbimage, thumbborder +// , Flag__anch__href_tid = 14 // wiki, site, anch, inet +// ; +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip_tst.java new file mode 100644 index 000000000..22384dc85 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip_tst.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.htmls.core.wkrs.glys; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import org.junit.*; import gplx.xowa.htmls.core.hzips.*; +public class Xoh_gly_hzip_tst { + private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + private String Html__basic = gplx.langs.htmls.Html_utl.Replace_apos(String_.Concat_lines_nl_skip_last + ( "" + )); + @Test public void Basic() { + fxt.Test__bicode(Html__basic, Html__basic); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_bldr.java index 9830250eb..c04d7b698 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_bldr.java @@ -24,24 +24,27 @@ public class Xoh_img_bldr { public Xoh_img_wtr Wtr() {return wtr;} private final Xoh_img_wtr wtr = new Xoh_img_wtr(); public Xof_fsdb_itm Fsdb_itm() {return fsdb_itm;} private Xof_fsdb_itm fsdb_itm; public void Make_by_parse(Bry_bfr bfr, Xoh_page hpg, Xoh_hdoc_ctx hctx, byte[] src, Xoh_img_parser arg) { - Make( bfr, hpg, hctx, src, arg.Img_src_parser().File_ttl_bry(), arg.Img_xoimg_parser() - , arg.Anch_href_parser().Atr(), arg.Anch_cls_parser().Atr(), arg.Anch_title_atr() - , arg.Img_w(), arg.Img_h(), arg.Img_src_parser().Atr(), arg.Img_cls_parser().Atr(), arg.Img_alt_atr()); + Make( bfr, hpg, hctx, src, arg.Img_src().File_ttl_bry(), arg.Img_xoimg() + , arg.Anch_href().Rel_nofollow_exists(), arg.Anch_href().Atr(), arg.Anch_cls().Atr(), arg.Anch_title() + , arg.Img_w(), arg.Img_h(), arg.Img_src().Atr(), arg.Img_cls().Atr(), arg.Img_alt()); wtr.Bfr_arg__add(bfr); } public void Make(Bry_bfr bfr, Xoh_page hpg, Xoh_hdoc_ctx hctx, byte[] src, byte[] lnki_ttl, Xoh_img_xoimg_parser img_xoimg - , Bfr_arg anch_href, Bfr_arg anch_cls, Bfr_arg anch_ttl + , boolean anch_rel_is_nofollow, Bfr_arg anch_href, Bfr_arg anch_cls, Bfr_arg anch_ttl , int img_w, int img_h, Bfr_arg img_src, Bfr_arg img_cls, Bfr_arg img_alt) { wtr.Clear(); this.fsdb_itm = hpg.Img_mgr().Make_img(); - if (img_xoimg.Val_exists()) { + if (img_xoimg.Val_dat_exists()) { fsdb_itm.Init_at_lnki(Xof_exec_tid.Tid_wiki_page, hpg.Wiki().Domain_itm().Abrv_xo(), lnki_ttl, img_xoimg.Lnki_type(), img_xoimg.Lnki_upright(), img_xoimg.Lnki_w(), img_xoimg.Lnki_h(), img_xoimg.Lnki_time(), img_xoimg.Lnki_page(), Xof_patch_upright_tid_.Tid_all); hctx.File__mgr().Check_cache(fsdb_itm); + wtr.Img_xoimg_(src, img_xoimg.Val_bgn(), img_xoimg.Val_end()); + wtr.Img_src_empty_().Img_w_(0).Img_h_(0); } else if (img_w != -1) { wtr.Img_w_(img_w).Img_h_(img_h).Img_src_(img_src); } - wtr.Anch_href_(anch_href).Anch_cls_(anch_cls).Anch_title_(anch_ttl); + if (anch_rel_is_nofollow) wtr.Anch_rel_nofollow_(); + wtr.Anch_href_(anch_href).Anch_cls_(anch_cls).Anch_title_(anch_ttl).Anch_xowa_title_(lnki_ttl); wtr.Img_id_(Xoh_img_mgr.Bry__html_uid, fsdb_itm.Html_uid()).Img_alt_(img_alt).Img_cls_(img_cls); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_html__dump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_html__dump__tst.java index 222518a96..5082805fc 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_html__dump__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_html__dump__tst.java @@ -20,7 +20,7 @@ import org.junit.*; import gplx.xowa.htmls.core.makes.tests.*; public class Xoh_img_html__dump__tst { private final Xoh_make_fxt fxt = new Xoh_make_fxt(); public static final String - Html__basic = "abc" + Html__basic = "abc" ; @Before public void init() {fxt.Clear();} @Test public void Basic() {fxt.Test__html("[[File:A.png|220x110px|upright=.5|abc]]" , Html__basic);} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java index 2b8276e04..3c9f6a67c 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java @@ -22,139 +22,170 @@ import gplx.xowa.htmls.core.wkrs.bfr_args.*; import gplx.xowa.htmls.core.wkrs.im import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; public class Xoh_img_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final int[] flag_ary; - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_ - ( 1, 1, 1, 1, 1, 1, 1, 1 - , 1, 1, 1, 2, 2); - public Xoh_img_hzip() { - this.flag_ary = flag_bldr.Val_ary(); - } public String Key() {return Xoh_hzip_dict_.Key__img;} - public Xoh_img_bldr Bldr() {return bldr__img;} private Xoh_img_bldr bldr__img = new Xoh_img_bldr(); - public Xoh_img_hzip Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, byte[] src, Xoh_img_parser arg, boolean write_hdr) { - // img_map: - Xoh_anch_href_parser anch_href = arg.Anch_href_parser(); - Html_atr anch_title = arg.Anch_title_atr(); - Xoa_ttl anch_href_ttl = anch_href.Page_ttl(); - Xoh_img_xoimg_parser img_xoimg = arg.Img_xoimg_parser(); - Xoh_img_cls_parser img_cls = arg.Img_cls_parser(); - Xoh_img_src_parser img_src = arg.Img_src_parser(); - boolean anch_href_has_site = anch_href.Site_exists(); - boolean anch_href_is_file = anch_href_ttl.Ns().Id_is_file() && !anch_href_has_site; - boolean img_alt__diff__anch_title = arg.Img_alt__diff__anch_title(); - flag_ary[ 0] = img_xoimg.Val_exists() ? 1 : 0; - flag_ary[ 1] = anch_href_has_site ? 1 : 0; - flag_ary[ 2] = anch_href_is_file ? 1 : 0; - flag_ary[ 3] = anch_title.Val_exists() ? 1 : 0; - flag_ary[ 4] = img_alt__diff__anch_title ? 1 : 0; - flag_ary[ 5] = img_cls.Other_exists() ? 1 : 0; - flag_ary[ 6] = img_src.Repo_is_commons() ? 1 : 0; - flag_ary[ 7] = img_src.File_is_orig() ? 1 : 0; - flag_ary[ 8] = arg.File_w__diff__img_w() ? 1 : 0; - flag_ary[ 9] = img_src.File_time_exists() ? 1 : 0; - flag_ary[10] = img_src.File_page_exists() ? 1 : 0; - flag_ary[11] = arg.Anch_cls_parser().Tid(); - flag_ary[12] = img_cls.Cls_tid(); - if (write_hdr) bfr.Add(Xoh_hzip_dict_.Bry__img); - Xoh_hzip_int_.Encode(3, bfr, flag_bldr.Encode()); - Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + arg.Img_w()); - Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + arg.Img_h()); - bfr.Add(anch_href_ttl.Page_db()).Add_byte(Xoh_hzip_dict_.Escape); - if (!anch_href_is_file) { - Xoh_lnki_dict_.Ns_encode(bfr, anch_href_ttl.Ns().Id()); - bfr.Add_mid(src, img_src.File_ttl_bgn(), img_src.File_ttl_end()).Add_byte(Xoh_hzip_dict_.Escape); - } - if (arg.File_w__diff__img_w()) Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_w()); - if (img_src.File_time_exists()) Xoh_hzip_int_.Encode(1, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_time()); - if (img_src.File_page_exists()) Xoh_hzip_int_.Encode(1, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_page()); - if (img_xoimg.Val_exists()) bfr.Add_mid(src, img_xoimg.Val_bgn(), img_xoimg.Val_end()).Add_byte(Xoh_hzip_dict_.Escape); - if (anch_title.Val_exists()) bfr.Add_mid(src, anch_title.Val_bgn(), anch_title.Val_end()).Add_byte(Xoh_hzip_dict_.Escape); - if (img_alt__diff__anch_title) bfr.Add_mid(src, arg.Img_alt_atr().Val_bgn(), arg.Img_alt_atr().Val_end()).Add_byte(Xoh_hzip_dict_.Escape); - if (img_cls.Other_exists()) bfr.Add_mid(src, img_cls.Other_bgn(), img_cls.Other_end()).Add_byte(Xoh_hzip_dict_.Escape); - return this; - } private final Xoh_img_xoimg_parser xoimg_parser = new Xoh_img_xoimg_parser(); + public Xoh_img_bldr Bldr() {return bldr;} private Xoh_img_bldr bldr = new Xoh_img_bldr(); public Bfr_arg__href Anch_href_arg() {return anch_href_arg;} private final Bfr_arg__href anch_href_arg = new Bfr_arg__href(); private final Bry_obj_ref anch_cls_mid = Bry_obj_ref.New_empty() , anch_title_mid = Bry_obj_ref.New_empty() + , anch_href_mid = Bry_obj_ref.New_empty() , img_alt_mid = Bry_obj_ref.New_empty() , img_src_mid = Bry_obj_ref.New_empty() , img_cls_mid = Bry_obj_ref.New_empty() ; + public Xoh_img_hzip Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, byte[] src, Xoh_img_parser arg, boolean write_hdr) { + // img_map: + Xoh_anch_href_parser anch_href = arg.Anch_href(); + Bry_obj_ref anch_page = arg.Anch_page(); + byte anch_href_tid = anch_href.Tid(); + boolean anch__ns_id_needs_saving = anch_href.Tid_has_ns() && anch_href.Page_ns_id() != Xow_ns_.Tid__file; + Html_atr anch_title = arg.Anch_title(); + Xoa_ttl anch_href_ttl = anch_href.Page_ttl(); + Xoh_img_xoimg_parser img_xoimg = arg.Img_xoimg(); + Xoh_img_cls_parser img_cls = arg.Img_cls(); + Xoh_img_src_parser img_src = arg.Img_src(); + boolean img__alt_diff_from_anch_title = arg.Img_alt__diff__anch_title(); + boolean file__src_exists = !img_xoimg.Val_dat_exists(); + boolean anch_href_diff_file = !Bry_.Match(anch_page.Val(), anch_page.Val_bgn(), anch_page.Val_end(), anch_href.Page_ttl().Page_db()); + + flag_bldr.Set(Flag__file__w_diff_from_html , file__src_exists && arg.Img_w__diff__file_w()); + flag_bldr.Set(Flag__file__time_exists , file__src_exists && img_src.File_time_exists()); + flag_bldr.Set(Flag__file__page_exists , file__src_exists && img_src.File_page_exists()); + flag_bldr.Set(Flag__file__is_orig , file__src_exists && img_src.File_is_orig()); + flag_bldr.Set(Flag__file__repo_is_local , file__src_exists && !img_src.Repo_is_commons()); + flag_bldr.Set(Flag__file__src_exists , file__src_exists); + flag_bldr.Set(Flag__img__cls_other_exists , img_cls.Other_exists()); + flag_bldr.Set(Flag__anch__ns_is_image , anch_href.Page_ns_id_is_image()); + flag_bldr.Set(Flag__anch__cls_tid , arg.Anch_cls().Tid()); + flag_bldr.Set(Flag__anch__ns_id_needs_saving , anch__ns_id_needs_saving); + flag_bldr.Set(Flag__img__alt_diff_from_anch_title , img__alt_diff_from_anch_title); + flag_bldr.Set(Flag__anch__href_diff_file , anch_href_diff_file); + flag_bldr.Set(Flag__anch__title_missing , anch_title.Val_dat_missing()); + flag_bldr.Set(Flag__img__cls_tid , img_cls.Cls_tid()); + flag_bldr.Set(Flag__anch__href_tid , anch_href.Tid()); + // Tfds.Dbg(flag_bldr.Encode(), Array_.To_str(flag_bldr.Val_ary())); + + if (write_hdr) bfr.Add(Xoh_hzip_dict_.Bry__img); + Xoh_hzip_int_.Encode(2, bfr, flag_bldr.Encode()); + if (anch_href_tid == Xoh_anch_href_parser.Tid__inet) + anch_href_mid.Mid_(src, anch_href.Val_bgn(), anch_href.Val_end()); + else + anch_href_mid.Val_(anch_href_ttl.Page_db()); + bfr.Add_bry_ref_obj(anch_href_mid); + bfr.Add_byte(Xoh_hzip_dict_.Escape); + if (anch_href_diff_file) { + arg.Anch_page().Bfr_arg__add(bfr); + bfr.Add_byte(Xoh_hzip_dict_.Escape); + } + switch (anch_href_tid) { + case Xoh_anch_href_parser.Tid__anch: + case Xoh_anch_href_parser.Tid__inet: + break; + case Xoh_anch_href_parser.Tid__wiki: + case Xoh_anch_href_parser.Tid__site: + if (anch__ns_id_needs_saving) + Xoh_lnki_dict_.Ns_encode(bfr, anch_href_ttl.Ns().Id()); + break; + } + if (file__src_exists) { + Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + arg.Img_w()); + Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + arg.Img_h()); + if (arg.Img_w__diff__file_w()) Xoh_hzip_int_.Encode(2, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_w()); + if (img_src.File_time_exists()) Xoh_hzip_int_.Encode(1, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_time()); + if (img_src.File_page_exists()) Xoh_hzip_int_.Encode(1, bfr, Xoh_hzip_int_.Neg_1_adj + img_src.File_page()); + } + else + bfr.Add_mid(src, img_xoimg.Val_bgn(), img_xoimg.Val_end()).Add_byte(Xoh_hzip_dict_.Escape); + if (anch_title.Val_dat_exists()) bfr.Add_mid(src, anch_title.Val_bgn(), anch_title.Val_end()).Add_byte(Xoh_hzip_dict_.Escape); + if (img__alt_diff_from_anch_title) bfr.Add_mid(src, arg.Img_alt().Val_bgn(), arg.Img_alt().Val_end()).Add_byte(Xoh_hzip_dict_.Escape); + if (img_cls.Other_exists()) bfr.Add_mid(src, img_cls.Other_bgn(), img_cls.Other_end()).Add_byte(Xoh_hzip_dict_.Escape); + return this; + } public int Decode(Bry_bfr bfr, boolean write_to_bfr, Xoh_hdoc_ctx hctx, Xoh_page hpg, Bry_rdr rdr, byte[] src, int hook_bgn) { // decode rdr - int flag = rdr.Read_int_by_base85(3); + int flag = rdr.Read_int_by_base85(2); flag_bldr.Decode(flag); - int img_w = rdr.Read_int_by_base85(2) - Xoh_hzip_int_.Neg_1_adj; - int img_h = rdr.Read_int_by_base85(2) - Xoh_hzip_int_.Neg_1_adj; + boolean file__is_orig = flag_bldr.Get_as_bool(Flag__file__is_orig); + boolean file__repo_is_local = flag_bldr.Get_as_bool(Flag__file__repo_is_local); + boolean file__src_exists = flag_bldr.Get_as_bool(Flag__file__src_exists); + boolean img__cls_other_exists = flag_bldr.Get_as_bool(Flag__img__cls_other_exists); + boolean anch__ns_is_image = flag_bldr.Get_as_bool(Flag__anch__ns_is_image); + boolean anch__ns_id_needs_saving = flag_bldr.Get_as_bool(Flag__anch__ns_id_needs_saving); + int anch__cls_tid = flag_bldr.Get_as_int(Flag__anch__cls_tid); + boolean img__alt_diff_from_anch_title = flag_bldr.Get_as_bool(Flag__img__alt_diff_from_anch_title); + boolean anch_href_diff_file = flag_bldr.Get_as_bool(Flag__anch__href_diff_file); + boolean anch__title_missing = flag_bldr.Get_as_bool(Flag__anch__title_missing); + int img_cls = flag_bldr.Get_as_int(Flag__img__cls_tid); + int anch__href_tid = flag_bldr.Get_as_int(Flag__anch__href_tid); byte[] page_db = rdr.Read_bry_to(); - boolean img_xoimg_exists = flag_ary[ 0] == 1; - boolean anch_href_has_site = flag_ary[ 1] == 1; - boolean anch_href_is_file = flag_ary[ 2] == 1; - boolean anch_title_exists = flag_ary[ 3] == 1; - boolean img_alt__diff__anch_title = flag_ary[ 4] == 1; - boolean img_cls_other_exists = flag_ary[ 5] == 1; - boolean repo_is_commons = flag_ary[ 6] == 1; - boolean file_is_orig = flag_ary[ 7] == 1; - int anch_cls = flag_ary[11]; - int img_cls = flag_ary[12]; - int anch_href_ns = -1; byte[] anch_href_ttl_bry = null; - if (!anch_href_is_file) { + byte[] file_db = page_db; + if (anch_href_diff_file) file_db = rdr.Read_bry_to(); + int anch_href_ns = -1; + if (anch__ns_id_needs_saving) anch_href_ns = Xoh_lnki_dict_.Ns_decode(rdr); - anch_href_ttl_bry = rdr.Read_bry_to(); - } - int file_time = -1; int file_page = -1; - int img_xoimg_bgn = -1; int img_xoimg_end = -1; + int img_xoimg_bgn = -1, img_xoimg_end = -1, img_w = -1, img_h = -1, file_time = -1, file_page = -1; xoimg_parser.Clear(); - if (img_xoimg_exists) { + if (file__src_exists) { + img_w = rdr.Read_int_by_base85(2) - Xoh_hzip_int_.Neg_1_adj; + img_h = rdr.Read_int_by_base85(2) - Xoh_hzip_int_.Neg_1_adj; + } + else { img_xoimg_bgn = rdr.Pos(); img_xoimg_end = rdr.Find_fwd_lr(); xoimg_parser.Parse(rdr, src, img_xoimg_bgn, img_xoimg_end); } int anch_title_bgn = -1, anch_title_end = -1; - if (anch_title_exists) { + if (!anch__title_missing) { anch_title_bgn = rdr.Pos(); anch_title_end = rdr.Find_fwd_lr(); } int img_alt_bgn = -1, img_alt_end = -1; - if (anch_title_exists) { + if (!anch__title_missing) { img_alt_bgn = anch_title_bgn; img_alt_end = anch_title_end; } - if (img_alt__diff__anch_title) { + if (img__alt_diff_from_anch_title) { img_alt_bgn = rdr.Pos(); img_alt_end = rdr.Find_fwd_lr(); } byte[] img_cls_other = Bry_.Empty; - if (img_cls_other_exists) + if (img__cls_other_exists) img_cls_other = Bry_.Mid(src, rdr.Pos(), rdr.Find_fwd_lr()); int rv = rdr.Move_to(rdr.Pos()); // transform values - if (anch_href_is_file) - anch_href_arg.Set_by_file(page_db); - else { - if (anch_href_has_site) { - } + boolean anch_rel_is_nofollow = false; + if (anch__ns_id_needs_saving) { Xoa_ttl anch_href_ttl = hctx.Wiki__ttl_parser().Ttl_parse(anch_href_ns, page_db); anch_href_arg.Set_by_page(anch_href_ttl.Full_db()); - page_db = anch_href_ttl_bry; + } + else { + if (anch__href_tid == Xoh_anch_href_parser.Tid__inet) { + anch_href_arg.Set_by_raw(gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(page_db)); + anch_rel_is_nofollow = true; + } + else { + if (anch__ns_is_image) + anch_href_arg.Set_by_raw(Bry_.Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki, gplx.xowa.wikis.nss.Xow_ns_.Alias__image__bry, Byte_ascii.Colon_bry, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(page_db))); + else + anch_href_arg.Set_by_file(gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(page_db)); + } } // NOTE: src must go underneath ttl Xof_url_bldr url_bldr = hctx.File__url_bldr(); - url_bldr.Init_by_root(repo_is_commons ? hctx.Fsys__file__comm() : hctx.Fsys__file__wiki(), Byte_ascii.Slash, false, false, Md5_depth); - url_bldr.Init_by_itm(file_is_orig ? Xof_repo_itm_.Mode_orig : Xof_repo_itm_.Mode_thumb, page_db, Xof_file_wkr_.Md5(page_db), Xof_ext_.new_by_ttl_(page_db), img_w, file_time, file_page); + url_bldr.Init_by_root(file__repo_is_local ? hctx.Fsys__file__wiki() : hctx.Fsys__file__comm(), Byte_ascii.Slash, false, false, Md5_depth); + url_bldr.Init_by_itm(file__is_orig ? Xof_repo_itm_.Mode_orig : Xof_repo_itm_.Mode_thumb, file_db, Xof_file_wkr_.Md5(file_db), Xof_ext_.new_by_ttl_(file_db), img_w, file_time, file_page); byte[] img_src = url_bldr.Xto_bry(); - anch_cls_mid.Val_(Xoh_anch_cls_.To_val(anch_cls)); - anch_title_mid.Mid_(src, anch_title_bgn, anch_title_end); - img_alt_mid.Mid_(src, img_alt_bgn, img_alt_end); + anch_cls_mid.Val_(Xoh_anch_cls_.To_val(anch__cls_tid)); + anch_title_mid.Mid_(src, anch_title_bgn, anch_title_end); if (anch_title_bgn == anch_title_end) anch_title_mid.Val_(null); + img_alt_mid.Mid_(src, img_alt_bgn, img_alt_end); if (img_alt_mid.Val_is_empty()) img_alt_mid.Val_(Bry_.Empty); img_src_mid.Val_(img_src); - img_cls_mid.Val_(Xoh_img_cls_.To_val(img_cls, img_cls_other)); + img_cls_mid.Val_(Xoh_img_cls_.To_val_or_null(img_cls, img_cls_other)); - bldr__img.Make(bfr, hpg, hctx, src, page_db, xoimg_parser, anch_href_arg, anch_cls_mid, anch_title_mid, img_w, img_h, img_src_mid, img_cls_mid, img_alt_mid); - if (write_to_bfr) bldr__img.Wtr().Bfr_arg__add(bfr); + bldr.Make(bfr, hpg, hctx, src, file_db, xoimg_parser, anch_rel_is_nofollow, anch_href_arg, anch_cls_mid, anch_title_mid, img_w, img_h, img_src_mid, img_cls_mid, img_alt_mid); + if (write_to_bfr) bldr.Wtr().Bfr_arg__add(bfr); return rv; } @@ -163,4 +194,22 @@ public class Xoh_img_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_img_hzip rv = new Xoh_img_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} public static int Md5_depth = 2; + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_( 1, 1, 1, 1 , 1, 1, 1, 1 , 2, 1, 1, 1 , 1, 2, 2); + private static final int // SERIALIZED + Flag__file__w_diff_from_html = 0 + , Flag__file__time_exists = 1 + , Flag__file__page_exists = 2 + , Flag__file__is_orig = 3 + , Flag__file__repo_is_local = 4 + , Flag__file__src_exists = 5 + , Flag__img__cls_other_exists = 6 + , Flag__anch__ns_is_image = 7 + , Flag__anch__cls_tid = 8 // none, image + , Flag__anch__ns_id_needs_saving = 9 + , Flag__img__alt_diff_from_anch_title = 10 + , Flag__anch__href_diff_file = 11 + , Flag__anch__title_missing = 12 + , Flag__img__cls_tid = 13 // none, thumbimage, thumbborder + , Flag__anch__href_tid = 14 // wiki, site, anch, inet + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java index 6d1c3c060..36e3123e6 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java @@ -19,11 +19,41 @@ package gplx.xowa.htmls.core.wkrs.imgs; import gplx.*; import gplx.xowa.*; impor import org.junit.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_img_hzip__dump__tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + @Before public void Clear() {fxt.Clear();} @Test public void Basic() { // [[File:A.png|border|class=other|220px|abc]] fxt.Test__bicode - ( "~%$+(#T\";A.png~0|220|110|0.5|-1|-1~abc~" - , Xoh_img_html__dump__tst.Html__basic - , "abc" + ( "~%!!A.png~0|220|110|0.5|-1|-1~abc~" + , "abc" + ); + } + @Test public void Href__encoding() { // [[File:Aéb.png|abc]] + fxt.Test__bicode + ( "~%!!Aéb.png~0|220|110|0.5|-1|-1~abc~" + , "abc" + ); + } + @Test public void Link__wm__n() { // [[File:A.png|link=http://a.org|abc]] + fxt.Test__bicode + ( "~%!Dhttp://a.org~A.png~0|220|110|0.5|-1|-1~abc~" + , "abc" + ); + } +// @Test public void Link__wm__y() { // [[File:A.png|link=//en.wiktionary.org/wiki/A|abc]] +// fxt.Test__bicode +// ( "~%!i=!!!!A~abc~" +// , "abc" +// ); +// } + @Test public void Href__image() { // [[Image:A.png|abc]] + fxt.Test__bicode + ( "~%-%A.png~0|220|110|0.5|-1|-1~abc~" + , "abc" + ); + } + @Test public void Missing() { // PURPOSE: bad dump shouldn't write corrupt data + fxt.Test__bicode + ( "%|\"\\QA.png!!!!A" + , "A" ); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__view__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__view__tst.java index 73ef9488f..299ee8f30 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__view__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__view__tst.java @@ -19,17 +19,17 @@ package gplx.xowa.htmls.core.wkrs.imgs; import gplx.*; import gplx.xowa.*; impor import org.junit.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_img_hzip__view__tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + @Before public void Clear() {fxt.Clear();} @Test public void Basic__border__class__caption() { // [[File:A.png|border|class=other|220px|abc]] fxt.Test__bicode - ( "~%!rC#T\";A.png~abc~other~" - , "abc" + ( "~%iAA.png#T\";abc~other~" + , "abc" ); } @Test public void Link() { // [[File:A.png|link=B]] fxt.Test__bicode - ( "~%!H.#T\";B~#A.png~B~A.png~" - , "A.png" - , "A.png" + ( "~%SgB~A.png~##T\";B~A.png~" + , "A.png" ); } // link_site: [[File:A.png|link=//en.wiktionary.org/B]] -> [[File:Wiktionary-logo-en.svg|25x25px|link=//en.wiktionary.org/wiki/Special:Search/Earth|Search Wiktionary]] -> Search Wiktionary diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_make__dump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_make__dump__tst.java index 786061d81..957c303bf 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_make__dump__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_make__dump__tst.java @@ -22,8 +22,8 @@ public class Xoh_img_make__dump__tst { @Before public void Init() {fxt.Clear();} @Test public void Html_exists__n() { String - orig = "abc" - , expd = "abc" + orig = "abc" + , expd = "abc" ; fxt.Test__make(orig, fxt.Page_chkr().Body_(expd) .Imgs__add("en.w", "A.png", Xop_lnki_type.Id_null, 0.5, 220, 110, -1, -1) diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_parser.java index a34fe3159..c3ed93cee 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_parser.java @@ -16,47 +16,52 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; -import gplx.core.brys.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.anchs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; +import gplx.core.primitives.*; import gplx.core.brys.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.anchs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.files.*; -import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; public class Xoh_img_parser { private byte[] src; - public int Rng_bgn() {return rng_bgn;} private int rng_bgn; - public int Rng_end() {return rng_end;} private int rng_end; - public int Anch_tag_bgn() {return anch_tag_bgn;} private int anch_tag_bgn; - public int Anch_tag_end() {return anch_tag_end;} private int anch_tag_end; - public Xoh_anch_href_parser Anch_href_parser() {return anch_href_parser;} private Xoh_anch_href_parser anch_href_parser = new Xoh_anch_href_parser(); - public Xoh_anch_cls_parser Anch_cls_parser() {return anch_cls_parser;} private Xoh_anch_cls_parser anch_cls_parser = new Xoh_anch_cls_parser(); - public Xoh_img_src_parser Img_src_parser() {return img_src_parser;} private final Xoh_img_src_parser img_src_parser = new Xoh_img_src_parser(); - public Xoh_img_cls_parser Img_cls_parser() {return img_cls_parser;} private final Xoh_img_cls_parser img_cls_parser = new Xoh_img_cls_parser(); - public Xoh_img_xoimg_parser Img_xoimg_parser() {return img_xoimg_parser;} private Xoh_img_xoimg_parser img_xoimg_parser = new Xoh_img_xoimg_parser(); - public Html_atr Anch_title_atr() {return anch_title_atr;} private Html_atr anch_title_atr; - public Html_atr Img_alt_atr() {return img_alt_atr;} private Html_atr img_alt_atr; - public boolean Img_alt__diff__anch_title() {return !Bry_.Match(src, img_alt_atr.Val_bgn(), img_alt_atr.Val_end(), src, anch_title_atr.Val_bgn(), anch_title_atr.Val_end());} - public int Img_w() {return img_w;} private int img_w; - public boolean Img_w_exists() {return img_w != -1;} - public int Img_h() {return img_h;} private int img_h; - public boolean File_w__diff__img_w() {return img_src_parser.File_w() != img_w;} - public int Parse(Xoh_hdoc_wkr hdoc_wkr, Xoh_hdoc_ctx hctx, byte[] src, Html_tag_rdr tag_rdr, Html_tag anch_tag) { - // "" - this.src = src; this.anch_tag_bgn = anch_tag.Src_bgn(); this.anch_tag_end = anch_tag.Src_end(); - this.rng_bgn = anch_tag_bgn; // - img_xoimg_parser.Parse(tag_rdr.Rdr(), src, img_tag); // data-xoimg='...' - this.img_w = img_tag.Atrs__get_as_int_or(Html_atr_.Bry__width, Xof_img_size.Size__neg1); // width='220' - this.img_h = img_tag.Atrs__get_as_int_or(Html_atr_.Bry__height, Xof_img_size.Size__neg1); // height='110' - this.img_alt_atr = img_tag.Atrs__get_by_or_empty(Html_atr_.Bry__alt); // alt='File:A.png' - img_cls_parser.Parse(tag_rdr.Rdr(), src, img_tag); // class='thumbborder' - img_src_parser.Parse(tag_rdr.Rdr(), hctx.Wiki__domain_bry(), img_tag); // src='...' - Html_tag anch_tail_tag = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a); // - this.rng_end = anch_tail_tag.Src_end(); + public int Rng_bgn() {return rng_bgn;} private int rng_bgn; + public int Rng_end() {return rng_end;} private int rng_end; + public Xoh_anch_href_parser Anch_href() {return anch_href;} private Xoh_anch_href_parser anch_href = new Xoh_anch_href_parser(); + public Xoh_anch_cls_parser Anch_cls() {return anch_cls;} private Xoh_anch_cls_parser anch_cls = new Xoh_anch_cls_parser(); + public Html_atr Anch_title() {return anch_title;} private Html_atr anch_title; + public Bry_obj_ref Anch_page() {return anch_page;} private Bry_obj_ref anch_page = Bry_obj_ref.New_empty(); + public Xoh_img_src_parser Img_src() {return img_src;} private final Xoh_img_src_parser img_src = new Xoh_img_src_parser(); + public Xoh_img_cls_parser Img_cls() {return img_cls;} private final Xoh_img_cls_parser img_cls = new Xoh_img_cls_parser(); + public Xoh_img_xoimg_parser Img_xoimg() {return img_xoimg_parser;} private Xoh_img_xoimg_parser img_xoimg_parser = new Xoh_img_xoimg_parser(); + public Html_atr Img_alt() {return img_alt;} private Html_atr img_alt; + public boolean Img_alt__diff__anch_title() {return !Bry_.Match(src, img_alt.Val_bgn(), img_alt.Val_end(), src, anch_title.Val_bgn(), anch_title.Val_end());} + public int Img_w() {return img_w;} private int img_w; + public int Img_h() {return img_h;} private int img_h; + public boolean Img_w__diff__file_w() {return img_w != img_src.File_w();} + public int Parse(Xoh_hdoc_wkr hdoc_wkr, Xoh_hdoc_ctx hctx, byte[] src, Html_tag_rdr tag_rdr, Html_tag anch_head) { + this.src = src; Bry_rdr rdr = tag_rdr.Rdr(); + this.rng_bgn = anch_head.Src_bgn(); // + this.rng_end = anch_tail.Src_end(); return rng_end; } public static final byte[] Bry__cls__anch__image = Bry_.new_a7("image") , Bry__cls__img__thumbimage = Bry_.new_a7("thumbimage") + , Bry__atr__xowa_title = Bry_.new_a7("xowa_title") ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java index c10bba9c7..dabf5c0df 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java @@ -24,8 +24,10 @@ public class Xoh_img_wtr extends gplx.core.brys.Bfr_arg_base { private final Bfr_arg__indent indent = new Bfr_arg__indent(); private final Bfr_arg__html_atr anch_href = new Bfr_arg__html_atr(Html_atr_.Bry__href) + , anch_rel = new Bfr_arg__html_atr(Html_atr_.Bry__rel) , anch_cls = new Bfr_arg__html_atr(Html_atr_.Bry__class) , anch_title = new Bfr_arg__html_atr(Html_atr_.Bry__title) + , anch_xowa_title = new Bfr_arg__html_atr(Xoh_img_parser.Bry__atr__xowa_title) , img_id = new Bfr_arg__html_atr(Html_atr_.Bry__id) , img_xoimg = new Bfr_arg__html_atr(Xoh_img_xoimg_parser.Bry__name) , img_alt = new Bfr_arg__html_atr(Html_atr_.Bry__alt) @@ -37,19 +39,24 @@ public class Xoh_img_wtr extends gplx.core.brys.Bfr_arg_base { private final Bfr_arg__id img_id_val = new Bfr_arg__id(); public Xoh_img_wtr() { arg_ary = new Bfr_arg[] - { indent, anch_href, anch_cls, anch_title - , img_id, img_xoimg, img_alt, img_src, img_w, img_h, img_cls + { indent, anch_href, anch_rel, anch_cls, anch_title, anch_xowa_title + , img_id, img_xoimg, img_src, img_w, img_h, img_cls, img_alt }; } + public Bfr_arg__html_atr Img_alt() {return img_alt;} public Xoh_img_wtr Indent_(int v) {indent.Set(v); return this;} public Xoh_img_wtr Anch_href_(Bfr_arg v) {anch_href.Set_by_arg(v); return this;} + public Xoh_img_wtr Anch_rel_nofollow_() {anch_rel.Set_by_bry(gplx.xowa.htmls.core.wkrs.lnkes.Xoh_lnke_dict_.Html__rel__nofollow); return this;} public Xoh_img_wtr Anch_cls_(Bfr_arg v) {anch_cls.Set_by_arg(v); return this;} public Xoh_img_wtr Anch_title_(Bfr_arg v) {anch_title.Set_by_arg(v); return this;} + public Xoh_img_wtr Anch_xowa_title_(byte[] v) {anch_xowa_title.Set_by_bry(v); return this;} public Xoh_img_wtr Img_id_(byte[] prefix, int uid) {img_id.Set_by_arg(img_id_val.Set(prefix, uid)); return this;} public Xoh_img_wtr Img_w_(int v) {img_w.Set_by_int(v); return this;} public Xoh_img_wtr Img_h_(int v) {img_h.Set_by_int(v); return this;} + public Xoh_img_wtr Img_xoimg_(byte[] src, int bgn, int end) {img_xoimg.Set_by_mid(src, bgn, end); return this;} public Xoh_img_wtr Img_cls_(Bfr_arg v) {img_cls.Set_by_arg(v); return this;} public Xoh_img_wtr Img_src_(Bfr_arg v) {img_src.Set_by_arg(v); return this;} + public Xoh_img_wtr Img_src_empty_() {img_src.Set_by_bry(Bry_.Empty); return this;} public Xoh_img_wtr Img_alt_(Bfr_arg v) {img_alt.Set_by_arg(v); return this;} public Xoh_img_wtr Clear() { for (Bfr_arg arg : arg_ary) @@ -60,6 +67,6 @@ public class Xoh_img_wtr extends gplx.core.brys.Bfr_arg_base { fmtr.Bld_bfr_many(bfr, (Object[])arg_ary); } private static final Bry_fmtr fmtr = Bry_fmtr.new_ - ( "~{indent}" - , "indent", "anch_href", "anch_cls", "anch_title", "img_id", "img_xoimg", "img_alt", "img_src", "img_w", "img_h", "img_cls"); + ( "~{indent}" + , "indent", "anch_href", "anch_rel", "anch_cls", "anch_title", "anch_xowa_title", "img_id", "img_xoimg", "img_src", "img_w", "img_h", "img_cls", "img_alt"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_.java index d08299c77..438f0504c 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_.java @@ -19,9 +19,9 @@ package gplx.xowa.htmls.core.wkrs.imgs.atrs; import gplx.*; import gplx.xowa.*; import gplx.core.btries.*; import gplx.langs.htmls.*; public class Xoh_anch_cls_ { - public static final byte - Tid__none = 0 // EX: [[File:A.png|link=A]] -> "" - , Tid__image = 1 // EX: [[File:A.png]] -> "" + public static final byte // SERIALIZED + Tid__image = 0 // EX: [[File:A.png]] -> "" + , Tid__none = 1 // EX: [[File:A.png|link=A]] -> "" ; public static final String Str__image = "image" diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_parser.java index 8d6bd1324..817792520 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_anch_cls_parser.java @@ -22,14 +22,17 @@ public class Xoh_anch_cls_parser { private final Bry_rdr rdr = new Bry_rdr(); public byte Tid() {return tid;} private byte tid; public Html_atr Atr() {return atr;} private Html_atr atr; - public void Parse(Bry_rdr owner_rdr, byte[] src, Html_tag tag) { + public boolean Parse(Bry_rdr owner_rdr, byte[] src, Html_tag tag) { this.atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__class); // EX: class='image' int src_bgn = atr.Val_bgn(); int src_end = atr.Val_end(); - if (src_bgn == -1) + if (src_bgn == -1) { tid = Xoh_anch_cls_.Tid__none; + return false; + } else { rdr.Init_by_sub(owner_rdr, "anch.cls", src_bgn, src_end); - this.tid = rdr.Chk(Xoh_anch_cls_.Trie); + this.tid = rdr.Chk_or(Xoh_anch_cls_.Trie, Byte_ascii.Max_7_bit); + return tid != Byte_ascii.Max_7_bit; } } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_cls_.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_cls_.java index fec4165a7..af1a987ba 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_cls_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_cls_.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.imgs.atrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.core.btries.*; public class Xoh_img_cls_ { - public static final byte - Tid__none = 0 - , Tid__thumbimage = 2 // EX: [[File:A.png|thumb]] -> "" - , Tid__thumbborder = 3 // EX: [[File:A.png|border]] -> "" + public static final byte // SERIALIZED + Tid__none = 0 // EX: [[File:A.png]] -> "" + , Tid__thumbimage = 1 // EX: [[File:A.png|thumb]] -> "" + , Tid__thumbborder = 2 // EX: [[File:A.png|border]] -> "" ; public static final String Str__thumbimage = "thumbimage" @@ -54,9 +54,9 @@ public class Xoh_img_cls_ { } return Bry_.Add(Bry__html_class, cls, other_0, other_1, Byte_ascii.Quote_bry); } - public static byte[] To_val(int tid, byte[] other) { + public static byte[] To_val_or_null(int tid, byte[] other) { boolean other_is_empty = Bry_.Len_eq_0(other); - if (tid == Xoh_img_cls_.Tid__none && other_is_empty) return Bry_.Empty; + if (tid == Xoh_img_cls_.Tid__none && other_is_empty) return null; byte[] cls = null; switch (tid) { case Xoh_img_cls_.Tid__thumbimage: cls = Bry__thumbimage; break; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser.java index 7aaa8f2bd..f59e5542e 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser.java @@ -39,21 +39,33 @@ public class Xoh_img_src_parser implements Xoh_itm_parser { public boolean File_time_exists() {return file_time != -1;} public boolean File_page_exists() {return file_page != -1;} public Html_atr Atr() {return atr;} private Html_atr atr; - public void Parse(Bry_rdr owner_rdr, byte[] domain_bry, Html_tag tag) { - this.atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__src); - if (!atr.Val_exists()) return; - Parse(owner_rdr, domain_bry, atr.Val_bgn(), atr.Val_end()); + private void Clear() { + val_bgn = val_end = repo_bgn = repo_end = file_ttl_bgn = file_ttl_end = file_w = file_time = file_page = -1; + repo_is_commons = file_is_orig = false; + file_ttl_bry = null; + atr = null; } - public void Parse(Bry_rdr owner_rdr, byte[] domain_bry, int val_bgn, int val_end) { // EX: src="file:///C:/xowa/file/commons.wikimedia.org/thumb/7/0/1/2/A.png/220px.png" + public boolean Parse(Bry_rdr owner_rdr, byte[] domain_bry, Html_tag tag) { + this.Clear(); + this.atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__src); + if (!atr.Val_dat_exists()) return true; // empty src; just return true; + return Parse(owner_rdr, domain_bry, atr.Val_bgn(), atr.Val_end()); + } + public boolean Parse(Bry_rdr owner_rdr, byte[] domain_bry, int val_bgn, int val_end) { // EX: src="file:///C:/xowa/file/commons.wikimedia.org/thumb/7/0/1/2/A.png/220px.png" + this.Clear(); this.src = owner_rdr.Src(); this.val_bgn = val_bgn; this.val_end = val_end; file_w = file_time = file_page = -1; rdr.Init_by_sub(owner_rdr, "img.src.xowa", val_bgn, val_end).Dflt_dlm_(Byte_ascii.Slash); + rdr.Fail_throws_err_(Bool_.N); repo_bgn = rdr.Find_fwd_rr(Bry__file); // skip past /file/; EX: "file:///J:/xowa/file/commons.wikimedia.org/" + if (repo_bgn == -1) return false; + rdr.Fail_throws_err_(Bool_.Y); repo_end = rdr.Find_fwd_lr(); repo_is_commons = Bry_.Match(rdr.Src(), repo_bgn, repo_end, Xow_domain_itm_.Bry__commons); if (!repo_is_commons) { - if (!Bry_.Match(rdr.Src(), repo_bgn, repo_end, domain_bry)) rdr.Fail("repo must be commons or self", "repo", Bry_.Mid(rdr.Src(), repo_bgn, repo_end)); + if (!Bry_.Match(rdr.Src(), repo_bgn, repo_end, domain_bry)) return false; // rdr.Fail("repo must be commons or self", "repo", Bry_.Mid(rdr.Src(), repo_bgn, repo_end)); +// if (!Bry_.Match(rdr.Src(), repo_bgn, repo_end, domain_bry)) rdr.Fail("repo must be commons or self", "repo", Bry_.Mid(rdr.Src(), repo_bgn, repo_end)); } file_is_orig = rdr.Chk(trie) == Tid__orig; // check if 'orig/' or 'thumb/' file_ttl_bgn = Skip_md5(); // skip md5; EX: "0/1/2/3/" @@ -68,6 +80,7 @@ public class Xoh_img_src_parser implements Xoh_itm_parser { else if (rdr.Is(Byte_ascii.Dash)) file_page = rdr.Read_int_to(Byte_ascii.Dot); // EX: "220px-5.png" } + return true; } private int Skip_md5() { byte[] src = rdr.Src(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser_tst.java index f0ef70d7d..af50f8a25 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_src_parser_tst.java @@ -29,12 +29,12 @@ public class Xoh_img_src_parser_tst { @Test public void Md5_depth_4() { fxt.Test__parse("file:///C:/xowa/file/en.wikipedia.org/orig/7/0/1/0/A.png" , "en.wikipedia.org" , Bool_.Y, "A.png", -1, -1, -1); } - @Test public void Fail__orig_mode() { - fxt.Test__parse__fail("file:///C:/xowa/file/commons.wikimedia.org/fail/7/0/A.png", "failed trie check: mid='fail/7/0/A.png' ctx='Main_Page' wkr='img.src.xowa' excerpt='file:///C:/xowa/file/commons.wikimedia.org/fail/7/0/A.png'"); - } - @Test public void Fail__repo_mode() { - fxt.Test__parse__fail("file:///C:/xowa/file/en.wiktionary.org/orig/7/0/A.png", "repo must be commons or self: repo='en.wiktionary.org' ctx='Main_Page' wkr='img.src.xowa' excerpt='file:///C:/xowa/file/en.wiktionary.org/orig/7/0/A.png'"); - } +// @Test public void Fail__orig_mode() { +// fxt.Test__parse__fail("file:///C:/xowa/file/commons.wikimedia.org/fail/7/0/A.png", "failed trie check: mid='fail/7/0/A.png' ctx='Main_Page' wkr='img.src.xowa' excerpt='file:///C:/xowa/file/commons.wikimedia.org/fail/7/0/A.png'"); +// } +// @Test public void Fail__repo_mode() { +// fxt.Test__parse__fail("file:///C:/xowa/file/en.wiktionary.org/orig/7/0/A.png", "repo must be commons or self: repo='en.wiktionary.org' ctx='Main_Page' wkr='img.src.xowa' excerpt='file:///C:/xowa/file/en.wiktionary.org/orig/7/0/A.png'"); +// } } class Xoh_img_src_parser_fxt extends Xoh_itm_parser_fxt_base { private final Xoh_img_src_parser parser = new Xoh_img_src_parser(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_parser.java index b51e1ec36..a3e9b3989 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_parser.java @@ -22,7 +22,7 @@ public class Xoh_img_xoimg_parser { private final Bry_rdr rdr = new Bry_rdr(); public int Val_bgn() {return val_bgn;} private int val_bgn; public int Val_end() {return val_end;} private int val_end; - public boolean Val_exists() {return val_end > val_bgn;} + public boolean Val_dat_exists() {return val_end > val_bgn;} public byte Lnki_type() {return lnki_type;} private byte lnki_type; public int Lnki_w() {return lnki_w;} private int lnki_w; public int Lnki_h() {return lnki_h;} private int lnki_h; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java index acd88d8fa..115445b11 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; public class Xoh_lnke_dict_ { public static final byte // SERIALIZED - Type__free = Byte_ascii.Num_1 - , Type__auto = Byte_ascii.Num_2 - , Type__text = Byte_ascii.Num_3 + Type__free = 0 + , Type__auto = 1 + , Type__text = 2 ; public static final byte[] Html__atr__0 = Bry_.new_a7("\" rel=\"nofollow\" class=\"external ") @@ -29,6 +29,10 @@ public class Xoh_lnke_dict_ { , Html__class__text = Bry_.new_a7("text") , Html__rhs_end = Bry_.new_a7("\">") ; + public static byte[] + Html__rel__nofollow = Bry_.new_a7("nofollow") + , Html__cls__external = Bry_.new_a7("external") + ; public static final Hash_adp_bry Hash = Hash_adp_bry.ci_a7() .Add_bry_byte(Html__class__free, Type__free) .Add_bry_byte(Html__class__auto, Type__auto) diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java index 86907c66f..9183677b5 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java @@ -47,7 +47,7 @@ public class Xoh_lnke_html { else { // xowa or regular; EX: http://a.org if (proto_is_xowa) { bfr.Add(Xop_lnke_wkr.Bry_xowa_protocol); - Xoa_app_.Utl__encoder_mgr().Gfs().Encode(bfr, src, href_bgn, href_end); + gplx.langs.htmls.encoders.Gfo_url_encoder_.Gfs.Encode(bfr, src, href_bgn, href_end); return false; } else { // regular; add href @@ -57,12 +57,12 @@ public class Xoh_lnke_html { } } else { // xwiki - Url_encoder href_encoder = Xoa_app_.Utl__encoder_mgr().Href_quotes(); + Gfo_url_encoder href_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_quotes; bfr.Add(Xoh_href_.Bry__site).Add(lnke_xwiki_wiki).Add(Xoh_href_.Bry__wiki) - .Add(href_encoder.Encode(lnke.Lnke_xwiki_page())); // NOTE: must encode page; EX:%22%3D -> '">' which will end attribute; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 + .Add(href_encoder.Encode(lnke.Lnke_xwiki_page())); // NOTE: must encode page; EX:%22%3D -> '">' which will end attribute; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 if (lnke.Lnke_xwiki_qargs() != null) Gfo_qarg_mgr.Concat_bfr(bfr, href_encoder, lnke.Lnke_xwiki_qargs()); // NOTE: must encode args - return false; + return ctx.Wiki().App().Xwiki_mgr__missing(lnke_xwiki_wiki); } } public void Write_caption(Bry_bfr bfr, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_ctx ctx, byte[] src, Xop_lnke_tkn lnke, int href_bgn, int href_end, boolean proto_is_xowa) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java index cae8a3d58..cf7235266 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java @@ -21,43 +21,70 @@ import gplx.langs.htmls.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_lnke_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { public String Key() {return Xoh_hzip_dict_.Key__lnke;} public Xoh_lnke_hzip Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, byte[] src, Xoh_lnke_parser arg) { - byte lnke_type = arg.Lnke_type(); - switch (lnke_type) { - case Xoh_lnke_dict_.Type__free: stat_itm.Lnke_txt_add();break; - case Xoh_lnke_dict_.Type__text: stat_itm.Lnke_brk_text_y_add(); break; - case Xoh_lnke_dict_.Type__auto: stat_itm.Lnke_brk_text_n_add(); break; + byte anch_cls_type = arg.Anch_cls_type(); + boolean auto_exists = arg.Auto_id() != -1; + boolean text_exists = arg.Capt_end() != -1; + flag_bldr.Set(Flag__auto_exists , auto_exists); + flag_bldr.Set(Flag__text_exists , text_exists); + flag_bldr.Set(Flag__anch_cls , anch_cls_type); + + switch (anch_cls_type) { + case Xoh_lnke_dict_.Type__free: stat_itm.Lnke__free__add();break; + case Xoh_lnke_dict_.Type__auto: stat_itm.Lnke__auto__add(); break; + case Xoh_lnke_dict_.Type__text: stat_itm.Lnke__text__add(); break; } - bfr.Add(Xoh_hzip_dict_.Bry__lnke); // add hook - bfr.Add_byte(lnke_type); // add type - bfr.Add_mid(src, arg.Href_bgn(), arg.Href_end()); // add href + + bfr.Add(Xoh_hzip_dict_.Bry__lnke); // add hook + Xoh_hzip_int_.Encode(1, bfr, flag_bldr.Encode()); // add flag + bfr.Add_mid(src, arg.Href_bgn(), arg.Href_end()); // add href bfr.Add_byte(Xoh_hzip_dict_.Escape); - if (lnke_type == Xoh_lnke_dict_.Type__auto) - Xoh_hzip_int_.Encode(1, bfr, arg.Autonumber_id()); + if (auto_exists) + Xoh_hzip_int_.Encode(1, bfr, arg.Auto_id()); + else if (text_exists) { + bfr.Add_mid(src, arg.Capt_bgn(), arg.Capt_end()); // add capt + bfr.Add_byte(Xoh_hzip_dict_.Escape); + } return this; } public int Decode(Bry_bfr bfr, boolean write_to_bfr, Xoh_hdoc_ctx ctx, Xoh_page hpg, Bry_rdr rdr, byte[] src, int hook_bgn) { - byte lnke_type = rdr.Read_byte(); + int flag = rdr.Read_int_by_base85(1); + flag_bldr.Decode(flag); + boolean auto_exists = flag_bldr.Get_as_bool(Flag__auto_exists); + boolean text_exists = flag_bldr.Get_as_bool(Flag__text_exists); + byte anch_cls_type = flag_bldr.Get_as_byte(Flag__anch_cls); + int href_bgn = rdr.Pos(); int href_end = rdr.Find_fwd_lr(); + int auto_id = -1, capt_bgn = -1, capt_end = -1; + if (auto_exists) + auto_id = rdr.Read_int_by_base85(1); + else if (text_exists) { + capt_bgn = rdr.Pos(); + capt_end = rdr.Find_fwd_lr(); + } + int rv = rdr.Pos(); + bfr.Add(Html_bldr_.Bry__a_lhs_w_href); bfr.Add_mid(src, href_bgn, href_end); - bfr.Add(Xoh_lnke_dict_.Html__atr__0).Add(Xoh_lnke_dict_.To_html_class(lnke_type)).Add(Xoh_lnke_dict_.Html__rhs_end); - switch (lnke_type) { - case Xoh_lnke_dict_.Type__free: - bfr.Add_mid(src, href_bgn, href_end).Add(Html_bldr_.Bry__a_rhs); - break; - case Xoh_lnke_dict_.Type__auto: - int lnke_id = rdr.Read_int_by_base85(1); - if (lnke_id != 0) // will be 0 when reparented by tidy - bfr.Add_byte(Byte_ascii.Brack_bgn).Add_int_variable(lnke_id).Add_byte(Byte_ascii.Brack_end).Add(Html_bldr_.Bry__a_rhs); - break; - case Xoh_lnke_dict_.Type__text: - break; - } - return rdr.Pos(); + bfr.Add(Xoh_lnke_dict_.Html__atr__0).Add(Xoh_lnke_dict_.To_html_class(anch_cls_type)).Add(Xoh_lnke_dict_.Html__rhs_end); + if (auto_exists) + bfr.Add_byte(Byte_ascii.Brack_bgn).Add_int_variable(auto_id).Add_byte(Byte_ascii.Brack_end); + else if (text_exists) + bfr.Add_mid(src, capt_bgn, capt_end); + else + bfr.Add_mid(src, href_bgn, href_end); + bfr.Add(Html_bldr_.Bry__a_rhs); + + return rv; } public int Pool__idx() {return pool_idx;} private int pool_idx; public void Pool__clear (Object[] args) {} public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_lnke_hzip rv = new Xoh_lnke_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_ (1, 1, 2); + private static final int // SERIALIZED + Flag__auto_exists = 0 + , Flag__text_exists = 1 + , Flag__anch_cls = 2 // "free", "autonumber", "text" + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip_tst.java index 0814e67c7..7eae2b738 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip_tst.java @@ -20,17 +20,17 @@ import org.junit.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_lnke_hzip_tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); @Test public void Free() { - fxt.Test__bicode("~#1http://a.org~", Xoh_lnke_html__hdump__tst.Html__free); + fxt.Test__bicode("~#!http://a.org~", Xoh_lnke_html__hdump__tst.Html__free); } @Test public void Auto() { - fxt.Test__bicode("~#2http://a.org~\"", Xoh_lnke_html__hdump__tst.Html__auto); + fxt.Test__bicode("~#*http://a.org~\"", Xoh_lnke_html__hdump__tst.Html__auto); } @Test public void Text() { - fxt.Test__bicode("~#3http://a.org~a", Xoh_lnke_html__hdump__tst.Html__text); + fxt.Test__bicode("~#'http://a.org~a~", Xoh_lnke_html__hdump__tst.Html__text); } @Test public void Text__tidy() { // PURPOSE:handle reparenting of html elements by HTML tidy EX:[http://a.org]; DATE:2015-08-25 fxt.Test__bicode - ( "~#2http://a.org~![123]" + ( "~#&http://a.org~[123]~" , "[123]" ); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parser.java index b63a95efb..b1cd0e860 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parser.java @@ -16,40 +16,44 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.core.brys.*; import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.hrefs.*; public class Xoh_lnke_parser { + private final Bry_rdr rdr = new Bry_rdr(); public int Rng_bgn() {return rng_bgn;} private int rng_bgn; public int Rng_end() {return rng_end;} private int rng_end; + public byte Anch_cls_type() {return anch_cls_type;} private byte anch_cls_type; + public int Auto_id() {return auto_id;} private int auto_id; public int Href_bgn() {return href_bgn;} private int href_bgn; public int Href_end() {return href_end;} private int href_end; - public int Autonumber_id() {return autonumber_id;} private int autonumber_id; - public byte Lnke_type() {return lnke_type;} private byte lnke_type; + public int Capt_bgn() {return capt_bgn;} private int capt_bgn; + public int Capt_end() {return capt_end;} private int capt_end; private void Clear() { - this.lnke_type = Byte_ascii.Max_7_bit; - this.rng_bgn = this.rng_end = this.href_bgn = href_end = -1; - this.autonumber_id = 0; + anch_cls_type = Byte_ascii.Max_7_bit; + auto_id = rng_bgn = rng_end = href_bgn = href_end = capt_bgn = capt_end = -1; } - public int Parse(Xoh_hdoc_wkr hdoc_wkr, Html_tag_rdr tag_rdr, Html_tag anch) {// [1] + public int Parse(Xoh_hdoc_wkr hdoc_wkr, Html_tag_rdr tag_rdr, Html_tag anch_head) { this.Clear(); - this.rng_bgn = anch.Src_bgn(); this.rng_end = anch.Src_end(); - Html_atr href_atr = anch.Atrs__get_by_or_fail(Html_atr_.Bry__href); + this.rng_bgn = anch_head.Src_bgn(); + rdr.Init_by_hook("lnke", rng_bgn, rng_bgn); + Html_atr href_atr = anch_head.Atrs__get_by_or_fail(Html_atr_.Bry__href); // get href; "EX: href='http://a.org'" this.href_bgn = href_atr.Val_bgn(); this.href_end = href_atr.Val_end(); - this.lnke_type = anch.Atrs__cls_find_or_fail(Xoh_lnke_dict_.Hash); - switch (lnke_type) { - case Xoh_lnke_dict_.Type__free: - this.rng_end = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a).Src_end(); // find ''; note that free is not recursive; EX: "https://a.org" - break; - case Xoh_lnke_dict_.Type__text: - break; + this.anch_cls_type = anch_head.Atrs__cls_find_or_fail(Xoh_lnke_dict_.Hash); // get type by class; EX: "class='external free'" + boolean capt_exists = false; + switch (anch_cls_type) { + case Xoh_lnke_dict_.Type__text: capt_exists = true; break; case Xoh_lnke_dict_.Type__auto: - if (tag_rdr.Read_and_move(Byte_ascii.Brack_bgn)) { // HTML tidy can reparent lnkes in strange ways; DATE:2015-08-25 - this.autonumber_id = tag_rdr.Read_int_to(Byte_ascii.Brack_end); // extract int; EX: "[123]" - this.rng_end = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a).Src_end(); // find ''; note that auto is not recursive; EX: "[https://a.org]" - } + if (tag_rdr.Read_and_move(Byte_ascii.Brack_bgn)) // HTML tidy can reparent lnkes in strange ways; DATE:2015-08-25 + this.auto_id = tag_rdr.Read_int_to(Byte_ascii.Brack_end); // extract int; EX: "[123]" + else + capt_exists = true; break; } + if (capt_exists) this.capt_bgn = anch_head.Src_end(); + Html_tag anch_tail = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a); // find '' + if (capt_exists) this.capt_end = anch_tail.Src_bgn(); + this.rng_end = anch_tail.Src_end(); hdoc_wkr.On_lnke(this); return rng_end; } - public static final byte[] Bry__rel__nofollow = Bry_.new_a7("nofollow"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java new file mode 100644 index 000000000..02ee1d729 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java @@ -0,0 +1,50 @@ +/* +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.htmls.core.wkrs.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.args.*; import gplx.core.brys.fmtrs.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; +import gplx.xowa.htmls.core.wkrs.bfr_args.*; +public class Xoh_lnke_wtr extends gplx.core.brys.Bfr_arg_base { + private final Bfr_arg[] arg_ary; + private final Bfr_arg__indent indent = new Bfr_arg__indent(); + private final Bfr_arg__html_atr + anch_href = new Bfr_arg__html_atr(Html_atr_.Bry__href) + , anch_rel = new Bfr_arg__html_atr(Html_atr_.Bry__rel) + , anch_cls = new Bfr_arg__html_atr(Html_atr_.Bry__class) + ; + private final Bfr_arg__wrapper anch_capt = new Bfr_arg__wrapper(); + public Xoh_lnke_wtr() { + arg_ary = new Bfr_arg[] {indent, anch_href, anch_rel, anch_cls, anch_capt}; + } + public Xoh_lnke_wtr Indent_(int v) {indent.Set(v); return this;} + public Xoh_lnke_wtr Anch_href_(byte[] src, int bgn, int end) {anch_href.Set_by_mid(src, bgn, end); return this;} + public Xoh_lnke_wtr Anch_rel_y_() {anch_rel.Set_by_bry(Xoh_lnke_dict_.Html__rel__nofollow); return this;} + public Xoh_lnke_wtr Anch_cls_(byte[]... ary) {anch_cls.Set_by_ary(ary); return this;} + public Xoh_lnke_wtr Anch_capt_(Bfr_arg v) {anch_capt.Set(v); return this;} + public Xoh_lnke_wtr Clear() { + for (Bfr_arg arg : arg_ary) + arg.Bfr_arg__clear(); + return this; + } + @Override public void Bfr_arg__add(Bry_bfr bfr) { + fmtr.Bld_bfr_many(bfr, (Object[])arg_ary); + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_ + ( "~{indent}~{anch_capt}" + , "indent", "anch_href", "anch_rel", "anch_cls", "anch_capt"); +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java index cec081b55..37c7aa4b6 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java @@ -17,13 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.core.brys.*; +import gplx.xowa.htmls.core.wkrs.lnkis.anchs.*; public class Xoh_lnki_dict_ { - public static final byte // SERIALIZED - Capt__same = Xoh_ttl_matcher.Tid__same // EX: [[A]] - , Capt__diff = Xoh_ttl_matcher.Tid__diff // EX: [[A|b]] - , Capt__trail = Xoh_ttl_matcher.Tid__tail // EX: [[A|b]] - , Capt__head = Xoh_ttl_matcher.Tid__head // EX: [[A_(b)|A]] - ; public static void Ns_encode(Bry_bfr bfr, int ns_id) { gplx.xowa.htmls.core.hzips.Xoh_hzip_int_.Encode(1, bfr, ns_id + 2); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__basic__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__basic__tst.java new file mode 100644 index 000000000..a16d7d0cb --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__basic__tst.java @@ -0,0 +1,27 @@ +/* +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.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import org.junit.*; +public class Xoh_lnki_html__basic__tst { + @After public void term() {fxt.Init_para_n_(); fxt.Reset();} private final Xop_fxt fxt = new Xop_fxt(); + @Test public void Ns__title() { // PURPOSE: title should have full ns; "title='Help talk:A'" not "title='A'" DATE:2015-11-16 + fxt.Wtr_cfg().Lnki__title_(Bool_.Y); + fxt.Test__parse__wtxt_to_html("[[Help talk:A b]]" , "Help talk:A b"); + fxt.Wtr_cfg().Lnki__title_(Bool_.N); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java index e21bed68a..773caf9e2 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java @@ -20,10 +20,10 @@ import org.junit.*; import gplx.xowa.htmls.core.makes.tests.*; public class Xoh_lnki_html__hdump__tst { private final Xoh_make_fxt fxt = new Xoh_make_fxt(); public static final String - Html__same = "A" - , Html__diff = "b" - , Html__trail = "Ab" - , Html__xwiki = "wikt:A" + Html__same = "A" + , Html__diff = "b" + , Html__trail = "Ab" + , Html__xwiki = "wikt:a" ; @Before public void init() {fxt.Clear();} @Test public void Same() {fxt.Test__html("[[A]]" , Html__same);} @@ -31,6 +31,6 @@ public class Xoh_lnki_html__hdump__tst { @Test public void Trail() {fxt.Test__html("[[A]]b" , Html__trail);} @Test public void Xwiki() { fxt.Parser_fxt().Init_xwiki_add_wiki_and_user_("wikt", "en.wiktionary.org"); - fxt.Test__html("[[wikt:A]]", Html__xwiki); + fxt.Test__html("[[wikt:a]]", Html__xwiki); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java index 6fd5eb90e..e5a6aec94 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java @@ -21,55 +21,37 @@ import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.lnkis.anch import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final int[] flag_ary; - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_ ( 1, 2, 3); public String Key() {return Xoh_hzip_dict_.Key__lnki;} - public Xoh_lnki_hzip() {this.flag_ary = flag_bldr.Val_ary();} public Xoh_lnki_hzip Encode(Bry_bfr bfr, Xoh_hdoc_ctx hctx, Hzip_stat_itm stat_itm, byte[] src, Xoh_lnki_parser arg) { - byte capt_type = arg.Capt_type(); - Xoh_anch_href_parser anch_href_parser = arg.Anch_href_parser(); - Xoa_ttl page_ttl = anch_href_parser.Page_ttl(); - int page_ns_id = page_ttl.Ns().Id(); - boolean page_ns_id_is_main = page_ns_id == Xow_ns_.Tid__main; + byte text_type = arg.Text_type(); + Xoh_anch_href_parser anch_href_parser = arg.Href_parser(); + int page_ns_id = anch_href_parser.Page_ns_id(); + boolean page_ns_id_is_not_main = page_ns_id != Xow_ns_.Tid__main; int href_type = anch_href_parser.Tid(); - flag_ary[ 0] = page_ns_id_is_main ? 1 : 0; - flag_ary[ 1] = href_type; - flag_ary[ 2] = capt_type; + flag_bldr.Set(Flag__ns_is_not_main , page_ns_id_is_not_main); + flag_bldr.Set(Flag__href_type , href_type); + flag_bldr.Set(Flag__text_type , text_type); bfr.Add(Xoh_hzip_dict_.Bry__lnki); Xoh_hzip_int_.Encode(1, bfr, flag_bldr.Encode()); - if (!page_ns_id_is_main) + if (page_ns_id_is_not_main) Xoh_lnki_dict_.Ns_encode(bfr, page_ns_id); - switch (href_type) { - case Xoh_anch_href_parser.Tid__site: - bfr.Add_mid(src, anch_href_parser.Site_bgn(), anch_href_parser.Site_end()).Add_byte(Xoh_hzip_dict_.Escape); - break; - } - switch (capt_type) { - case Xoh_lnki_dict_.Capt__same: + if (href_type == Xoh_anch_href_parser.Tid__site) + bfr.Add_mid(src, anch_href_parser.Site_bgn(), anch_href_parser.Site_end()).Add_byte(Xoh_hzip_dict_.Escape); + switch (text_type) { + case Xoh_anch_capt_parser.Tid__href: + case Xoh_anch_capt_parser.Tid__href_pipe: stat_itm.Lnki_text_n_add(); - byte[] ttl_bry = page_ns_id_is_main - ? arg.Capt_bry() // main ns should write html_text; handles [[a]] with html of 'a' - : page_ttl.Page_db(); // non-main ns should write page_db only; EX: "Template:A" should write "A" since "Template" will be inferred by ns_id - bfr.Add(ttl_bry).Add_byte(Xoh_hzip_dict_.Escape); + bfr.Add_mid(arg.Href_bry(), arg.Href_bgn(), arg.Href_end()); + bfr.Add_byte(Xoh_hzip_dict_.Escape); break; - case Xoh_lnki_dict_.Capt__diff: + case Xoh_anch_capt_parser.Tid__capt: + case Xoh_anch_capt_parser.Tid__href_trail: + case Xoh_anch_capt_parser.Tid__capt_short: stat_itm.Lnki_text_y_add(); - bfr.Add(arg.Anch_href_parser().Page_bry()); + bfr.Add_mid(arg.Href_bry(), arg.Href_bgn(), arg.Href_end()); bfr.Add_byte(Xoh_hzip_dict_.Escape); - bfr.Add(arg.Capt_bry()); - bfr.Add_byte(Xoh_hzip_dict_.Escape); - break; - case Xoh_lnki_dict_.Capt__trail: - bfr.Add(arg.Capt_bry()); - bfr.Add_byte(Xoh_hzip_dict_.Escape); - bfr.Add(arg.Trail_bry()); - bfr.Add_byte(Xoh_hzip_dict_.Escape); - break; - case Xoh_lnki_dict_.Capt__head: - bfr.Add(arg.Capt_bry()); - bfr.Add_byte(Xoh_hzip_dict_.Escape); - bfr.Add(arg.Trail_bry()); + bfr.Add_mid(arg.Capt_bry(), arg.Capt_bgn(), arg.Capt_end()); bfr.Add_byte(Xoh_hzip_dict_.Escape); break; } @@ -78,93 +60,110 @@ public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { public int Decode(Bry_bfr bfr, boolean write_to_bfr, Xoh_hdoc_ctx hctx, Xoh_page hpg, Bry_rdr rdr, byte[] src, int hook_bgn) { int flag = rdr.Read_int_by_base85(1); flag_bldr.Decode(flag); - boolean page_ns_id_is_main = flag_bldr.Get_as_bool(0); - byte href_type = flag_bldr.Get_as_byte(1); - byte capt_type = flag_bldr.Get_as_byte(2); + boolean page_ns_id_is_not_main = flag_bldr.Get_as_bool(Flag__ns_is_not_main); + byte href_type = flag_bldr.Get_as_byte(Flag__href_type); + byte text_type = flag_bldr.Get_as_byte(Flag__text_type); - int ns_id = Xow_ns_.Tid__main; - if (!page_ns_id_is_main) - ns_id = Xoh_lnki_dict_.Ns_decode(rdr); + int ns_id = page_ns_id_is_not_main ? Xoh_lnki_dict_.Ns_decode(rdr) : Xow_ns_.Tid__main; int site_bgn = -1, site_end = -1; - switch (href_type) { - case Xoh_anch_href_parser.Tid__site: - site_bgn = rdr.Pos(); - site_end = rdr.Find_fwd_lr(); + if (href_type == Xoh_anch_href_parser.Tid__site) { + site_bgn = rdr.Pos(); + site_end = rdr.Find_fwd_lr(); + } + int href_bgn = rdr.Pos(); + int href_end = rdr.Find_fwd_lr(); + int capt_bgn = -1, capt_end = -1; + switch (text_type) { + case Xoh_anch_capt_parser.Tid__capt: + case Xoh_anch_capt_parser.Tid__capt_short: + case Xoh_anch_capt_parser.Tid__href_trail: + capt_bgn = rdr.Pos(); + capt_end = rdr.Find_fwd_lr(); break; } - int page_bgn = rdr.Pos(); - int page_end = rdr.Find_fwd_lr(); - int capt_bgn = -1, capt_end = -1; - if (capt_type != Xoh_lnki_dict_.Capt__same) { - capt_bgn = rdr.Pos(); - capt_end = rdr.Find_fwd_lr(); - } - - byte[] page_bry = null; - if (capt_type == Xoh_lnki_dict_.Capt__head) - page_bry = Bry_.Add(Bry_.Mid(src, page_bgn, page_end), Bry_.Mid(src, capt_bgn, capt_end)); + byte[] href_bry = null; + if (text_type == Xoh_anch_capt_parser.Tid__capt_short) + href_bry = Bry_.Add(Bry_.Mid(src, href_bgn, href_end), Bry_.Mid(src, capt_bgn, capt_end)); else - page_bry = Bry_.Mid(src, page_bgn, page_end); - byte[] title_bry = null, href_bry = null; - if (href_type == Xoh_anch_href_parser.Tid__anch) - href_bry = page_bry; - else { - Xow_ns ns = hctx.Wiki__ttl_parser().Ns_mgr().Ids_get_or_null(ns_id); - Xoa_ttl ttl = hctx.Wiki__ttl_parser().Ttl_parse(ns.Id(), page_bry); if (ttl == null) rdr.Fail("invalid ttl", String_.Empty, String_.new_u8(page_bry)); // TODO: parse title based on site - href_bry = ttl.Full_db(); - title_bry = ttl.Full_txt(); - if (href_type == Xoh_anch_href_parser.Tid__site) { - href_bry = ttl.Page_db(); // for xwiki, use page, not full alias; EX: "wikt:A" -> "A" x> "wikt:A" + href_bry = Bry_.Mid(src, href_bgn, href_end); + byte[] title_bry = null; + Xoa_ttl ttl = null; + if (href_type != Xoh_anch_href_parser.Tid__anch) { + switch (href_type) { + case Xoh_anch_href_parser.Tid__site: + Xow_ttl_parser ttl_parser = hctx.App().Wiki_mgri().Get_by_key_or_make_init_n(Bry_.Mid(src, site_bgn, site_end)); + ttl = ttl_parser.Ttl_parse(ns_id, href_bry); + href_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_qarg.Encode(ttl.Full_db()); + title_bry = ttl.Full_txt(); + break; + case Xoh_anch_href_parser.Tid__wiki: + ttl = hctx.Wiki__ttl_parser().Ttl_parse(ns_id, href_bry); if (ttl == null) rdr.Fail("invalid ttl", String_.Empty, String_.new_u8(href_bry)); + href_bry = ttl.Full_db_w_anch(); + href_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(href_bry); // encode for href; EX: "/wiki/A's" -> "/wiki/A&27s" + title_bry = ttl.Full_txt(); + break; + case Xoh_anch_href_parser.Tid__inet: + title_bry = href_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_qarg.Encode(href_bry); + break; } } // gen html bfr.Add(Html_bldr_.Bry__a_lhs_w_href); switch (href_type) { - case Xoh_anch_href_parser.Tid__site: - bfr.Add(Xoh_href_.Bry__wiki).Add_mid(src, site_bgn, site_end); - bfr.Add(Xoh_href_.Bry__wiki); // "/wiki/" - break; case Xoh_anch_href_parser.Tid__anch: bfr.Add_byte(Byte_ascii.Hash); // "#" break; + case Xoh_anch_href_parser.Tid__site: + bfr.Add(Xoh_href_.Bry__site).Add_mid(src, site_bgn, site_end); + bfr.Add(Xoh_href_.Bry__wiki); + break; case Xoh_anch_href_parser.Tid__wiki: - bfr.Add(Xoh_href_.Bry__wiki); // "/wiki/" + bfr.Add(Xoh_href_.Bry__wiki); break; } bfr.Add(href_bry); - bfr.Add_str_a7("\" id=\"").Add_str_a7(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix).Add_int_variable(hctx.Lnki__uid__nxt()); + bfr.Add(Html_bldr_.Bry__id__nth).Add_str_a7(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix).Add_int_variable(hctx.Lnki__uid__nxt()); if (href_type != Xoh_anch_href_parser.Tid__anch) { - bfr.Add_str_a7("\" title=\""); - bfr.Add(Html_utl.Escape_html_as_bry(title_bry)); + bfr.Add(Html_bldr_.Bry__title__nth); + Html_utl.Escape_html_to_bfr(bfr, title_bry, 0, title_bry.length, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.N); } - bfr.Add_str_a7("\">"); + bfr.Add(Html_bldr_.Bry__lhs_end_head_w_quote); if ( href_type == Xoh_anch_href_parser.Tid__anch - && capt_type != Xoh_lnki_dict_.Capt__diff ) + && text_type != Xoh_anch_capt_parser.Tid__capt ) bfr.Add_byte(Byte_ascii.Hash); - switch (capt_type) { - case Xoh_lnki_dict_.Capt__same: + switch (text_type) { + case Xoh_anch_capt_parser.Tid__href: if (ns_id == Xow_ns_.Tid__main) - bfr.Add_mid(src, page_bgn, page_end); + bfr.Add_mid(src, href_bgn, href_end); else - bfr.Add(title_bry); + bfr.Add(ttl.Full_txt()); break; - case Xoh_lnki_dict_.Capt__diff: + case Xoh_anch_capt_parser.Tid__href_pipe: + bfr.Add_mid(src, href_bgn, href_end); + break; + case Xoh_anch_capt_parser.Tid__capt: bfr.Add_mid(src, capt_bgn, capt_end); break; - case Xoh_lnki_dict_.Capt__trail: - bfr.Add_mid(src, page_bgn, page_end); + case Xoh_anch_capt_parser.Tid__href_trail: + bfr.Add_mid(src, href_bgn, href_end); bfr.Add_mid(src, capt_bgn, capt_end); break; - case Xoh_lnki_dict_.Capt__head: - bfr.Add_mid(src, page_bgn, page_end); + case Xoh_anch_capt_parser.Tid__capt_short: + bfr.Add_mid(src, href_bgn, href_end); break; } - bfr.Add_str_a7(""); + bfr.Add(Html_bldr_.Bry__a_rhs); return rdr.Pos(); } public int Pool__idx() {return pool_idx;} private int pool_idx; public void Pool__clear (Object[] args) {} public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_lnki_hzip rv = new Xoh_lnki_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_ (1, 2, 3); + private static final int // SERIALIZED + Flag__ns_is_not_main = 0 + , Flag__href_type = 1 // "wiki", "site", "anch", "inet" + , Flag__text_type = 2 // "href", "capt", "href_trail", "capt_short", "href_pipe" + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java index f5a4c695b..cc00dc758 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java @@ -19,47 +19,95 @@ package gplx.xowa.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; impo import org.junit.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_lnki_hzip_tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); - @Test public void Page__basic() { - fxt.Test__bicode("~$IA~", Xoh_lnki_html__hdump__tst.Html__same); + @Test public void Href__basic() { + fxt.Test__bicode("~$!A~", Xoh_lnki_html__hdump__tst.Html__same); } - @Test public void Page__alt_case() { - fxt.Test__bicode("~$Ia~", "a"); + @Test public void Href__case_diff() { + fxt.Test__bicode("~$!a~", "a"); } - @Test public void Page__ns() { - fxt.Test__bicode("~$)-A~", "Template:A"); + @Test public void Href__url_encoded() { + String html = "A's"; + fxt.Test__bicode_raw("~$!A's~", html, html); } - @Test public void Anch__basic() { - fxt.Test__bicode("$Ya", "#a"); + @Test public void Ns__same() { // EX: [[Help:A]] + fxt.Test__bicode("~$A/A~", "Help:A"); } - @Test public void Capt__basic() { - fxt.Test__bicode("~$JA~b~", Xoh_lnki_html__hdump__tst.Html__diff); + @Test public void Ns__diff() { // EX: [[Help:A_b|c]] + fxt.Test__bicode("~$B/A_b~c~", "c"); + } + @Test public void Ns__space() { // EX: [[Help talk:A b]] + fxt.Test__bicode("~$A0A b~", "Help talk:A b"); + } + @Test public void Ns__under() { // EX: [[Help_talk:A_b]]; rare; just make sure codec can handle it; + fxt.Test__bicode("~$B0A_b~Help_talk:A_b~", "Help_talk:A_b"); + } + @Test public void Ns__pipe() { // EX: [[Help:A|]] + fxt.Test__bicode("~$E/A~", "A"); + } + @Test public void Ns__pipe_w_words() { // EX: [[Help:A b|]] + fxt.Test__bicode("~$E/A b~", "A b"); + } + @Test public void Anch__same() { + fxt.Test__bicode("~$2a~#a~", "#a"); + } + @Test public void Anch__diff() { + fxt.Test__bicode("~$2a~b~", "b"); + } + @Test public void Anch__diff__starts_w_same() { + fxt.Test__bicode("~$2a~a~", "a"); + } + @Test public void Capt__basic() { // EX: [[A|b]] + fxt.Test__bicode("~$\"A~b~", Xoh_lnki_html__hdump__tst.Html__diff); + } + @Test public void Capt__page_w_anch() { // Ex: [[A#b|c]] + fxt.Test__bicode("~$\"A#b~b~", "b"); } @Test public void Capt__nest() { fxt.Test__bicode - ( "~$JA~C1D~" - , "C1D" + ( "~$\"A~C1D~" + , "C1D" ); - // old: probably broken; fxt.Test__bicode("~$1!#A~~$1!#C~C1D", "C1D"); } - @Test public void Tail__basic() { - fxt.Test__bicode("~$KA~b~", Xoh_lnki_html__hdump__tst.Html__trail); + @Test public void Capt__reparent() { // PURPOSE: PAGE:en.w:Abyssal_plain; DATE:2015-06-02; DELETE: not needed in new dump format; + fxt.Test__bicode + ( "$\"AA1" + , "A1" + ); } - @Test public void Head__basic() { - fxt.Test__bicode("~$LA~b~", "A"); + @Test public void Capt__xwiki() { + Xow_wiki wiki = fxt.Prep_create_wiki("wikt", "en.wiktionary.org"); + wiki.Ns_mgr().Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all); + fxt.Test__bicode("$*en.wiktionary.orgawikt:a", Xoh_lnki_html__hdump__tst.Html__xwiki); } - @Test public void Head__case() { - fxt.Test__bicode("~$La~b~", "a"); + @Test public void Capt__xwiki__qarg() { + Xow_wiki wiki = fxt.Prep_create_wiki("wikt", "en.wiktionary.org"); + wiki.Ns_mgr().Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all); + fxt.Test__bicode("$*en.wiktionary.orga?action=editwikt:a?action=edit", "wikt:a?action=edit"); + } + @Test public void Capt__xwiki__encode() { + Xow_wiki wiki = fxt.Prep_create_wiki("wikt", "en.wiktionary.org"); + wiki.Ns_mgr().Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all); + fxt.Test__bicode("$)en.wiktionary.orgeorðe", "eorðe"); + } + @Test public void Trail__basic() { + fxt.Test__bicode("~$#A~b~", Xoh_lnki_html__hdump__tst.Html__trail); + } + @Test public void Short__basic() { + fxt.Test__bicode("~$$A~b~", "A"); + } + @Test public void Short__case() { + fxt.Test__bicode("~$$a~b~", "a"); + } + @Test public void Site__main_page() { + fxt.Test__bicode("~$)en.wikipedia.org~Main Page~" + , "Main Page" + , "Main Page" + ); + } + @Test public void Site__qarg() { + fxt.Test__bicode("~$*en.wikipedia.org~A?b=c~d~", "d"); + } + @Test public void Inet__file() { + fxt.Test__bicode("~$:file:///C://A.png~b~", "b"); } -// @Test public void Capt__site__xwiki() { -// fxt.Parser_fxt().Init_xwiki_add_wiki_and_user_("wikt", "en.wiktionary.org"); -// fxt.Test__bicode("~$2!A~wikt:A~", Xoh_lnki_html__hdump__tst.Html__xwiki); -// } -// @Test public void Lnki__apos() { -// fxt.Test__bicode("~$0+#A'b~", "Template:A'b"); -// } -// @Test public void Caption__reparent() { // PURPOSE: PAGE:en.w:Abyssal_plain; DATE:2015-06-02 -// String hzip = Xoh_hzip_fxt.Escape("~$1!#A~A1"); -// fxt.Test__encode(hzip, "A1"); -// fxt.Test__decode(hzip, "A1"); -// } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parser.java index b252fe09f..783423650 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parser.java @@ -18,42 +18,89 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.core.brys.*; import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.anchs.*; -import gplx.xowa.wikis.ttls.*; +import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.nss.*; public class Xoh_lnki_parser { - private final Xoh_ttl_matcher ttl_matcher = new Xoh_ttl_matcher(); + private final Xoh_anch_capt_parser capt_parser = new Xoh_anch_capt_parser(); private final Bry_rdr rdr = new Bry_rdr(); - public int Rng_bgn() {return rng_bgn;} private int rng_bgn; - public int Rng_end() {return rng_end;} private int rng_end; - public byte Capt_type() {return capt_type;} private byte capt_type; - public byte[] Capt_bry() {return capt_bry;} private byte[] capt_bry; - public byte[] Trail_bry() {return trail_bry;} private byte[] trail_bry; - public Xoh_anch_href_parser Anch_href_parser() {return anch_href_parser;} private final Xoh_anch_href_parser anch_href_parser = new Xoh_anch_href_parser(); - public int Parse(Xoh_hdoc_wkr wkr, Xoh_hdoc_ctx hctx, byte[] src, Html_tag_rdr tag_rdr, Html_tag anch_tag, Xow_ttl_parser ttl_parser) {// b - this.rng_bgn = anch_tag.Src_bgn(); this.rng_end = anch_tag.Src_end(); - rdr.Init_by_page(Bry_.Empty, src, src.length); - anch_href_parser.Parse(rdr, hctx.Wiki__ttl_parser(), anch_tag); // href='/wiki/A' - Html_tag lnki_tail = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a); // - int capt_bgn = rng_end; int capt_end = lnki_tail.Src_bgn(); // get capt between "" and " - if ( anch_href_parser.Tid() == Xoh_anch_href_parser.Tid__anch - && src[capt_bgn] == Byte_ascii.Hash) - ++capt_bgn; - this.rng_end = lnki_tail.Src_end(); - this.capt_type = ttl_matcher.Match(rdr, ttl_parser, src, anch_href_parser.Page_bgn(), anch_href_parser.Page_end(), src, capt_bgn, capt_end); - this.capt_bry = trail_bry = null; - switch (capt_type) { - case Xoh_ttl_matcher.Tid__same: - this.capt_bry = Bry_.Mid(src, capt_bgn, capt_end); + public int Rng_bgn() {return rng_bgn;} private int rng_bgn; + public int Rng_end() {return rng_end;} private int rng_end; + public byte Text_type() {return text_type;} private byte text_type; + public byte[] Href_bry() {return href_bry;} private byte[] href_bry; + public int Href_bgn() {return href_bgn;} private int href_bgn; + public int Href_end() {return href_end;} private int href_end; + public byte[] Capt_bry() {return capt_bry;} private byte[] capt_bry; + public int Capt_bgn() {return capt_bgn;} private int capt_bgn; + public int Capt_end() {return capt_end;} private int capt_end; + public Xoh_anch_href_parser Href_parser() {return href_parser;} private final Xoh_anch_href_parser href_parser = new Xoh_anch_href_parser(); + public int Parse(Xoh_hdoc_wkr wkr, Xoh_hdoc_ctx hctx, byte[] src, Html_tag_rdr tag_rdr, Html_tag anch_head, Xow_ttl_parser ttl_parser) {// b + this.rng_bgn = anch_head.Src_bgn(); + rdr.Init_by_sub(tag_rdr.Rdr(), "lnki", rng_bgn, src.length); + href_parser.Parse(rdr, hctx.App(), hctx.Wiki__ttl_parser(), anch_head); // href='/wiki/A' + // get href + this.href_bry = src; + this.href_bgn = href_parser.Page_bgn(); this.href_end = href_parser.Page_end(); + Xoa_ttl href_ttl = null; Xow_ns href_ns = null; + int href_ns_id = Xow_ns_.Tid__main; boolean href_cs_tid_1st = true; + switch (href_parser.Tid()) { + case Xoh_anch_href_parser.Tid__anch: + case Xoh_anch_href_parser.Tid__inet: break; - case Xoh_ttl_matcher.Tid__diff: - this.capt_bry = Bry_.Mid(src, capt_bgn, capt_end); + default: + href_ttl = href_parser.Page_ttl(); + href_ns = href_ttl.Ns(); + href_ns_id = href_ns.Id(); + href_cs_tid_1st = href_ttl.Ns().Case_match() == Xow_ns_case_.Tid__1st; + this.href_bry = href_parser.Page_bry(); + this.href_bgn = 0; + this.href_end = href_bry.length; break; - case Xoh_ttl_matcher.Tid__tail: - this.capt_bry = Bry_.Mid(src, capt_bgn, ttl_matcher.Trail_bgn()); - this.trail_bry = Bry_.Mid(src, ttl_matcher.Trail_bgn(), capt_end); + } + // get capt + this.capt_bry = src; + this.capt_bgn = anch_head.Src_end(); // capt starts after + Html_tag anch_tail = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__a); // + this.capt_end = anch_tail.Src_bgn(); // get capt between "" and " + this.rng_end = anch_tail.Src_end(); + boolean capt_bgn_has_ns = true; + if (href_ns_id != Xow_ns_.Tid__main) { // not main; try to remove template name; + int colon_pos = Bry_find_.Find_fwd(href_bry, Byte_ascii.Colon, href_bgn, href_end); + byte[] ns_name = Xoa_ttl.Replace_unders(Bry_.Mid(href_bry, href_bgn, colon_pos + 1)); // EX: 11="Template talk:" + int ns_name_len = ns_name.length; + int ns_name_end = capt_bgn + ns_name_len; + href_bgn += ns_name_len; // skip ns_name for href; EX: "Help:A" -> "A"; "Help" will be saved as encoded num + if (Bry_.Match(src, capt_bgn, ns_name_end, ns_name, 0, ns_name_len)) // href matches capt; EX: [[Help:A]] -> Help:A + capt_bgn = ns_name_end; + else + capt_bgn_has_ns = false; + } + if (href_parser.Tid() == Xoh_anch_href_parser.Tid__anch) + this.text_type = Xoh_anch_capt_parser.Tid__capt; + else + this.text_type = capt_parser.Parse(rdr, capt_bgn_has_ns, href_cs_tid_1st, href_bry, href_bgn, href_end, src, capt_bgn, capt_end); + int split_pos = capt_parser.Split_pos(); + switch (text_type) { + case Xoh_anch_capt_parser.Tid__capt: // nothing to do; href / capt already set above break; - case Xoh_ttl_matcher.Tid__head: - this.capt_bry = Bry_.Mid(src, capt_bgn, capt_end); - this.trail_bry = Bry_.Mid(src, ttl_matcher.Trail_bgn(), anch_href_parser.Page_end()); + case Xoh_anch_capt_parser.Tid__href: // redefine href to capt since both href and capt are same except for case-sensitivity / underscores; EX: [[a]], [[A b]] + case Xoh_anch_capt_parser.Tid__href_pipe: + this.href_bry = src; + this.href_bgn = capt_bgn; + this.href_end = capt_end; + break; + case Xoh_anch_capt_parser.Tid__href_trail: + this.href_bry = src; + this.href_bgn = capt_bgn; + this.href_end = split_pos; + this.capt_bgn = split_pos; + break; + case Xoh_anch_capt_parser.Tid__capt_short: + int tmp_capt_bgn = capt_bgn, tmp_capt_end = capt_end; + this.capt_bry = href_bry; + this.capt_bgn = split_pos; + this.capt_end = href_end; + this.href_bry = src; + this.href_bgn = tmp_capt_bgn; + this.href_end = tmp_capt_end; break; } wkr.On_lnki(this); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher.java deleted file mode 100644 index 3d9db5c97..000000000 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher.java +++ /dev/null @@ -1,75 +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.xowa.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; -import gplx.core.brys.*; -import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; -import gplx.langs.htmls.parsers.*; -public class Xoh_ttl_matcher { - public int Trail_bgn() {return midpoint_pos;} private int midpoint_pos; - public byte Match(Bry_rdr owner_rdr, Xow_ttl_parser ttl_parser, byte[] page_bry, int page_bgn, int page_end, byte[] capt_bry, int capt_bgn, int capt_end) { - midpoint_pos = -1; - int page_len = page_end - page_bgn; if (page_len == 0) page_bry = Xoa_page_.Main_page_bry; // NOTE: href="/site/en.wikipedia.org/wiki/" can be null - Xoa_ttl page = ttl_parser.Ttl_parse(page_bry, page_bgn, page_end); if (page == null) owner_rdr.Fail("invalid page", "page", page_bry); - Xow_ns ns = page.Ns(); - if (ns.Id() != Xow_ns_.Tid__main) { - byte[] ns_name_txt = ns.Name_ui_w_colon(); // EX: 11="Template talk:" - int ns_name_txt_len = ns_name_txt.length; - int ns_name_txt_end = capt_bgn + ns_name_txt_len; - if (Bry_.Match(capt_bry, capt_bgn, ns_name_txt_end, ns_name_txt, 0, ns_name_txt_len)) { - capt_bgn = ns_name_txt_end; - page_bgn += ns_name_txt_len; - page_len = page_end - page_bgn; - } - else - return Tid__diff; - } - int capt_len = capt_end - capt_bgn; - for (int i = 0; i < capt_len; ++i) { - byte capt_byte = capt_bry[i + capt_bgn]; - if (i == page_len) { - midpoint_pos = i + capt_bgn; - return Tid__tail; - } - byte page_byte = page_bry[i + page_bgn]; - if (page_byte == capt_byte) continue; - if ( i == 0 - && ns.Case_match() == Xow_ns_case_.Tid__1st - && capt_byte >= Byte_ascii.Ltr_a && capt_byte <= Byte_ascii.Ltr_z - && (capt_byte - page_byte) == 32 - ) - continue; - if ( capt_byte == Byte_ascii.Space - && page_byte == Byte_ascii.Underline - ) - continue; - return Tid__diff; - } - if (capt_len == page_len) - return Tid__same; - else { - midpoint_pos = capt_len + page_bgn; - return Tid__head; - } - } - public static final byte - Tid__same = 0 // "A" , "A" , "A" - , Tid__diff = 1 // "A" , "B" , "A|B" - , Tid__tail = 2 // "A" , "As" , "A|s" - , Tid__head = 3 // "A_(b)" , "A" , "A|_(b)" - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser.java new file mode 100644 index 000000000..229a0a8d5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser.java @@ -0,0 +1,61 @@ +/* +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.htmls.core.wkrs.lnkis.anchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; +import gplx.core.brys.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; +public class Xoh_anch_capt_parser { + public int Split_pos() {return split_pos;} private int split_pos; + public byte Parse(Bry_rdr owner_rdr, boolean capt_bgn_has_ns, boolean cs_tid_1st, byte[] href_bry, int href_bgn, int href_end, byte[] capt_bry, int capt_bgn, int capt_end) { + this.split_pos = -1; + int href_len = href_end - href_bgn; + int capt_len = capt_end - capt_bgn; + for (int i = 0; i < capt_len; ++i) { + if (i == href_len) { // ran out of href; mark as trail; EX: [[A]]s -> href="A"; capt="As" + split_pos = i + capt_bgn; + return Tid__href_trail; + } + byte href_byte = href_bry[i + href_bgn]; + byte capt_byte = capt_bry[i + capt_bgn]; + if (href_byte == capt_byte) continue; + if ( i == 0 // ignore case if 1st letter and ns is Tid__1st; EX: [[earth]] -> href="Earth"; capt="earth" + && cs_tid_1st + && capt_byte >= Byte_ascii.Ltr_a && capt_byte <= Byte_ascii.Ltr_z + && (capt_byte - href_byte) == 32 + ) + continue; + if ( capt_byte == Byte_ascii.Space // ignore " " vs "_" + && href_byte == Byte_ascii.Underline + ) + continue; + return Tid__capt; // bytes still diff; return diff + } + if (capt_len == href_len) // all bytes same and capt_len == href_len; must be same + return capt_bgn_has_ns ? Tid__href : Tid__href_pipe; + else { // capt < href; EX: [[A_(b)|A]] -> href="A_(b)"; capt = "A" + split_pos = capt_len + href_bgn; + return Tid__capt_short; + } + } + public static final byte // SERIALIAZED + Tid__href = 0 // [[A]] -> "A|A" -> "A|" + , Tid__capt = 1 // [[A|b]] -> "A|b" -> "A|b" + , Tid__href_trail = 2 // [[A]]s -> "A|As" -> "A|s" + , Tid__capt_short = 3 // [[A_(b)|A]] -> "A_(b)|A" -> "A|_(b)" + , Tid__href_pipe = 4 // [[Help:A|]] -> "Help:A|A" -> "A|" + ; +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser_tst.java similarity index 53% rename from 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser_tst.java index 4997cd69d..2de9be9ce 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_ttl_matcher_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_capt_parser_tst.java @@ -15,28 +15,27 @@ 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.htmls.core.wkrs.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +package gplx.xowa.htmls.core.wkrs.lnkis.anchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import org.junit.*; import gplx.core.brys.*; import gplx.langs.htmls.parsers.*; -public class Xoh_ttl_matcher_tst { - private final Xoh_ttl_matcher_fxt fxt = new Xoh_ttl_matcher_fxt(); - @Test public void Basic__same() {fxt.Test__match("Abc" , "Abc", Xoh_ttl_matcher.Tid__same);} - @Test public void Basic__diff() {fxt.Test__match("Abc" , "ABC", Xoh_ttl_matcher.Tid__diff);} - @Test public void Space__same() {fxt.Test__match("A_b" , "A b", Xoh_ttl_matcher.Tid__same);} - @Test public void Case__same() {fxt.Test__match("Abc" , "abc", Xoh_ttl_matcher.Tid__same);} - @Test public void Case__reverse() {fxt.Test__match("abc" , "Abc", Xoh_ttl_matcher.Tid__diff);} +public class Xoh_anch_capt_parser_tst { + private final Xoh_anch_capt_parser_fxt fxt = new Xoh_anch_capt_parser_fxt(); + @Test public void Basic__same() {fxt.Test__match("Abc" , "Abc", Xoh_anch_capt_parser.Tid__href);} + @Test public void Basic__diff() {fxt.Test__match("Abc" , "ABC", Xoh_anch_capt_parser.Tid__capt);} + @Test public void Space__same() {fxt.Test__match("A_b" , "A b", Xoh_anch_capt_parser.Tid__href);} + @Test public void Case__same() {fxt.Test__match("Abc" , "abc", Xoh_anch_capt_parser.Tid__href);} + @Test public void Case__reverse() {fxt.Test__match("abc" , "Abc", Xoh_anch_capt_parser.Tid__capt);} @Test public void Case__disabled() { fxt.Wiki().Ns_mgr().Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all); - fxt.Test__match("Abcde", "abcde", Xoh_ttl_matcher.Tid__diff); + fxt.Test__match("Abcde", "abcde", Xoh_anch_capt_parser.Tid__capt); } - @Test public void Ns__same() {fxt.Test__match("Help_talk:Ab" , "Help talk:Ab", Xoh_ttl_matcher.Tid__same);} - @Test public void Ns__diff() {fxt.Test__match("Help_talk:Ab" , "Help_talk:Ab", Xoh_ttl_matcher.Tid__diff);} - @Test public void Tail__same() {fxt.Test__match("A" , "Abc" , Xoh_ttl_matcher.Tid__tail, 1);} - @Test public void Head__same() {fxt.Test__match("Ab" , "A" , Xoh_ttl_matcher.Tid__head, 1);} + @Test public void Ns__href() {fxt.Test__match("Help_talk:Ab" , "Help talk:Ab" , Xoh_anch_capt_parser.Tid__href);} + @Test public void Capt_trail() {fxt.Test__match("A" , "Abc" , Xoh_anch_capt_parser.Tid__href_trail, 1);} + @Test public void Href_trail() {fxt.Test__match("Ab" , "A" , Xoh_anch_capt_parser.Tid__capt_short, 1);} } -class Xoh_ttl_matcher_fxt { - private final Xoh_ttl_matcher matcher = new Xoh_ttl_matcher(); +class Xoh_anch_capt_parser_fxt { + private final Xoh_anch_capt_parser matcher = new Xoh_anch_capt_parser(); private final Bry_rdr rdr = new Bry_rdr(); - public Xoh_ttl_matcher_fxt() { + public Xoh_anch_capt_parser_fxt() { Xoae_app app = Xoa_app_fxt.app_(); this.wiki = Xoa_app_fxt.wiki_tst_(app); } @@ -45,7 +44,9 @@ class Xoh_ttl_matcher_fxt { public void Test__match(String page_str, String capt_str, int expd_tid, int expd_trail_bgn) { byte[] page_bry = Bry_.new_u8(page_str); byte[] capt_bry = Bry_.new_u8(capt_str); - Tfds.Eq_int(expd_tid , matcher.Match(rdr.Init_by_page(Bry_.Empty, page_bry, page_bry.length), wiki, page_bry, 0, page_bry.length, capt_bry, 0, capt_bry.length)); - Tfds.Eq_int(expd_trail_bgn , matcher.Trail_bgn()); + Xoa_ttl href_ttl = wiki.Ttl_parse(page_bry); + boolean cs_tid_1st = href_ttl.Ns().Case_match() == gplx.xowa.wikis.nss.Xow_ns_case_.Tid__1st; + Tfds.Eq_int(expd_tid , matcher.Parse(rdr.Init_by_page(Bry_.Empty, page_bry, page_bry.length), Bool_.Y, cs_tid_1st, page_bry, 0, page_bry.length, capt_bry, 0, capt_bry.length)); + Tfds.Eq_int(expd_trail_bgn , matcher.Split_pos()); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser.java index 4a05196b7..c7c631332 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser.java @@ -18,78 +18,114 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.lnkis.anchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; -import gplx.xowa.wikis.ttls.*; +import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.metas.*; public class Xoh_anch_href_parser implements Xoh_itm_parser { - private Xoa_ttl page_ttl; Xow_ttl_parser ttl_parser; + private byte[] page_bry; private Xoa_ttl page_ttl; private Xoa_app app; private Xow_ttl_parser ttl_parser; private final Bry_rdr rdr = new Bry_rdr().Dflt_dlm_(Byte_ascii.Slash); public void Fail_throws_err_(boolean v) {rdr.Fail_throws_err_(v);}// TEST public Html_atr Atr() {return atr;} private Html_atr atr; public byte Tid() {return tid;} private byte tid; + public boolean Tid_has_ns() {return tid_has_ns;} private boolean tid_has_ns; public byte[] Src() {return src;} private byte[] src; public int Val_bgn() {return val_bgn;} private int val_bgn; public int Val_end() {return val_end;} private int val_end; public int Site_bgn() {return site_bgn;} private int site_bgn; public int Site_end() {return site_end;} private int site_end; public boolean Site_exists() {return site_end > site_bgn;} + public boolean Rel_nofollow_exists() { + if (Site_exists()) { + if (rel_nofollow_exists == Bool_.__byte) { + Xow_domain_itm itm = Xow_domain_itm_.parse(Bry_.Mid(src, site_bgn, site_end)); + rel_nofollow_exists = itm.Domain_type_id() == Xow_domain_tid_.Int__other ? Bool_.Y_byte : Bool_.N_byte; + } + return rel_nofollow_exists == Bool_.Y_byte; + } + else + return false; + } private byte rel_nofollow_exists; public int Page_bgn() {return page_bgn;} private int page_bgn; public int Page_end() {return page_end;} private int page_end; - public byte[] Page_bry() {if (page_bry == null) page_bry = Bry_.Mid(src, page_bgn, page_end); return page_bry;} private byte[] page_bry; + public byte[] Page_bry() { + if (page_bry == null) { + if (page_end - page_bgn == 0) // NOTE: href="/site/en.wikipedia.org/wiki/" can be null + page_bry = Xoa_page_.Main_page_bry; + else + page_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Decode(src, page_bgn, page_end); + } + return page_bry; + } public Xoa_ttl Page_ttl() { if (page_ttl == null) { page_bry = this.Page_bry(); + if (site_bgn != -1) + ttl_parser = app.Wiki_mgri().Get_by_key_or_make_init_n(Bry_.Mid(src, site_bgn, site_end)); page_ttl = ttl_parser.Ttl_parse(page_bry); + page_bry = page_ttl.Full_db_w_anch(); } return page_ttl; } - public void Parse(Bry_rdr owner_rdr, Xow_ttl_parser ttl_parser, Html_tag tag) { - this.atr = tag.Atrs__get_by_or_fail(Html_atr_.Bry__href); - Parse(owner_rdr, ttl_parser, atr.Val_bgn(), atr.Val_end()); + public int Page_ns_id() { + switch (tid) { + case Xoh_anch_href_parser.Tid__anch: + case Xoh_anch_href_parser.Tid__inet: return Xow_ns_.Tid__main; // for purposes of hzip/make, assume main_ns + case Xoh_anch_href_parser.Tid__wiki: + case Xoh_anch_href_parser.Tid__site: return this.Page_ttl().Ns().Id(); + default: throw Err_.new_unhandled(tid); + } } - public void Parse(Bry_rdr owner_rdr, Xow_ttl_parser ttl_parser, int href_bgn, int href_end) { - rdr.Init_by_sub(owner_rdr, "lnki.href", href_bgn, href_end); - site_bgn = site_end = page_bgn = page_end = -1; - tid = Tid__null; + public boolean Page_ns_id_is_image() {return this.Page_ns_id() == Xow_ns_.Tid__file && Bry_.Has_at_bgn(page_bry, Xow_ns_.Alias__image__bry);} + public boolean Parse(Bry_rdr owner_rdr, Xoa_app app, Xow_ttl_parser ttl_parser, Html_tag tag) { + this.atr = tag.Atrs__get_by_or_empty(Html_atr_.Bry__href); + return Parse(owner_rdr, app, ttl_parser, atr.Val_bgn(), atr.Val_end()); + } + public boolean Parse(Bry_rdr owner_rdr, Xoa_app app, Xow_ttl_parser ttl_parser, int href_bgn, int href_end) { + if (href_bgn == -1) return false; + rdr.Init_by_sub(owner_rdr, "anch.href", href_bgn, href_end); + rel_nofollow_exists = Bool_.__byte; + site_bgn = site_end = page_bgn = page_end = -1; this.src = owner_rdr.Src(); + tid = Tid__wiki; page_bry = null; page_ttl = null; this.val_bgn = href_bgn; this.val_end = href_end; - this.src = owner_rdr.Src(); this.ttl_parser = ttl_parser; + this.src = owner_rdr.Src(); this.ttl_parser = ttl_parser; this.app = app; if (val_end == val_bgn) { + tid = Tid__inet; page_bgn = page_end = 0; - return; // handle empty String separately; EX: href="" + return true; // handle empty String separately; EX: href="" } int pos = href_bgn; switch (src[pos]) { case Byte_ascii.Hash: - tid = Tid__anch; + tid = Tid__anch; tid_has_ns = Bool_.N; page_bgn = pos + 1; // position page_bgn after # page_end = val_end; // anch ends at EOS break; default: - tid = Tid__inet; + tid = Tid__inet; tid_has_ns = Bool_.N; page_bgn = pos; // position page_bgn after # page_end = val_end; // anch ends at EOS break; case Byte_ascii.Slash: rdr.Move_by_one(); // skip "/" if (rdr.Chk(trie) == Tid__site) { // EX: "/site/wiki/A" - tid = Tid__site; + tid = Tid__site; tid_has_ns = Bool_.Y; site_bgn = rdr.Pos(); site_end = rdr.Find_fwd_lr(); rdr.Chk(Bry__wiki); } else { - tid = Tid__wiki; + tid = Tid__wiki; tid_has_ns = Bool_.Y; } page_bgn = rdr.Pos(); page_end = rdr.Src_end(); break; } + return true; } public static final byte - Tid__null = 0 // EX: href="" - , Tid__wiki = 1 // EX: href="/wiki/A" - , Tid__site = 2 // EX: href="/site/en.wikipedia.org/wiki/A" - , Tid__anch = 3 // EX: href="#A" - , Tid__inet = 4 // EX: href="https://a.org/A" + Tid__wiki = 0 // EX: href="/wiki/A" + , Tid__site = 1 // EX: href="/site/en.wikipedia.org/wiki/A" + , Tid__anch = 2 // EX: href="#A" + , Tid__inet = 3 // EX: href="https://a.org/A" ; private static final byte[] Bry__site = Bry_.new_a7("site/"), Bry__wiki = Bry_.new_a7("wiki/"); private static final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7() diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser_tst.java index 81b7643dc..9820dbb41 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/anchs/Xoh_anch_href_parser_tst.java @@ -35,17 +35,18 @@ public class Xoh_anch_href_parser_tst { fxt.Test__parse("http://a.org", "", "http://a.org"); } @Test public void Fail__1st_seg_must_be_site_or_wiki() { - fxt.Test__parse__fail("/fail/A", "failed trie check: mid='fail/A' ctx='Main_Page' wkr='lnki.href' excerpt='/fail/A'"); + fxt.Test__parse__fail("/fail/A", "failed trie check: mid='fail/A' ctx='Main_Page' wkr='anch.href' excerpt=/fail/A"); } @Test public void Fail__2nd_seg_must_be_wiki() { - fxt.Test__parse__fail("/site/A/B/C", "failed check: chk='wiki/' ctx='Main_Page' wkr='lnki.href' excerpt='/site/A/B/C'"); + fxt.Test__parse__fail("/site/A/B/C", "failed check: chk='wiki/' ctx='Main_Page' wkr='anch.href' excerpt=/site/A/B/C"); } } class Xoh_anch_href_parser_fxt extends Xoh_itm_parser_fxt_base { + private final Xoae_app app; private final Xoh_anch_href_parser parser = new Xoh_anch_href_parser(); private final Xow_ttl_parser ttl_parser; public Xoh_anch_href_parser_fxt() { - Xoae_app app = Xoa_app_fxt.app_(); + this.app = Xoa_app_fxt.app_(); ttl_parser = Xoa_app_fxt.wiki_tst_(app); } @Override public Xoh_itm_parser Parser_get() {return parser;} @@ -55,6 +56,6 @@ class Xoh_anch_href_parser_fxt extends Xoh_itm_parser_fxt_base { Tfds.Eq_str(expd_page, String_.new_u8(src, parser.Page_bgn(), parser.Page_end())); } @Override public void Exec_parse_hook(Bry_rdr owner_rdr, int src_bgn, int src_end) { - parser.Parse(owner_rdr, ttl_parser, src_bgn, src_end); + parser.Parse(owner_rdr, app, ttl_parser, src_bgn, src_end); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java index d161db3f6..2fb5f774b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java @@ -30,33 +30,36 @@ public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { tmp_bfr.Add_double(xfer_itm.Lnki_upright()).Add_byte_pipe(); tmp_bfr.Add_double(xfer_itm.Lnki_time()).Add_byte_pipe(); tmp_bfr.Add_int_variable(xfer_itm.Lnki_page()).Add_byte_quote(); +// fmtr__img__full.Bld_bfr_many(bfr +// , a_href, Xoh_lnki_consts.A_cls_to_bry(a_cls), Xoh_lnki_consts.A_rel_to_bry(a_rel), a_title +// , img_alt, tmp_bfr.To_bry_and_clear(), arg_img_core.Init(uid, img_src, img_w, img_h), Xoh_img_cls_.To_html(img_cls, img_cls_other)); fmtr__img__full.Bld_bfr_many(bfr - , a_href, Xoh_lnki_consts.A_cls_to_bry(a_cls), Xoh_lnki_consts.A_rel_to_bry(a_rel), a_title - , img_alt, tmp_bfr.To_bry_and_clear(), arg_img_core.Init(uid, img_src, img_w, img_h), Xoh_img_cls_.To_html(img_cls, img_cls_other)); + , a_href, Xoh_lnki_consts.A_cls_to_bry(a_cls), Xoh_lnki_consts.A_rel_to_bry(a_rel), a_title, Xoa_ttl.Replace_spaces(a_xowa_title) + , img_alt, tmp_bfr.To_bry_and_clear(), arg_img_core.Init(uid, Bry_.Empty, 0, 0), Xoh_img_cls_.To_html(img_cls, img_cls_other)); } private Bry_fmtr fmtr__img__full = Bry_fmtr.new_ - ( "" - + "\"~{img_alt}\"~{img_xoimg}~{img_core}~{img_class}/" + ( "" + + "" + "" - , "a_href", "a_class", "a_rel", "a_title", "img_alt", "img_xoimg", "img_core", "img_class" + , "a_href", "a_class", "a_rel", "a_title", "a_xowa_title", "img_alt", "img_xoimg", "img_core", "img_class" ); // public override void Html_full_media(Bry_bfr tmp_bfr, byte[] a_href, byte[] a_title, Bfr_arg html) { // fmtr_full_media.Bld_bfr_many(tmp_bfr, a_href, a_title, html); // } - @Override public void Html_thumb_core(Bry_bfr bfr, int uid, byte[] div1_halign, int div2_width, byte[] div2_content) { - tmp_bfr.Add(Xoh_make_trie_.Bry__img_style); - tmp_bfr.Add_int_variable(uid); - tmp_bfr.Add_byte_quote(); - byte[] div2_width_repl = tmp_bfr.To_bry_and_clear(); - fmtr_thumb_core.Bld_bfr_many(bfr, uid, div1_halign, div2_width_repl, div2_content); - } - @Override public void Html_thumb_part_magnify(Bry_bfr bfr, int uid, byte[] a_href, byte[] a_title, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_mgnf, uid);} - @Override public void Html_thumb_part_info(Bry_bfr bfr, int uid, byte[] a_href, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_info, uid);} - @Override public void Html_thumb_part_play(Bry_bfr bfr, int uid, int a_width, int a_max_width, byte[] a_href, byte[] a_xowa_title, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_play, uid);} - private static void Write_xnde(Bry_bfr bfr, byte[] key, int uid) { - bfr.Add(key); - bfr.Add_int_variable(uid); - bfr.Add(Bry_xnde_end); - } private static final byte[] Bry_xnde_end = Bry_.new_a7("\"/>"); +// public override void Html_thumb_core(Bry_bfr bfr, int uid, byte[] div1_halign, int div2_width, byte[] div2_content) { +// tmp_bfr.Add(Xoh_make_trie_.Bry__img_style); +// tmp_bfr.Add_int_variable(uid); +// tmp_bfr.Add_byte_quote(); +// byte[] div2_width_repl = tmp_bfr.To_bry_and_clear(); +// fmtr_thumb_core.Bld_bfr_many(bfr, uid, div1_halign, div2_width_repl, div2_content); +// } +// public override void Html_thumb_part_magnify(Bry_bfr bfr, int uid, byte[] a_href, byte[] a_title, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_mgnf, uid);} +// public override void Html_thumb_part_info(Bry_bfr bfr, int uid, byte[] a_href, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_info, uid);} +// public override void Html_thumb_part_play(Bry_bfr bfr, int uid, int a_width, int a_max_width, byte[] a_href, byte[] a_xowa_title, byte[] img_src) {Write_xnde(bfr, Xoh_make_trie_.Bry__file_play, uid);} +// private static void Write_xnde(Bry_bfr bfr, byte[] key, int uid) { +// bfr.Add(key); +// bfr.Add_int_variable(uid); +// bfr.Add(Bry_xnde_end); +// } private static final byte[] Bry_xnde_end = Bry_.new_a7("\"/>"); public static final Xoh_file_html_fmtr__hdump Hdump = new Xoh_file_html_fmtr__hdump(); Xoh_file_html_fmtr__hdump() {} } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java index 2b127a13c..5c2873ae7 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java @@ -66,7 +66,7 @@ public class Xoh_file_wtr__basic { ) { img_orig_src = img_view_src = Bry_.Empty; // null out src } - if (lnki.Ns_id() == Xow_ns_.Tid__media) // NOTE: regardless of ext (ogg vs jpeg) and literal status (Media vs :Media), [[Media]] links are always rendered the same way; REF.MW:Linker.php|makeMediaLinkObj; PAGE:en.w:Beethoven; EX: [[:Media:De-Ludwig_van_Beethoven.ogg|listen]]); [[File:Beethoven 3.jpg|The [[Media:BeethovenWithLyreGuitar( W. J. Mahler - 1804).jpg|complete painting]]...]] + if (lnki.Ns_id() == Xow_ns_.Tid__media) // NOTE: regardless of ext (ogg vs jpeg) and literal status (Media vs :Media), [[Media]] links are always rendered the same way; REF.MW:Linker.php|makeMediaLinkObj; PAGE:en.w:Beethoven; EX: [[:Media:De-Ludwig_van_Beethoven.ogg|listen]]); [[File:Beethoven 3.jpg|The [[Media:BeethovenWithLyreGuitar( W. J. Mahler - 1804).jpg|complete painting]]...]] this.Write_file_ns_media(bfr, ctx, src, lnki, img_orig_src); else { if ( Xof_ext_.Id_is_video_strict(orig_ext.Id()) // id is .ogv or .webm @@ -78,10 +78,10 @@ public class Xoh_file_wtr__basic { ) ) { xfer_itm.Html_elem_tid_(Xof_html_elem.Tid_vid); - this.Write_file_video(bfr, ctx, src, lnki, uid, div_width, lnki_halign_bry, lnki_href, img_view_src, img_orig_src, img_alt, xfer_itm); + this.Write_file_video(bfr, ctx, hctx, src, lnki, uid, div_width, lnki_halign_bry, lnki_href, img_view_src, img_orig_src, img_alt, xfer_itm); } else if (orig_ext.Id_is_audio()) // audio - this.Write_file_audio(bfr, ctx, src, lnki, uid, div_width, lnki_halign_bry, lnki_href, img_orig_src, img_alt); + this.Write_file_audio(bfr, ctx, hctx, src, lnki, uid, div_width, lnki_halign_bry, lnki_href, img_orig_src, img_alt); else // image this.Write_file_image(bfr, ctx, hctx, src, lnki, xfer_itm, uid, lnki_is_thumbable, div_width, lnki_halign, lnki_halign_bry, lnki_ttl, orig_ext, lnki_href, img_view_src, img_orig_src, img_alt); } @@ -92,17 +92,17 @@ public class Xoh_file_wtr__basic { private void Write_file_ns_media(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, byte[] img_orig_src) { html_fmtr.Html_full_media(bfr, img_orig_src, lnki.Ttl().Page_txt(), Arg_caption(ctx, src, Xoh_wtr_ctx.Basic, lnki)); // NOTE: use orig_src not view_src; DATE:2014-01-19 } - private void Write_file_audio(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int uid, int div_width, byte[] lnki_halign_bry, byte[] lnki_href, byte[] img_orig_src, byte[] alt) { - byte[] content = Arg_content_audio(lnki, ctx, src, uid, lnki_href, img_orig_src, alt); + private void Write_file_audio(Bry_bfr bfr, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, int uid, int div_width, byte[] lnki_halign_bry, byte[] lnki_href, byte[] img_orig_src, byte[] alt) { + byte[] content = Arg_content_audio(lnki, ctx, hctx, src, uid, lnki_href, img_orig_src, alt); if (lnki.Media_icon()) html_fmtr.Html_thumb_core(bfr, uid, lnki_halign_bry, div_width, content); else bfr.Add(content); } - private void Write_file_video(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int uid, int div_width, byte[] lnki_halign_bry, byte[] lnki_href, byte[] img_view_src, byte[] img_orig_src, byte[] alt, Xof_file_itm xfer_itm) { + private void Write_file_video(Bry_bfr bfr, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, int uid, int div_width, byte[] lnki_halign_bry, byte[] lnki_href, byte[] img_view_src, byte[] img_orig_src, byte[] alt, Xof_file_itm xfer_itm) { xfer_itm.Html_elem_tid_(Xof_html_elem.Tid_vid); boolean video_is_thumb = Xop_lnki_type.Id_defaults_to_thumb(lnki.Lnki_type()); - byte[] content = Arg_content_video(ctx, src, lnki, xfer_itm, uid, video_is_thumb, lnki_href, img_view_src, img_orig_src, alt); + byte[] content = Arg_content_video(ctx, hctx, src, lnki, xfer_itm, uid, video_is_thumb, lnki_href, img_view_src, img_orig_src, alt); if (video_is_thumb) html_fmtr.Html_thumb_core(bfr, uid, lnki_halign_bry, div_width, content); else @@ -145,7 +145,7 @@ public class Xoh_file_wtr__basic { byte[] link_ref = link_tkn.Dat_to_bry(src); byte[] link_ref_new = tmp_link_parser.Parse(tmp_bfr, tmp_url, wiki, link_ref, lnki_href); link_ref = link_ref_new == null ? lnki_href: link_ref_new; // if parse fails, then assign to lnki_href; EX:link={{{1}}} - link_ref = Xoa_app_.Utl__encoder_mgr().Href_quotes().Encode(link_ref); // must encode quotes; PAGE:en.w:List_of_cultural_heritage_sites_in_Punjab,_Pakistan; DATE:2014-07-16 + link_ref = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_quotes.Encode(link_ref); // must encode quotes; PAGE:en.w:List_of_cultural_heritage_sites_in_Punjab,_Pakistan; DATE:2014-07-16 if (Bry_.Len_gt_0(tmp_link_parser.Html_xowa_ttl())) lnki_ttl = tmp_link_parser.Html_xowa_ttl(); lnki_file_wkr.Html_full_img(bfr, hctx, page, xfer_itm, uid, link_ref, tmp_link_parser.Html_anchor_cls(), tmp_link_parser.Html_anchor_rel(), anchor_title, lnki_ttl, xfer_itm.Html_w(), xfer_itm.Html_h(), img_view_src, alt, img_cls_tid, img_cls_other); } @@ -155,37 +155,37 @@ public class Xoh_file_wtr__basic { tmp_bfr.Mkr_rls(); } private byte[] Arg_content_thumb(Xoh_file_img_wkr lnki_file_wkr, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, Xof_file_itm xfer_itm, int uid, byte[] lnki_href, byte[] view_src, byte[] img_orig_src, byte[] lnki_alt_text, byte[] lnki_ttl, byte[] anchor_title) { - byte[] lnki_alt_html = wiki.Html_mgr().Imgs_mgr().Alt_in_caption().Val() ? Arg_alt_html(ctx, src, lnki) : Bry_.Empty; + byte[] lnki_alt_html = wiki.Html_mgr().Imgs_mgr().Alt_in_caption().Val() ? Arg_alt_html(ctx, hctx, src, lnki) : Bry_.Empty; byte img_cls_tid = xfer_itm.File_exists() ? Xoh_img_cls_.Tid__thumbimage : Xoh_img_cls_.Tid__none; Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); lnki_file_wkr.Html_full_img(tmp_bfr, hctx, page, xfer_itm, uid, lnki_href, Xoh_lnki_consts.Tid_a_cls_image, Xoh_lnki_consts.Tid_a_rel_none, anchor_title, lnki_ttl, xfer_itm.Html_w(), xfer_itm.Html_h(), view_src, lnki_alt_text, img_cls_tid, Xoh_img_cls_.Bry__none); byte[] thumb = tmp_bfr.To_bry_and_clear(); - html_fmtr.Html_thumb_file_image(tmp_bfr, thumb, Arg_caption_div(ctx, src, lnki, uid, img_orig_src, lnki_href), lnki_alt_html); + html_fmtr.Html_thumb_file_image(tmp_bfr, thumb, Arg_caption_div(ctx, hctx, src, lnki, uid, img_orig_src, lnki_href), lnki_alt_html); return tmp_bfr.To_bry_and_rls(); } - private byte[] Arg_content_audio(Xop_lnki_tkn lnki, Xop_ctx ctx, byte[] src, int uid, byte[] lnki_href, byte[] img_orig_src, byte[] alt) { + private byte[] Arg_content_audio(Xop_lnki_tkn lnki, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, int uid, byte[] lnki_href, byte[] img_orig_src, byte[] alt) { byte[] info_btn = Bry_.Empty; if (lnki.Media_icon()) { html_fmtr.Html_thumb_part_info(scratch_bfr, uid, lnki_href, html_mgr.Img_media_info_btn()); info_btn = scratch_bfr.To_bry_and_clear(); } int play_btn_width = lnki.W(); if (play_btn_width < 1) play_btn_width = html_mgr.Img_thumb_width(); // if no width set width to default img width - html_fmtr.Html_thumb_file_audio(scratch_bfr, Arg_caption_div(ctx, src, lnki, uid, img_orig_src, lnki_href), Arg_alt_html(ctx, src, lnki), Arg_play_btn(uid, play_btn_width, Play_btn_max_width, img_orig_src, lnki.Ttl().Page_txt()), info_btn); + html_fmtr.Html_thumb_file_audio(scratch_bfr, Arg_caption_div(ctx, hctx, src, lnki, uid, img_orig_src, lnki_href), Arg_alt_html(ctx, hctx, src, lnki), Arg_play_btn(uid, play_btn_width, Play_btn_max_width, img_orig_src, lnki.Ttl().Page_txt()), info_btn); return scratch_bfr.To_bry_and_clear(); } - private byte[] Arg_content_video(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, Xof_file_itm xfer_itm, int uid, boolean lnki_thumb, byte[] a_href, byte[] view_src, byte[] orig_src, byte[] img_alt) { + private byte[] Arg_content_video(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, Xof_file_itm xfer_itm, int uid, boolean lnki_thumb, byte[] a_href, byte[] view_src, byte[] orig_src, byte[] img_alt) { int thumb_w = xfer_itm.Html_w(); int play_btn_width = thumb_w; if (play_btn_width < 1) play_btn_width = wiki.Html_mgr().Img_thumb_width(); byte[] caption_html = Bry_.Empty, alt_html = Bry_.Empty; if (lnki_thumb) { - caption_html = Arg_caption_div(ctx, src, lnki, uid, orig_src, a_href); - alt_html = Arg_alt_html(ctx, src, lnki); + caption_html = Arg_caption_div(ctx, hctx, src, lnki, uid, orig_src, a_href); + alt_html = Arg_alt_html(ctx, hctx, src, lnki); } html_fmtr.Html_thumb_file_video(scratch_bfr, Arg_play_btn(uid, play_btn_width, play_btn_width, orig_src, lnki.Ttl().Page_txt()), html_fmtr.Html_thumb_part_img(scratch_bfr, page, xfer_itm, lnki, uid, a_href, view_src, img_alt), caption_html, alt_html); return scratch_bfr.To_bry_and_clear(); } - private byte[] Arg_caption_div(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int uid, byte[] img_orig_src, byte[] lnki_href) { - Bfr_arg caption = Arg_caption(ctx, src, Xoh_wtr_ctx.Basic, lnki); + private byte[] Arg_caption_div(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, int uid, byte[] img_orig_src, byte[] lnki_href) { + Bfr_arg caption = Arg_caption(ctx, src, hctx, lnki); byte[] magnify_btn = Bry_.Empty; if (lnki.Media_icon()) { if (msg_file_enlarge == null) msg_file_enlarge = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_file_enlarge); @@ -205,9 +205,9 @@ public class Xoh_file_wtr__basic { media_alt_fmtr.Bfr_arg__add(tmp_bfr); return tmp_bfr.To_bry_and_rls(); } - private byte[] Arg_alt_html(Xop_ctx ctx, byte[] alt_src, Xop_lnki_tkn lnki) { + private byte[] Arg_alt_html(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] alt_src, Xop_lnki_tkn lnki) { if (!lnki.Alt_exists()) return Bry_.Empty; - media_alt_fmtr.Set(ctx, Xoh_wtr_ctx.Basic, alt_src, lnki.Alt_tkn().Val_tkn(), html_fmtr.Html_thumb_part_alt_fmtr()); + media_alt_fmtr.Set(ctx, hctx, alt_src, lnki.Alt_tkn().Val_tkn(), html_fmtr.Html_thumb_part_alt_fmtr()); Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); media_alt_fmtr.Bfr_arg__add(tmp_bfr); return tmp_bfr.To_bry_and_rls(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java index 8b9009a9c..cb8fc3bae 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.lnkis.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.parsers.*; import gplx.xowa.htmls.core.htmls.*; public class Xoh_lnki_text_fmtr extends gplx.core.brys.Bfr_arg_base { // formats alt or caption diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java index 9689a0229..bcc1f739a 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java @@ -52,7 +52,7 @@ public class Xoh_lnki_wtr { Xow_xwiki_itm xwiki_lang = lnki_ttl.Wik_itm(); if ( xwiki_lang != null // lnki is xwiki; EX: [[commons:]] [[en:]] [[wikt:]] && xwiki_lang.Domain_tid() == wiki.Xwiki_mgr().Xwiki_domain_tid() // xwiki is same type as cur wiki; EX: cur=w xwiki=w -> add to xwiki_langs; cur=w xwikid=d -> don't add to xwiki_langs; DATE:2014-09-14 - && xwiki_lang.Show_in_sitelangs(wiki.Domain_itm().Lang_orig_key())// NOTE: use Lang_orig_id to handle xwikis between s.w and en.w; PAGE:s.q:Anonymous DATE:2014-09-10 + && xwiki_lang.Show_in_sitelangs(wiki.Domain_itm().Lang_orig_key()) // NOTE: use Lang_orig_id to handle xwikis between s.w and en.w; PAGE:s.q:Anonymous DATE:2014-09-10 && !lnki_ttl.ForceLiteralLink() // not literal; [[:en:A]] ) { Wdata_sitelink_itm slink = new Wdata_sitelink_itm(xwiki_lang.Abrv_wm(), xwiki_lang.Domain_name(), null).Page_ttl_(lnki_ttl); @@ -109,7 +109,7 @@ public class Xoh_lnki_wtr { } if (cfg.Lnki__title()) { bfr .Add(Xoh_consts.A_bgn_lnki_0); // '" title=\"' - byte[] lnki_title_bry = lnki_ttl.Page_txt(); // 'Abcd' NOTE: use Page_txt to (a) replace underscores with spaces; (b) get title casing; EX:[[roman_empire]] -> Roman empire + byte[] lnki_title_bry = lnki_ttl.Full_txt(); // 'Abcd' NOTE: use Full_txt to (a) replace underscores with spaces; (b) get title casing; EX:[[roman_empire]] -> Roman empire; (c) include ns_name; EX: Help:A -> "title='Help:A'" not "title='A'"; DATE:2015-11-16 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 } if (!hctx.Mode_is_hdump()) { // don't write visited for hdump diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/mkrs/Xoh_hdoc_mkr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/mkrs/Xoh_hdoc_mkr.java index 955b934c3..d80e0f424 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/mkrs/Xoh_hdoc_mkr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/mkrs/Xoh_hdoc_mkr.java @@ -20,7 +20,7 @@ import gplx.core.threads.poolables.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.escapes.*; import gplx.xowa.htmls.core.wkrs.spaces.*; import gplx.xowa.htmls.core.wkrs.hdrs.*; import gplx.xowa.htmls.core.wkrs.lnkes.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; -import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.*; +import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.*; import gplx.xowa.htmls.core.wkrs.glys.*; public class Xoh_hdoc_mkr { private Gfo_poolable_mgr pool__escape__hzip = Gfo_poolable_mgr_.New(1, 32, new Xoh_escape_hzip()) @@ -30,6 +30,7 @@ public class Xoh_hdoc_mkr { , pool__lnki__hzip = Gfo_poolable_mgr_.New(1, 32, new Xoh_lnki_hzip()) , pool__img__hzip = Gfo_poolable_mgr_.New(1, 32, new Xoh_img_hzip()) , pool__thm__hzip = Gfo_poolable_mgr_.New(1, 32, new Xoh_thm_hzip()) + , pool__gly__hzip = Gfo_poolable_mgr_.New(1, 32, new Xoh_gly_hzip()) ; public Xoh_hzip_wkr Hzip__wkr(byte tid) { switch (tid) { @@ -40,6 +41,7 @@ public class Xoh_hdoc_mkr { case Xoh_hzip_dict_.Tid__lnki: return Lnki__hzip(); case Xoh_hzip_dict_.Tid__img: return Img__hzip(); case Xoh_hzip_dict_.Tid__thm: return Thm__hzip(); + case Xoh_hzip_dict_.Tid__gly: return Gly__hzip(); default: throw Err_.new_unhandled(tid); } } @@ -50,4 +52,5 @@ public class Xoh_hdoc_mkr { public Xoh_lnki_hzip Lnki__hzip() {return (Xoh_lnki_hzip) pool__lnki__hzip.Get_fast();} public Xoh_img_hzip Img__hzip() {return (Xoh_img_hzip) pool__img__hzip.Get_fast();} public Xoh_thm_hzip Thm__hzip() {return (Xoh_thm_hzip) pool__thm__hzip.Get_fast();} + public Xoh_gly_hzip Gly__hzip() {return (Xoh_gly_hzip) pool__gly__hzip.Get_fast();} } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.java index 7fcd6591d..817b3e089 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.java @@ -26,12 +26,12 @@ public class Xoh_space_hzip_tst { fxt.Test__bicode("~!{\"!", String_.Repeat(" ", 85)); } @Test public void Many() { - fxt.Test__bicode(String_.Concat_lines_nl_skip_last + fxt.Test__bicode(gplx.langs.htmls.Html_utl.Replace_apos(String_.Concat_lines_nl_skip_last ( "
    " , "~!%
    a
    " , "~!%
    " , "
    " - ), String_.Concat_lines_nl_skip_last + )), String_.Concat_lines_nl_skip_last ( "
    " , "
    a
    " , "
    " diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java index 14ad797a8..7e6878aad 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.core.btries.*; import gplx.core.primitives.*; import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; -import gplx.xowa.htmls.core.wkrs.lnkes.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import gplx.xowa.htmls.core.wkrs.hdrs.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.*; +import gplx.xowa.htmls.core.wkrs.lnkes.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import gplx.xowa.htmls.core.wkrs.hdrs.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.*; import gplx.xowa.htmls.core.wkrs.glys.*; import gplx.xowa.wikis.ttls.*; public class Xoh_tag_parser implements Html_doc_wkr { private final Xoh_hdoc_wkr hdoc_wkr; @@ -26,11 +26,12 @@ public class Xoh_tag_parser implements Html_doc_wkr { private final Xoh_hdr_parser wkr__hdr = new Xoh_hdr_parser(); private final Xoh_lnki_parser wkr__lnki = new Xoh_lnki_parser(); private final Xoh_lnke_parser wkr__lnke = new Xoh_lnke_parser(); private final Xoh_img_parser wkr__img = new Xoh_img_parser(); private final Xoh_thm_parser wkr__thm = new Xoh_thm_parser(); + private final Xoh_gly_grp_parser wkr__gly = new Xoh_gly_grp_parser(); private Xoh_hdoc_ctx hctx; public byte[] Hook() {return Byte_ascii.Angle_bgn_bry;} public Xoh_tag_parser(Xoh_hdoc_wkr hdoc_wkr) {this.hdoc_wkr = hdoc_wkr;} public void Init(Xoh_hdoc_ctx hctx, byte[] src, int src_bgn, int src_end) { - this.hctx = hctx; tag_rdr.Init(src, src_bgn, src_end); + this.hctx = hctx; tag_rdr.Init(hctx.Page__url(), src, src_bgn, src_end); } public int Parse(byte[] src, int src_bgn, int src_end, int pos) { tag_rdr.Pos_(pos); @@ -54,16 +55,28 @@ public class Xoh_tag_parser implements Html_doc_wkr { nxt = tag_rdr.Tag__peek_fwd_head(); if (nxt.Name_id() == Html_tag_.Id__img) { int rv = wkr__img.Parse(hdoc_wkr, hctx, src, tag_rdr, cur); - hdoc_wkr.On_img(wkr__img); - return rv; + if (rv != Xoh_hdoc_ctx.Invalid) { + hdoc_wkr.On_img(wkr__img); + return rv; + } } - else if (cur.Atrs__match_pair(Html_atr_.Bry__rel , Xoh_lnke_parser.Bry__rel__nofollow)) + else if (cur.Atrs__match_pair(Html_atr_.Bry__rel , Xoh_lnke_dict_.Html__rel__nofollow)) return wkr__lnke.Parse(hdoc_wkr, tag_rdr, cur); else return wkr__lnki.Parse(hdoc_wkr, hctx, src, tag_rdr, cur, hctx.Wiki__ttl_parser()); + break; case Html_tag_.Id__div: - if (cur.Atrs__cls_has(Xoh_thm_parser.Atr__class__thumb)) - return wkr__thm.Parse(hdoc_wkr, hctx, src, tag_rdr, cur); + if (cur.Atrs__cls_has(Xoh_thm_parser.Atr__class__thumb)) { + int rv = wkr__thm.Parse(hdoc_wkr, hctx, src, tag_rdr, cur); + if (rv != Xoh_hdoc_ctx.Invalid) return rv; + } + break; + case Html_tag_.Id__ul: + if (cur.Atrs__cls_has(Xoh_gly_grp_parser.Atr__class__gallery)) { + int rv = wkr__gly.Parse(hdoc_wkr, hctx, src, tag_rdr, cur); + hdoc_wkr.On_gly(wkr__gly); + if (rv != Xoh_hdoc_ctx.Invalid) return rv; + } break; } hdoc_wkr.On_txt(pos, cur.Src_end()); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_bldr.java index 2e6568573..ff720c2f9 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_bldr.java @@ -22,15 +22,16 @@ import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.imgs.a public class Xoh_thm_bldr { private final Xoh_thm_wtr wtr = new Xoh_thm_wtr(); private final byte[] div_2_magnify = Bry_.new_a7("bin/any/xowa/file/mediawiki.file/magnify-clip.png"); - public void Make(Bry_bfr bfr, Xoh_page hpg, Xoh_hdoc_ctx hctx, byte[] src, int div_0_align, Xoh_img_bldr img_bldr, Bfr_arg div_2_href, Bfr_arg div_2_capt) { + public void Make(Bry_bfr bfr, Xoh_page hpg, Xoh_hdoc_ctx hctx, byte[] src, int div_0_align, int div_1_width, boolean div_2_alt_exists, byte[] img_alt, Xoh_img_bldr img_bldr, Bfr_arg div_2_href, Bfr_arg div_2_capt) { wtr.Clear(); wtr.Div_0_align_(div_0_align); wtr.Div_1_id_(img_bldr.Fsdb_itm().Html_uid()); - wtr.Div_1_width_(img_bldr.Fsdb_itm().File_w()); + wtr.Div_1_width_(div_1_width); wtr.Div_1_img_(img_bldr.Wtr()); wtr.Div_2_href_(div_2_href); wtr.Div_2_magnify_(hctx.Fsys__root(), div_2_magnify); wtr.Div_2_capt_(div_2_capt); + wtr.Div_2_alt_(div_2_alt_exists, img_alt); wtr.Bfr_arg__add(bfr); } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_html_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_html_tst.java index 3501e2f0e..9553ef3d9 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_html_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_html_tst.java @@ -23,9 +23,14 @@ public class Xoh_thm_html_tst { // fxt.Expd_itms_xfers(fxt.Make_xfer("A.png", 0, 0, 0, Bool_.Y, Xof_ext_.Id_png)); fxt.Test__html("[[File:A.png|thumb|test_caption]]", String_.Concat_lines_nl_skip_last ( "
    " - , "
    " - , " " - , "
    " + , "
    " + , " " + , "
    " + , "
    " + , " " + , " " + , " " + , "
    " , " test_caption" , "
    " , "
    " diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java index bdef304a4..5535d000b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java @@ -19,20 +19,26 @@ package gplx.xowa.htmls.core.wkrs.thms; import gplx.*; import gplx.xowa.*; impor import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.threads.poolables.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.divs.*; public class Xoh_thm_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final int[] flag_ary; - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_ ( 2); private final Xoh_img_hzip img_hzip = new Xoh_img_hzip(); private final Xoh_thm_bldr bldr = new Xoh_thm_bldr(); private final Bry_obj_ref div_2_capt = Bry_obj_ref.New_empty(); - public Xoh_thm_hzip() {this.flag_ary = flag_bldr.Val_ary();} public String Key() {return Xoh_hzip_dict_.Key__thm;} public Xoh_thm_hzip Encode(Bry_bfr bfr, Xoh_hdoc_wkr hdoc_wkr, Hzip_stat_itm stat_itm, byte[] src, Xoh_thm_parser arg) { + if (!arg.Rng_valid()) { + bfr.Add_mid(src, arg.Rng_bgn(), arg.Rng_end()); + return this; + } Xoh_thm_caption_parser div_2_capt_parser = arg.Capt_parser(); - flag_ary[ 0] = arg.Div_0_align(); - + int div_1_width = arg.Div_1_width(); boolean div_1_width_exists = div_1_width != 220; + boolean div_2_alt_exists = arg.Capt_parser().Alt_div_exists(); + flag_bldr.Set(Flag__div_2_alt_exists , div_2_alt_exists); + flag_bldr.Set(Flag__div_1_width_exists , div_1_width_exists); + flag_bldr.Set(Flag__div_0_align , arg.Div_0_align()); bfr.Add(Xoh_hzip_dict_.Bry__thm); Xoh_hzip_int_.Encode(1, bfr, flag_bldr.Encode()); + if (div_1_width_exists) Xoh_hzip_int_.Encode(2, bfr, div_1_width); bfr.Add_mid(src, div_2_capt_parser.Capt_bgn(), div_2_capt_parser.Capt_end()).Add_byte(Xoh_hzip_dict_.Escape); + if (div_2_alt_exists) bfr.Add_mid(src, div_2_capt_parser.Alt_div_bgn(), div_2_capt_parser.Alt_div_end()).Add_byte(Xoh_hzip_dict_.Escape); img_hzip.Encode(bfr, stat_itm, src, arg.Img_parser(), Bool_.N); return this; } @@ -43,14 +49,25 @@ public class Xoh_thm_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { int rv = rdr.Pos(); flag_bldr.Decode(flag); - int div_align = flag_ary[ 0]; + boolean div_2_alt_exists = flag_bldr.Get_as_bool(Flag__div_2_alt_exists); + boolean div_1_width_exists = flag_bldr.Get_as_bool(Flag__div_1_width_exists); + int div_0_align = flag_bldr.Get_as_int(Flag__div_0_align); + int div_1_width = 220; + if (div_1_width_exists) div_1_width = rdr.Read_int_by_base85(2); div_2_capt.Mid_(src, capt_bgn, capt_end); + byte[] div_2_alt_bry = div_2_alt_exists ? rdr.Read_bry_to() : Bry_.Empty; img_hzip.Decode(bfr, Bool_.N, hctx, hpg, rdr, src, rv); - bldr.Make(bfr, hpg, hctx, src, div_align, img_hzip.Bldr(), img_hzip.Anch_href_arg(), div_2_capt); + bldr.Make(bfr, hpg, hctx, src, div_0_align, div_1_width, div_2_alt_exists, div_2_alt_bry, img_hzip.Bldr(), img_hzip.Anch_href_arg(), div_2_capt); return rv; } public int Pool__idx() {return pool_idx;} private int pool_idx; public void Pool__clear (Object[] args) {} public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_thm_hzip rv = new Xoh_thm_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 3); + private static final int // SERIALIZED + Flag__div_2_alt_exists = 0 + , Flag__div_1_width_exists = 1 + , Flag__div_0_align = 2 // "", "tnone", "tleft", "tcenter", "tright" + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java index 38294bf04..41c03fcbf 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java @@ -19,24 +19,56 @@ package gplx.xowa.htmls.core.wkrs.thms; import gplx.*; import gplx.xowa.*; impor import org.junit.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_thm_hzip_tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); - private String Html__basic = String_.Concat_lines_nl_skip_last + private String Html__image = String_.Concat_lines_nl_skip_last ( "
    " - , "
    " - , "" + , "
    " + , " abc" , "
    " , "
    " - , " " - , " " - , " " + , " " , "
    abc" , "
    " + , "
    " + , "
    " + , " abc" + , "
    " , "
    " , "
    " - ); - @Test public void Page__basic() { - fxt.Test__decode("~&#abc~!T8#T\"DA.png~", Html__basic); + ) + , Html__video = String_.Replace(String_.Concat_lines_nl_skip_last + ( "
    " + , "
    " + , "
    " + , "
    " + , " " + , "
    " + , "
    " + , " Play sound" + , "
    " + , "
    " + , "
    " + , "
    " + , " " + , "
    Moscow (Russian Empire) in 1908" + , "
    " + , "
    " + , "
    " + ), "'", "\"") + ; + @Test public void Image() { + fxt.Test__bicode("~&3abc~abc~!uA.png~0|220|110|0.5|-1|-1~abc~", Html__image); } - @Test public void Dump() { -// fxt.Exec_write_to_fsys(Io_url_.new_dir_("J:\\xowa\\dev\\html\\"), "temp_earth_xo.html"); + @Test public void Video() { + fxt.Test__bicode(Html__video, Html__video); } +// @Test public void Dump() { +// Xowe_wiki en_d = fxt.Prep_create_wiki("wikt", "en.wiktionary.org"); +// gplx.xowa.wikis.nss.Xow_ns_mgr ns_mgr = en_d.Ns_mgr(); +// ns_mgr.Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all); +// +// fxt.Wiki().Ns_mgr().Aliases_add(gplx.xowa.wikis.nss.Xow_ns_.Tid__portal, "WP"); +// fxt.Wiki().Ns_mgr().Init(); +// +// fxt.Exec_write_to_fsys(Io_url_.new_dir_("D:\\xowa\\dev_rls\\html\\"), "temp_earth_xo.html"); +// } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_parser.java index 8d8c62ec7..5533ac6a8 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_parser.java @@ -22,6 +22,7 @@ import gplx.xowa.htmls.core.wkrs.thms.divs.*; import gplx.xowa.htmls.core.wkrs.i public class Xoh_thm_parser implements Html_atr_style_wkr { public int Rng_bgn() {return rng_bgn;} private int rng_bgn; public int Rng_end() {return rng_end;} private int rng_end; + public boolean Rng_valid() {return rng_valid;} private boolean rng_valid; public byte Div_0_align() {return div_0_align;} private byte div_0_align; public int Div_1_width() {return div_1_width;} private int div_1_width; public Xoh_img_parser Img_parser() {return img_parser;} private final Xoh_img_parser img_parser = new Xoh_img_parser(); @@ -33,8 +34,11 @@ public class Xoh_thm_parser implements Html_atr_style_wkr { Html_tag div_1 = tag_rdr.Tag__move_fwd_head(); //
    this.div_1_width = -1; Html_atr_style_parser_.Parse(div_1, this); // " style='120px'" - img_parser.Parse(hdoc_wkr, hctx, src, tag_rdr, tag_rdr.Tag__move_fwd_head()); // - capt_parser.Parse(hdoc_wkr, tag_rdr, src, tag_rdr.Tag__move_fwd_head()); // for div_0 this.rng_end = div_0_tail.Src_end(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java index fda11a6a6..e77a6b8f1 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java @@ -28,6 +28,7 @@ public class Xoh_thm_wtr extends gplx.core.brys.Bfr_arg_base { , div_2_href = new Bfr_arg__html_atr(Html_atr_.Bry__href) ; private final Bfr_arg__bry_ary div_2_magnify = new Bfr_arg__bry_ary(); + private final Bfr_arg__bry div_2_alt = new Bfr_arg__bry(Bry_.Empty); private Bfr_arg div_1_img = Bfr_arg_.Noop, div_2_capt = Bfr_arg_.Noop; public Xoh_thm_wtr Div_0_align_(int v) {div_0_align.Val_(gplx.xowa.parsers.lnkis.Xop_lnki_align_h_.To_bry(v)); return this;} public Xoh_thm_wtr Div_1_id_(int v) {div_1_id.Set_by_arg(div_1_id_val.Set(Prefix__div_id, v)); return this;} @@ -36,26 +37,41 @@ public class Xoh_thm_wtr extends gplx.core.brys.Bfr_arg_base { public Xoh_thm_wtr Div_2_href_(Bfr_arg v) {div_2_href.Set_by_arg(v); return this;} public Xoh_thm_wtr Div_2_magnify_(byte[]... v) {div_2_magnify.Set(v); return this;} public Xoh_thm_wtr Div_2_capt_(Bfr_arg v) {div_2_capt = v; return this;} + private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + public Xoh_thm_wtr Div_2_alt_(boolean v, byte[] img_alt_bry) { + if (v) { +// img_alt.Bfr_arg__add(tmp_bfr); +// byte[] img_alt_bry = tmp_bfr.To_bry_and_clear(); + alt_fmtr.Bld_bfr_many(tmp_bfr, img_alt_bry); + div_2_alt.Set(tmp_bfr.To_bry_and_clear()); + } + return this; + } public Xoh_thm_wtr Clear() { - Bfr_arg_.Clear(div_0_align, div_1_id, div_1_width, div_1_img, div_2_href, div_2_magnify, div_2_capt); + Bfr_arg_.Clear(div_0_align, div_1_id, div_1_width, div_1_img, div_2_href, div_2_magnify, div_2_capt, div_2_alt); return this; } @Override public void Bfr_arg__add(Bry_bfr bfr) { - fmtr.Bld_bfr_many(bfr, div_0_align, div_1_id, div_1_width, div_1_img, div_2_href, div_2_magnify, div_2_capt); + fmtr.Bld_bfr_many(bfr, div_0_align, div_1_id, div_1_width, div_1_img, div_2_href, div_2_magnify, div_2_capt, div_2_alt); } public static final byte[] Prefix__div_id = Bry_.new_a7("xothm_"); private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "~{div_2_alt}" , "
    " , "
    " - ), "div_0_align", "div_1_id", "div_1_width", "div_1_img", "div_2_href", "div_2_magnify", "div_2_capt"); + ), "div_0_align", "div_1_id", "div_1_width", "div_1_img", "div_2_href", "div_2_magnify", "div_2_capt", "div_2_alt"); + private static final Bry_fmtr alt_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( "" + , "
    " + , "
    " + , " ~{alt}" + , "
    " + ), "alt"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/divs/Xoh_thm_caption_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/divs/Xoh_thm_caption_parser.java index 3a1b2f60e..ad0bcd5b1 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/divs/Xoh_thm_caption_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/divs/Xoh_thm_caption_parser.java @@ -22,15 +22,29 @@ public class Xoh_thm_caption_parser { public int Rng_end() {return rng_end;} private int rng_end; public int Capt_bgn() {return capt_bgn;} private int capt_bgn; public int Capt_end() {return capt_end;} private int capt_end; + public int Alt_div_bgn() {return alt_div_bgn;} private int alt_div_bgn; + public int Alt_div_end() {return alt_div_end;} private int alt_div_end; + public boolean Alt_div_exists() {return alt_div_end > alt_div_bgn;} public Xoh_thm_magnify_parser Magnify_parser() {return magnify_parser;} private final Xoh_thm_magnify_parser magnify_parser = new Xoh_thm_magnify_parser(); - public int Parse(Xoh_hdoc_wkr hdoc_wkr, Html_tag_rdr tag_rdr, byte[] src, Html_tag div_caption) { - this.rng_bgn = div_caption.Src_bgn(); - magnify_parser.Parse(hdoc_wkr, tag_rdr, src, div_caption); + public int Parse(Xoh_hdoc_wkr hdoc_wkr, Html_tag_rdr tag_rdr, byte[] src, Html_tag capt_head) { + this.rng_bgn = capt_head.Src_bgn(); + magnify_parser.Parse(hdoc_wkr, tag_rdr, src, capt_head); this.capt_bgn = magnify_parser.Magnify_tail_div().Src_end(); - Html_tag div_caption_tail = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__div); - this.capt_end = div_caption_tail.Src_bgn(); + Html_tag capt_tail = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__div); + this.capt_end = capt_tail.Src_bgn(); capt_end = Bry_find_.Find_bwd_non_ws_or_end(src, capt_end - 1, -1) + 1; - this.rng_end = div_caption_tail.Src_end(); + Alt_div_exists(tag_rdr, src); + this.rng_end = tag_rdr.Pos(); return rng_end; } + private void Alt_div_exists(Html_tag_rdr tag_rdr, byte[] src) { + this.alt_div_bgn = alt_div_end = -1; + Html_tag nxt_tag = tag_rdr.Tag__peek_fwd_head(); + if (nxt_tag.Name_id() != Html_tag_.Id__hr) return; + tag_rdr.Tag__move_fwd_head(); //
    + nxt_tag = tag_rdr.Tag__move_fwd_head().Chk_id(Html_tag_.Id__div); //
    + alt_div_bgn = Bry_find_.Find_fwd_while_ws(src, nxt_tag.Src_end(), src.length); + nxt_tag = tag_rdr.Tag__move_fwd_tail(Html_tag_.Id__div); //
    + alt_div_end = Bry_find_.Find_bwd_non_ws_or_not_found(src, nxt_tag.Src_bgn() - 1, -1) + 1; + } } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Xoh_style_regy.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Xoh_style_regy.java new file mode 100644 index 000000000..dadb5695e --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Xoh_style_regy.java @@ -0,0 +1,28 @@ +/* +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.htmls.core.wkrs.xndes.styles; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.xndes.*; +import gplx.langs.htmls.*; +public class Xoh_style_regy { +// public void Init() { +// // initial, inherit +// Add(Tid__style) .List("inline", "block", "flex", "inline-block", "inline-flex", "inline-table", "list-item", "run-in", "table", "table-caption", "table-column-group", "table-header-group", "table-footer-group", "table-row-group", "table-cell", "table-column", "table-row"); +// Add(Tid__text_align) .List("left", "right", "center", "justify"); +// Add(Tid__float) .List("none", "left", "right"); +// Add(Tid__clear) .List("none", "left", "right", "both"); +// } +} diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java index d0e2c6e71..2daa78977 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.css.*; diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java index 948ed402f..66f0ea13e 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java @@ -21,7 +21,7 @@ import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.xwikis.*; public class Xoh_href_wtr { private final Bry_bfr encoder_bfr = Bry_bfr.reset_(255), tmp_bfr = Bry_bfr.reset_(255); - private final Url_encoder encoder = Xoa_app_.Utl__encoder_mgr().Href(); + private final Gfo_url_encoder encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href; public byte[] Build_to_bry(Xow_wiki wiki, Xoa_ttl ttl) { synchronized (tmp_bfr) { Build_to_bfr(tmp_bfr, wiki.App(), wiki.Domain_bry(), ttl, Bool_.N); diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java index 492654c2e..66fc8a63b 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java @@ -34,7 +34,7 @@ public class Xow_popup_html_mkr { if (output_js_clean) app.Html_mgr().Js_cleaner().Clean_bfr(wiki, page.Ttl(), wrdx_bfr, 0); if (output_tidy) app.Html_mgr().Tidy_mgr().Run_tidy_html(page, wrdx_bfr); byte[] hdom_bry = wrdx_bfr.To_bry_and_clear(); - String page_url = wrdx_bfr.Add(page.Wiki().Domain_bry()).Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki).Add(Xoa_app_.Utl__encoder_mgr().Href() + String page_url = wrdx_bfr.Add(page.Wiki().Domain_bry()).Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki).Add(gplx.langs.htmls.encoders.Gfo_url_encoder_.Href .Encode(page.Ttl().Full_db())) // NOTE: was page.Url().Raw(), but that doesn't work for Special:Search; PAGE:en.w:Earth and "Quotations"; DATE:2014-06-29 .To_str_and_clear() ; diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java index 73f3e5842..341a636fc 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; -import gplx.core.primitives.*; import gplx.core.threads.*; +import gplx.core.primitives.*; import gplx.core.threads.*; import gplx.core.envs.*; import gplx.core.js.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.guis.views.*; diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java index 22799b966..df9d7dbea 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java @@ -210,7 +210,7 @@ public class Xow_popup_parser { class Xow_popup_parser_ { public static int Tmpl_bgn_get_(Xoae_app app, Xow_popup_itm itm, Xoa_ttl page_ttl, Xow_popup_anchor_finder hdr_finder, byte[] src, int src_len) { int rv = Xop_parser_.Doc_bgn_bos; if (itm.Mode_all()) return rv; - byte[] anch = itm.Page_href()[0] == Byte_ascii.Hash ? Bry_.Mid(Xoa_app_.Utl__encoder_mgr().Href().Decode(itm.Page_href()), 1) : page_ttl.Anch_txt(); + byte[] anch = itm.Page_href()[0] == Byte_ascii.Hash ? Bry_.Mid(gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Decode(itm.Page_href()), 1) : page_ttl.Anch_txt(); if (anch == null) return rv; int hdr_bgn = hdr_finder.Find(src, src_len, anch, rv); // NOTE: starting search from Xop_parser_.Doc_bgn_bos return hdr_bgn == Bry_find_.Not_found ? rv : hdr_bgn; diff --git a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java index 1ed69d8dd..d3f794637 100644 --- a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java @@ -60,7 +60,7 @@ public class Xoh_ns_file_page_mgr extends gplx.core.brys.Bfr_arg_base { alt_wtr.Init_by_fmtr(repo_mgr, xfer_itm, html_wtr); Xof_ext orig_ext = xfer_itm.Orig_ext(); if (orig_ext.Id_is_thumbable_img()) - html_wtr.Html_main_img().Bld_bfr_many(bfr, xfer_itm.Orig_w(), xfer_itm.Orig_h(), xfer_itm.Html_orig_url().To_http_file_bry(), file_size_bry, orig_ext.Mime_type(), xfer_itm.Html_uid(), xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_url().To_http_file_bry(), ttl.Full_txt(), Xoa_app_.Utl__encoder_mgr().Http_url().Encode(ttl.Page_url()), alt_wtr); + html_wtr.Html_main_img().Bld_bfr_many(bfr, xfer_itm.Orig_w(), xfer_itm.Orig_h(), xfer_itm.Html_orig_url().To_http_file_bry(), file_size_bry, orig_ext.Mime_type(), xfer_itm.Html_uid(), xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_url().To_http_file_bry(), ttl.Full_txt(), gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Encode(ttl.Page_url()), alt_wtr); else if (orig_ext.Id_is_video()) // NOTE: video must precede audio else File:***.ogg will not show thumbs html_wtr.Html_main_vid().Bld_bfr_many(bfr, xfer_itm.Html_uid(), xfer_itm.Html_view_url().To_http_file_bry(), Atr_class_image, ttl.Page_db(), xfer_itm.Html_view_url().To_http_file_bry(), xfer_itm.Html_w(), xfer_itm.Html_h(), Bry_.Empty, xfer_itm.Html_orig_url().To_http_file_bry(), xfer_itm.Html_w(), xfer_itm.Html_w(), play_btn_icon); else if (orig_ext.Id_is_audio()) diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java index b768ebb4f..fa67fa3d0 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java @@ -47,7 +47,7 @@ public class Xoh_subpages_bldr extends gplx.core.brys.Bfr_arg_base { byte[] seg = segs[i]; ttl_bfr.Add(seg); byte[] seg_ttl = ttl_bfr.To_bry(); - byte[] seg_ttl_enc = Xoa_app_.Utl__encoder_mgr().Href().Encode(ttl_bfr.To_bry()); + byte[] seg_ttl_enc = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(ttl_bfr.To_bry()); byte[] href = Bry_.Add(Xoh_href_.Bry__wiki, seg_ttl_enc); // EX: /wiki/Help:A fmtr_itm.Bld_bfr(bfr, dlm, href, seg_ttl, seg); } diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java index e4a505172..04fa7cf52 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java @@ -53,7 +53,7 @@ public class Xow_portal_mgr implements GfoInvkAble { byte[] wiki_user_name = wiki.User().Name(); div_personal_bry = Init_fmtr(tmp_bfr, eval_mgr, div_personal_fmtr, Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Tid__user).Name_db_w_colon(), wiki_user_name), wiki_user_name, Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Tid__user), Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Tid__user_talk).Name_db_w_colon(), wiki_user_name), Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Tid__user_talk)); byte[] main_page_href_bry = tmp_bfr.Add(Xoh_href_.Bry__site).Add(wiki.Domain_bry()).Add(Xoh_href_.Bry__wiki).To_bry_and_clear(); // NOTE: build /site/en.wikipedia.org/wiki/ href; no Main_Page, as that will be inserted by Xoh_href_parser - div_logo_bry = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(wiki.Appe().Usere().Fsys_mgr().Wiki_root_dir().GenSubFil_nest(wiki.Domain_str(), "html", "logo.png"))); + div_logo_bry = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys.Encode_to_file_protocol(wiki.Appe().Usere().Fsys_mgr().Wiki_root_dir().GenSubFil_nest(wiki.Domain_str(), "html", "logo.png"))); div_home_bry = Init_fmtr(tmp_bfr, eval_mgr, div_home_fmtr); div_wikis_fmtr.Eval_mgr_(eval_mgr); Xow_msg_mgr msg_mgr = wiki.Msg_mgr(); diff --git a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java index 7d1df70e1..eb59ee755 100644 --- a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java @@ -55,7 +55,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { public void Parse(Bry_bfr bfr, Bry_bfr comment_bfr, byte[] src) { byte[][] lines = Bry_split_.Split(src, Byte_ascii.Nl); int lines_len = lines.length; - Url_encoder id_encoder = Xoa_app_.Utl__encoder_mgr().Id(); + Gfo_url_encoder id_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id; Xowh_sidebar_itm cur_grp = null; Xop_link_parser link_parser = new Xop_link_parser(); for (int i = 0; i < lines_len; i++) { diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java index bcf4c69c5..df827ff01 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.primitives.*; import gplx.langs.htmls.encoders.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; public class Xow_hdr_mgr { - private final Url_encoder_mgr encoder_mgr; private final Xoae_page page; + private final Xoae_page page; private final Hash_adp hdrs_hash = Hash_adp_.new_(); private final Bry_bfr hdrs_bfr = Bry_bfr.reset_(255); private final Bry_obj_ref hdrs_ref = Bry_obj_ref.New_empty(); private Xop_hdr_tkn[] hdrs_ary = new Xop_hdr_tkn[0]; private int hdrs_max, hdrs_len; - public Xow_hdr_mgr(Xoae_page page, Url_encoder_mgr encoder_mgr) {this.page = page; this.encoder_mgr = encoder_mgr;} + public Xow_hdr_mgr(Xoae_page page) {this.page = page;} public boolean Toc_enabled() { return !toc_hide // check for __NOTOC__ && hdrs_len != 0 // never show TOC if 0 headers, even when __FORCETOC__ @@ -63,7 +63,7 @@ public class Xow_hdr_mgr { Bry_bfr_mkr bfr_mkr = Xoa_app_.Utl__bfr_mkr(); Bry_bfr raw_bfr = bfr_mkr.Get_b128(), enc_bfr = bfr_mkr.Get_b128(); Id_bld_recurse(raw_bfr, src, hdr); - Url_encoder encoder = encoder_mgr.Id(); + Gfo_url_encoder encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id; encoder.Encode(enc_bfr, raw_bfr.Bfr(), 0, raw_bfr.Len()); byte[] hdrs_id = enc_bfr.To_bry(); Object o = hdrs_hash.Get_by(hdrs_ref.Val_(hdrs_id)); diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java index 1598e2f8f..2e0dd6925 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*; import gplx.xowa.langs.lnki_trails.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.apps.fsys.*; import gplx.core.intls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.guis.langs.*; @@ -75,7 +76,7 @@ public class Xol_lang_itm implements GfoInvkAble { public Xol_lnki_trail_mgr Lnki_trail_mgr() {return lnki_trail_mgr;} private final Xol_lnki_trail_mgr lnki_trail_mgr; public Xop_lnki_arg_parser Lnki_arg_parser() {return lnki_arg_parser;} private Xop_lnki_arg_parser lnki_arg_parser = new Xop_lnki_arg_parser(); public Xol_func_regy Func_regy() {return func_regy;} private final Xol_func_regy func_regy; - public byte Img_thumb_halign_default() {return img_thumb_halign_default;} private byte img_thumb_halign_default = Xop_lnki_align_h_.Right; + public int Img_thumb_halign_default() {return img_thumb_halign_default;} private int img_thumb_halign_default = Xop_lnki_align_h_.Right; public Hash_adp_bry Xatrs_section() {if (xatrs_section == null) xatrs_section = Lst_section_nde.new_xatrs_(this); return xatrs_section;} private Hash_adp_bry xatrs_section; public void Evt_lang_changed() { lnki_arg_parser.Evt_lang_changed(this); diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java index 02641332f..e125a5682 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; -import gplx.lists.*; +import gplx.core.lists.*; public class Xol_lang_stub_ { // lists all known stub_ary supported by MW public static final byte[] Key__unknown = Bry_.Empty; public static final ComparerAble Comparer_key = new Xol_sub_itm_comparer(); diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java index 61a6f4662..1ac3408fa 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java @@ -70,7 +70,7 @@ public class Xol_duration_itm_ { return (Xol_duration_itm[])rv.To_ary(Xol_duration_itm.class); } } -class Xol_duration_itm_sorter implements gplx.lists.ComparerAble { +class Xol_duration_itm_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xol_duration_itm lhs = (Xol_duration_itm)lhsObj; Xol_duration_itm rhs = (Xol_duration_itm)rhsObj; diff --git a/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java index a167d3b09..28a115d23 100644 --- a/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java +++ b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs.funcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -import gplx.core.btries.*; import gplx.core.intls.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.core.btries.*; import gplx.core.intls.*; import gplx.core.envs.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.langs.kwds.*; public class Xol_func_regy { diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java index 000a85041..13ea6597b 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; import gplx.xowa.wikis.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; public class Xop_parser { // NOTE: parsers are reused; do not keep any read-write state private final Xowe_wiki wiki; @@ -42,7 +42,8 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ Parse_text_to_html(bfr, ctx.Cur_page(), false, src); return bfr.To_bry_and_rls(); } - public void Parse_text_to_html(Bry_bfr trg, Xoae_page page, boolean para_enabled, byte[] src) { + public void Parse_text_to_html(Bry_bfr trg, Xoae_page page, boolean para_enabled, byte[] src) {Parse_text_to_html(trg, page, Xoh_wtr_ctx.Basic, para_enabled, src);} + public void Parse_text_to_html(Bry_bfr trg, Xoae_page page, Xoh_wtr_ctx hctx, boolean para_enabled, byte[] src) { Xop_ctx ctx = Xop_ctx.new_sub_(wiki, page); Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr(); Xop_root_tkn root = tkn_mkr.Root(src); @@ -51,7 +52,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ root.Reset(); ctx.Para().Enabled_(para_enabled); parser.Parse_wtxt_to_wdom(root, ctx, ctx.Tkn_mkr(), wtxt, Xop_parser_.Doc_bgn_bos); - wiki.Html_mgr().Html_wtr().Write_all(trg, ctx, wtxt, root); + wiki.Html_mgr().Html_wtr().Write_all(trg, ctx, hctx, wtxt, root); } public Xot_defn_tmpl Parse_text_to_defn_obj(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xow_ns ns, byte[] name, byte[] src) { Xot_defn_tmpl rv = new Xot_defn_tmpl(); diff --git a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java index b3d5e44c8..98ddec40e 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; -import gplx.xowa.wikis.*; +import gplx.xowa.wikis.*; import gplx.core.envs.*; public class Xow_parser_mgr { private final Xowe_wiki wiki; private final Xop_tkn_mkr tkn_mkr; private Xop_parser anchor_encode_parser; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java index 387d0e95b..832e3c027 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java @@ -62,13 +62,13 @@ public class Xop_lnke_wkr_brack_tst { } @Test public void Encode_xwiki() { // PURPOSE: href title and args should always be encoded; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("commons.wikimedia.org"), Bry_.new_a7("commons.wikimedia.org")); - fxt.Test_parse_page_wiki_str // encode page + fxt.Test__parse__wtxt_to_html // encode page ( "[http://commons.wikimedia.org/%22%3E_A B]" - , "B" // '%22%3E' not '">' + , "B" // '%22%3E' not '">' ); - fxt.Test_parse_page_wiki_str // encode args + fxt.Test__parse__wtxt_to_html // encode args ( "[http://commons.wikimedia.org/A?b=%22%3E_C D]" - , "D" // '%22%3E' not '">' + , "D" // '%22%3E' not '">' ); } @Test public void Encode_basic() { // PURPOSE: counterpart to Encode_xwiki; DATE:2014-07-15 diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java index d961e008a..a90945c29 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java @@ -25,18 +25,18 @@ public class Xop_lnke_wkr_relative_tst { ); } @Test public void Relative_external() { - fxt.Test_parse_page_wiki_str("[//www.a.org a]", "a"); + fxt.Test__parse__wtxt_to_html("[//www.a.org a]", "a"); } @Test public void Relative_internal() { fxt.Init_xwiki_add_user_("en.wikipedia.org"); - fxt.Test_parse_page_wiki_str("[//en.wikipedia.org/wiki Wikipedia]", "Wikipedia"); + fxt.Test__parse__wtxt_to_html("[//en.wikipedia.org/wiki Wikipedia]", "Wikipedia"); } @Test public void Relative_w_category() { // EX: [//commons.wikimedia.org/wiki/Category:Diomedeidae A] fxt.Init_xwiki_add_user_("en.wikipedia.org"); - fxt.Test_parse_page_wiki_str("[//en.wikipedia.org/wiki/Category:A A]", "A"); + fxt.Test__parse__wtxt_to_html("[//en.wikipedia.org/wiki/Category:A A]", "A"); } @Test public void Relurl() { fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); - fxt.Test_parse_page_wiki_str("[[//en.wikipedia.org/ a]]", "[a]"); + fxt.Test__parse__wtxt_to_html("[[//en.wikipedia.org/ a]]", "[a]"); } } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java index 5322739de..f8ff19176 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java @@ -21,35 +21,35 @@ public class Xop_lnke_wkr_xwiki_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Xwiki() { fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); - fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/A a]", "a"); + fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/wiki/A a]", "a"); } @Test public void Xwiki_relative() { fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); - fxt.Test_parse_page_wiki_str("[//en.wikipedia.org/ a]", "a"); + fxt.Test__parse__wtxt_to_html("[//en.wikipedia.org/ a]", "a"); } @Test public void Xwiki_qarg() {// DATE:2013-02-02 fxt.Init_xwiki_add_user_("en.wikipedia.org"); - fxt.Test_parse_page_wiki_str("http://en.wikipedia.org/wiki/Special:Allpages?from=Earth", "http://en.wikipedia.org/wiki/Special:Allpages?from=Earth"); + fxt.Test__parse__wtxt_to_html("http://en.wikipedia.org/wiki/Special:Allpages?from=Earth", "http://en.wikipedia.org/wiki/Special:Allpages?from=Earth"); } @Test public void Lang_prefix() { fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("fr"), Bry_.new_a7("fr.wikipedia.org")); - fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/fr:A a]", "a"); + fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/wiki/fr:A a]", "a"); } @Test public void Xwiki_query_arg() { fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); - fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/A?action=edit a]", "a"); + fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/wiki/A?action=edit a]", "a"); } @Test public void Ignore_proto() { // PURPOSE: handle other protocols; PAGE:uk.w:Маскалі; DATE:2015-07-28 - fxt.Test_parse_page_wiki_str("[mailto:a b]", "b");// should be /w/, not /en.wikipedia.org + fxt.Test__parse__wtxt_to_html("[mailto:a b]", "b");// should be /w/, not /en.wikipedia.org } @Test public void Ignore_alias() { // PURPOSE: fictitious example to make sure aliases are not subbed for domains; DATE:2015-07-28 fxt.Init_xwiki_add_user_("w", "en.wikipedia.org"); - fxt.Test_parse_page_wiki_str("[https://w/b c]", "c");// should be /w/, not /en.wikipedia.org + fxt.Test__parse__wtxt_to_html("[https://w/b c]", "c");// should be /w/, not /en.wikipedia.org } @Test public void Xwiki__qargs() { // PURPOSE: fix null ref error; PAGE:en.w:Wikipedia:Template_standardisation/demometa DATE:2015-08-02 fxt.Init_xwiki_add_user_("en.wikipedia.org"); - fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/w/index.php?action=edit&preload=Template:Afd2+starter&editintro=Template:Afd3+starter&title=Wikipedia:Articles+for+deletion/Template_standardisation/demometa]" - , "[1]"); + fxt.Test__parse__wtxt_to_html("[http://en.wikipedia.org/w/index.php?action=edit&preload=Template:Afd2+starter&editintro=Template:Afd3+starter&title=Wikipedia:Articles+for+deletion/Template_standardisation/demometa]" + , "[1]"); } } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java index 435ca2170..b0f895697 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.net.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.domains.*; public class Xop_link_parser { public byte[] Html_xowa_ttl() {return html_xowa_ttl;} private byte[] html_xowa_ttl; public byte Html_anchor_cls() {return html_anchor_cls;} private byte html_anchor_cls; @@ -46,7 +47,8 @@ public class Xop_link_parser { } raw = tmp_bfr.To_bry_and_clear(); html_anchor_cls = Xoh_lnki_consts.Tid_a_cls_none; - html_anchor_rel = Xoh_lnki_consts.Tid_a_rel_nofollow; + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(wiki_bry); + html_anchor_rel = domain_itm.Domain_type().Tid() == Xow_domain_tid_.Int__other ? Xoh_lnki_consts.Tid_a_rel_nofollow : Xoh_lnki_consts.Tid_a_rel_none; // rel=nofollow if not WM wiki; DATE:2015-11-19 break; case Gfo_protocol_itm.Tid_file: // "file:///" or "File:A.png" int proto_len = tmp_url.Protocol_bry().length; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_align_h_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_align_h_.java index 76c898e42..e1b7b93dd 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_align_h_.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_align_h_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; public class Xop_lnki_align_h_ { - public static final byte Null = 0, None = 1, Left = 2, Center = 3, Right = 4; + public static final byte Null = 0, None = 1, Left = 2, Center = 3, Right = 4; // SERIALIZED public static final byte[][] Html_names = new byte[][] { Object_.Bry__null , Bry_.new_a7("none") diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java index cbf07e30a..0a3c60938 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.primitives.*; import gplx.core.btries.*; +import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; public class Xop_lnki_arg_parser { private final Btrie_fast_mgr key_trie = Btrie_fast_mgr.cs(); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java index 76f91e6fb..bab781544 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java @@ -28,7 +28,7 @@ public class Xop_lnki_tkn extends Xop_tkn_itm_base { public int Tail_bgn() {return tail_bgn;} public Xop_lnki_tkn Tail_bgn_(int v) {tail_bgn = v; return this;} private int tail_bgn = -1; public int Tail_end() {return tail_end;} public Xop_lnki_tkn Tail_end_(int v) {tail_end = v; return this;} private int tail_end = -1; public byte Border() {return border;} public Xop_lnki_tkn Border_(byte v) {border = v; return this;} private byte border = Bool_.__byte; - public byte Align_h() {return align_h;} public Xop_lnki_tkn Align_h_(byte v) {if (align_h == Xop_lnki_align_h_.Null) align_h = v; return this;} private byte align_h = Xop_lnki_align_h_.Null; + public int Align_h() {return align_h;} public Xop_lnki_tkn Align_h_(int v) {if (align_h == Xop_lnki_align_h_.Null) align_h = v; return this;} private int align_h = Xop_lnki_align_h_.Null; public byte Align_v() {return align_v;} public Xop_lnki_tkn Align_v_(byte v) {align_v = v; return this;} private byte align_v = Byte_.Max_value_127; public int W() {return w;} public Xop_lnki_tkn W_(int v) {w = v; return this;} private int w = Width_null; public int H() {return h;} public Xop_lnki_tkn H_(int v) {h = v; return this;} private int h = Height_null; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java index a7b35e8f4..ed7b9b55a 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java @@ -24,7 +24,7 @@ public class Xop_lnki_tkn_chkr extends Xop_tkn_chkr_base { public byte ImgType() {return imgType;} public Xop_lnki_tkn_chkr ImgType_(byte v) {imgType = v; return this;} private byte imgType = Byte_.Max_value_127; public int Width() {return width;} public Xop_lnki_tkn_chkr Width_(int v) {width = v; return this;} private int width = Int_.Min_value; public int Height() {return height;} public Xop_lnki_tkn_chkr Height_(int v) {height = v; return this;} private int height = Int_.Min_value; - public byte HAlign() {return hAlign;} public Xop_lnki_tkn_chkr HAlign_(byte v) {hAlign = v; return this;} private byte hAlign = Byte_.Max_value_127; + public int HAlign() {return hAlign;} public Xop_lnki_tkn_chkr HAlign_(int v) {hAlign = v; return this;} private int hAlign = Byte_.Max_value_127; public byte VAlign() {return vAlign;} public Xop_lnki_tkn_chkr VAlign_(byte v) {vAlign = v; return this;} private byte vAlign = Byte_.Max_value_127; public byte Border() {return border;} public Xop_lnki_tkn_chkr Border_(byte v) {border = v; return this;} private byte border = Bool_.__byte; public double Upright() {return upright;} public Xop_lnki_tkn_chkr Upright_(double v) {upright = v; return this;} double upright = Xop_lnki_tkn.Upright_null; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java index 1b9b8cb11..b03567829 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java @@ -43,7 +43,7 @@ public class Xop_lnki_wkr_ { public static boolean Parse_ttl(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int ttl_bgn, int ttl_end) { Xoae_app app = ctx.App(); byte[] ttl_bry = Bry_.Mid(src, ttl_bgn, ttl_end); - ttl_bry = Xoa_app_.Utl__encoder_mgr().Http_url_ttl().Decode(ttl_bry); + ttl_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl.Decode(ttl_bry); int ttl_bry_len = ttl_bry.length; Xoa_ttl page_ttl = ctx.Cur_page().Ttl(); if (page_ttl.Ns().Subpages_enabled() diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java index 4d913d1be..a8654850e 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java @@ -265,7 +265,7 @@ public class Xop_lnki_wkr__basic_tst { @Test public void Encoded_url() { // PURPOSE.fix: url-encoded characters broke parser when embedded in link; DATE:2013-03-01 fxt.Init_xwiki_add_user_("commons.wikimedia.org"); fxt.Test_parse_page_wiki_str("[[File:A.png|link=//commons.wikimedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0?uselang=ru|b]]" - , "\"b\""); + , "\"b\""); } @Test public void Link_invalid() { // PURPOSE.fix: do not render invalid text; EX: link={{{1}}}; [[Fil:Randers_-_Hadsund_railway.png|120x160px|link={{{3}}}|Randers-Hadsund Jernbane]]; DATE:2013-03-04 fxt.Test_parse_page_wiki_str diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__link_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__link_tst.java index 4bc58c2d3..58f2140fd 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__link_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__link_tst.java @@ -53,13 +53,13 @@ public class Xop_lnki_wkr__link_tst { @Test public void Link_external_relative() { fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=//fr.wikipedia.org/wiki/|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_external_absolute() { fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=http://fr.wikipedia.org/wiki/|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_external_double_http() {// PURPOSE.fix: link=http://a.org?b=http://c.org breaks lnki; DATE:2013-02-03 @@ -72,35 +72,35 @@ public class Xop_lnki_wkr__link_tst { fxt.Init_xwiki_add_user_("fr.wikipedia.org"); fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=//fr.wikipedia.org/wiki/|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_xwiki_relative_domain_only() { // lnki_wtr fails if link is only domain; EX: wikimediafoundation.org; [[Image:Wikispecies-logo.png|35px|link=//species.wikimedia.org]]; // NOTE: changed href to return "/wiki/" instead of ""; DATE:2013-02-18 fxt.Init_xwiki_add_user_("fr.wikipedia.org"); fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=//fr.wikipedia.org]]", String_.Concat_lines_nl_skip_last - ( "\"\"" + ( "\"\"" )); } @Test public void Link_xwiki_absolute() { // NOTE: changed href to return "wiki/" instead of "wiki"; DATE:2013-02-18 fxt.Init_xwiki_add_user_("fr.wikipedia.org"); fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=http://fr.wikipedia.org/wiki/|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_xwiki_absolute_upload() { // PURPOSE: link to upload.wikimedia.org omits /wiki/; EX: wikimediafoundation.org: [[File:Page1-250px-WMF_AR11_SHIP_spreads_15dec11_72dpi.png|right|125px|border|2010–2011 Annual Report|link=https://upload.wikimedia.org/wikipedia/commons/4/48/WMF_AR11_SHIP_spreads_15dec11_72dpi.pdf]] fxt.Init_xwiki_add_user_("commons.wikimedia.org"); fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=http://upload.wikimedia.org/wikipedia/commons/7/70/A.png|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_xwiki_relative_deep() { fxt.Init_xwiki_add_user_("fr.wikipedia.org"); fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=//fr.wikipedia.org/wiki/A/b|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); } @Test public void Link_xwiki_alias() { // [[File:Commons-logo.svg|25x25px|link=http://en.wikipedia.org/wiki/commons:Special:Search/Earth|alt=|Search Commons]] @@ -108,7 +108,7 @@ public class Xop_lnki_wkr__link_tst { fxt.Init_xwiki_add_wiki_and_user_("en.wikipedia.org", "en.wikipedia.org"); // DATE:2015-07-22 fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=http://en.wikipedia.org/wiki/commons:B|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); fxt.Init_xwiki_clear(); } @@ -117,7 +117,7 @@ public class Xop_lnki_wkr__link_tst { fxt.Init_xwiki_add_wiki_and_user_("en.wikipedia.org", "en.wikipedia.org"); // DATE:2015-07-22 fxt.Test_parse_page_wiki_str ( "[[File:A.png|12x10px|link=http://en.wikipedia.org/wiki/commons:Special:Search/B|c]]", String_.Concat_lines_nl_skip_last - ( "\"c\"" + ( "\"c\"" )); fxt.Init_xwiki_clear(); } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java index fe35f21b2..358bd4c7b 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java @@ -46,6 +46,6 @@ public class Xopg_redlink_lnki_list { return; lnki_list.Add(lnki); } - public static final String Lnki_id_prefix = "xowa_lnki_"; + public static final String Lnki_id_prefix = "xolnki_"; public static final int Lnki_id_prefix_len = String_.Len(Lnki_id_prefix); } diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java index 8a1eab922..3530c5664 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_log_basic_wkr implements GfoInvkAble { diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java index e35d76345..0ef9718b4 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.scribunto.*; public class Xop_log_invoke_wkr implements GfoInvkAble { diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java index 6ae348834..b8b04eb6b 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; public class Xop_log_property_wkr implements GfoInvkAble { private Xop_log_mgr log_mgr; private Db_conn conn; private Db_stmt stmt; diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn.java index ca04dfdda..44fc99cb1 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn.java @@ -23,5 +23,7 @@ public class Xop_ignore_tkn extends Xop_tkn_itm_base { @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_ignore;} @Override public void Tmpl_compile(Xop_ctx ctx, byte[] src, Xot_compile_data prep_data) {} @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) {return true;} - public static final byte Ignore_tid_null = 0, Ignore_tid_comment = 1, Ignore_tid_include_tmpl = 2, Ignore_tid_include_wiki = 3, Ignore_tid_htmlTidy_tblw = 3, Ignore_tid_xnde_dangling = 4, Ignore_tid_nbsp = 5, Ignore_tid_empty_li = 6, Ignore_tid_pre_at_bos = 7; + public static final byte + Ignore_tid_null = 0, Ignore_tid_comment = 1, Ignore_tid_include_tmpl = 2, Ignore_tid_include_wiki = 3, Ignore_tid_htmlTidy_tblw = 4 + , Ignore_tid_xnde_dangling = 5, Ignore_tid_nbsp = 6, Ignore_tid_empty_li = 7, Ignore_tid_pre_at_bos = 8, Ignore_tid_tr_w_td = 9; } diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java index 3d33e9ed4..3dc393a77 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java @@ -41,6 +41,18 @@ public class Xop_pipe_lxr implements Xop_lxr { case Xop_tkn_itm_.Tid_tblw_tb: case Xop_tkn_itm_.Tid_tblw_tr: rv = Xop_tblw_lxr_ws.Make(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, Xop_tblw_wkr.Tblw_type_td, false); + if (rv == Xop_tblw_lxr_ws.Tblw_ws_cell_pipe) { + int prv_nl_pos = Bry_find_.Find_bwd(src, Byte_ascii.Nl, cur_pos - 1, 0); if (prv_nl_pos == -1) prv_nl_pos = 0; // find prv nl + if (Bry_.Match(src, prv_nl_pos, prv_nl_pos + 3, Xop_tblw_lxr.Hook_tr)) { // "\n|-" aka tblw_tr + int nl_pos = Bry_find_.Find_fwd(src, Byte_ascii.Nl, cur_pos, src_len); if (nl_pos == Bry_find_.Not_found) nl_pos = src_len; + ctx.Subs_add(root, tkn_mkr.Ignore(bgn_pos, nl_pos, Xop_ignore_tkn.Ignore_tid_tr_w_td)); // gobble up rest of content between "|" and "\n"; PAGE:lv.w:Starptautiska_kosmosa_stacija; DATE:2015-11-21 + return nl_pos; + } + else { + ctx.Subs_add(root, tkn_mkr.Pipe(bgn_pos, cur_pos)); + return cur_pos; + } + } if (rv == Xop_tblw_lxr_ws.Tblw_ws_cell_pipe) { ctx.Subs_add(root, tkn_mkr.Pipe(bgn_pos, cur_pos)); return cur_pos; diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java index 311a9b86d..8af907485 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java @@ -101,4 +101,14 @@ public class Xop_tblw_wkr__uncommon_tst { , "" )); } + @Test public void Tr_with_pipe_ignores_content() { // PURPOSE: "|-" followed by "|" ignores rest of content; EX: {|\n|-|a\n|} PAGE:lv.w:Starptautiska_kosmosa_stacija; DATE:2015-11-21 + fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last + ( "{|" + , "|- |a" + , "|}" + ), String_.Concat_lines_nl_skip_last + ( "" + , "
    " + )); + } } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java index 0bd267bc9..50cc861d6 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java @@ -170,7 +170,7 @@ public class Arg_bldr { trim = false; switch (wkr_typ) { case Xop_arg_wkr_.Typ_prm : trim = arg_idx == 0; break; - case Xop_arg_wkr_.Typ_tmpl: trim = true; break; // NOTE: was "key_exists || arg_idx == 0;"; PAGE:s.w:Gothic_architecture; DATE:2015-11-07 + case Xop_arg_wkr_.Typ_tmpl: trim = key_exists || arg_idx == 0; break; // NOTE: never set "trim = true"; PAGE:fr.w:Histoire_de_la_marine_française_sous_Louis_XV_et_Louis_XVI DATE:2015-11-17 case Xop_arg_wkr_.Typ_lnki: trim = !cur_itm_is_key; break; } if (trim) { diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java index 97125e636..19db0ef4f 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.wikis.nss.*; +import gplx.core.brys.*; import gplx.xowa.wikis.nss.*; public class Xot_defn_tmpl implements Xot_defn { public byte Defn_tid() {return Xot_defn_.Tid_tmpl;} public boolean Defn_require_colon_arg() {return false;} diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java index 49c033324..637205890 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.wikis.pages.*; diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java index cc12565db..1e4337a78 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java @@ -233,7 +233,7 @@ public class Xot_invk_wkr_basic_tst { fxt.Init_defn_clear(); fxt.Init_defn_add("test_1", "{{test_2|{{{1}}}}}"); fxt.Init_defn_add("test_2", "{{{1}}}"); - fxt.Test_parse_tmpl_str("{{test_1| a }}", " a"); // tmpl.trim_end: always trim end; DATE:2015-11-07 + fxt.Test_parse_tmpl_str("{{test_1| a }}", " a "); fxt.Init_defn_clear(); } @Test public void Ws_trimmed_key_1() { // PURPOSE: trim prm when passed as key; @@ -254,7 +254,7 @@ public class Xot_invk_wkr_basic_tst { fxt.Init_defn_clear(); fxt.Init_defn_add("test_1", "{{test_2|1={{{1}}}{{{2}}}}}"); fxt.Init_defn_add("test_2", "{{{1}}}"); - fxt.Test_parse_tmpl_str("{{test_1| a | b }}", "a b"); // tmpl.trim_end: always trim end; DATE:2015-11-07 + fxt.Test_parse_tmpl_str("{{test_1| a | b }}", "a b"); fxt.Init_defn_clear(); } @Test public void Ws_eval_prm() { // PURPOSE: skip ws in prm_idx; EX:it.w:Portale:Giochi_da_tavolo; it.w:Template:Alternate; DATE:2014-02-09 diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java index f6446f0c2..9b23ab40a 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.envs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.miscs.*; public class Xot_tmpl_wtr { public byte[] Write_all(Xop_ctx ctx, Xop_root_tkn root, byte[] src) { diff --git a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java index 7f589449a..03578ebfe 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; import gplx.core.strings.*; +import org.junit.*; import gplx.core.strings.*; import gplx.core.type_xtns.*; import gplx.core.stores.*; import gplx.core.envs.*; interface TstRuleMgr { boolean SkipChkVal(String expdTypeKey, TstAtr expd); boolean SkipChkObj(String expdTypeKey, String atrKey, TstObj expd); diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java index d9761cc8b..8ccfcf984 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java @@ -20,8 +20,8 @@ import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; public class Xop_redirect_mgr { - private final Xowe_wiki wiki; private final Url_encoder url_decoder; private Hash_adp_bry redirect_hash; - public Xop_redirect_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.url_decoder = Xoa_app_.Utl__encoder_mgr().Http_url_ttl();} // NOTE: must be Url_ttl, not Url; PAGE:en.w:Template:Positionskarte+ -> Template:Location_map+, not Template:Location_map DATE:2014-08-21 + private final Xowe_wiki wiki; private final Gfo_url_encoder url_decoder; private Hash_adp_bry redirect_hash; + public Xop_redirect_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.url_decoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl;} // NOTE: must be Url_ttl, not Url; PAGE:en.w:Template:Positionskarte+ -> Template:Location_map+, not Template:Location_map DATE:2014-08-21 public void Clear() {redirect_hash = null;} // TEST: public boolean Is_redirect(byte[] text, int text_len) {return this.Extract_redirect(text, text_len) != null;} public Xoa_ttl Extract_redirect_loop(byte[] src) { diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java index 81f05abd2..b8f9fae58 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.btries.*; import gplx.xowa.apps.progs.*; +import gplx.core.btries.*; import gplx.core.envs.*; import gplx.xowa.apps.progs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.strings.*; import gplx.langs.htmls.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.htmls.*; public class Xop_xnde_wkr implements Xop_ctx_wkr { diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java index bbec09d25..611badd81 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java @@ -90,7 +90,7 @@ public class Xows_page_allpages extends gplx.core.brys.Bfr_arg_base implements G init_ns = wiki.Ns_mgr().Ns_main(); arg_hash.Load(url.Qargs_ary()); byte[] from_val = Get_from(arg_hash, wiki, url, ttl); if (from_val == null) return false; - from_val = Xoa_app_.Utl__encoder_mgr().Id().Decode(from_val); + from_val = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Decode(from_val); int ns_val = arg_hash.Get_val_int_or(Bry_arg_ns, init_ns.Id()); init_ns = wiki.Ns_mgr().Ids_get_or_null(ns_val); boolean hide_redirects_val = arg_hash.Get_val_int_or(Bry_arg_hideredirects, 0) == 1; for (int i = 0; i < itms_per_page; i++) @@ -135,7 +135,7 @@ public class Xows_page_allpages extends gplx.core.brys.Bfr_arg_base implements G Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512().Mkr_rls(); byte[] lbl_text = msg_itm.Fmt(tmp_bfr, ttl.Full_txt()); byte[] args__rest = arg_hash.Concat(tmp_bfr, Bry_arg_ns, Bry_arg_hideredirects); - byte[] arg_from = Xoa_app_.Utl__encoder_mgr().Id().Encode(ttl.Page_txt_wo_qargs()); + byte[] arg_from = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode(ttl.Page_txt_wo_qargs()); return html_list_end.Bld_bry_many(bfr, arg_from, args__rest, lbl_text); } public static Xoa_ttl ttl_(Xowe_wiki wiki, Xow_ns ns, Xowd_page_itm itm) { 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 08902e63c..3ac674d40 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 @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.core.net.*; import gplx.core.threads.*; +import gplx.core.net.*; import gplx.core.threads.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.data.tbls.*; import gplx.core.js.*; import gplx.xowa.wikis.nss.*; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_rslt_itm_sorter.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_rslt_itm_sorter.java index ff971cc47..1bccd5296 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_rslt_itm_sorter.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_rslt_itm_sorter.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.xowa.wikis.data.tbls.*; -public class Xosrh_rslt_itm_sorter implements gplx.lists.ComparerAble { +public class Xosrh_rslt_itm_sorter implements gplx.core.lists.ComparerAble { public byte Tid() {return tid;} public Xosrh_rslt_itm_sorter Tid_(byte v) {tid = v; return this;} private byte tid = Tid_len_dsc; public int compare(Object lhsObj, Object rhsObj) { Xowd_page_itm lhs = (Xowd_page_itm)lhsObj; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java b/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java index cc3c5bfc1..b9f53ec25 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.primitives.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; -class Xow_domain_sorter__manual implements gplx.lists.ComparerAble { +class Xow_domain_sorter__manual implements gplx.core.lists.ComparerAble { private final Xow_domain_itm cur_domain; private final Xow_domain_crt_itm[] ary; private final int ary_len; public Xow_domain_sorter__manual(Xow_domain_itm cur_domain, Xow_domain_crt_itm[] ary) { @@ -51,7 +51,7 @@ class Xow_domain_sorter__manual implements gplx.lists.ComparerAble { Array_.Sort(ary, sorter); } } -class Xow_domain_sorter__manual_tid implements gplx.lists.ComparerAble { +class Xow_domain_sorter__manual_tid implements gplx.core.lists.ComparerAble { private final Hash_adp sort_hash = Hash_adp_.new_(); private final Int_obj_ref sort_key = Int_obj_ref.neg1_(); public Xow_domain_sorter__manual_tid(int[] id_ary) { int len = id_ary.length; @@ -85,7 +85,7 @@ class Xow_domain_sorter__manual_tid implements gplx.lists.ComparerAble { return new Xow_domain_sorter__manual_tid(id_ints); } } -class Xow_domain_sorter__manual_lang implements gplx.lists.ComparerAble { +class Xow_domain_sorter__manual_lang implements gplx.core.lists.ComparerAble { private final Hash_adp sort_hash = Hash_adp_.new_(); private final Int_obj_ref sort_key = Int_obj_ref.neg1_(); public Xow_domain_sorter__manual_lang(int[] id_ary) { int len = id_ary.length; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_row.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_row.java index d654e1898..19525b5f4 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_row.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_row.java @@ -31,7 +31,7 @@ public class Xows_db_row { public int Page_len() {return page_len;} private final int page_len; public static Xows_db_row[] Ary(Xows_db_row... v) {return v;} } -class Xows_db_row_sorter implements gplx.lists.ComparerAble { +class Xows_db_row_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xows_db_row lhs = (Xows_db_row)lhsObj; Xows_db_row rhs = (Xows_db_row)rhsObj; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_word.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_word.java index f55902720..25a7a4a27 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_word.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_word.java @@ -26,7 +26,7 @@ public class Xows_db_word { public void Rslts_offset_add_1() {++rslts_offset;} public void Rslts_done_y_() {rslts_done = true;} } -class Xows_db_word_sorter implements gplx.lists.ComparerAble { +class Xows_db_word_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xows_db_word lhs = (Xows_db_word)lhsObj; Xows_db_word rhs = (Xows_db_word)rhsObj; 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 index 98518c041..dc9e6500a 100644 --- 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 @@ -16,6 +16,7 @@ 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.stores.*; import gplx.dbs.*; import gplx.dbs.engines.mems.*; class Db_rdr_utl { 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 index cbdc20769..5aca8639e 100644 --- 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 @@ -16,7 +16,7 @@ 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.net.*; +import gplx.core.net.*; import gplx.core.envs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.origs.*; import gplx.xowa.apps.urls.*; diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java index 0849807a4..c300840cb 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java @@ -27,8 +27,7 @@ abstract class Xosp_fbrow_cmd__base implements Xosp_fbrow_cmd { public abstract Xosp_fbrow_cmd Make_new(); public Xosp_fbrow_rslt Write_html(Xoa_url_arg_mgr arg_mgr, GfoInvkAble select_invkable) { // app.I18n_mgr_Get_txt_many("xowa.specials.file_browsers.errs.unknown_path", url.Raw()); - Url_encoder encoder = Url_encoder.new_html_href_mw_(); - Xosp_fbrow_html html_wtr = new Xosp_fbrow_html(encoder); + Xosp_fbrow_html html_wtr = new Xosp_fbrow_html(); Bry_bfr tmp_bfr = Bry_bfr.reset_(255); String selected_str = arg_mgr.Read_str_or_null("selected"); if (selected_str == null) { @@ -98,8 +97,7 @@ abstract class Xosp_fbrow_cmd__base implements Xosp_fbrow_cmd { ; } class Xosp_fbrow_html extends gplx.core.brys.Bfr_arg_base { - private final Url_encoder encoder; private Xosp_fbrow_data_dir dir; private byte[] cmd_src; - public Xosp_fbrow_html(Url_encoder encoder) {this.encoder = encoder;} + private final Gfo_url_encoder encoder = Gfo_url_encoder_.Href; private Xosp_fbrow_data_dir dir; private byte[] cmd_src; public void Write(Bry_bfr bfr, byte[] cmd_src, byte[] cmd_row, Xosp_fbrow_data_dir dir) { this.dir = dir; this.cmd_src = cmd_src; // app.I18n_mgr_Get_txt_none("xowa.specials.file_browsers.html.hdr.name"); diff --git a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java index b7a14e66d..2f319eaa5 100644 --- a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; import gplx.gfui.*; +import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.gfui.*; public class Xoc_layout_mgr implements GfoInvkAble { public Xoc_layout_mgr(Xoae_app app) { this.app = app; diff --git a/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java index 57e9f7759..70f06384a 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; public class Xouc_setup_mgr implements GfoInvkAble { public Xouc_setup_mgr(Xoue_user user) {this.user = user;} public Xoue_user User() {return user;} private Xoue_user user; @@ -45,7 +46,7 @@ public class Xouc_setup_mgr implements GfoInvkAble { } private boolean Run(String exe, String arg) { boolean pass = false; String fail = ""; - try {pass = new ProcessAdp().Exe_url_(Io_url_.new_fil_(exe)).Args_str_(arg).Run_wait_sync().Exit_code_pass();} + try {pass = new Process_adp().Exe_url_(Io_url_.new_fil_(exe)).Args_str_(arg).Run_wait_sync().Exit_code_pass();} catch (Exception e) { fail = Err_.Message_gplx_full(e); } diff --git a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java index d2886309e..409e25266 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xouc_window_mgr implements GfoInvkAble { public Xouc_window_mgr(Xoue_user user) {this.user = user;} private Xoue_user user; diff --git a/400_xowa/src/gplx/xowa/users/Xoue_user.java b/400_xowa/src/gplx/xowa/users/Xoue_user.java index 155b54095..97a34071b 100644 --- a/400_xowa/src/gplx/xowa/users/Xoue_user.java +++ b/400_xowa/src/gplx/xowa/users/Xoue_user.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; +import gplx.core.envs.*; import gplx.dbs.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.users.data.*; diff --git a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java index 6f5346acd..5930f3a44 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.errs.*; import gplx.langs.jsons.*; import gplx.langs.htmls.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.bridges.dbuis.fmtrs.*; diff --git a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java index 321d9d9c2..ae7077718 100644 --- a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java +++ b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.errs.*; import gplx.langs.jsons.*; import gplx.langs.htmls.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.bridges.dbuis.fmtrs.*; diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java index 58cf4e7ea..b2c2385b2 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java @@ -72,7 +72,7 @@ public class Xou_history_mgr implements GfoInvkAble { byte[] page = Xoa_ttl.Replace_spaces(ttl.Full_txt_wo_qarg()); tmp_bfr.Add(page); Gfo_qarg_mgr qarg_mgr = url.Qargs_mgr(); - qarg_mgr.To_bry(tmp_bfr, Xoa_app_.Utl__encoder_mgr().Href(), Bool_.N); + qarg_mgr.To_bry(tmp_bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, Bool_.N); return tmp_bfr.To_bry_and_clear(); } public void Sort() {itms.Sort_by(sorter);} diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_sorter.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_sorter.java index d20015c47..2c5da302e 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_sorter.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_sorter.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -public class Xou_history_sorter implements gplx.lists.ComparerAble { +public class Xou_history_sorter implements gplx.core.lists.ComparerAble { public boolean Ascending() {return ascending;} public Xou_history_sorter Ascending_(boolean v) {ascending = v; return this;} private boolean ascending = false; public int Sort_fld() {return sort_fld;} public Xou_history_sorter Sort_fld_(int v) {sort_fld = v; return this;} private int sort_fld = Xou_history_itm.Fld_view_end; public int compare(Object lhsObj, Object rhsObj) { diff --git a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java index 8075a66cb..b0c55a245 100644 --- a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java +++ b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; +import gplx.core.envs.*; class Xofs_url_itm { public boolean Tid_is_xowa() {return tid_is_xowa;} public void Tid_is_xowa_(boolean v) {tid_is_xowa = v;} private boolean tid_is_xowa = true; public String Raw() {return raw;} public void Raw_(String v) {raw = v;} private String raw; diff --git a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser_tst.java b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser_tst.java index ef50e7986..c850f8445 100644 --- a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser_tst.java +++ b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import org.junit.*; +import org.junit.*; import gplx.core.envs.*; public class Xofs_url_itm_parser_tst { @Before public void init() {fxt.Clear();} private Xofs_url_itm_parser_fxt fxt = new Xofs_url_itm_parser_fxt(); @Test public void Custom() {fxt.Test_parse_custom("/xowa/wiki/en.wikipedia.org/");} diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java index 2bb4f4b4d..e4e3dea6a 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java @@ -124,11 +124,11 @@ class Xoctg_fmtr_all { arg_idx_lbl = url_arg_bgn; arg_sortkey = view_grp.Itms_last_sortkey(); if (arg_sortkey == null) - arg_sortkey = view_grp.Itms_at_last().Sortkey(); + arg_sortkey = view_grp.Itms_at_last().Sort_key(); } else { arg_idx_lbl = url_arg_end; - arg_sortkey = view_grp.Itms_at_first().Sortkey(); + arg_sortkey = view_grp.Itms_at_first().Sort_key(); } href_bfr.Add_byte(Byte_ascii.Question).Add(arg_idx_lbl).Add_byte(Byte_ascii.Eq); // filefrom= href_bfr.Add(arg_sortkey); // Abc diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java index 392a310e3..8dec710d9 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java @@ -30,7 +30,7 @@ class Xoctg_fmtr_grp extends gplx.core.brys.Bfr_arg_base { byte[] ttl_char_0 = Bry_.Empty; int col_idx = -1; boolean col_bgn_needed = true; while (cur_idx < len) { Xoctg_view_itm itm = itms_list.Itms()[cur_idx]; - byte[] itm_sortkey = itm.Sortkey(); + byte[] itm_sortkey = itm.Sort_key(); byte[] ttl_char_0_new = gplx.core.intls.Utf8_.Get_char_at_pos_as_bry(itm_sortkey, 0); byte[] grp_name = ttl_char_0_new; if (Bry_.Eq(ttl_char_0, ttl_char_0_new)) { diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java index 6c662c5ef..a45d3c361 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java @@ -47,7 +47,7 @@ abstract class Xoctg_fmtr_itm_base extends gplx.core.brys.Bfr_arg_base implement } Xoctg_view_itm itm = list.Itms()[i]; Xoa_ttl ttl = itm.Ttl(); - byte[] itm_sortkey = itm.Sortkey(); + byte[] itm_sortkey = itm.Sort_key(); byte[] ttl_bry = ttl.Page_txt(); if (!Bry_.Has_at_bgn(itm_sortkey, ttl_char_0, 0, itm_sortkey.length)) { grp_end_idx = i; @@ -63,8 +63,8 @@ abstract class Xoctg_fmtr_itm_base extends gplx.core.brys.Bfr_arg_base implement byte[] itm_href = wiki.App().Html__href_wtr().Build_to_bry(wiki, ttl); byte[] itm_full_ttl = ttl.Full_txt();// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A" byte[] itm_atr_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add - Bry_fmtr fmtr = itm.Id_missing() ? html_itm_missing : html_itm; - fmtr.Bld_bfr_many(bfr, itm_href, itm_full_ttl, itm_full_ttl, itm.Id(), itm_atr_cls); + Bry_fmtr fmtr = itm.Missing() ? html_itm_missing : html_itm; + fmtr.Bld_bfr_many(bfr, itm_href, itm_full_ttl, itm_full_ttl, itm.Page_id(), itm_atr_cls); } } class Xoctg_fmtr_itm_page extends Xoctg_fmtr_itm_base { @@ -97,9 +97,9 @@ class Xoctg_fmtr_itm_file extends Xoctg_fmtr_itm_base { class Xoctg_fmtr_itm_subc extends Xoctg_fmtr_itm_base { @Override public void Bld_html(Bry_bfr bfr, Xowe_wiki wiki, Xoctg_view_itm itm, Xoa_ttl ttl, byte[] ttl_page, Xoh_href_parser href_parser, Bry_fmtr html_itm) { byte[] itm_href = wiki.App().Html__href_wtr().Build_to_bry(wiki, ttl); - int sub_ctgs = itm.Subs_ctgs(); - int sub_pages = itm.Subs_pages(); - int sub_files = itm.Subs_files(); + int sub_ctgs = 0; // itm.Subs_ctgs(); + int sub_pages = 0; // itm.Subs_pages(); + int sub_files = 0; // itm.Subs_files(); byte[] contains_title = msg_mgr.Val_by_id_args(Xol_msg_itm_.Id_ctgtree_subc_counts, sub_ctgs, sub_pages, sub_files); byte[] contains_text = Bld_contains_text(sub_ctgs, sub_pages, sub_files); html_itm.Bld_bfr_many(bfr, ttl.Page_db(), ttl_page, itm_href, ttl_page, contains_title, contains_text); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java index 489fe7120..477854e3d 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java @@ -59,18 +59,18 @@ public class Xoctg_html_mgr implements GfoInvkAble { Xowd_page_itm dbo_page = new Xowd_page_itm(); for (int i = 0; i < len; i++) { Xoctg_view_itm itm = (Xoctg_view_itm)title_list.Get_at(i); - if (pct != 0 && i % pct == 0) usr_dlg.Prog_many("", "", "loading title data: ~{0} / ~{1} -- ~{2}", i, len, String_.new_u8(itm.Sortkey())); - boolean id_exists = wiki.Db_mgr().Load_mgr().Load_by_id(dbo_page, itm.Id()); + if (pct != 0 && i % pct == 0) usr_dlg.Prog_many("", "", "loading title data: ~{0} / ~{1} -- ~{2}", i, len, String_.new_u8(itm.Sort_key())); + boolean id_exists = wiki.Db_mgr().Load_mgr().Load_by_id(dbo_page, itm.Page_id()); Xoa_ttl itm_ttl = null; if (id_exists) itm_ttl = Xoa_ttl.parse(wiki, dbo_page.Ns_id(), dbo_page.Ttl_page_db()); else { - itm_ttl = Xoa_ttl.parse(wiki, itm.Sortkey()); + itm_ttl = Xoa_ttl.parse(wiki, itm.Sort_key()); if (itm_ttl == null) itm_ttl = Xoa_ttl.parse(wiki, Bry_missing); - itm.Id_missing_(true); + itm.Missing_y_(); } - itm.Ttl_(itm_ttl); + itm.Set__ttl__sortkey(itm_ttl, itm.Sort_key()); } } List_adp title_list = List_adp_.new_(); static final byte[] Bry_missing = Bry_.new_a7("missing"); private void Add_titles(List_adp title_list, Xoctg_view_grp grp) { @@ -97,7 +97,8 @@ public class Xoctg_html_mgr implements GfoInvkAble { byte[] all_stats = msg_mgr.Val_by_id_args(fmtr_all.Msg_id_stats(), view_grp.Len(), view_grp.Total()); Xoa_ttl ctg_ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__category, view_ctg.Name()); byte[] all_navs = fmtr_all.Bld_bwd_fwd(wiki, ctg_ttl, view_grp); - fmtr_grp.Init_from_all(wiki, lang, view_ctg, fmtr_all, view_grp); + Array_.Sort(view_grp.Itms(), Xoctg_view_itm_sorter_sortkey.Instance); + fmtr_grp.Init_from_all(wiki, lang, view_ctg, fmtr_all, view_grp); // NOTE: must assert sorted for v1; PAGE:s.w:Category:Computer_science; DATE:2015-11-22 fmtr_all.Html_all().Bld_bfr_many(bfr, fmtr_all.Div_id(), all_label, all_stats, all_navs, lang.Key_bry(), lang.Dir_ltr_bry(), fmtr_grp); } public static final int Cols_max = 3; @@ -117,19 +118,19 @@ public class Xoctg_html_mgr implements GfoInvkAble { return this; } private static final String Invk_grp_max = "grp_max", Invk_grp_max_ = "grp_max_"; } -class Xoctg_view_itm_sorter_id implements gplx.lists.ComparerAble { +class Xoctg_view_itm_sorter_id implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xoctg_view_itm lhs = (Xoctg_view_itm)lhsObj; Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj; - return Int_.Compare(lhs.Id(), rhs.Id()); + return Int_.Compare(lhs.Page_id(), rhs.Page_id()); } public static final Xoctg_view_itm_sorter_id Instance = new Xoctg_view_itm_sorter_id(); } -class Xoctg_view_itm_sorter_sortkey implements gplx.lists.ComparerAble { +class Xoctg_view_itm_sorter_sortkey implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xoctg_view_itm lhs = (Xoctg_view_itm)lhsObj; Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj; - return Bry_.Compare(lhs.Sortkey(), rhs.Sortkey()); + return Bry_.Compare(lhs.Sort_key(), rhs.Sort_key()); } public static final Xoctg_view_itm_sorter_sortkey Instance = new Xoctg_view_itm_sorter_sortkey(); } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java index ff2d92158..fa21d9851 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java @@ -26,7 +26,7 @@ public class Xoctg_html_mgr_tst { } @Test public void Page_itm_missing() { fxt .Init_itm_page("A1"); - fxt .Ctg().Grp_by_tid(Xoa_ctg_mgr.Tid_page).Itms()[0].Id_missing_(true); + fxt .Ctg().Grp_by_tid(Xoa_ctg_mgr.Tid_page).Itms()[0].Missing_y_(); fxt .Test_html_page(Xoa_ctg_mgr.Tid_page, Byte_ascii.Ltr_A, "\n
  • A1 (missing)
  • "); } @Test public void Visited_doesnt_work_for_space() {// PURPOSE: xowa-visited not inserted for pages with space @@ -229,17 +229,17 @@ class Xoh_ctg_page_fxt { public Xoh_ctg_page_fxt Init_ctg_name_(String v) {ctg.Name_(Bry_.new_u8(v)); return this;} public Xoh_ctg_page_fxt Init_ctg_pages_(int bgn, int count) {ctg.Pages().Bgn_(bgn).All_(count).End_(count); return this;} public Xoh_ctg_page_fxt Init_ctg_files_(int bgn, int count) {ctg.Files().Bgn_(bgn).All_(count).End_(count); return this;} - public Xoh_ctg_page_fxt Init_itm_page(String... titles) {ctg.Pages().Itms_(itms_(titles)).End_(titles.length); return this;} - public Xoh_ctg_page_fxt Init_itm_file(String... titles) {ctg.Files().Itms_(itms_(titles)).End_(titles.length); return this;} - public Xoh_ctg_page_fxt Init_itm_ctg(String... titles) {ctg.Subcs().Itms_(itms_(titles)).End_(titles.length); return this;} - Xoctg_view_itm[] itms_(String... titles) { + public Xoh_ctg_page_fxt Init_itm_page(String... titles) {ctg.Pages().Itms_(itms_(Xoa_ctg_mgr.Tid_page, titles)).End_(titles.length); return this;} + public Xoh_ctg_page_fxt Init_itm_file(String... titles) {ctg.Files().Itms_(itms_(Xoa_ctg_mgr.Tid_file, titles)).End_(titles.length); return this;} + public Xoh_ctg_page_fxt Init_itm_ctg(String... titles) {ctg.Subcs().Itms_(itms_(Xoa_ctg_mgr.Tid_subc, titles)).End_(titles.length); return this;} + Xoctg_view_itm[] itms_(byte tid, String... titles) { int len = titles.length; Xoctg_view_itm[] rv = new Xoctg_view_itm[len]; for (int i = 0; i < len; i++) { String title = titles[i]; byte[] title_bry = Bry_.new_u8(title); Xoa_ttl ttl = Xoa_ttl.parse(wiki, title_bry); - rv[i] = new Xoctg_view_itm().Ttl_(ttl).Sortkey_(ttl.Page_txt()); + rv[i] = new Xoctg_view_itm().Set__page(tid, 0).Set__ttl__sortkey(ttl, ttl.Page_txt()); } return rv; } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java index 72684cb0d..359155bf8 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java @@ -40,7 +40,7 @@ public class Xoctg_idx_itm { this.sortkey = orig.sortkey; } } -class Xoctg_idx_itm_sorter_sortkey implements gplx.lists.ComparerAble { +class Xoctg_idx_itm_sorter_sortkey implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xoctg_idx_itm lhs = (Xoctg_idx_itm)lhsObj; Xoctg_idx_itm rhs = (Xoctg_idx_itm)rhsObj; diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java index 6e111d081..dd8b6d807 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java @@ -140,7 +140,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { int rv_count = rv.Count(); if (rv_count > 0) { Xoctg_view_itm last_itm = (Xoctg_view_itm)rv.Get_at(rv_count - 1); - int last_itm_pos = last_itm.Pos(); + int last_itm_pos = last_itm.Sort_idx(); tmp_pos = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, last_itm_pos); if (tmp_pos != Bry_find_.Not_found && tmp_pos < src_len - 1) { ++tmp_pos; // position after pipe diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java index 1fd73f358..57ba5ee15 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java @@ -122,14 +122,14 @@ class Xoctg_idx_mgr_fxt { tmp_list.Clear(); idx_mgr.Find(tmp_list, src, fill_at_bgn, Bry_.new_a7(find), 3, tmp_last_plus_one); Tfds.Eq_ary(expd_ary, To_str_ary(tmp_list)); - Tfds.Eq(last_plus_one, String_.new_a7(tmp_last_plus_one.Sortkey())); + Tfds.Eq(last_plus_one, String_.new_a7(tmp_last_plus_one.Sort_key())); return this; } List_adp tmp_list; Xoctg_view_itm tmp_last_plus_one = new Xoctg_view_itm(); String[] To_str_ary(List_adp list) { int len = list.Count(); String[] rv = new String[len]; for (int i = 0; i < len; i++) { - rv[i] = String_.new_a7(((Xoctg_view_itm)list.Get_at(i)).Sortkey()); + rv[i] = String_.new_a7(((Xoctg_view_itm)list.Get_at(i)).Sort_key()); } return rv; } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java index d43264bc7..ef1d5f614 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.fmtrs.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Xoctg_pagelist_grp extends gplx.core.brys.Bfr_arg_base { public void Init_app(Xoae_app app, boolean type_is_normal, Bry_fmtr fmtr_grp, Bry_fmtr fmtr_itm) { @@ -24,11 +25,11 @@ public class Xoctg_pagelist_grp extends gplx.core.brys.Bfr_arg_base { this.fmtr_grp = fmtr_grp; itms.Init_app(app, fmtr_itm); } private Bry_fmtr fmtr_grp; - public void Init_by_wiki(Xowe_wiki wiki) { + public void Init_by_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) { lbl_ctg_text = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_ctg_tbl_hdr); lbl_ctg_help = Xol_msg_mgr_.Get_msg_val(wiki, wiki.Lang(), Key_pagecategorieslink, Bry_.Ary_empty); lbl_hidden = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_ctg_tbl_hidden); - itms.Init_wiki(wiki); + itms.Init_wiki(wiki, hctx); } private byte[] lbl_ctg_help, lbl_ctg_text, lbl_hidden; private static final byte[] Key_pagecategorieslink = Bry_.new_a7("pagecategorieslink"); public boolean Type_is_normal() {return type_is_normal;} private boolean type_is_normal; public Xoctg_pagelist_itms Itms() {return itms;} private Xoctg_pagelist_itms itms = new Xoctg_pagelist_itms(); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java index ae5ac57d2..4926ad861 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.fmtrs.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.users.history.*; public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base { @@ -27,7 +27,7 @@ public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base { this.history_mgr = app.Usere().History_mgr(); this.fmtr_itm = fmtr_itm; } - public void Init_wiki(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; + public void Init_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) {this.wiki = wiki; this.hctx = hctx;} private Xowe_wiki wiki; private Xoh_wtr_ctx hctx; public void Itms_clear() {itms.Clear();} private List_adp itms = List_adp_.new_(); public void Itms_add(Xowd_page_itm page) {itms.Add(page);} @Override public void Bfr_arg__add(Bry_bfr bfr) { @@ -35,7 +35,7 @@ public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base { for (int i = 0; i < len; i++) { Xowd_page_itm page = (Xowd_page_itm)itms.Get_at(i); Xoa_ttl ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__category, page.Ttl_page_db()); - byte[] lnki_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add + byte[] lnki_cls = hctx.Mode_is_hdump() ? Bry_.Empty : Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add byte[] lnki_href = href_wtr.Build_to_bry(wiki, ttl); byte[] lnki_ttl = ttl.Full_txt(); byte[] lnki_text = ttl.Page_txt(); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java index e3136f448..d23c37542 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.fmtrs.*; +import gplx.xowa.htmls.core.htmls.*; public class Xoctg_pagelist_mgr extends gplx.core.brys.Bfr_arg_base { public Xoctg_pagelist_mgr Init_by_app(Xoae_app app, Xoctg_pagelist_wtr hidden_wtr) { this.fmtr_all = hidden_wtr.Fmtr_all(); @@ -24,9 +25,9 @@ public class Xoctg_pagelist_mgr extends gplx.core.brys.Bfr_arg_base { grp_hidden.Init_app(app, Bool_.N, hidden_wtr.Fmtr_grp_hidden(), hidden_wtr.Fmtr_itm()); return this; } private Bry_fmtr fmtr_all; - public void Init_by_wiki(Xowe_wiki wiki) { - grp_normal.Init_by_wiki(wiki); - grp_hidden.Init_by_wiki(wiki); + public void Init_by_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) { + grp_normal.Init_by_wiki(wiki, hctx); + grp_hidden.Init_by_wiki(wiki, hctx); } public Xoctg_pagelist_grp Grp_normal() {return grp_normal;} private Xoctg_pagelist_grp grp_normal = new Xoctg_pagelist_grp(); public Xoctg_pagelist_grp Grp_hidden() {return grp_hidden;} private Xoctg_pagelist_grp grp_hidden = new Xoctg_pagelist_grp(); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java index ce7f49868..c6b437009 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java @@ -17,15 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.fmtrs.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.users.history.*; import gplx.xowa.wikis.data.tbls.*; public class Xoctg_pagelist_wtr { private Xoctg_pagelist_mgr pagelist_mgr = new Xoctg_pagelist_mgr(); public Xoctg_pagelist_wtr Init_by_app(Xoae_app app) {pagelist_mgr.Init_by_app(app, this); return this;} - public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoae_page page) { + public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoae_page page, Xoh_wtr_ctx hctx) { Xowd_page_itm[] page_ary = wiki.Db_mgr().Load_mgr().Load_ctg_list(page.Category_list()); - Print_hidden(bfr, wiki, page_ary); + Print_hidden(bfr, wiki, page_ary, hctx); } - public void Print_hidden(Bry_bfr bfr, Xowe_wiki wiki, Xowd_page_itm[] page_ary) { + public void Print_hidden(Bry_bfr bfr, Xowe_wiki wiki, Xowd_page_itm[] page_ary, Xoh_wtr_ctx hctx) { int len = page_ary.length; for (int i = 0; i < len; i++) { Xowd_page_itm page = page_ary[i]; @@ -33,7 +34,7 @@ public class Xoctg_pagelist_wtr { Xoctg_pagelist_grp list = ctg_xtn != null && ctg_xtn.Hidden() ? pagelist_mgr.Grp_hidden() : pagelist_mgr.Grp_normal(); list.Itms().Itms_add(page); } - pagelist_mgr.Init_by_wiki(wiki); + pagelist_mgr.Init_by_wiki(wiki, hctx); pagelist_mgr.Bfr_arg__add(bfr); pagelist_mgr.Grp_hidden().Itms().Itms_clear(); pagelist_mgr.Grp_normal().Itms().Itms_clear(); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java index 3c0312abd..06db1bf4e 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java @@ -80,7 +80,7 @@ class Xoctg_pagelist_mgr_fxt { public void Test_print_hidden(String expd) { Bry_bfr bfr = Bry_bfr.new_(); Xowd_page_itm[] page_ary = (Xowd_page_itm[])init_ctgs.To_ary_and_clear(Xowd_page_itm.class); - hidden_wtr.Print_hidden(bfr, fxt.Wiki(), page_ary); + hidden_wtr.Print_hidden(bfr, fxt.Wiki(), page_ary, gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx.Basic); Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); // Tfds.Write(bfr.To_bry_and_clear()); } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java index 74453d334..c77f8e878 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java @@ -51,7 +51,7 @@ public class Xoctg_view_ctg { Xoctg_idx_mgr data_grp = data_ctg.Grp_by_tid(i); if (data_grp == null) return; // no itms in grp byte[] url_bmk = url_ctg.Grp_idxs()[i]; byte url_bmk_fwd = url_ctg.Grp_fwds()[i]; data_grp.Find(view_grp.Itms_list(), data_grp.Src(), url_bmk_fwd != Bool_.N_byte, url_bmk, 200, tmp_last_plus_one); - view_grp.Itms_last_sortkey_(tmp_last_plus_one.Sortkey()); + view_grp.Itms_last_sortkey_(tmp_last_plus_one.Sort_key()); view_grp.Itms_make(); } private Xoctg_view_itm tmp_last_plus_one = new Xoctg_view_itm(); } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java index 97ad5ebe3..b1d864e1d 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java @@ -19,37 +19,35 @@ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.flds.*; import gplx.xowa.wikis.nss.*; public class Xoctg_view_itm implements gplx.CompareAble { - public byte Tid() {return tid;} private byte tid; - public int Id() {return id;} private int id; - public boolean Id_missing() {return id_missing;} public Xoctg_view_itm Id_missing_(boolean v) {id_missing = v; return this;} private boolean id_missing; - public int Timestamp() {return timestamp;} private int timestamp; - public Xoa_ttl Ttl() {return ttl;} public Xoctg_view_itm Ttl_(Xoa_ttl v) {ttl = v; return this;} private Xoa_ttl ttl; - public int Page_size() {return page_size;} private int page_size; - public int Subs_ctgs() {return subs_ctgs;} private int subs_ctgs; - public int Subs_pages() {return subs_pages;} private int subs_pages; - public int Subs_files() {return subs_files;} private int subs_files; - public void Load_by_ttl_data(byte tid, int id, int timestamp, int page_size) {this.tid = tid; this.id = id; this.timestamp = timestamp; this.page_size = page_size;} - public byte[] Sortkey() {return sortkey;} public Xoctg_view_itm Sortkey_(byte[] v) {sortkey = v; return this;} private byte[] sortkey; - public void Subs_(int ctgs, int pages, int files) {this.subs_ctgs = ctgs; this.subs_pages = pages; this.subs_files = files;} - public byte[] Ttl_bry() {return ttl_bry;} private byte[] ttl_bry; - public Xow_ns Ns() {return ns;} private Xow_ns ns; - public void Load_by_id_data(Xow_ns ns, byte[] ttl_bry) { - this.ns = ns; this.ttl_bry = ttl_bry; this.sortkey = ttl_bry; + public byte Tid() {return tid;} private byte tid; // Xoa_ctg_mgr.Tid* + public int Page_id() {return page_id;} private int page_id; + public Xoa_ttl Ttl() {return ttl;} private Xoa_ttl ttl; + public byte[] Sort_key() {return sort_key;} private byte[] sort_key; + public int Sort_idx() {return sort_idx;} private int sort_idx; + public boolean Missing() {return missing;} private boolean missing; public void Missing_y_() {missing = true;} + + public Xoctg_view_itm Set__page(byte tid, int page_id) {this.tid = tid; this.page_id = page_id; return this;} + public Xoctg_view_itm Set__ttl__sortkey(Xoa_ttl ttl, byte[] sort_key) { + this.ttl = ttl; + Sort_key_(sort_key); + return this; } - public static final Xoctg_view_itm[] Ary_empty = new Xoctg_view_itm[0]; - public int compareTo(Object obj) {Xoctg_view_itm comp = (Xoctg_view_itm)obj; return Int_.Compare(id, comp.Id());} - public int Pos() {return pos;} public Xoctg_view_itm Pos_(int v) {pos = v; return this;} private int pos; - public Xoctg_view_itm Parse(Gfo_fld_rdr fld_rdr, int pos) { - this.pos = pos; - id = fld_rdr.Read_int_base85_len5(); - timestamp = fld_rdr.Read_int_base85_len5(); - sortkey = fld_rdr.Read_bry_escape(); + public Xoctg_view_itm Parse(Gfo_fld_rdr fld_rdr, int sort_idx) { // NOTE: XO stores data as "page_id|ctg_added_on|sortkey" + this.sort_idx = sort_idx; + page_id = fld_rdr.Read_int_base85_len5(); + fld_rdr.Read_int_base85_len5(); // skip ctg_added_on; not used + Sort_key_(fld_rdr.Read_bry_escape()); return this; } public void Clear() { - this.pos = 0; - id = 0; - timestamp = 0; - sortkey = null; + sort_idx = page_id = 0; + sort_key = null; } + private void Sort_key_(byte[] v) { + this.sort_key = v; + if (sort_key.length == 0) // v1 will not have sortkey data; PAGE:s.w:Category:Computer_science DATE:2015-11-22 + sort_key = ttl.Page_db(); + } + public int compareTo(Object obj) {Xoctg_view_itm comp = (Xoctg_view_itm)obj; return Int_.Compare(page_id, comp.Page_id());} + public static final Xoctg_view_itm[] Ary_empty = new Xoctg_view_itm[0]; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java index ecba06fa3..27c49db35 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.lists.*; /*ComparerAble*/ import gplx.xowa.bldrs.cmds.ctgs.*; +import gplx.core.lists.*; /*ComparerAble*/ import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.guis.views.*; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java index a09c74e66..59153154b 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.lists.*; /*ComparerAble*/ import gplx.xowa.wikis.data.tbls.*; +import gplx.core.lists.*; /*ComparerAble*/ import gplx.xowa.wikis.data.tbls.*; public class Xowd_page_itm_sorter implements ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xowd_page_itm lhs = (Xowd_page_itm)lhsObj, rhs = (Xowd_page_itm)rhsObj; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java index 82f2bc71c..77268fe62 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java @@ -79,7 +79,7 @@ public class Xowd_xowa_db_tbl { stmt.Val_byte(fld_type, itm.Tid()).Val_str(fld_url, itm.Url_rel()).Val_str(fld_ns_ids, itm.Ns_ids()).Val_int(fld_part_id, itm.Part_id()).Val_str(fld_guid, itm.Guid().To_str()); } } -class Xowd_db_file_sorter__id implements gplx.lists.ComparerAble { +class Xowd_db_file_sorter__id implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xowd_db_file lhs = (Xowd_db_file)lhsObj; Xowd_db_file rhs = (Xowd_db_file)rhsObj; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java index 62f9414e8..2cc3819a4 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java @@ -106,8 +106,9 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { prv_tid = cur_tid; } Xoa_ttl ttl = Xoa_ttl.parse(wiki, db_page.Ns_id(), db_page.Ttl_page_db()); - Xoctg_view_itm view_itm = new Xoctg_view_itm().Sortkey_(db_ctg.Sortkey()).Ttl_(ttl); - view_itm.Load_by_ttl_data(cur_tid, db_page.Id(), Xowd_page_itm.Modified_on_null_int, db_page.Text_len()); + Xoctg_view_itm view_itm = new Xoctg_view_itm(); + view_itm.Set__page(cur_tid, db_page.Id()); + view_itm.Set__ttl__sortkey(ttl, db_ctg.Sortkey()); view_grp.Itms_add(view_itm); } len = Xoa_ctg_mgr.Tid__max; @@ -189,9 +190,8 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { byte ctg_tid = Xodb_load_mgr_txt.Load_ctg_v1_tid(page.Ns_id()); Xoctg_view_grp ctg_grp = view_ctg.Grp_by_tid(ctg_tid); Xoctg_view_itm ctg_itm = new Xoctg_view_itm(); - ctg_itm.Load_by_ttl_data(ctg_tid, page.Id(), 0, page.Text_len()); - ctg_itm.Ttl_(Xoa_ttl.parse(wiki, page.Ns_id(), page.Ttl_page_db())); - ctg_itm.Sortkey_(page.Ttl_page_db()); + ctg_itm.Set__page(ctg_tid, page.Id()); + ctg_itm.Set__ttl__sortkey(Xoa_ttl.parse(wiki, page.Ns_id(), page.Ttl_page_db()), page.Ttl_page_db()); ctg_grp.Itms_add(ctg_itm); rv = true; } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java index ef5d5054a..011a4f5d1 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.core.encoders.*; +import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.core.envs.*; +import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.core.encoders.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; @@ -307,8 +308,9 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { for (int i = 0; i < ctgs_len; i++) { Xowd_page_itm itm = (Xowd_page_itm)ctgs.Get_at(i); byte itm_tid = Load_ctg_v1_tid(itm.Ns_id()); - Xoctg_view_itm sub = Load_ctg_v1_sub(itm_tid, itm); - sub.Ttl_(Xoa_ttl.parse(wiki, itm.Ns_id(), itm.Ttl_page_db())).Sortkey_(itm.Ttl_page_db()); + Xoctg_view_itm sub = new Xoctg_view_itm(); + sub.Set__page(itm_tid, itm.Id()); + sub.Set__ttl__sortkey(Xoa_ttl.parse(wiki, itm.Ns_id(), itm.Ttl_page_db()), itm.Ttl_page_db()); view_ctg.Grp_by_tid(itm_tid).Itms_add(sub); } for (byte i = 0; i < Xoa_ctg_mgr.Tid__max; i++) { @@ -344,16 +346,11 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { } public static byte Load_ctg_v1_tid(int ns_id) { switch (ns_id) { - case Xow_ns_.Tid__category: return Xoa_ctg_mgr.Tid_subc; + case Xow_ns_.Tid__category: return Xoa_ctg_mgr.Tid_subc; case Xow_ns_.Tid__file: return Xoa_ctg_mgr.Tid_file; default: return Xoa_ctg_mgr.Tid_page; } } - private static Xoctg_view_itm Load_ctg_v1_sub(byte tid, Xowd_page_itm data) { - Xoctg_view_itm rv = new Xoctg_view_itm(); - rv.Load_by_ttl_data(tid, data.Id(), 0, data.Text_len()); - return rv; - } public static boolean Load_page_or_false(Xowd_page_itm page, Xob_xdat_itm xdat, int ns_id) { byte[] src = xdat.Src(); int itm_end = xdat.Itm_end(); int bgn = xdat.Itm_bgn(); @@ -563,7 +560,7 @@ class Xob_random_itm { public int Len() {return len;} private int len; public Xob_random_itm(int idx, int bgn, int len) {this.idx = idx; this.bgn = bgn; this.len = len;} } -class Xob_random_itm_comparer implements gplx.lists.ComparerAble { +class Xob_random_itm_comparer implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { return Int_.Compare(((Xob_random_itm)lhsObj).End(), ((Xob_random_itm)rhsObj).End()); } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java index 71c76c29c..68e6daa25 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java @@ -111,7 +111,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { private Xowd_page_itm tmp_page = new Xowd_page_itm(); public static final int File_idx_unknown = -1; } -class Bry_comparer_fld_last implements gplx.lists.ComparerAble { +class Bry_comparer_fld_last implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj; int lhs_bgn = Bry_find_.Find_bwd(lhs, Byte_ascii.Pipe); if (lhs_bgn == Bry_find_.Not_found) lhs_bgn = -1; diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java index 22c1b64f7..ff4a6f7a6 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java @@ -30,6 +30,7 @@ public class Xow_domain_itm_tst { @Test public void Parse_other() {fxt.Test_parse("other.wiki" , "" , "" , Xow_domain_tid_.Int__other);} @Test public void Parse_ua_wikimedia_org() {fxt.Test_parse("ua.wikimedia.org" , "ua" , "uk" , Xow_domain_tid_.Int__wikimedia);} @Test public void Parse_ar_wikimedia_org() {fxt.Test_parse("ar.wikimedia.org" , "ar" , "es" , Xow_domain_tid_.Int__wikimedia);} + @Test public void Parse_blank() {fxt.Test_parse("" , "" , "" , Xow_domain_tid_.Int__other);} } class Xow_domain_fxt { public void Test_parse(String domain, String expd_orig_lang, String expd_actl_lang, int expd_tid) { diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java index 3ba10e89d..92c0cf002 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.xowa.wikis.domains.*; public class Xow_script_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java index 997abc623..cc41a298d 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java @@ -65,7 +65,9 @@ public class Xow_ns_ { ; public static final String Alias__wikipedia = "Wikipedia" + , Alias__image = "Image" ; + public static final byte[] Alias__image__bry = Bry_.new_a7(Alias__image); public static final byte[] Bry__template_w_colon = Bry_.new_a7(Key__template + ":") , Bry__module_w_colon = Bry_.new_a7(Key__module + ":") diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java index de8897947..ccbce2b54 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.xtns.scribunto.*; -public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { +public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble { private Ordered_hash id_hash = Ordered_hash_.New(); // hash for retrieval by id private Hash_adp_bry name_hash; // hash for retrieval by name; note that ns names are case-insensitive "File:" == "fILe:" private Hash_adp_bry tmpl_hash; // hash for retrieval by name; PERF for templates diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java index acf053e7f..426de2d34 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -public class Bry_comparer_bgn_eos implements gplx.lists.ComparerAble { +public class Bry_comparer_bgn_eos implements gplx.core.lists.ComparerAble { public Bry_comparer_bgn_eos(int bgn) {this.bgn = bgn;} private int bgn; public int compare(Object lhsObj, Object rhsObj) { byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java index 1f9352a9f..491efe66e 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java @@ -24,7 +24,7 @@ public class Xowd_hive_mgr { dir_tid_reg = dir_tid == Xotdb_dir_info_.Tid_page ? Xotdb_dir_info_.Tid_ttl : dir_tid; } Xowe_wiki wiki; Xotdb_fsys_mgr fsys_mgr; Xowd_regy_mgr reg_mgr; byte dir_tid; byte dir_tid_reg; - public void Create(Xow_ns ns, byte[] key, byte[] data, gplx.lists.ComparerAble comparer) { + public void Create(Xow_ns ns, byte[] key, byte[] data, gplx.core.lists.ComparerAble comparer) { if (reg_mgr == null) reg_mgr = new Xowd_regy_mgr(fsys_mgr.Url_ns_reg(ns.Num_str(), dir_tid_reg)); int fil_idx = 0; if (reg_mgr.Files_ary().length == 0) { @@ -48,7 +48,7 @@ public class Xowd_hive_mgr { xdat.Save(url); reg_mgr.Save(); } - public void Create(byte[] key, byte[] data, gplx.lists.ComparerAble comparer) { + public void Create(byte[] key, byte[] data, gplx.core.lists.ComparerAble comparer) { if (reg_mgr == null) reg_mgr = new Xowd_regy_mgr(fsys_mgr.Url_site_reg(dir_tid)); int fil_idx = 0; if (reg_mgr.Files_ary().length == 0) { diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java index cf174e716..f37292f68 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.lists.*; +import gplx.core.lists.*; public class Xowd_regy_mgr { public static final int Not_found = -1; public Xowd_regy_mgr() {} diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java index b3d381d3e..a40e409a3 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -public class Xowd_ttl_file_comparer_end implements gplx.lists.ComparerAble { +public class Xowd_ttl_file_comparer_end implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xowd_hive_regy_itm lhs = (Xowd_hive_regy_itm)lhsObj, rhs = (Xowd_hive_regy_itm)rhsObj; if (lhs.Count() == 0) return Bry_.Compare(rhs.End(), lhs.Bgn()); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java index 76de0648e..8daf01587 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.strings.*; -public class Xob_stat_itm implements NewAble { +public class Xob_stat_itm { public String Ns() {return ns;} private String ns; public int Fils; public long Size, SizeMax = Int_.Min_value, SizeMin = Int_.Max_value; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java index 6001ca7d9..1766968d2 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java @@ -20,7 +20,14 @@ import gplx.core.strings.*; import gplx.xowa.wikis.tdbs.*; public class Xob_stat_type { public byte Tid() {return tid;} private byte tid; public Xob_stat_type(byte tid) {this.tid = tid;} - public Xob_stat_itm GetOrNew(String ns) {return (Xob_stat_itm)regy.Get_by_or_new(ns, Xob_stat_itm.Instance);} + public Xob_stat_itm GetOrNew(String ns) { + Xob_stat_itm rv = (Xob_stat_itm)regy.Get_by(ns); + if (rv == null) { + rv = new Xob_stat_itm(ns); + regy.Add(ns, rv); + } + return rv; + } public Xob_stat_itm GetAt(int i) {return (Xob_stat_itm)regy.Get_at(i);} public int Count() {return regy.Count();} public void To_str(String_bldr sb) { diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java index 10fe2e4e6..b4a2ba993 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java @@ -48,7 +48,7 @@ public class Xob_xdat_file { } return rv; } - public void Sort(Bry_bfr bfr, gplx.lists.ComparerAble comparer) { + public void Sort(Bry_bfr bfr, gplx.core.lists.ComparerAble comparer) { int ary_len = itm_ends.length; byte[][] brys = Src_extract_brys(ary_len); Array_.Sort(brys, comparer); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java index 46b1ef2dd..1905439bc 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java @@ -78,7 +78,7 @@ public class Xob_xdat_file_tst { Tfds.Eq_str_lines(expd, String_.new_a7(Xob_xdat_file.Rebuid_header(Bry_.new_a7(orig), Bry_.new_a7("\n")))); } Bry_bfr tmp = Bry_bfr.new_(); - private void tst_Sort(Xob_xdat_file rdr, gplx.lists.ComparerAble comparer, String expd) { + private void tst_Sort(Xob_xdat_file rdr, gplx.core.lists.ComparerAble comparer, String expd) { rdr.Sort(tmp, comparer); Chk_file(rdr, expd); } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java index 25e35aaad..a1d866b18 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java @@ -115,8 +115,8 @@ public class Xob_xdat_file_wtr { private static final byte Dlm_fld = Byte_ascii.Pipe; } class SortAlgo_quick {// quicksort - Object[] ary; int ary_len; gplx.lists.ComparerAble comparer; - public void Sort(Object[] ary, int ary_len, gplx.lists.ComparerAble comparer) { + Object[] ary; int ary_len; gplx.core.lists.ComparerAble comparer; + public void Sort(Object[] ary, int ary_len, gplx.core.lists.ComparerAble comparer) { if (ary == null || ary_len < 2) return; this.ary = ary; this.ary_len = ary_len; this.comparer = comparer; Sort_recurse(0, ary_len - 1); diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_page.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_page.java index 921c8cfcf..3957c3288 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_page.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_page.java @@ -20,7 +20,7 @@ package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; impor // public byte[] Ttl_bry() {return ttl_bry;} public Dpl_page Ttl_bry_(byte[] v) {ttl_bry = v; return this;} private byte[] ttl_bry; // } import gplx.xowa.wikis.data.tbls.*; -class Dpl_page_sorter implements gplx.lists.ComparerAble { +class Dpl_page_sorter implements gplx.core.lists.ComparerAble { public Dpl_page_sorter(Dpl_itm itm) {this.itm = itm;} private Dpl_itm itm; public int compare(Object lhsObj, Object rhsObj) { Xowd_page_itm lhs = (Xowd_page_itm)lhsObj; diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java index 698733514..92cc87684 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java @@ -119,7 +119,7 @@ class Dpl_page_finder { int itms_len = ctg_mgr.Total(); for (int i = 0; i < itms_len; i++) { Xoctg_view_itm ctg_itm = ctg_mgr.Itms()[i]; - int ctg_itm_id = ctg_itm.Id(); + int ctg_itm_id = ctg_itm.Page_id(); if (list.Has(tmp_id.Val_(ctg_itm_id))) continue; list.Add(Int_obj_ref.new_(ctg_itm_id), ctg_itm); // if (ctg_tid == Xoa_ctg_mgr.Tid_subc) { // recurse subcategories @@ -148,12 +148,12 @@ class Dpl_page_finder { for (int j = 0; j < found_len; j++) { // if new_page is in cur, add it Xoctg_view_itm cur_itm = (Xoctg_view_itm)cur_regy.Get_at(j); if (ns_filter != Dpl_itm.Ns_filter_null && ns_filter != cur_itm.Ttl().Ns().Id()) continue; - tmp_id.Val_(cur_itm.Id()); // set tmp_id, since it will be used at least once + tmp_id.Val_(cur_itm.Page_id()); // set tmp_id, since it will be used at least once if (exclude_pages.Has(tmp_id)) continue; // ignore excluded pages if (i != 0) { // skip logic for first ctg (which doesn't have a predecessor) if (!old_regy.Has(tmp_id)) continue; // cur_itm not in old_regy; ignore } - new_regy.Add_as_key_and_val(Int_obj_ref.new_(cur_itm.Id())); + new_regy.Add_as_key_and_val(Int_obj_ref.new_(cur_itm.Page_id())); } } } diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java index 0f5755d3e..c699e3efa 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java @@ -30,15 +30,15 @@ class Gallery_box_w_fmtr_arg__basic extends gplx.core.brys.Bfr_arg_base implemen } private static final byte[] Style_bgn = Bry_.new_a7("style=\"width: "), Style_end = Bry_.new_a7("px\""); } -class Gallery_box_w_fmtr_arg__hdump extends gplx.core.brys.Bfr_arg_base implements Gallery_box_w_fmtr_arg { - private int uid; - public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} - @Override public void Bfr_arg__add(Bry_bfr bfr) { - bfr.Add(Xoh_make_trie_.Bry__gallery_box_w); - bfr.Add_int_variable(uid); - bfr.Add_byte_apos(); - } -} +// class Gallery_box_w_fmtr_arg__hdump : gplx.core.brys.Bfr_arg_base, Gallery_box_w_fmtr_arg { +// private int uid; +// public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} +// public override void Bfr_arg__add(Bry_bfr bfr) { +// bfr.Add(Xoh_make_trie_.Bry__gallery_box_w); +// bfr.Add_int_variable(uid); +// bfr.Add_byte_apos(); +// } +// } interface Gallery_img_pad_fmtr_arg extends gplx.core.brys.Bfr_arg { Gallery_img_pad_fmtr_arg Init(int uid, int vpad); } @@ -52,12 +52,12 @@ class Gallery_img_pad_fmtr_arg__basic extends gplx.core.brys.Bfr_arg_base implem } private static final byte[] Style_bgn = Bry_.new_a7("style=\"margin:"), Style_end = Bry_.new_a7("px auto;\""); } -class Gallery_img_pad_fmtr_arg__hdump extends gplx.core.brys.Bfr_arg_base implements Gallery_img_pad_fmtr_arg { - private int uid; - public Gallery_img_pad_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} - @Override public void Bfr_arg__add(Bry_bfr bfr) { - bfr.Add(Xoh_make_trie_.Bry__gallery_img_pad); - bfr.Add_int_variable(uid); - bfr.Add_byte_apos(); - } -} +// class Gallery_img_pad_fmtr_arg__hdump : gplx.core.brys.Bfr_arg_base, Gallery_img_pad_fmtr_arg { +// private int uid; +// public Gallery_img_pad_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} +// public override void Bfr_arg__add(Bry_bfr bfr) { +// bfr.Add(Xoh_make_trie_.Bry__gallery_img_pad); +// bfr.Add_int_variable(uid); +// bfr.Add_byte_apos(); +// } +// } 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 11dab43b6..c62c4eda5 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 @@ -172,7 +172,7 @@ public class Gallery_itm_parser { case Fld_ttl: cur_itm.Ttl_end_(fld_end); byte[] ttl_bry = Bry_.Mid(src, cur_itm.Ttl_bgn(), fld_end); - ttl_bry = Xoa_app_.Utl__encoder_mgr().Http_url_ttl().Decode(ttl_bry); // NOTE: must decode url-encoded entries; EX: "A%28b%29.png" -> "A(b).png"; DATE:2014-01-01 + ttl_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl.Decode(ttl_bry); // NOTE: must decode url-encoded entries; EX: "A%28b%29.png" -> "A(b).png"; DATE:2014-01-01 Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); if ( ttl == null // invalid ttl; EX: "" || ttl.Anch_bgn() == 1 // anchor-only ttl; EX: "#invalid"; DATE:2014-03-18 diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java index ea68becf3..121b3e6e1 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java @@ -20,8 +20,8 @@ import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.files.*; import gplx.xowa.htmls.core.makes.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; public abstract class Gallery_mgr_base { - private Gallery_box_w_fmtr_arg__basic box_w_fmtr__basic = new Gallery_box_w_fmtr_arg__basic(); private Gallery_box_w_fmtr_arg__hdump box_w_fmtr__hdump = new Gallery_box_w_fmtr_arg__hdump(); - private Gallery_img_pad_fmtr_arg__basic img_pad_fmtr__basic = new Gallery_img_pad_fmtr_arg__basic(); private Gallery_img_pad_fmtr_arg__hdump img_pad_fmtr__hdump = new Gallery_img_pad_fmtr_arg__hdump(); + private Gallery_box_w_fmtr_arg__basic box_w_fmtr__basic = new Gallery_box_w_fmtr_arg__basic(); // private Gallery_box_w_fmtr_arg__hdump box_w_fmtr__hdump = new Gallery_box_w_fmtr_arg__hdump(); + private Gallery_img_pad_fmtr_arg__basic img_pad_fmtr__basic = new Gallery_img_pad_fmtr_arg__basic(); // private Gallery_img_pad_fmtr_arg__hdump img_pad_fmtr__hdump = new Gallery_img_pad_fmtr_arg__hdump(); public abstract byte Tid(); public abstract byte[] Tid_bry(); @gplx.Virtual public boolean Tid_is_packed() {return false;} @@ -129,7 +129,8 @@ public abstract class Gallery_mgr_base { xfer_itm.Init_at_gallery_bgn(html_w_normal, html_h_normal, html_w_expand);// NOTE: file_w should be set to expanded width so js can resize if gallery img_div_w = this.Get_thumb_div_width(html_w_expand); itm_div0_fmtr.Bld_bfr_many(tmp_bfr, img_div_w); - Gallery_img_pad_fmtr_arg vpad_fmtr = hctx_is_hdump ? (Gallery_img_pad_fmtr_arg)img_pad_fmtr__hdump : (Gallery_img_pad_fmtr_arg)img_pad_fmtr__basic; + // Gallery_img_pad_fmtr_arg vpad_fmtr = hctx_is_hdump ? (Gallery_img_pad_fmtr_arg)img_pad_fmtr__hdump : (Gallery_img_pad_fmtr_arg)img_pad_fmtr__basic; + Gallery_img_pad_fmtr_arg vpad_fmtr = img_pad_fmtr__basic; vpad = this.Get_vpad(itm_default_h, html_h_expand); itm_div1_fmtr.Bld_bfr_many(tmp_bfr, vpad_fmtr.Init(img_uid, vpad)); //
    wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_file(tmp_bfr, ctx, hctx, src, lnki, xfer_itm, alt); @@ -145,10 +146,11 @@ public abstract class Gallery_mgr_base { ); // MW:passes know,noclasses which isn't relevant to XO } int itm_div_width = this.Get_gb_width(html_w_expand, html_h_expand); - Gallery_box_w_fmtr_arg box_w_fmtr_arg = hctx_is_hdump ? (Gallery_box_w_fmtr_arg)box_w_fmtr__hdump : (Gallery_box_w_fmtr_arg)box_w_fmtr__basic; + // Gallery_box_w_fmtr_arg box_w_fmtr_arg = hctx_is_hdump ? (Gallery_box_w_fmtr_arg)box_w_fmtr__hdump : (Gallery_box_w_fmtr_arg)box_w_fmtr__basic; + Gallery_box_w_fmtr_arg box_w_fmtr_arg = box_w_fmtr__basic; itm_li_bgn_fmtr.Bld_bfr_many(bfr, gallery_li_id, box_w_fmtr_arg.Init(img_uid, itm_div_width)); bfr.Add(itm_html); - wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, page, true, itm_caption); + wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, page, hctx, true, itm_caption); itm_caption = tmp_bfr.To_bry_and_clear(); itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).To_bry_and_clear(); Wrap_gallery_text(bfr, itm_caption, html_w_expand, html_h_expand); @@ -180,7 +182,7 @@ public abstract class Gallery_mgr_base { private static final byte[] itm_li_end_bry = Bry_.new_a7 ( "\n
    " - + "\n ") + + "\n ") , box_html_end_bry = Bry_.new_a7 ( "\n") , itm_divs_end_bry = Bry_.new_a7 ( "\n
    \n ") ; @@ -196,13 +198,13 @@ public abstract class Gallery_mgr_base { bfr.Add_byte(Byte_ascii.Lt).Add(Html_tag_.Bry__ul); Html_wtr.Write_atr_bry(bfr, Html_atr_.Bry__id, gallery_ul_uid); Html_wtr.Write_atr_bry(bfr, Html_atr_.Bry__class, cls); - if (hctx_is_hdump) { - bfr.Add_byte_space(); - bfr.Add(Xoh_make_trie_.Bry__gallery_box_max); - bfr.Add_int_variable(uid); - bfr.Add_byte_apos(); - } - else +// if (hctx_is_hdump) { +// bfr.Add_byte_space(); +// bfr.Add(Xoh_make_trie_.Bry__gallery_box_max); +// bfr.Add_int_variable(uid); +// bfr.Add_byte_apos(); +// } +// else Html_wtr.Write_atr_bry(bfr, Html_atr_.Bry__style, style); if (xatr_list != null) { int len = xatr_list.Count(); diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java index 8df368767..40a99ba23 100644 --- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java @@ -46,7 +46,7 @@ public class Insider_html_bldr extends gplx.core.brys.Bfr_arg_base { } @Override public void Bfr_arg__add(Bry_bfr bfr) { Xowe_wiki wiki = xtn_mgr.Wiki(); - Url_encoder href_encoder = Xoa_app_.Utl__encoder_mgr().Href(); + Gfo_url_encoder href_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href; for (int i = 0; i < list_len; ++i) { byte[] itm = (byte[])list.Get_at(i); Xoa_ttl user_ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__user, itm); diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java index cee4c206e..951ca63d1 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.brys.fmtrs.*; -import gplx.core.strings.*; import gplx.core.consoles.*; import gplx.xowa.apps.progs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.strings.*; import gplx.core.consoles.*; import gplx.core.envs.*; +import gplx.xowa.apps.progs.*; public class Xof_math_mgr implements GfoInvkAble { private Xoae_app app; - public ProcessAdp Cmd_convert_tex_to_dvi() {return cmd_convert_tex_to_dvi;} private ProcessAdp cmd_convert_tex_to_dvi = new ProcessAdp(); - public ProcessAdp Cmd_convert_dvi_to_png() {return cmd_convert_dvi_to_png;} private ProcessAdp cmd_convert_dvi_to_png = new ProcessAdp(); + public Process_adp Cmd_convert_tex_to_dvi() {return cmd_convert_tex_to_dvi;} private Process_adp cmd_convert_tex_to_dvi = new Process_adp(); + public Process_adp Cmd_convert_dvi_to_png() {return cmd_convert_dvi_to_png;} private Process_adp cmd_convert_dvi_to_png = new Process_adp(); public void Init_by_app(Xoae_app app) { this.app = app; Xoa_prog_mgr app_mgr = app.Prog_mgr(); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java index 2d9a5b2dc..e36951b47 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.core.envs.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Pfunc_ifexist_mgr { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java index e8cf686c0..6a007cf8d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java @@ -24,7 +24,7 @@ public class Pfunc_urldecode extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { byte[] encoded = Eval_argx(ctx, src, caller, self); - byte[] decoded = Xoa_app_.Utl__encoder_mgr().Http_url().Decode(encoded); + byte[] decoded = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Decode(encoded); bfr.Add(decoded); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java index 6da703661..ac1490a69 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java @@ -118,7 +118,7 @@ class Pxd_itm_int_mhs_6 extends Pxd_itm_base implements Pxd_itm_int_interface { bldr.Seg_set(DateAdp_.SegIdx_second , Bry_.To_int_or(src, 4, 6, 0)); } } -class Pxd_itm_sorter implements gplx.lists.ComparerAble { +class Pxd_itm_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Pxd_itm lhs = (Pxd_itm)lhsObj; Pxd_itm rhs = (Pxd_itm)rhsObj; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java index 63e71e088..49603c6f2 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java @@ -47,10 +47,9 @@ public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b Tkn(src, sub, root, i, tmp_bfr); } byte[] unencoded = tmp_bfr.To_bry_and_clear(); - encoder.Encode(tmp_bfr, unencoded); + Gfo_url_encoder_.Id.Encode(tmp_bfr, unencoded); bfr.Add_bfr_and_clear(tmp_bfr); } - private static Url_encoder encoder = Url_encoder.new_html_id_(); private static void Tkn(byte[] src, Xop_tkn_itm sub, Xop_tkn_grp grp, int sub_idx, Bry_bfr tmp_bfr) { switch (sub.Tkn_tid()) { case Xop_tkn_itm_.Tid_lnke: Lnke(src, (Xop_lnke_tkn)sub, tmp_bfr); break; // FUTURE: need to move number to lnke_tkn so that number will be correct/consistent? diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java index d9a3ff5a1..a5dcbd763 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java index 35a3d0e57..786f66e41 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java @@ -22,7 +22,7 @@ public class Pfunc_urlencode extends Pf_func_base { // EX: {{urlencode:a b}} -> @Override public boolean Func_require_colon_arg() {return true;} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) { byte[] val_ary = Eval_argx(ctx, src, caller, self); if (val_ary == Bry_.Empty) return; - Xoa_app_.Utl__encoder_mgr().Http_url().Encode(urlEncodeBfr, val_ary); + gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Encode(urlEncodeBfr, val_ary); bb.Add_bfr_and_preserve(urlEncodeBfr); urlEncodeBfr.Clear(); } private Bry_bfr urlEncodeBfr = Bry_bfr.new_(128); 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 cf3b2fbcc..644c47ead 100644 --- a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.poems; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.core.brys.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Poem_nde implements Xox_xnde { private Xop_root_tkn xtn_root; diff --git a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java index 824ddd0cb..6c56406df 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java @@ -55,7 +55,7 @@ public class Sites_html_bldr extends gplx.core.brys.Bfr_arg_base { } } private static byte[] Xto_href(Bry_bfr tmp_bfr, Bry_fmtr url_fmtr, Xoh_href_parser href_parser, Xowe_wiki wiki, Xow_xwiki_itm xwiki_itm, byte[] ttl_page_db) { - Xoa_app_.Utl__encoder_mgr().Href().Encode(tmp_bfr, ttl_page_db); + gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(tmp_bfr, ttl_page_db); byte[] rv = url_fmtr.Fmt_(xwiki_itm.Url_fmt()).Bld_bry_many(tmp_bfr, tmp_bfr.To_bry_and_clear()); if (xwiki_itm.Domain_tid() != Xow_domain_tid_.Int__other) rv = Bry_.Add(Xoh_href_.Bry__site, rv); 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 ac3c258fd..e63a398d5 100644 --- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scores; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.files.*; import gplx.xowa.guis.views.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; @@ -60,7 +60,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Cur_page(); Score_xtn_mgr score_xtn = (Score_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Score_xtn_mgr.XTN_KEY); if (!score_xtn.Enabled()) {Html_write_code_as_pre(bfr, app); return;} - ProcessAdp ly_process = app.Prog_mgr().App_lilypond(); + Process_adp ly_process = app.Prog_mgr().App_lilypond(); if (ly_process.Exe_exists() == Bool_.__byte && ly_process.Exe_url() != null) { // TEST: ly_process.Exe_url() is null boolean exists = Io_mgr.Instance.ExistsFil(ly_process.Exe_url()); ly_process.Exe_exists_(exists ? Bool_.Y_byte : Bool_.N_byte); @@ -115,12 +115,12 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { Score_xtn_mgr score_xtn = (Score_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Score_xtn_mgr.XTN_KEY); Io_url ly_file = output_dir.GenSubFil(sha1_prefix + ".ly"); byte[] ly_text = null; - ProcessAdp ly_process = app.Prog_mgr().App_lilypond(); + Process_adp ly_process = app.Prog_mgr().App_lilypond(); if (Score_xtn_mgr.Lilypond_version == null) Score_xtn_mgr.Lilypond_version = Get_lilypond_version(ly_process); if (lang_is_abc) { Io_url abc_file = output_dir.GenSubFil(sha1_prefix + ".abc"); Io_mgr.Instance.SaveFilBry(abc_file, code); - ProcessAdp abc2ly_process = app.Prog_mgr().App_abc2ly(); + Process_adp abc2ly_process = app.Prog_mgr().App_abc2ly(); if (!abc2ly_process.Run(abc_file, ly_file).Exit_code_pass()) { fail_msg = abc2ly_process.Rslt_out(); app.Usr_dlg().Warn_many("", "", "abc2ly failed: ~{0}", fail_msg); @@ -143,7 +143,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { return; } if (output_ogg) { - ProcessAdp timidity_process = app.Prog_mgr().App_convert_midi_to_ogg(); + Process_adp timidity_process = app.Prog_mgr().App_convert_midi_to_ogg(); Io_url ogg_file = ly_file.GenNewExt(".ogg"); if (!timidity_process.Run(ly_file.GenNewExt(".midi"), ogg_file).Exit_code_pass()) { // NOTE: do not exit; timidity currently not working for windows fail_msg = timidity_process.Rslt_out(); @@ -170,9 +170,9 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { html_itm.Html_atr_set(html_id_pre, "textContent", fail_msg); } } - byte[] Get_lilypond_version(ProcessAdp lilypond_process) { + byte[] Get_lilypond_version(Process_adp lilypond_process) { try { - ProcessAdp lilypond_version_proc = new ProcessAdp().Exe_url_(lilypond_process.Exe_url()).Args_str_("--version").Prog_dlg_(lilypond_process.Prog_dlg()).Run_mode_(ProcessAdp.Run_mode_sync_block); + Process_adp lilypond_version_proc = new Process_adp().Exe_url_(lilypond_process.Exe_url()).Args_str_("--version").Prog_dlg_(lilypond_process.Prog_dlg()).Run_mode_(Process_adp.Run_mode_sync_block); lilypond_version_proc.Run(); return Get_lilypond_version(lilypond_version_proc.Rslt_out()); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java index 06a011a42..bc3be7dea 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.xtns.scribunto.libs.*; import gplx.xowa.xtns.scribunto.engines.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java index 75cdcd580..bb2ac5d2b 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.brys.fmtrs.*; +import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.langs.htmls.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java index 9d71f8fb5..f202b9203 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.engines.luaj; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; +import gplx.core.envs.*; import org.luaj.vm2.*; import org.luaj.vm2.lib.*; import org.luaj.vm2.lib.jse.*; import gplx.xowa.xtns.scribunto.engines.process.*; public class Luaj_server implements Scrib_server { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java index 88f76322a..ba6de92d5 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.core.errs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Scrib_lib_mw implements Scrib_lib { @@ -377,7 +377,7 @@ public class Scrib_lib_mw implements Scrib_lib { return rslt.Init_ary_empty(); } } -class Scrib_lib_mw_callParserFunction_sorter implements gplx.lists.ComparerAble { +class Scrib_lib_mw_callParserFunction_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { KeyVal lhs = (KeyVal)lhsObj; KeyVal rhs = (KeyVal)rhsObj; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java index 1dab17acf..08cb3fc9b 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java @@ -30,7 +30,7 @@ public class Scrib_lib_mw__invoke_tst { @Test public void GetAllExpandedArguments_ws_prm_key_missing() { // PURPOSE: do not trim val if key missing; parameterized value ("{{{1}}}") fxt.Init_tmpl("{{#invoke:Mod_0|Prc_0|{{{1}}}}}"); fxt.Init_page("{{test| a }}"); - fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getAllExpandedArguments, Object_.Ary("current"), "\n a"); // " a " -> " a" // tmpl.trim_end: always trim end; DATE:2015-11-07 + fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getAllExpandedArguments, Object_.Ary("current"), "\n a "); // " a " -> " a " } @Test public void GetAllExpandedArguments__ignore_empty_key() {// PURPOSE: ignore arguents that have an empty key (|=8|); EX:w:Fool's_mate; DATE:2014-03-05 fxt.Init_tmpl("{{#invoke:Mod_0|Prc_0}}"); @@ -45,7 +45,7 @@ public class Scrib_lib_mw__invoke_tst { } @Test public void GetExpandedArgument_ws_key_missing() { // PURPOSE: do not trim val if key missing; literal value fxt.Init_page("{{#invoke:Mod_0|Prc_0| a }}"); - fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1") , " a"); // " a " -> " a" // tmpl.trim_end: always trim end; DATE:2015-11-07 + fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1") , " a "); // " a " -> " a " } @Test public void GetExpandedArgument_ws_key_prm_key_exists() { // PURPOSE: trim val if key exists; parameterized value ("key={{{1}}}") fxt.Init_tmpl("{{#invoke:Mod_0|Prc_0|key1={{{1}}}}}"); @@ -55,7 +55,7 @@ public class Scrib_lib_mw__invoke_tst { @Test public void GetExpandedArgument_ws_key_prm_key_missing() { // PURPOSE: do not trim val if key missing; parameterized value ("{{{1}}}") fxt.Init_tmpl("{{#invoke:Mod_0|Prc_0|{{{1}}}}}"); fxt.Init_page("{{test| a }}"); - fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1") , " a"); // " a " -> " a" // tmpl.trim_end: always trim end; DATE:2015-11-07 + fxt.Test_lib_proc(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1") , " a "); // " a " -> " a " } @Test public void Preprocess() { this.Init_preprocess(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java index ca4d0f5a6..8fb13eb51 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java @@ -188,7 +188,7 @@ class Scrib_lib_text__json_util { Opt__force_assoc = 1 ; } -class KeyVal__sorter__key_is_numeric implements gplx.lists.ComparerAble { +class KeyVal__sorter__key_is_numeric implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { KeyVal lhs_itm = (KeyVal)lhsObj; KeyVal rhs_itm = (KeyVal)rhsObj; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java index fd736033a..434fb1f87 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java @@ -181,7 +181,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { Xoapi_toggle_mgr toggle_mgr = app.Api_root().Html().Page().Toggle_mgr(); Xoapi_wikibase wikibase_api = app.Api_root().Xtns().Wikibase(); hwtr_mgr = new Wdata_hwtr_mgr(); - hwtr_mgr.Init_by_ctor(wikibase_api, new Wdata_lbl_wkr_wiki(wikibase_api, this), Xoa_app_.Utl__encoder_mgr().Href(), toggle_mgr, app.Usere().Wiki().Xwiki_mgr()); + hwtr_mgr.Init_by_ctor(wikibase_api, new Wdata_lbl_wkr_wiki(wikibase_api, this), gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, toggle_mgr, app.Usere().Wiki().Xwiki_mgr()); this.Hwtr_msgs_make(); GfoEvMgr_.SubSame_many(app.Usere(), this, Xoue_user.Evt_lang_changed); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java index d7c79a6c8..4d8bdded6 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java @@ -72,7 +72,7 @@ public class Wdata_xwiki_link_wtr extends gplx.core.brys.Bfr_arg_base { } public static final byte[] Qid_null = Bry_.Empty; // NOTE: return Empty, not null else Bry_fmtr will fail } -class Xoa_ttl_sorter implements gplx.lists.ComparerAble { +class Xoa_ttl_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xoa_ttl lhs = (Xoa_ttl)lhsObj, rhs = (Xoa_ttl)rhsObj; return Bry_.Compare(lhs.Raw(), rhs.Raw()); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java index d8313b46b..32308639f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.apps.apis.xowa.xtns.*; -public class Wdata_lang_sorter implements GfoEvObj, gplx.lists.ComparerAble { +public class Wdata_lang_sorter implements GfoEvObj, gplx.core.lists.ComparerAble { private Hash_adp_bry hash = Hash_adp_bry.cs(); public Wdata_lang_sorter() {evMgr = GfoEvMgr.new_(this);} public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java index e165678e3..852186078 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java @@ -20,13 +20,13 @@ import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; class Wdata_fmtr__oview_tbl extends gplx.core.brys.Bfr_arg_base { - private Xoapi_wikibase wikibase_api; private Url_encoder href_encoder; + private Xoapi_wikibase wikibase_api; private Gfo_url_encoder href_encoder; private Wdata_fmtr__oview_alias_itm fmtr_aliases = new Wdata_fmtr__oview_alias_itm(); private Bry_fmtr slink_fmtr = Bry_fmtr.new_("~{page_text}", "domain_bry", "page_href", "page_text"); private Bry_bfr tmp_bfr = Bry_bfr.new_(255); private Wdata_doc wdoc; private byte[] hdr_alias_y, hdr_alias_n; - public void Init_by_ctor(Xoapi_wikibase wikibase_api, Url_encoder href_encoder) {this.wikibase_api = wikibase_api; this.href_encoder = href_encoder;} + public void Init_by_ctor(Xoapi_wikibase wikibase_api, Gfo_url_encoder href_encoder) {this.wikibase_api = wikibase_api; this.href_encoder = href_encoder;} public void Init_by_lang(byte[] lang_0, Wdata_hwtr_msgs msgs) { this.hdr_alias_y = msgs.Oview_alias_y(); this.hdr_alias_n = msgs.Oview_alias_n(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java index 8ef0a19b2..b076b8fa7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java @@ -22,7 +22,7 @@ import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; class Wdata_fmtr__slink_grp extends gplx.core.brys.Bfr_arg_base { private final Wdata_fmtr__slink_tbl fmtr_tbl = new Wdata_fmtr__slink_tbl(); private boolean is_empty; - public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { + public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { fmtr_tbl.Init_by_ctor(lang_sorter, toggle_mgr, lbl_regy, href_encoder, fmtr_toc, xwiki_mgr); } public void Init_by_lang(Wdata_hwtr_msgs msgs) {fmtr_tbl.Init_by_lang(msgs);} @@ -47,7 +47,7 @@ class Wdata_fmtr__slink_tbl extends gplx.core.brys.Bfr_arg_base { private final Wdata_fmtr__slink_row fmtr_row = new Wdata_fmtr__slink_row(); private final Wdata_slink_grp[] grps = new Wdata_slink_grp[Wdata_slink_grp.Idx__len]; private Wdata_lang_sorter lang_sorter; private Wdata_hwtr_msgs msgs; - public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { + public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { this.lang_sorter = lang_sorter; fmtr_row.Init_by_ctor(lbl_regy, href_encoder, xwiki_mgr); for (int i = 0; i < Wdata_slink_grp.Idx__len; ++i) { @@ -101,8 +101,8 @@ class Wdata_fmtr__slink_tbl extends gplx.core.brys.Bfr_arg_base { } class Wdata_fmtr__slink_row extends gplx.core.brys.Bfr_arg_base { private final Wdata_fmtr__slink_badges fmtr_badges = new Wdata_fmtr__slink_badges(); private Xow_xwiki_mgr xwiki_mgr; - private Url_encoder href_encoder; private Ordered_hash list; - public void Init_by_ctor(Wdata_lbl_mgr lbl_regy, Url_encoder href_encoder, Xow_xwiki_mgr xwiki_mgr) { + private Gfo_url_encoder href_encoder; private Ordered_hash list; + public void Init_by_ctor(Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Xow_xwiki_mgr xwiki_mgr) { this.href_encoder = href_encoder; this.xwiki_mgr = xwiki_mgr; fmtr_badges.Init_by_ctor(lbl_regy); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java index 81a817d06..736363e6d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java @@ -62,10 +62,10 @@ class Wdata_fmtr__toc_itm extends gplx.core.brys.Bfr_arg_base { } class Wdata_toc_data { private final Wdata_fmtr__toc_div fmtr_toc; - private final Url_encoder href_encoder; + private final Gfo_url_encoder href_encoder; private final Bry_fmtr text_fmtr = Bry_fmtr.new_("~{orig} (~{len})", "orig", "len"); private final Bry_bfr tmp_bfr = Bry_bfr.new_(8); - public Wdata_toc_data(Wdata_fmtr__toc_div fmtr_toc, Url_encoder href_encoder) {this.fmtr_toc = fmtr_toc; this.href_encoder = href_encoder;} + public Wdata_toc_data(Wdata_fmtr__toc_div fmtr_toc, Gfo_url_encoder href_encoder) {this.fmtr_toc = fmtr_toc; this.href_encoder = href_encoder;} public Wdata_toc_data Make(int itms_len) { this.text = itms_len_enable ? text_fmtr.Bld_bry_many(tmp_bfr, orig, itms_len) : orig; this.href = href_encoder.Encode(orig); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java index 677ed83e5..1ab1bd7f9 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java @@ -33,7 +33,7 @@ public class Wdata_hwtr_mgr { public Bry_fmtr Fmtr_main() {return fmtr_main;} private final Bry_fmtr fmtr_main = Bry_fmtr.new_("~{oview}~{toc}~{claims}~{links}~{labels}~{descriptions}~{aliases}~{json}", "oview", "toc", "claims", "links", "labels", "descriptions", "aliases", "json"); public Wdata_hwtr_msgs Msgs() {return msgs;} private Wdata_hwtr_msgs msgs; @gplx.Internal protected Wdata_lbl_mgr Lbl_mgr() {return lbl_mgr;} private final Wdata_lbl_mgr lbl_mgr = new Wdata_lbl_mgr(); - public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_lbl_wkr lbl_wkr, Url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) { + public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_lbl_wkr lbl_wkr, Gfo_url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) { lbl_mgr.Wkr_(lbl_wkr); fmtr_oview.Init_by_ctor(wikibase_api, href_encoder); fmtr_claim.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), toggle_mgr, lbl_mgr); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java index 3f2b4ff36..3d7efb4bc 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java @@ -290,7 +290,7 @@ class Wdata_hwtr_mgr_fxt { Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); wdata_fxt.Init(); toggle_mgr.Ctor_by_app(wdata_fxt.App()); // must init, else null error - doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Url_encoder.new_html_href_mw_(), toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki())); + doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Gfo_url_encoder_.Href, toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki())); doc_hwtr.Init_by_lang(msgs); } resolved_ttls.Clear(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java index cdd411b56..50ee6d9fb 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java @@ -16,8 +16,7 @@ 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.*; -import gplx.core.ios.*; -import gplx.core.criterias.*; +import gplx.core.ios.*; import gplx.core.criterias.*; import gplx.core.envs.*; class Io_stream_rdr_mgr { public static Io_stream_rdr Get_rdr_or_null(Io_url src_fil, Io_url src_dir, Io_stream_unzip_mgr unzip_mgr, String... filter_ary) { IoItmFil src_itm = null; @@ -60,8 +59,8 @@ class Io_stream_rdr_mgr { } class Io_stream_unzip_mgr { private final String[] zip_exts; - private final boolean stdout_enabled; private final ProcessAdp stdout_process; - public Io_stream_unzip_mgr(boolean stdout_enabled, ProcessAdp stdout_process, String[] zip_exts) { + private final boolean stdout_enabled; private final Process_adp stdout_process; + public Io_stream_unzip_mgr(boolean stdout_enabled, Process_adp stdout_process, String[] zip_exts) { this.stdout_enabled = stdout_enabled; this.stdout_process = stdout_process; this.zip_exts = zip_exts; } public boolean Handles(Io_url url) {return String_.In(url.Ext(), zip_exts);} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java index 7ee66b991..62eddf16b 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java @@ -16,6 +16,7 @@ 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.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +import gplx.core.envs.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java index c5370484b..5526e0fd5 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java @@ -56,7 +56,7 @@ public class Wdata_itemByTitle_page implements Xows_page { page.Html_data().Html_restricted_n_(); // [[Special:]] pages allow all HTML } private static boolean Navigate(Gfo_usr_dlg usr_dlg, Xoae_app app, Wdata_wiki_mgr wdata_mgr, Xoae_page page, byte[] site_bry, byte[] page_bry) { - page_bry = Xoa_app_.Utl__encoder_mgr().Http_url().Decode(page_bry); // NOTE: space is converted to + on postback to url; decode + page_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Decode(page_bry); // NOTE: space is converted to + on postback to url; decode byte[] wiki_domain = Xow_abrv_wm_.Parse_to_domain_bry(site_bry); if (wiki_domain == null) {usr_dlg.Warn_many("", "", "site_bry parse failed; site_bry:~{0}", String_.new_u8(site_bry)); return false;} Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(wiki_domain); if (wiki == null) {usr_dlg.Warn_many("", "", "wiki_domain does not exist; wiki_domain:~{0}", String_.new_u8(wiki_domain)); return false;} Xoa_ttl wdata_ttl = Xoa_ttl.parse(wiki, page_bry); if (wdata_ttl == null) {usr_dlg.Warn_many("", "", "ttl is invalid; ttl:~{0}", String_.new_u8(page_bry)); return false;} diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa index b1a596554754d4030687cec4c9eecdeece488871..d44fa62bc2ac1199acbffefdbb152ebd0fafb1f6 100644 GIT binary patch delta 302 zcmZozz|^pSX~R)jmBeIIi$p`SBwfQKV*_0iQ;QT`O9R7HU5gacw3OsTb0Y)8#K|vZ zcQcwyUMhD{#T3XjHZ@DtH8V&t*ELB@GuBN?O$6#TF-$QtG`BQ0vrOGQOJ0tTID_x# z?gtt?NAH?8F$S|rv8qb*GfrM0FS2=~zP12SuG!?UPG85!$jHFN(8!RB`M(kqHv^+M khbAK<2L~gcb4hwUP|ncQ&=96(@~wOs4j5#BXa`-vqYmblgTe- zcQYDKUMhD{#mL;$!oncgKsPDTB2m}G*uq5DBGoKS*TU4uEXg<}&CtR;aq}#BIX>bH zzN5PzXz(1pYudyZ%qqpID$UP0d4ash=8gK=0z|oHlfycF9Ya$i14DBoOD^XBN=)1g mjN%-cjEo!{jC{@|>G4KDIa5PJn3~DA@?|(+oX!98nG^u^cTa5q