From b990ec409fa4d68edf94cb701d97afe36de20633 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 1 Nov 2015 20:50:05 -0500 Subject: [PATCH] v2.11.1.1 --- 100_core/.classpath | 6 - 100_core/src/gplx/Err_.java | 8 +- 100_core/{src_200_io => src}/gplx/Io_mgr.java | 4 +- .../{src_200_io => src}/gplx/Io_mgr__tst.java | 0 100_core/{src_800_tst => src}/gplx/Tfds.java | 2 +- .../gplx/TfdsEqListItmStr.java | 0 .../src/gplx/core/btries/Btrie_slim_mgr.java | 1 + .../src/gplx/core/btries/Btrie_u8_itm.java | 2 +- .../src/gplx/core/criterias/Criteria_.java | 2 +- .../core/criterias/Criteria_ioItm_tst.java | 2 +- .../gplx/core/criterias/Criteria_ioMatch.java | 2 +- .../gplx/core/criterias/Criteria_like.java | 2 +- 100_core/src/gplx/core/encoders/Base85_.java | 65 +++++ .../src/gplx/core/encoders/Base85__tst.java | 61 +++++ 100_core/src/gplx/core/intls/Utf16_.java | 2 +- .../gplx => src/gplx/core}/ios/IoEngine.java | 2 +- .../gplx/core}/ios/IoEnginePool.java | 2 +- .../gplx => src/gplx/core}/ios/IoEngine_.java | 2 +- .../gplx/core}/ios/IoEngine_base.java | 2 +- .../gplx/core}/ios/IoEngine_memory.java | 2 +- .../gplx/core}/ios/IoEngine_system.java | 8 +- .../core}/ios/IoEngine_xrg_deleteDir.java | 2 +- .../core}/ios/IoEngine_xrg_deleteFil.java | 2 +- .../core}/ios/IoEngine_xrg_downloadFil.java | 2 +- .../ios/IoEngine_xrg_fil_affects1_base.java | 2 +- .../core}/ios/IoEngine_xrg_loadFilStr.java | 4 +- .../gplx/core}/ios/IoEngine_xrg_openRead.java | 2 +- .../core}/ios/IoEngine_xrg_openWrite.java | 2 +- .../gplx/core}/ios/IoEngine_xrg_queryDir.java | 2 +- .../core}/ios/IoEngine_xrg_recycleFil.java | 2 +- .../core}/ios/IoEngine_xrg_saveFilStr.java | 4 +- .../gplx/core}/ios/IoEngine_xrg_xferDir.java | 2 +- .../gplx/core}/ios/IoEngine_xrg_xferFil.java | 2 +- .../gplx => src/gplx/core}/ios/IoErr.java | 4 +- .../gplx/core}/ios/IoItmAttrib.java | 2 +- .../gplx/core}/ios/IoItmClassXtn.java | 2 +- .../gplx => src/gplx/core}/ios/IoItmDir.java | 2 +- .../gplx => src/gplx/core}/ios/IoItmDir_.java | 2 +- .../gplx => src/gplx/core}/ios/IoItmFil.java | 2 +- .../gplx => src/gplx/core}/ios/IoItmFil_.java | 2 +- .../gplx/core}/ios/IoItmFil_mem.java | 4 +- .../gplx => src/gplx/core}/ios/IoItmHash.java | 2 +- .../gplx => src/gplx/core}/ios/IoItmList.java | 2 +- .../gplx/core}/ios/IoItm_base.java | 2 +- .../gplx/core}/ios/IoItm_base_.java | 2 +- .../gplx/core}/ios/IoRecycleBin.java | 2 +- .../gplx => src/gplx/core}/ios/IoStream.java | 2 +- .../gplx => src/gplx/core}/ios/IoStream_.java | 2 +- .../gplx/core}/ios/IoStream_mem.java | 4 +- .../gplx/core}/ios/IoStream_mem_tst.java | 2 +- .../gplx/core}/ios/IoStream_mock.java | 2 +- .../gplx/core}/ios/IoStream_mock_tst.java | 2 +- .../gplx/core}/ios/IoStream_stream_rdr.java | 2 +- .../gplx => src/gplx/core}/ios/IoUrlInfo.java | 2 +- .../gplx/core}/ios/IoUrlInfoRegy.java | 2 +- .../gplx/core}/ios/IoUrlInfo_.java | 2 +- .../gplx/core}/ios/IoUrlTypeRegy.java | 2 +- .../gplx => src/gplx/core}/ios/IoZipWkr.java | 4 +- .../gplx/core}/ios/IoZipWkr_tst.java | 2 +- .../gplx/core}/ios/Io_download_fmt.java | 2 +- .../gplx/core}/ios/Io_download_fmt_tst.java | 2 +- .../gplx => src/gplx/core}/ios/Io_fil.java | 2 +- .../gplx/core}/ios/Io_fil_mkr.java | 2 +- .../gplx => src/gplx/core}/ios/Io_size_.java | 4 +- .../gplx/core}/ios/Io_size__tst.java | 2 +- .../gplx/core}/ios/Io_stream_.java | 2 +- .../gplx/core}/ios/Io_stream_rdr.java | 2 +- .../gplx/core}/ios/Io_stream_rdr_.java | 24 +- .../gplx/core}/ios/Io_stream_rdr_tst.java | 2 +- .../gplx/core}/ios/Io_stream_wtr.java | 2 +- .../gplx/core}/ios/Io_stream_wtr_.java | 20 +- .../gplx/core}/ios/Io_url_obj_ref.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_data.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_grp.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_grp_.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_itm.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_itm_.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_log.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_obj.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_root.java | 2 +- .../gplx/core/log_msgs}/Gfo_msg_root_tst.java | 2 +- .../gplx/core}/security/HashAlgo.java | 4 +- .../gplx/core}/security/HashAlgo_.java | 10 +- .../gplx/core}/security/HashAlgo_md5_tst.java | 4 +- .../core}/security/HashAlgo_sha1_tst.java | 4 +- .../gplx/core}/security/HashAlgo_tth192.java | 6 +- .../security/HashAlgo_tth192_tree_tst.java | 2 +- .../core}/security/HashAlgo_tth192_tst.java | 4 +- .../gplx/core}/security/HashDlgWtr_tst.java | 4 +- .../gplx/core/tests}/PerfLogMgr_fxt.java | 2 +- .../gplx/core}/texts/Base32Converter.java | 2 +- .../gplx/core}/texts/Base64Converter.java | 2 +- .../gplx/core}/texts/BaseXXConverter_tst.java | 2 +- .../gplx/core}/texts/CharStream.java | 2 +- .../gplx/core}/texts/CharStream_tst.java | 2 +- .../gplx/core}/texts/HexDecUtl.java | 2 +- .../gplx/core}/texts/HexDecUtl_tst.java | 2 +- .../core}/texts/RegxPatn_cls_ioMatch.java | 2 +- .../core}/texts/RegxPatn_cls_ioMatch_.java | 2 +- .../core}/texts/RegxPatn_cls_ioMatch_tst.java | 2 +- .../gplx/core}/texts/RegxPatn_cls_like.java | 2 +- .../gplx/core}/texts/RegxPatn_cls_like_.java | 2 +- .../core}/texts/RegxPatn_cls_like_tst.java | 2 +- .../gplx/core}/texts/StringTableBldr.java | 2 +- .../gplx/core}/texts/StringTableBldr_tst.java | 2 +- .../gplx/core}/texts/StringTableCol.java | 2 +- .../gplx/core}/texts/StringTableColAlign.java | 2 +- .../gplx/langs}/dsvs/DsvDataRdrOpts.java | 2 +- .../gplx/langs}/dsvs/DsvDataRdr_.java | 6 +- .../langs}/dsvs/DsvDataRdr_csv_dat_tst.java | 2 +- .../langs}/dsvs/DsvDataRdr_dsv_dat_tst.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 +- .../gplx/langs}/dsvs/DsvDataWtr.java | 2 +- .../gplx/langs}/dsvs/DsvDataWtr_.java | 2 +- .../gplx/langs}/dsvs/DsvDataWtr_csv_tst.java | 2 +- .../gplx/langs}/dsvs/DsvDataWtr_tbls_tst.java | 2 +- .../gplx/langs}/dsvs/DsvHeaderList.java | 2 +- .../gplx/langs}/dsvs/DsvStoreLayout.java | 2 +- .../gplx/langs}/dsvs/DsvSymbols.java | 2 +- .../gplx/langs/xmls}/HierStrBldr.java | 2 +- .../gplx/langs/xmls}/HierStrBldr_tst.java | 4 +- .../gplx => src/gplx/langs}/xmls/XmlAtr.java | 2 +- .../gplx/langs}/xmls/XmlAtrList.java | 2 +- .../gplx => src/gplx/langs}/xmls/XmlDoc.java | 2 +- .../gplx => src/gplx/langs}/xmls/XmlDoc_.java | 2 +- .../gplx/langs}/xmls/XmlDoc_tst.java | 2 +- .../gplx/langs}/xmls/XmlFileSplitter.java | 6 +- .../gplx/langs}/xmls/XmlFileSplitterOpts.java | 2 +- .../gplx/langs}/xmls/XmlFileSplitter_tst.java | 4 +- .../gplx => src/gplx/langs}/xmls/XmlNde.java | 2 +- .../gplx/langs}/xmls/XmlNdeList.java | 2 +- .../gplx/langs}/xmls/XmlSplitRdr.java | 4 +- .../gplx/langs}/xmls/XmlSplitWtr.java | 4 +- .../gplx => src/gplx/langs}/xmls/Xpath_.java | 2 +- .../gplx/langs}/xmls/Xpath__tst.java | 2 +- .../gplx/Byte_ascii.java | 7 +- .../src_120_basicDataType/gplx/Io_url.java | 2 +- .../src_120_basicDataType/gplx/Io_url_.java | 2 +- .../src_120_basicDataType/gplx/KeyVal_.java | 8 +- .../gplx/TimeSpanAdp_.java | 4 +- 100_core/src_130_brys/gplx/Bry_.java | 48 ++-- 100_core/src_130_brys/gplx/Bry__tst.java | 2 +- 100_core/src_130_brys/gplx/Bry_bfr.java | 26 +- 100_core/src_130_brys/gplx/Bry_bfr_tst.java | 20 +- 100_core/src_130_brys/gplx/Bry_find__tst.java | 2 +- 100_core/src_130_brys/gplx/Bry_fmtr.java | 6 +- .../brys => src_130_brys/gplx}/Bry_rdr.java | 22 +- 100_core/src_130_brys/gplx/Bry_split_.java | 2 +- 100_core/src_140_list/gplx/Hash_adp_bry.java | 4 + 100_core/src_330_store/gplx/DataRdr.java | 2 +- 100_core/src_330_store/gplx/DataRdr_.java | 2 +- .../gplx/stores/DataRdr_base.java | 2 +- .../gplx/stores/xmls/XmlDataRdr.java | 2 +- 100_core/src_400_gfs/gplx/GfsLibIni_core.java | 4 +- 100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java | 4 +- 100_core/src_900_xml/gplx/Base85_utl.java | 66 ----- 100_core/src_900_xml/gplx/Base85_utl_tst.java | 56 ---- .../tst/gplx/{ => core}/ios/IoEngineFxt.java | 2 +- .../ios/IoEngine_dir_basic_base.java | 4 +- .../ios/IoEngine_dir_basic_memory_tst.java | 2 +- .../ios/IoEngine_dir_basic_system_tst.java | 2 +- .../ios/IoEngine_dir_deep_base.java | 2 +- .../ios/IoEngine_dir_deep_memory_tst.java | 2 +- .../ios/IoEngine_dir_deep_system_tst.java | 2 +- .../ios/IoEngine_fil_basic_base.java | 4 +- .../ios/IoEngine_fil_basic_memory_tst.java | 2 +- .../ios/IoEngine_fil_basic_system_tst.java | 2 +- .../ios/IoEngine_fil_xfer_base.java | 2 +- .../ios/IoEngine_fil_xfer_memory_tst.java | 2 +- .../ios/IoEngine_fil_xfer_system_tst.java | 2 +- .../ios/IoEngine_stream_xfer_tst.java | 2 +- .../ios/IoEngine_xrg_queryDir_tst.java | 2 +- .../ios/IoEngine_xrg_recycleFil_tst.java | 2 +- .../ios/IoItmDir_FetchDeepOrNull_tst.java | 2 +- .../tst/gplx/{ => core}/ios/IoItm_fxt.java | 2 +- .../{ => core}/ios/IoUrlInfo_alias_tst.java | 2 +- .../gplx/{ => core}/ios/IoUrl_lnx_tst.java | 2 +- .../gplx/{ => core}/ios/IoUrl_map_tst.java | 2 +- .../gplx/{ => core}/ios/IoUrl_wnt_tst.java | 2 +- 110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java | 2 +- 110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java | 2 +- 110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java | 2 +- .../src_500_build/gplx/gfml/GfmlBldr.java | 2 +- 110_gfml/tst/gplx/gfml/z012_GfmlTrie_tst.java | 2 +- .../tst/gplx/gfml/z091_GfmlLxr_basic_tst.java | 2 +- 110_gfml/tst/gplx/gfml/z901_perf_tst.java | 4 +- 140_dbs/src/gplx/dbs/Db_stmt.java | 2 +- .../gplx/dbs/engines/mems/Db_stmt__mem.java | 4 +- .../dbs/engines/tdbs/TdbDbLoadMgr_tst.java | 2 +- .../dbs/engines/tdbs/TdbDbSaveMgr_tst.java | 2 +- .../gplx/dbs/engines/tdbs/TdbFileList.java | 2 +- .../gplx/dbs/engines/tdbs/TdbFlush_tst.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbStores.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbTable.java | 2 +- .../gplx/dbs/engines/tdbs/TdbTableList.java | 2 +- 140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java | 6 +- 140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java | 2 +- 140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java | 6 +- .../gplx/dbs/sqls/Sql_qry_wtr_iosql_tst.java | 2 +- 140_dbs/src/gplx/stores/Db_data_rdr.java | 6 +- .../src_110_draw_core/gplx/gfui/ColorAdp.java | 2 +- .../gplx/gfui/ColorAdp_.java | 2 +- .../src_400_win/gplx/gfui/GfoConsoleWin.java | 2 +- 150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java | 2 +- 150_gfui/tst/gplx/gfui/ImageAdp_tst.java | 4 +- 400_xowa/src/gplx/core/brys/Bry_parser.java | 130 ++++++++++ 400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java | 5 +- .../src/gplx/core/flds/Gfo_fld_rdr_tst.java | 2 +- 400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java | 6 +- .../ios/BinaryHeap_Io_line_rdr.java | 2 +- .../ios/BinaryHeap_Io_line_rdr_tst.java | 2 +- .../gplx/{ => core}/ios/Io_buffer_rdr.java | 6 +- .../{ => core}/ios/Io_buffer_rdr_tst.java | 4 +- .../src/gplx/{ => core}/ios/Io_fil_chkr.java | 6 +- .../src/gplx/{ => core}/ios/Io_line_rdr.java | 6 +- .../{ => core}/ios/Io_line_rdr_key_gen.java | 2 +- .../{ => core}/ios/Io_line_rdr_key_gen_.java | 2 +- .../gplx/{ => core}/ios/Io_line_rdr_tst.java | 2 +- .../src/gplx/{ => core}/ios/Io_make_cmd.java | 2 +- 400_xowa/src/gplx/{ => core}/ios/Io_sort.java | 2 +- .../src/gplx/{ => core}/ios/Io_sort_cmd.java | 2 +- .../gplx/{ => core}/ios/Io_sort_filCmd.java | 2 +- .../{ => core}/ios/Io_sort_fil_basic.java | 2 +- .../gplx/{ => core}/ios/Io_sort_misc_tst.java | 2 +- .../{ => core}/ios/Io_sort_split_itm.java | 2 +- .../ios/Io_sort_split_itm_sorter.java | 2 +- .../src/gplx/{ => core}/ios/Io_sort_tst.java | 2 +- .../{ => core}/ios/Io_stream_rdr_process.java | 2 +- .../{ => core}/ios/Io_stream_zip_mgr.java | 4 +- .../src/gplx/{ => core}/ios/Io_url_gen.java | 2 +- .../src/gplx/{ => core}/ios/Io_url_gen_.java | 2 +- .../src/gplx/{ => core}/ios/Io_zip_mgr.java | 2 +- .../gplx/{ => core}/ios/Io_zip_mgr_base.java | 2 +- .../gplx/{ => core}/ios/Io_zip_mgr_mok.java | 2 +- .../gplx/{ => core}/ios/Io_zip_mgr_tst.java | 2 +- .../gplx/core/net/Gfo_inet_conn__http.java | 2 +- .../src/gplx/core/net/Gfo_url_parser.java | 4 +- .../src/gplx/core/net/Http_client_wtr.java | 2 +- .../core/net/Http_client_wtr__stream.java | 2 +- .../core/threads/Gfo_thread_cmd_download.java | 2 +- .../core/threads/Gfo_thread_cmd_unzip.java | 2 +- .../threads/poolables/Gfo_poolable_mgr.java | 80 ++---- .../poolables/Gfo_poolable_mgr_tst.java | 47 +++- 400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java | 2 +- 400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java | 2 +- 400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java | 4 +- 400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java | 2 +- 400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java | 4 +- 400_xowa/src/gplx/langs/gfs/Gfs_lxr.java | 8 +- .../src/gplx/langs/gfs/Gfs_parser_ctx.java | 6 +- 400_xowa/src/gplx/langs/htmls/Html_atr_.java | 13 +- .../src/gplx/langs/htmls/Html_parser_tst.java | 8 +- 400_xowa/src/gplx/langs/htmls/Html_tag_.java | 28 ++ .../gplx/langs/htmls/parsers/Html_atr.java | 35 +++ .../langs/htmls/parsers/Html_doc_parser.java | 60 +++++ .../langs/htmls/parsers/Html_doc_wkr.java | 18 +- .../gplx/langs/htmls/parsers/Html_tag.java | 96 +++++++ .../langs/htmls/parsers/Html_tag_rdr.java | 195 ++++++++++++++ .../langs/htmls/parsers/Html_tag_rdr_tst.java | 68 +++++ .../langs/htmls/parsers/Html_txt_wkr.java | 22 ++ .../src/gplx/langs/jsons/Json_itm_str.java | 2 +- .../src/gplx/langs/jsons/Json_itm_tmp.java | 2 +- .../src/gplx/langs/phps/Php_evaluator.java | 1 + 400_xowa/src/gplx/langs/phps/Php_lxr.java | 6 +- 400_xowa/src/gplx/langs/phps/Php_parser.java | 2 +- .../src/gplx/langs/phps/Php_parser_tst.java | 2 +- 400_xowa/src/gplx/langs/phps/Php_srl_itm.java | 2 +- .../src/gplx/langs/phps/Php_srl_parser.java | 2 +- 400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java | 1 + 400_xowa/src/gplx/xowa/Xoa_app.java | 4 +- 400_xowa/src/gplx/xowa/Xoa_app_.java | 6 +- 400_xowa/src/gplx/xowa/Xoa_app_fxt.java | 27 +- 400_xowa/src/gplx/xowa/Xoa_test_.java | 5 + 400_xowa/src/gplx/xowa/Xoa_ttl.java | 8 +- 400_xowa/src/gplx/xowa/Xoa_url.java | 4 +- 400_xowa/src/gplx/xowa/Xoae_app.java | 4 +- 400_xowa/src/gplx/xowa/Xoae_page.java | 4 +- 400_xowa/src/gplx/xowa/Xop_fxt.java | 20 +- 400_xowa/src/gplx/xowa/Xow_wiki.java | 5 +- 400_xowa/src/gplx/xowa/Xowe_wiki.java | 21 +- 400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java | 2 +- 400_xowa/src/gplx/xowa/apps/Xoav_app.java | 6 +- .../src/gplx/xowa/apps/Xoav_wiki_mgr.java | 1 + .../gplx/xowa/apps/apis/xowa/Xoapi_net.java | 2 +- .../dansguardians/Xoapi_dansguardian.java | 2 +- .../apis/xowa/bldrs/imports/Xoapi_import.java | 8 +- .../xowa/apps/apis/xowa/html/Xoapi_tidy.java | 2 +- .../xowa/apps/apis/xowa/usrs/Xoapi_cache.java | 2 +- .../gplx/xowa/apps/cfgs/Xowc_xtn_pages.java | 5 +- .../xowa/apps/cfgs/Xowc_xtn_pages_tst.java | 7 + .../gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java | 2 +- .../src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java | 4 +- .../src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java | 4 +- .../apps/servers/http/Http_server_wkr_v2.java | 2 +- .../xowa/apps/servers/tcp/Socket_rdr.java | 2 +- .../xowa/apps/servers/tcp/Xosrv_msg_rdr.java | 4 +- .../apps/servers/tcp/Xosrv_msg_rdr_tst.java | 2 +- .../xowa/apps/servers/tcp/Xosrv_server.java | 2 +- .../apps/servers/tcp/Xosrv_server_tst.java | 2 +- .../apps/servers/tcp/Xosrv_socket_rdr.java | 2 +- .../xowa/apps/urls/Xoa_url__to_str__tst.java | 2 +- .../gplx/xowa/apps/urls/Xoa_url_parser.java | 2 +- .../apps/urls/Xoa_url_parser__xwiki_tst.java | 4 +- .../gplx/xowa/apps/urls/Xoav_url_parser.java | 2 +- .../src/gplx/xowa/bldrs/Xob_base_fxt.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java | 6 +- 400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java | 8 +- .../src/gplx/xowa/bldrs/Xobdc_merger.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java | 4 +- .../bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java | 8 +- .../xowa/bldrs/cmds/Xob_dump_mgr_base.java | 4 +- .../cmds/ctgs/Xob_category_registry_sql.java | 2 +- .../ctgs/Xob_category_registry_sql_tst.java | 4 +- .../cmds/ctgs/Xob_categorylinks_base.java | 4 +- .../cmds/ctgs/Xob_categorylinks_sql.java | 2 +- .../cmds/ctgs/Xob_categorylinks_sql_make.java | 4 +- .../cmds/ctgs/Xob_categorylinks_sql_tst.java | 2 +- .../cmds/ctgs/Xob_categorylinks_txt.java | 2 +- .../xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java | 2 +- .../bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java | 2 +- .../xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java | 4 +- .../xowa/bldrs/cmds/ctgs/Xob_ctg_v1_txt.java | 2 +- .../bldrs/cmds/ctgs/Xob_sql_join_mgr.java | 2 +- .../ctgs/Xoctg_hiddencat_parser_base.java | 2 +- .../cmds/ctgs/Xoctg_hiddencat_parser_txt.java | 2 +- .../cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java | 4 +- .../bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java | 2 +- .../xowa/bldrs/cmds/files/Xob_bin_db_mgr.java | 2 +- .../bldrs/cmds/files/Xob_fsdb_make_cmd.java | 2 +- .../bldrs/cmds/files/Xob_lnki_temp_wkr.java | 44 +--- .../bldrs/cmds/files/Xob_lnki_temp_wkr_.java | 53 ++++ .../bldrs/cmds/files/Xob_orig_regy_tbl.java | 2 +- .../xowa/bldrs/cmds/texts/Xob_init_base.java | 11 +- .../bldrs/cmds/texts/Xob_search_base.java | 2 +- .../bldrs/cmds/texts/sqls/Xob_page_cmd.java | 2 +- .../cmds/texts/sqls/Xob_search_sql_wkr.java | 6 +- .../bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java | 2 +- .../cmds/texts/tdbs/Xob_calc_stats_cmd.java | 4 +- .../cmds/texts/tdbs/Xob_make_cmd_site.java | 2 +- .../cmds/texts/tdbs/Xob_make_id_wkr.java | 2 +- .../bldrs/cmds/texts/tdbs/Xob_page_txt.java | 6 +- .../tdbs/Xob_parse_dump_templates_cmd.java | 2 +- .../bldrs/cmds/texts/tdbs/Xob_search_tdb.java | 2 +- .../xowa/bldrs/cmds/texts/tdbs/Xob_tst.java | 4 +- .../cmds/texts/xmls/Xob_siteinfo_nde.java | 49 ++++ .../cmds/texts/xmls/Xob_siteinfo_parser_.java | 80 ++++++ .../texts/xmls/Xob_siteinfo_parser__tst.java | 110 ++++++++ .../cmds/utils/Xob_decompress_bz2_cmd.java | 4 +- .../bldrs/cmds/utils/Xob_deploy_zip_cmd.java | 2 +- .../bldrs/cmds/utils/Xob_download_wkr.java | 2 +- .../xowa/bldrs/cmds/utils/Xob_unzip_wkr.java | 6 +- .../xowa/bldrs/cmds/wikis/Xob_image_cmd.java | 2 +- .../bldrs/cmds/wikis/Xob_image_cmd_tst.java | 2 +- .../xowa/bldrs/css/Xoa_css_extractor.java | 14 +- .../css/Xoa_css_extractor_basic_tst.java | 2 +- .../bldrs/css/Xoa_css_extractor_wiki_tst.java | 2 +- .../bldrs/css/Xoa_css_img_downloader.java | 16 +- .../xowa/bldrs/css/Xob_css_parser__url.java | 2 +- .../gplx/xowa/bldrs/css/Xob_mirror_mgr.java | 2 +- .../filters/dansguardians/Dg_parser_tst.java | 4 +- .../Xoi_cmd_imageMagick_download.java | 6 +- .../xowa/bldrs/installs/Xoi_cmd_wiki_tst.java | 10 +- .../xowa/bldrs/installs/Xoi_dump_mgr.java | 4 +- .../bldrs/installs/Xoi_mirror_parser.java | 4 +- .../bldrs/installs/Xow_cfg_wiki_core_tst.java | 2 +- .../setups/addons/Xoi_firefox_installer.java | 2 +- .../addons/Xoi_firefox_installer_tst.java | 2 +- .../setups/maints/Wmf_dump_list_parser.java | 20 +- .../maints/Wmf_dump_list_parser_tst.java | 2 +- .../setups/maints/Wmf_latest_parser.java | 2 +- .../setups/maints/Wmf_latest_parser_tst.java | 2 +- .../bldrs/setups/maints/Xoa_maint_mgr.java | 2 +- .../setups/upgrades/Upgrader_v00_02_01.java | 2 +- .../gplx/xowa/bldrs/sqls/Sql_file_parser.java | 8 +- .../xowa/bldrs/sqls/Sql_file_parser_tst.java | 2 +- .../src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java | 14 +- .../gplx/xowa/bldrs/syncs/Xob_sync_itm.java | 2 +- .../bldrs/wiki_cfgs/Xob_subpage_parser.java | 1 + .../bldrs/wiki_cfgs/Xoi_wiki_props_alias.java | 2 +- .../bldrs/wiki_cfgs/Xoi_wiki_props_api.java | 10 +- .../wiki_cfgs/Xoi_wiki_props_api_tst.java | 6 +- .../bldrs/wiki_cfgs/Xoi_wiki_props_ns.java | 2 +- .../gplx/xowa/bldrs/wkrs/Xob_idx_base.java | 2 +- .../xowa/bldrs/wkrs/Xob_itm_dump_base.java | 8 +- .../xowa/bldrs/wkrs/Xob_sql_dump_base.java | 2 +- .../src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java | 2 +- .../xowa/bldrs/wms/apis/Xoapi_orig_base.java | 4 +- .../xowa/bldrs/wms/apis/Xoapi_orig_wmf.java | 8 +- .../xowa/bldrs/wms/dumps/Xowm_dump_file.java | 2 +- .../xowa/bldrs/wms/dumps/Xowm_dump_file_.java | 6 +- .../xowa/bldrs/wms/sites/Site_core_db.java | 2 +- .../src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java | 2 +- .../gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java | 2 +- .../xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java | 2 +- .../gplx/xowa/bldrs/xmls/Xob_import_cfg.java | 2 +- .../xowa/bldrs/xmls/Xob_siteinfo_parser.java | 89 ------- .../xowa/bldrs/xmls/Xob_xml_page_bldr.java | 6 +- .../gplx/xowa/bldrs/xmls/Xob_xml_parser.java | 4 +- .../xowa/bldrs/xmls/Xob_xml_parser_tst.java | 6 +- 400_xowa/src/gplx/xowa/drds/Xod_app.java | 31 +++ 400_xowa/src/gplx/xowa/drds/Xod_app_tst.java | 58 +++++ .../src/gplx/xowa/drds/Xod_img_loader.java | 12 +- .../src/gplx/xowa/drds/Xowd_data_tstr.java | 40 +++ .../gplx/xowa/drds/pages/Xod_page_itm.java | 90 +++++++ .../gplx/xowa/drds/pages/Xod_page_mgr.java | 45 ++++ .../src/gplx/xowa/files/Xof_bin_updater.java | 2 +- 400_xowa/src/gplx/xowa/files/Xof_ext_.java | 4 +- .../src/gplx/xowa/files/Xof_file_wkr.java | 10 +- .../src/gplx/xowa/files/Xof_file_wkr_.java | 2 +- .../src/gplx/xowa/files/Xof_fsdb_itm.java | 2 +- .../src/gplx/xowa/files/Xof_img_size.java | 2 +- .../src/gplx/xowa/files/Xof_url_bldr.java | 4 +- .../src/gplx/xowa/files/bins/Bin_fetcher.java | 2 +- .../gplx/xowa/files/bins/Io_download_mgr.java | 2 +- .../xowa/files/bins/Io_download_mgr_.java | 2 +- .../files/bins/Io_download_mgr__memory.java | 2 +- .../src/gplx/xowa/files/bins/Xof_bin_mgr.java | 2 +- .../xowa/files/bins/Xof_bin_skip_mgr.java | 2 +- .../src/gplx/xowa/files/bins/Xof_bin_wkr.java | 2 +- .../files/bins/Xof_bin_wkr__fsdb_sql.java | 2 +- .../files/bins/Xof_bin_wkr__fsys_base.java | 4 +- .../files/bins/Xof_bin_wkr__http_wmf.java | 2 +- .../bins/Xof_bin_wkr__http_wmf__tst.java | 2 +- .../gplx/xowa/files/caches/Xou_cache_mgr.java | 4 +- .../files/caches/Xou_file_itm_finder.java | 2 +- .../files/downloads/Xof_download_wkr.java | 2 +- .../files/downloads/Xof_download_wkr_io.java | 2 +- .../downloads/Xof_download_wkr_test.java | 2 +- .../gplx/xowa/files/exts/Xof_rule_itm.java | 4 +- .../xowa/files/fsdb/Xof_fsdb_mgr__sql.java | 2 +- .../files/fsdb/fs_roots/Fs_root_fsdb_mgr.java | 2 +- .../xowa/files/fsdb/tsts/Xof_file_fxt.java | 4 +- .../src/gplx/xowa/files/gui/Js_img_mgr.java | 2 +- .../files/origs/Xof_orig_wkr__wmf_api.java | 2 +- .../gplx/xowa/files/xfers/Xof_xfer_mgr.java | 6 +- .../files/xfers/Xof_xfer_queue_base_fxt.java | 2 +- .../xfers/Xof_xfer_queue_html_basic_tst.java | 2 +- .../files/xfers/Xof_xfer_queue_html_fxt.java | 2 +- 400_xowa/src/gplx/xowa/guis/Xog_page.java | 78 ------ .../gplx/xowa/guis/Xogv_page_load_wkr.java | 9 +- .../src/gplx/xowa/guis/Xogv_tab_base.java | 26 +- .../xowa/guis/menus/Xog_menu_mnu_src.java | 4 +- .../src/gplx/xowa/guis/urls/Xog_url_wkr.java | 4 +- .../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 | 4 +- .../xowa/guis/views/Xog_tab_itm_edit_mgr.java | 4 +- .../src/gplx/xowa/guis/views/Xog_win_itm.java | 4 +- .../src/gplx/xowa/htmls/Xoh_html_mgr.java | 2 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page.java | 70 +++++ 400_xowa/src/gplx/xowa/htmls/Xoh_page_.java | 34 +++ .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 4 +- .../gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java | 1 + .../src/gplx/xowa/htmls/Xow_html_mgr.java | 4 +- .../gplx/xowa/htmls/core/Xoh_html_dict_.java | 28 ++ .../gplx/xowa/htmls/core/Xow_hdump_mgr.java | 44 ++++ .../xowa/htmls/core/Xow_hdump_mgr__load.java | 75 ++++++ .../Xow_hdump_mgr__load_tst.java} | 27 +- .../xowa/htmls/core/Xow_hdump_mgr__save.java | 71 +++++ .../bldrs/Xob_hdump_img_cmd.java | 21 +- .../xowa/htmls/core/bldrs/Xob_hdump_mgr.java | 53 ++++ .../bldrs/Xob_link_dump_cmd.java | 2 +- .../bldrs/Xob_link_dump_tbl.java | 2 +- .../core/bldrs/Xob_ns_to_db_wkr__html.java | 53 ++++ .../bldrs/Xob_redlink_mkr_cmd.java | 27 +- .../xowa/htmls/core/dbs/Xoh_page_tbl.java | 79 ++++++ .../xowa/htmls/core/dbs/Xoh_redlink_tbl.java | 60 +++++ .../htmls/{ => core/htmls}/Xoh_html_wtr.java | 157 +++-------- .../xowa/htmls/core/htmls/Xoh_html_wtr_.java | 24 ++ .../{ => core/htmls}/Xoh_html_wtr_cfg.java | 5 +- .../htmls}/Xoh_html_wtr_escaper.java | 12 +- .../{ => core/htmls}/Xoh_html_wtr_tst.java | 2 +- .../htmls/{ => core/htmls}/Xoh_wtr_ctx.java | 2 +- .../{ => core/htmls}/tidy/Xoh_tidy_mgr.java | 2 +- .../htmls}/tidy/Xoh_tidy_mgr_tst.java | 6 +- .../{ => core/htmls}/tidy/Xoh_tidy_wkr.java | 2 +- .../{ => core/htmls}/tidy/Xoh_tidy_wkr_.java | 2 +- .../htmls}/tidy/Xoh_tidy_wkr_jtidy.java | 2 +- .../htmls}/tidy/Xoh_tidy_wkr_jtidy_tst.java | 2 +- .../htmls}/tidy/Xoh_tidy_wkr_tidy.java | 2 +- .../htmls/utls}/Xoh_anchor_kv_bldr.java | 2 +- .../htmls/utls}/Xoh_img_path.java | 2 +- .../htmls/utls}/Xoh_lnki_bldr.java | 2 +- .../htmls/utls}/Xoh_lnki_wtr_utl.java | 2 +- .../xowa/htmls/core/hzips/Xoh_hzip_dict_.java | 70 +++++ .../xowa/htmls/core/hzips/Xoh_hzip_int_.java | 62 +++++ .../htmls/core/hzips/Xoh_hzip_int__tst.java | 48 ++++ .../xowa/htmls/core/hzips/Xoh_hzip_mgr.java | 76 ++++++ .../hzips/Xoh_hzip_mgr_fxt.java} | 39 ++- .../xowa/htmls/core/hzips/Xoh_hzip_wkr.java | 25 ++ .../xowa/htmls/core/hzips/Xow_hzip_mgr.java | 74 ++++++ .../hzips/stats/Hzip_stat_itm.java} | 8 +- .../hzips/stats/Hzip_stat_tbl.java} | 14 +- .../htmls/core/hzips/tests/Xoh_hzip_fxt.java | 47 ++++ .../xowa/htmls/core/makes/Xoh_make_mgr.java | 136 ++++++++++ .../makes/Xoh_make_mgr__file__tst.java} | 73 +----- .../htmls/core/makes/Xoh_make_mgr_fxt.java | 68 +++++ .../xowa/htmls/core/makes/Xoh_make_trie_.java | 67 +++++ .../htmls/core/makes/Xoh_make_trie_itm.java | 25 ++ .../makes/imgs/Xohd_img_itm.java} | 4 +- .../makes/imgs/Xohd_img_itm__base.java} | 14 +- .../imgs/Xohd_img_itm__gallery_itm.java} | 8 +- .../imgs/Xohd_img_itm__gallery_mgr.java} | 10 +- .../makes/imgs/Xohd_img_itm__img.java} | 6 +- .../makes/imgs/Xohd_img_tid.java} | 4 +- .../htmls/core/makes/tests/Xoh_make_fxt.java | 39 +++ .../htmls/core/makes/tests/Xoh_page_chkr.java | 37 +++ .../htmls/core/parsers/Xoh_doc_wkr__tag.java | 72 ++++++ .../xowa/htmls/core/parsers/Xoh_parser_.java | 30 +++ .../htmls/core/parsers/Xoh_parser_fxt.java | 100 +++++++ .../htmls/core/parsers/Xoh_ttl_matcher.java | 64 +++++ .../core/parsers/Xoh_ttl_matcher_tst.java | 49 ++++ .../gplx/xowa/htmls/core/parsers/Xoh_wkr.java | 26 ++ .../htmls/core/parsers/Xoh_wkr__hzip.java | 32 +++ .../htmls/core/to_delete/Xoh_hzip_href.java | 111 ++++++++ .../to_delete/Xohd_page_html_mgr__load.java | 86 +++++++ .../to_delete/Xohd_page_html_mgr__save.java | 50 ++++ .../core/wkrs/escapes/Xoh_escape_hzip.java | 31 +++ .../wkrs/escapes/Xoh_escape_hzip_tst.java | 25 ++ .../wkrs/escapes/Xoh_escape_parse.java} | 20 +- .../wkrs/escapes/Xoh_escape_parse_tst.java | 26 ++ .../htmls/core/wkrs/hdrs/Xoh_hdr_html.java | 57 ++++ .../core/wkrs/hdrs/Xoh_hdr_html_tst.java | 40 +++ .../htmls/core/wkrs/hdrs/Xoh_hdr_hzip.java | 64 +++++ .../core/wkrs/hdrs/Xoh_hdr_hzip_tst.java | 74 ++++++ .../htmls/core/wkrs/hdrs/Xoh_hdr_make.java | 37 +++ .../core/wkrs/hdrs/Xoh_hdr_make_tst.java | 42 +++ .../htmls/core/wkrs/hdrs/Xoh_hdr_parse.java | 62 +++++ .../core/wkrs/hdrs/Xoh_hdr_parse_base.java | 47 ++++ .../core/wkrs/hdrs/Xoh_hdr_parse_tst.java | 26 ++ .../htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java | 45 ++++ .../core/wkrs/lnkes/Xoh_lnke_html.java} | 68 +++-- .../lnkes/Xoh_lnke_html__basic__tst.java} | 17 +- .../wkrs/lnkes/Xoh_lnke_html__hdump__tst.java | 30 +++ .../htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java | 79 ++++++ .../core/wkrs/lnkes/Xoh_lnke_hzip_tst.java | 37 +++ .../htmls/core/wkrs/lnkes/Xoh_lnke_parse.java | 48 ++++ .../core/wkrs/lnkes/Xoh_lnke_parse_tst.java | 26 ++ .../htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java | 28 ++ .../wkrs/lnkis/Xoh_lnki_html__hdump__tst.java | 36 +++ .../htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java | 151 +++++++++++ .../core/wkrs/lnkis/Xoh_lnki_hzip_tst.java | 60 +++++ .../htmls/core/wkrs/lnkis/Xoh_lnki_parse.java | 60 +++++ .../core/wkrs/lnkis/Xoh_lnki_parse_tst.java | 38 +++ .../wkrs/lnkis/htmls}/Xoh_arg_img_core.java | 2 +- .../lnkis/htmls}/Xoh_arg_img_core__basic.java | 2 +- .../lnkis/htmls}/Xoh_arg_img_core__hdump.java | 4 +- .../htmls}/Xoh_file_html_fmtr__base.java | 5 +- .../htmls}/Xoh_file_html_fmtr__hdump.java | 12 +- .../wkrs/lnkis/htmls}/Xoh_file_img_wkr.java | 4 +- .../wkrs/lnkis/htmls}/Xoh_file_mgr.java | 3 +- .../lnkis/htmls}/Xoh_file_wtr__basic.java | 7 +- .../htmls}/Xoh_file_wtr_audio_video_tst.java | 2 +- .../lnkis/htmls}/Xoh_file_wtr_basic_tst.java | 2 +- .../lnkis/htmls}/Xoh_file_wtr_media_tst.java | 2 +- .../wkrs/lnkis/htmls}/Xoh_lnki_consts.java | 2 +- .../lnkis/htmls}/Xoh_lnki_consts_tst.java | 2 +- .../wkrs/lnkis/htmls}/Xoh_lnki_text_fmtr.java | 3 +- .../lnkis/htmls}/Xoh_lnki_title_fmtr.java | 2 +- .../lnkis/htmls}/Xoh_lnki_title_fmtr_tst.java | 2 +- .../wkrs/lnkis/htmls}/Xoh_lnki_wtr.java | 26 +- .../wkrs/lnkis/htmls}/Xoh_redlink_utl.java | 2 +- .../core/wkrs/spaces/Xoh_space_hzip.java | 36 +++ .../core/wkrs/spaces/Xoh_space_hzip_tst.java | 28 ++ .../core/wkrs/spaces/Xoh_space_parse.java | 35 +++ .../core/wkrs/spaces/Xoh_space_parse_tst.java | 26 ++ .../htmls/core/wkrs/txts/Xoh_txt_parse.java | 27 ++ .../core/wkrs/txts/Xoh_txt_parse_tst.java | 26 ++ .../xowa/htmls/css/Xowd_css_core_mgr_tst.java | 2 +- .../src/gplx/xowa/htmls/doms/Xoh_dom_.java | 18 +- .../xowa/htmls/hdumps/Xohd_hdump_rdr.java | 89 ------- .../xowa/htmls/hdumps/Xohd_hdump_wtr.java | 63 ----- .../xowa/htmls/hdumps/abrvs/Xohd_abrv_.java | 74 ------ .../htmls/hdumps/abrvs/Xohd_abrv_mgr.java | 162 ------------ .../htmls/hdumps/bldrs/Xob_hdump_bldr.java | 97 ------- .../hdumps/data/Xohd_page_html_mgr__load.java | 87 ------- .../hdumps/data/Xohd_page_html_mgr__save.java | 52 ---- .../hdumps/data/srl/Xohd_page_srl_itm.java | 46 ---- .../hdumps/data/srl/Xohd_page_srl_itm_.java | 34 --- .../data/srl/Xohd_page_srl_itm_tst.java | 99 ------- .../hdumps/data/srl/Xohd_page_srl_itms.java | 75 ------ .../hdumps/data/srl/Xohd_page_srl_mgr.java | 44 ---- .../xowa/htmls/hrefs/Xoh_href_gui_utl.java | 2 +- .../xowa/htmls/hrefs/Xoh_href_parser_tst.java | 2 +- .../gplx/xowa/htmls/hrefs/Xoh_href_wtr.java | 4 +- .../xowa/htmls/hrefs/Xoh_href_wtr_tst.java | 2 +- .../gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java | 54 ---- .../gplx/xowa/htmls/hzips/Xow_hzip_dict.java | 44 ---- .../gplx/xowa/htmls/hzips/Xow_hzip_int_.java | 64 ----- .../xowa/htmls/hzips/Xow_hzip_int__tst.java | 52 ---- .../htmls/hzips/Xow_hzip_itm__anchor.java | 243 ------------------ .../htmls/hzips/Xow_hzip_itm__anchor_tst.java | 125 --------- .../htmls/hzips/Xow_hzip_itm__header.java | 55 ---- .../htmls/hzips/Xow_hzip_itm__header_tst.java | 38 --- .../xowa/htmls/hzips/Xow_hzip_itm__href.java | 98 ------- .../gplx/xowa/htmls/hzips/Xow_hzip_mgr.java | 109 -------- .../gplx/xowa/htmls/hzips/Xow_hzip_xtid.java | 52 ---- .../src/gplx/xowa/htmls/js/Xoh_js_cbk.java | 4 +- .../htmls/{utils => js}/Xoh_js_cleaner.java | 2 +- .../{utils => js}/Xoh_js_cleaner_tst.java | 2 +- .../popups/Xow_popup_anchor_finder.java | 2 +- .../modules/popups/Xow_popup_html_mkr.java | 2 +- .../modules/popups/Xow_popup_parser.java | 6 +- .../modules/popups/Xow_popup_parser_tst.java | 4 +- .../modules/popups/Xow_popup_wrdx_mkr.java | 2 +- .../htmls/ns_files/Xoh_ns_file_page_mgr.java | 4 +- .../xowa/htmls/portal/Xoh_subpages_bldr.java | 2 +- .../xowa/htmls/sections/Xoh_section_itm.java | 37 +++ .../xowa/htmls/sections/Xoh_section_mgr.java | 39 +++ .../xowa/htmls/sidebar/Xowh_sidebar_mgr.java | 2 +- .../src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java | 3 +- .../gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java | 2 +- .../xowa/langs/bldrs/Xobc_utl_make_lang.java | 1 + .../xowa/langs/bldrs/Xol_mw_lang_parser.java | 4 +- .../langs/bldrs/Xol_mw_lang_parser_tst.java | 2 +- .../gplx/xowa/langs/cases/Xol_case_itm_.java | 4 +- .../xowa/langs/grammars/Xol_grammar_.java | 1 + .../xowa/langs/grammars/Xol_grammar_he.java | 53 ++++ .../gplx/xowa/langs/msgs/Xol_msg_mgr_.java | 2 +- .../gplx/xowa/langs/parsers/Xol_lang_srl.java | 2 +- .../xowa/langs/parsers/Xol_lang_srl_tst.java | 2 +- .../langs/vnts/converts/Xol_mw_parse_tst.java | 7 +- 400_xowa/src/gplx/xowa/parsers/Xop_ctx.java | 2 +- 400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java | 2 +- .../src/gplx/xowa/parsers/Xop_parser.java | 2 +- .../src/gplx/xowa/parsers/Xop_tkn_itm.java | 2 + .../src/gplx/xowa/parsers/Xop_tkn_itm_.java | 2 + .../gplx/xowa/parsers/Xop_tkn_itm_base.java | 2 + .../src/gplx/xowa/parsers/Xop_tkn_mkr.java | 3 +- .../src/gplx/xowa/parsers/Xop_tkn_null.java | 2 + .../xowa/parsers/amps/Xop_amp_trie_itm.java | 2 +- .../gplx/xowa/parsers/apos/Xop_apos_log.java | 1 + .../gplx/xowa/parsers/hdrs/Xop_hdr_log.java | 1 + .../gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java | 9 +- .../xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java | 4 +- .../gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java | 8 +- .../hdrs/Xop_hdr_wkr__div_wrapper_tst.java | 56 ---- .../xowa/parsers/htmls/Mwh_atr_parser.java | 4 +- .../gplx/xowa/parsers/htmls/Mwh_atr_wkr.java | 21 ++ .../gplx/xowa/parsers/htmls/Mwh_doc_wkr.java | 3 +- .../gplx/xowa/parsers/lnkes/Xop_lnke_log.java | 1 + .../gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java | 9 +- .../gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java | 10 +- .../parsers/lnkes/Xop_lnke_wkr_brack_tst.java | 18 +- .../lnkes/Xop_lnke_wkr_relative_tst.java | 2 +- .../parsers/lnkes/Xop_lnke_wkr_text_tst.java | 26 +- .../lnkes/Xop_lnke_wkr_uncommon_tst.java | 2 +- .../parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java | 4 +- .../xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java | 4 +- .../xowa/parsers/lnkis/Xop_link_parser.java | 4 +- .../gplx/xowa/parsers/lnkis/Xop_lnki_log.java | 1 + .../gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java | 9 +- .../xowa/parsers/lnkis/Xop_lnki_type.java | 14 +- .../lnkis/Xop_lnki_wkr__basic_tst.java | 2 +- .../parsers/lnkis/Xop_lnki_wkr__ctg_tst.java | 2 +- .../lnkis/Xop_lnki_wkr__frame_tst.java | 25 ++ .../lnkis/Xop_lnki_wkr__uncommon_tst.java | 2 +- .../lnkis/redlinks/Xog_redlink_mgr.java | 2 +- .../redlinks/Xopg_redlink_lnki_list.java | 4 +- .../gplx/xowa/parsers/miscs/Xop_comm_log.java | 1 + .../gplx/xowa/parsers/miscs/Xop_eq_lxr.java | 4 +- .../xowa/parsers/miscs/Xop_macro_lxr.java | 35 --- .../gplx/xowa/parsers/miscs/Xop_misc_log.java | 1 + .../xowa/parsers/miscs/Xop_space_tkn.java | 13 +- .../gplx/xowa/parsers/paras/Xop_nl_lxr.java | 8 +- .../gplx/xowa/parsers/paras/Xop_para_tkn.java | 23 ++ .../gplx/xowa/parsers/paras/Xop_pre_tkn.java | 8 + .../gplx/xowa/parsers/tblws/Xop_tblw_log.java | 1 + .../xowa/parsers/tmpls/Arg_itm_tkn_null.java | 1 + .../xowa/parsers/tmpls/Arg_nde_tkn_mock.java | 2 +- .../xowa/parsers/tmpls/Xop_curly_log.java | 1 + .../gplx/xowa/parsers/tmpls/Xop_tmpl_log.java | 1 + .../xowa/parsers/tmpls/Xot_defn_tmpl.java | 4 +- .../parsers/tmpls/Xot_defn_trace_dbg.java | 4 +- .../gplx/xowa/parsers/tmpls/Xot_invk_tkn.java | 6 +- .../parsers/tmpls/Xot_invk_wkr_basic_tst.java | 2 +- .../gplx/xowa/parsers/tmpls/Xot_prm_log.java | 1 + .../xowa/parsers/utils/Xop_redirect_mgr.java | 12 +- .../xowa/parsers/utils/Xop_sanitizer.java | 2 +- .../xowa/parsers/utils/Xop_sanitizer_tst.java | 2 +- .../xowa/parsers/vnts/Vnt_convert_lang.java | 4 +- .../gplx/xowa/parsers/xndes/Xop_xnde_log.java | 1 + .../gplx/xowa/parsers/xndes/Xop_xnde_wkr.java | 8 +- 400_xowa/src/gplx/xowa/specials/Xows_mgr.java | 2 +- .../specials/allPages/Xows_page_allpages.java | 2 +- .../specials/search/Xosrh_page_mgr_tst.java | 4 +- .../xowa/specials/search/Xosrh_qry_itm.java | 2 +- .../xowa/specials/search/Xosrh_scanner.java | 2 +- .../xowa/specials/search/Xows_html_wkr.java | 2 +- .../specials/search/Xows_html_wkr_tst.java | 2 +- .../specials/search/Xows_ui_async_tst.java | 2 +- .../xowa/specials/search/Xows_ui_cmd.java | 2 +- .../parsers_old/Xow_search_scanner.java | 2 +- .../search/quicks/Xoa_search_tbl.java | 63 ----- .../xowa/diags/Xows_cmd__fs_check.java | 2 +- .../xowa/diags/Xows_cmd__sql_dump.java | 2 +- .../file_browsers/Xosp_fbrow_cmd__base.java | 2 +- .../file_browsers/Xosp_fbrow_data_dir.java | 2 +- .../file_browsers/Xosp_fbrow_special.java | 2 +- .../file_browsers/Xosp_fbrow_special_tst.java | 2 +- .../src/gplx/xowa/users/Xous_window_mgr.java | 2 +- .../xowa/users/bmks/Dbui_tbl_itm__bmk.java | 2 +- .../users/history/Dbui_tbl_itm__history.java | 2 +- .../xowa/users/prefs/Prefs_converter.java | 4 +- .../xowa/users/prefs/Prefs_converter_tst.java | 4 +- .../gplx/xowa/users/prefs/Prefs_html_wtr.java | 8 +- 400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java | 24 +- .../xowa/wikis/caches/Xow_defn_cache.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java | 2 +- .../gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java | 14 +- .../xowa/wikis/ctgs/Xoctg_pagelist_itms.java | 2 +- .../xowa/wikis/data/Xow_data_mgr_tst.java | 2 +- .../xowa/wikis/data/Xowd_core_db_props.java | 13 +- .../gplx/xowa/wikis/data/Xowd_db_file.java | 7 +- .../xowa/wikis/data/tbls/Xowd_html_row.java | 6 +- .../xowa/wikis/data/tbls/Xowd_html_tbl.java | 71 ----- .../xowa/wikis/data/tbls/Xowd_page_itm.java | 3 +- .../xowa/wikis/data/tbls/Xowd_page_tbl.java | 13 + .../wikis/data/tbls/Xowd_pagelinks_tbl.java | 2 +- .../data/tbls/Xowd_pagelinks_temp_tbl.java | 2 +- .../xowa/wikis/data/tbls/Xowd_text_tbl.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_txt.java | 30 +-- .../src/gplx/xowa/wikis/dbs/Xodb_mgr.java | 2 +- .../src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java | 4 +- .../src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java | 4 +- .../xowa/wikis/dbs/Xodb_page_rdr__tdb.java | 2 +- .../xowa/wikis/dbs/Xodb_save_mgr_sql.java | 2 +- .../xowa/wikis/dbs/Xodb_save_mgr_txt.java | 6 +- .../xowa/wikis/domains/Xow_domain_itm_.java | 4 +- .../gplx/xowa/wikis/metas/Xow_wiki_props.java | 2 +- 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java | 2 +- .../src/gplx/xowa/wikis/nss/Xow_ns_case_.java | 22 +- .../src/gplx/xowa/wikis/nss/Xow_ns_mgr.java | 16 +- .../src/gplx/xowa/wikis/nss/Xow_ns_tst.java | 2 +- .../pages/Xopg_hdump_data.java | 8 +- .../gplx/xowa/wikis/pages/Xopg_html_data.java | 2 + .../pages/Xopg_module_mgr.java | 23 +- .../xowa/wikis/specials/Xosp_special_mgr.java | 10 +- .../gplx/xowa/wikis/tdbs/Xotdb_dir_info.java | 20 +- .../gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java | 10 +- .../xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java | 2 +- .../gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java | 24 +- .../wikis/tdbs/Xotdb_page_raw_parser.java | 6 +- .../tdbs/bldrs/Io_line_rdr_key_gen_all.java | 2 +- .../xowa/wikis/tdbs/hives/Xob_hive_mgr.java | 12 +- .../wikis/tdbs/hives/Xow_hive_mgr_fxt.java | 9 +- .../xowa/wikis/tdbs/utils/Xos_url_gen.java | 2 +- .../wikis/tdbs/utils/Xos_url_gen_tst.java | 2 +- .../xowa/wikis/tdbs/xdats/Xob_xdat_file.java | 4 +- .../wikis/tdbs/xdats/Xob_xdat_file_wtr.java | 6 +- .../src/gplx/xowa/wikis/ttls/Xop_ttl_log.java | 1 + .../src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java | 1 + .../gplx/xowa/wikis/ttls/Xow_ttl_parser.java | 1 + 400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java | 2 +- 400_xowa/src/gplx/xowa/xtns/Xox_xnde.java | 2 +- .../categoryList/Xtn_categorylist_nde.java | 2 +- .../src/gplx/xowa/xtns/cite/Ref_html_wtr.java | 2 +- 400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java | 2 +- .../gplx/xowa/xtns/cite/References_nde.java | 2 +- .../xowa/xtns/dynamicPageList/Dpl_itm.java | 2 +- .../xowa/xtns/dynamicPageList/Dpl_xnde.java | 2 +- .../xtns/gallery/Gallery_box_w_fmtr_arg.java | 6 +- .../xowa/xtns/gallery/Gallery_html_wtr.java | 9 +- .../gplx/xowa/xtns/gallery/Gallery_itm.java | 4 +- .../xowa/xtns/gallery/Gallery_itm_parser.java | 2 +- .../xtns/gallery/Gallery_itm_parser_tst.java | 2 +- .../xowa/xtns/gallery/Gallery_mgr_base.java | 18 +- .../gplx/xowa/xtns/gallery/Gallery_xnde.java | 2 +- .../src/gplx/xowa/xtns/graphs/Graph_xnde.java | 2 +- .../gplx/xowa/xtns/hieros/Hiero_html_mgr.java | 2 +- .../gplx/xowa/xtns/hieros/Hiero_html_wtr.java | 4 +- .../xtns/hieros/Hiero_mw_tables_parser.java | 2 +- .../src/gplx/xowa/xtns/hieros/Hiero_xnde.java | 2 +- .../xowa/xtns/imaps/Imap_img_fmtr_arg.java | 2 +- .../gplx/xowa/xtns/imaps/Imap_itm_shape.java | 7 +- .../src/gplx/xowa/xtns/imaps/Imap_map.java | 6 +- .../src/gplx/xowa/xtns/imaps/Imap_xnde.java | 2 +- .../gplx/xowa/xtns/imaps/Imap_xtn_mgr.java | 2 +- .../xowa/xtns/indicators/Indicator_xnde.java | 2 +- .../xowa/xtns/inputBox/Xtn_inputbox_nde.java | 2 +- .../gplx/xowa/xtns/listings/Listing_xnde.java | 4 +- .../xtns/listings/Listing_xnde_basic_tst.java | 2 +- .../src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java | 2 +- .../gplx/xowa/xtns/lst/Lst_section_nde.java | 2 +- .../gplx/xowa/xtns/mapSources/Map_math.java | 2 +- .../src/gplx/xowa/xtns/math/Math_nde.java | 2 +- .../xowa/xtns/math/Xof_math_html_wtr.java | 4 +- .../src/gplx/xowa/xtns/math/Xof_math_mgr.java | 2 +- .../gplx/xowa/xtns/pfuncs/Pf_func_base.java | 2 +- .../xowa/xtns/pfuncs/exprs/Pfunc_expr.java | 4 +- .../xtns/pfuncs/langs/Pfunc_grammar_tst.java | 62 +++-- .../xtns/pfuncs/pages/Pfunc_displaytitle.java | 2 +- .../pfuncs/times/Pft_fmt_itm_foreign.java | 4 +- .../pfuncs/times/Pft_fmt_itm_hebrew_.java | 60 ++--- .../pfuncs/times/Pft_fmt_itm_seg_int.java | 10 +- .../times/Pft_func_formatdate_bldr.java | 20 +- .../xowa/xtns/pfuncs/times/Pft_func_time.java | 2 +- ...st.java => Pft_func_time__basic__tst.java} | 8 +- .../times/Pft_func_time__hebrew__tst.java | 35 +++ ..._tst.java => Pft_func_time__int__tst.java} | 2 +- ...st.java => Pft_func_time__other__tst.java} | 36 +-- ...java => Pft_func_time__uncommon__tst.java} | 2 +- .../times/Pft_func_time_foreign_fxt.java | 43 ++++ .../xowa/xtns/pfuncs/times/Pxd_eval_seg.java | 12 +- .../gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java | 1 + .../xowa/xtns/pfuncs/times/Pxd_itm_int.java | 14 +- .../xowa/xtns/pfuncs/times/Pxd_parser.java | 5 +- .../xtns/pfuncs/times/Pxd_parser_tst.java | 12 +- .../xtns/pfuncs/ttls/Pfunc_filepath_tst.java | 2 +- .../gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java | 2 +- .../pfuncs/ttls/Pfunc_titleparts_log.java | 1 + .../src/gplx/xowa/xtns/poems/Poem_nde.java | 2 +- .../xtns/proofreadPage/Pp_pagelist_nde.java | 2 +- .../proofreadPage/Pp_pagequality_nde.java | 2 +- .../xowa/xtns/proofreadPage/Pp_pages_nde.java | 2 +- .../src/gplx/xowa/xtns/quiz/Quiz_xnde.java | 2 +- 400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java | 2 +- .../src/gplx/xowa/xtns/rss/Rss_xnde_tst.java | 2 +- .../src/gplx/xowa/xtns/scores/Score_xnde.java | 8 +- .../gplx/xowa/xtns/scribunto/Scrib_core.java | 2 +- .../xowa/xtns/scribunto/Scrib_fsys_mgr.java | 6 +- .../xtns/scribunto/Scrib_invoke_func.java | 8 +- .../xtns/scribunto/Scrib_invoke_func_fxt.java | 8 +- .../xowa/xtns/scribunto/Scrib_proc_args.java | 4 +- .../engines/luaj/Luaj_server_func_dbg.java | 6 +- .../engines/process/Process_engine.java | 2 +- .../engines/process/Process_server.java | 3 +- .../engines/process/Process_server_mock.java | 4 +- .../engines/process/Process_stream_rdr.java | 2 +- .../process/Process_stream_rdr_tst.java | 2 +- .../xtns/scribunto/libs/Scrib_lib_mw.java | 12 +- .../xtns/scribunto/libs/Scrib_lib_title.java | 6 +- .../scribunto/libs/Scrib_lib_ustring.java | 12 +- .../scribunto/libs/Scrib_lib_wikibase.java | 2 +- .../libs/Scrib_lib_wikibase_srl_tst.java | 4 +- .../libs/Scrib_lib_wikibase_tst.java | 2 +- .../xtns/syntax_highlights/Synh_xtn_nde.java | 2 +- .../templateData/Xtn_templateData_nde.java | 2 +- .../xtns/translates/Xop_languages_xnde.java | 4 +- .../xtns/translates/Xop_translate_xnde.java | 2 +- .../xowa/xtns/translates/Xop_tvar_lxr.java | 4 +- .../gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java | 2 +- .../wdatas/hwtrs/Wdata_visitor__html_wtr.java | 6 +- .../wdatas/imports/Io_stream_rdr_mgr.java | 2 +- .../wdatas/imports/Wdata_idx_mgr_base.java | 2 +- .../xtns/wdatas/imports/Wdata_idx_wtr.java | 2 +- .../imports/Xob_wbase_json_dump_db.java | 2 +- .../imports/Xob_wbase_json_dump_parser.java | 2 +- .../imports/Xob_wdata_pid_base_tst.java | 8 +- .../wdatas/imports/Xob_wdata_qid_base.java | 2 +- .../specials/Wdata_itemByTitle_page.java | 4 +- .../xowa/xtns/xowa_cmds/Xop_xowa_cmd.java | 2 +- .../xtns/xowa_cmds/Xox_xowa_html_cmd.java | 2 +- .../en.wikipedia.org-text.xowa | Bin 36864 -> 36864 bytes 858 files changed, 6758 insertions(+), 4187 deletions(-) rename 100_core/{src_200_io => src}/gplx/Io_mgr.java (96%) rename 100_core/{src_200_io => src}/gplx/Io_mgr__tst.java (100%) rename 100_core/{src_800_tst => src}/gplx/Tfds.java (98%) rename 100_core/{src_800_tst => src}/gplx/TfdsEqListItmStr.java (100%) create mode 100644 100_core/src/gplx/core/encoders/Base85_.java create mode 100644 100_core/src/gplx/core/encoders/Base85__tst.java rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEnginePool.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_base.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_memory.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_system.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_deleteDir.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_deleteFil.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_downloadFil.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_fil_affects1_base.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_loadFilStr.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_openRead.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_openWrite.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_queryDir.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_recycleFil.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_saveFilStr.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_xferDir.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoEngine_xrg_xferFil.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoErr.java (91%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmAttrib.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmClassXtn.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmDir.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmDir_.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmFil.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmFil_.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmFil_mem.java (92%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmHash.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItmList.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItm_base.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoItm_base_.java (93%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoRecycleBin.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream.java (93%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_mem.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_mem_tst.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_mock.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_mock_tst.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoStream_stream_rdr.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoUrlInfo.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoUrlInfoRegy.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoUrlInfo_.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoUrlTypeRegy.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoZipWkr.java (89%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/IoZipWkr_tst.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_download_fmt.java (97%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_download_fmt_tst.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_fil.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_fil_mkr.java (94%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_size_.java (93%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_size__tst.java (96%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_rdr.java (93%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_rdr_.java (90%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_rdr_tst.java (95%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_wtr.java (93%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_stream_wtr_.java (89%) rename 100_core/{src_200_io/gplx => src/gplx/core}/ios/Io_url_obj_ref.java (94%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_data.java (95%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_grp.java (95%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_grp_.java (95%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_itm.java (95%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_itm_.java (95%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_log.java (96%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_obj.java (92%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_root.java (96%) rename 100_core/{src_000_err/gplx => src/gplx/core/log_msgs}/Gfo_msg_root_tst.java (96%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo.java (89%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_.java (91%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_md5_tst.java (92%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_sha1_tst.java (93%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_tth192.java (97%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_tth192_tree_tst.java (95%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashAlgo_tth192_tst.java (93%) rename 100_core/{src_160_hash/gplx => src/gplx/core}/security/HashDlgWtr_tst.java (89%) rename 100_core/{src_800_tst/gplx => src/gplx/core/tests}/PerfLogMgr_fxt.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/Base32Converter.java (96%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/Base64Converter.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/BaseXXConverter_tst.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/CharStream.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/CharStream_tst.java (94%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/HexDecUtl.java (97%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/HexDecUtl_tst.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_ioMatch.java (94%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_ioMatch_.java (96%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_ioMatch_tst.java (96%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_like.java (94%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_like_.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/RegxPatn_cls_like_tst.java (96%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/StringTableBldr.java (95%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/StringTableBldr_tst.java (94%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/StringTableCol.java (96%) rename 100_core/{src_150_text/gplx => src/gplx/core}/texts/StringTableColAlign.java (94%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdrOpts.java (95%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_.java (96%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_csv_dat_tst.java (96%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_dsv_dat_tst.java (94%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_dsv_hdr_tst.java (94%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_dsv_misc_tst.java (95%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataRdr_layout_tst.java (95%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataWtr.java (96%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataWtr_.java (93%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataWtr_csv_tst.java (96%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvDataWtr_tbls_tst.java (94%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvHeaderList.java (95%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvStoreLayout.java (95%) rename 100_core/{src_340_dsv/gplx/stores => src/gplx/langs}/dsvs/DsvSymbols.java (96%) rename 100_core/{src_900_xml/gplx => src/gplx/langs/xmls}/HierStrBldr.java (96%) rename 100_core/{src_900_xml/gplx => src/gplx/langs/xmls}/HierStrBldr_tst.java (93%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlAtr.java (93%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlAtrList.java (94%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlDoc.java (93%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlDoc_.java (95%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlDoc_tst.java (94%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlFileSplitter.java (95%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlFileSplitterOpts.java (96%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlFileSplitter_tst.java (95%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlNde.java (96%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlNdeList.java (94%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlSplitRdr.java (93%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/XmlSplitWtr.java (92%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/Xpath_.java (96%) rename 100_core/{src_900_xml/gplx => src/gplx/langs}/xmls/Xpath__tst.java (93%) rename 100_core/{src/gplx/core/brys => src_130_brys/gplx}/Bry_rdr.java (86%) delete mode 100644 100_core/src_900_xml/gplx/Base85_utl.java delete mode 100644 100_core/src_900_xml/gplx/Base85_utl_tst.java rename 100_core/tst/gplx/{ => core}/ios/IoEngineFxt.java (96%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_basic_base.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_basic_memory_tst.java (93%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_basic_system_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_deep_base.java (96%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_deep_memory_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_dir_deep_system_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_basic_base.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_basic_memory_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_basic_system_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_xfer_base.java (96%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_xfer_memory_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_fil_xfer_system_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_stream_xfer_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_xrg_queryDir_tst.java (96%) rename 100_core/tst/gplx/{ => core}/ios/IoEngine_xrg_recycleFil_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoItmDir_FetchDeepOrNull_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoItm_fxt.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoUrlInfo_alias_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoUrl_lnx_tst.java (95%) rename 100_core/tst/gplx/{ => core}/ios/IoUrl_map_tst.java (94%) rename 100_core/tst/gplx/{ => core}/ios/IoUrl_wnt_tst.java (97%) create mode 100644 400_xowa/src/gplx/core/brys/Bry_parser.java rename 400_xowa/src/gplx/{ => core}/ios/BinaryHeap_Io_line_rdr.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/BinaryHeap_Io_line_rdr_tst.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_buffer_rdr.java (92%) rename 400_xowa/src/gplx/{ => core}/ios/Io_buffer_rdr_tst.java (94%) rename 400_xowa/src/gplx/{ => core}/ios/Io_fil_chkr.java (87%) rename 400_xowa/src/gplx/{ => core}/ios/Io_line_rdr.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_line_rdr_key_gen.java (92%) rename 400_xowa/src/gplx/{ => core}/ios/Io_line_rdr_key_gen_.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_line_rdr_tst.java (96%) rename 400_xowa/src/gplx/{ => core}/ios/Io_make_cmd.java (92%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort.java (97%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_cmd.java (92%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_filCmd.java (94%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_fil_basic.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_misc_tst.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_split_itm.java (94%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_split_itm_sorter.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_sort_tst.java (96%) rename 400_xowa/src/gplx/{ => core}/ios/Io_stream_rdr_process.java (96%) rename 400_xowa/src/gplx/{ => core}/ios/Io_stream_zip_mgr.java (94%) rename 400_xowa/src/gplx/{ => core}/ios/Io_url_gen.java (92%) rename 400_xowa/src/gplx/{ => core}/ios/Io_url_gen_.java (96%) rename 400_xowa/src/gplx/{ => core}/ios/Io_zip_mgr.java (93%) rename 400_xowa/src/gplx/{ => core}/ios/Io_zip_mgr_base.java (96%) rename 400_xowa/src/gplx/{ => core}/ios/Io_zip_mgr_mok.java (95%) rename 400_xowa/src/gplx/{ => core}/ios/Io_zip_mgr_tst.java (93%) create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java rename 100_core/src_800_tst/gplx/Tfds_tst.java => 400_xowa/src/gplx/langs/htmls/parsers/Html_doc_wkr.java (73%) create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_tst.java create mode 100644 400_xowa/src/gplx/langs/htmls/parsers/Html_txt_wkr.java create mode 100644 400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr_.java create mode 100644 400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_nde.java create mode 100644 400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java create mode 100644 400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java delete mode 100644 400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java create mode 100644 400_xowa/src/gplx/xowa/drds/Xod_app.java create mode 100644 400_xowa/src/gplx/xowa/drds/Xod_app_tst.java rename 100_core/src_900_xml/gplx/Base64_utl.java => 400_xowa/src/gplx/xowa/drds/Xod_img_loader.java (81%) create mode 100644 400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java create mode 100644 400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java create mode 100644 400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/guis/Xog_page.java create mode 100644 400_xowa/src/gplx/xowa/htmls/Xoh_page.java create mode 100644 400_xowa/src/gplx/xowa/htmls/Xoh_page_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/Xoh_html_dict_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps/Xohd_hdump_wtr_tst.java => core/Xow_hdump_mgr__load_tst.java} (82%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps => core}/bldrs/Xob_hdump_img_cmd.java (79%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_mgr.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps => core}/bldrs/Xob_link_dump_cmd.java (92%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps => core}/bldrs/Xob_link_dump_tbl.java (94%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps => core}/bldrs/Xob_redlink_mkr_cmd.java (74%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_tbl.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_redlink_tbl.java rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/Xoh_html_wtr.java (76%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr_.java rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/Xoh_html_wtr_cfg.java (79%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/Xoh_html_wtr_escaper.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/Xoh_html_wtr_tst.java (95%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/Xoh_wtr_ctx.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_mgr.java (94%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_mgr_tst.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_wkr.java (82%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_wkr_.java (89%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_wkr_jtidy.java (93%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_wkr_jtidy_tst.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{ => core/htmls}/tidy/Xoh_tidy_wkr_tidy.java (94%) rename 400_xowa/src/gplx/xowa/htmls/{wtrs => core/htmls/utls}/Xoh_anchor_kv_bldr.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{wtrs => core/htmls/utls}/Xoh_img_path.java (85%) rename 400_xowa/src/gplx/xowa/htmls/{wtrs => core/htmls/utls}/Xoh_lnki_bldr.java (93%) rename 400_xowa/src/gplx/xowa/htmls/{wtrs => core/htmls/utls}/Xoh_lnki_wtr_utl.java (89%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_dict_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int__tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_mgr.java rename 400_xowa/src/gplx/xowa/htmls/{hzips/Xow_hzip_mgr_fxt.java => core/hzips/Xoh_hzip_mgr_fxt.java} (56%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_wkr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xow_hzip_mgr.java rename 400_xowa/src/gplx/xowa/htmls/{hzips/Xodump_stats_itm.java => core/hzips/stats/Hzip_stat_itm.java} (83%) rename 400_xowa/src/gplx/xowa/htmls/{hzips/Xodump_stats_tbl.java => core/hzips/stats/Hzip_stat_tbl.java} (87%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/tests/Xoh_hzip_fxt.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps/abrvs/Xohd_abrv_mgr_tst.java => core/makes/Xoh_make_mgr__file__tst.java} (50%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_itm.java rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_itm.java => core/makes/imgs/Xohd_img_itm.java} (79%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_itm__base.java => core/makes/imgs/Xohd_img_itm__base.java} (88%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_itm__gallery_itm.java => core/makes/imgs/Xohd_img_itm__gallery_itm.java} (77%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_itm__gallery_mgr.java => core/makes/imgs/Xohd_img_itm__gallery_mgr.java} (71%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_itm__img.java => core/makes/imgs/Xohd_img_itm__img.java} (72%) rename 400_xowa/src/gplx/xowa/htmls/{hdumps/core/Xohd_data_tid.java => core/makes/imgs/Xohd_img_tid.java} (78%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_make_fxt.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_page_chkr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_doc_wkr__tag.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_parser_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_parser_fxt.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_ttl_matcher.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_ttl_matcher_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_wkr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/parsers/Xoh_wkr__hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/to_delete/Xoh_hzip_href.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/to_delete/Xohd_page_html_mgr__load.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/to_delete/Xohd_page_html_mgr__save.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/escapes/Xoh_escape_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/escapes/Xoh_escape_hzip_tst.java rename 400_xowa/src/gplx/xowa/htmls/{hzips/Xow_hzip_itm__file_tst.java => core/wkrs/escapes/Xoh_escape_parse.java} (51%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/escapes/Xoh_escape_parse_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_hzip_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse_base.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java rename 400_xowa/src/gplx/xowa/{parsers/lnkes/Xoh_lnke_wtr.java => htmls/core/wkrs/lnkes/Xoh_lnke_html.java} (53%) rename 400_xowa/src/gplx/xowa/{parsers/lnkes/Xoh_lnke_wtr_tst.java => htmls/core/wkrs/lnkes/Xoh_lnke_html__basic__tst.java} (53%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__hdump__tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse_tst.java rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_arg_img_core.java (79%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_arg_img_core__basic.java (83%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_arg_img_core__hdump.java (77%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_html_fmtr__base.java (94%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_html_fmtr__hdump.java (85%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_img_wkr.java (78%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_mgr.java (93%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_wtr__basic.java (96%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_wtr_audio_video_tst.java (96%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_wtr_basic_tst.java (96%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_file_wtr_media_tst.java (91%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_consts.java (90%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_consts_tst.java (86%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_text_fmtr.java (86%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_title_fmtr.java (92%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_title_fmtr_tst.java (87%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_lnki_wtr.java (91%) rename 400_xowa/src/gplx/xowa/htmls/{lnkis => core/wkrs/lnkis/htmls}/Xoh_redlink_utl.java (79%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse_tst.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse_tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_xtid.java rename 400_xowa/src/gplx/xowa/htmls/{utils => js}/Xoh_js_cleaner.java (95%) rename 400_xowa/src/gplx/xowa/htmls/{utils => js}/Xoh_js_cleaner_tst.java (94%) create mode 100644 400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_itm.java create mode 100644 400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java create mode 100644 400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java delete mode 100644 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java create mode 100644 400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_wkr.java create mode 100644 400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__frame_tst.java delete mode 100644 400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java delete mode 100644 400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java delete mode 100644 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java rename 400_xowa/src/gplx/xowa/{htmls/hdumps => wikis}/pages/Xopg_hdump_data.java (80%) rename 400_xowa/src/gplx/xowa/{htmls/hdumps => wikis}/pages/Xopg_module_mgr.java (63%) rename 400_xowa/src/gplx/xowa/xtns/pfuncs/times/{Pft_func_time_basic_tst.java => Pft_func_time__basic__tst.java} (97%) create mode 100644 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__hebrew__tst.java rename 400_xowa/src/gplx/xowa/xtns/pfuncs/times/{Pft_func_time_int_tst.java => Pft_func_time__int__tst.java} (96%) rename 400_xowa/src/gplx/xowa/xtns/pfuncs/times/{Pft_func_time_foreign_tst.java => Pft_func_time__other__tst.java} (60%) rename 400_xowa/src/gplx/xowa/xtns/pfuncs/times/{Pft_func_time_uncommon_tst.java => Pft_func_time__uncommon__tst.java} (96%) create mode 100644 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java diff --git a/100_core/.classpath b/100_core/.classpath index 15992ab0e..d384c9769 100644 --- a/100_core/.classpath +++ b/100_core/.classpath @@ -8,20 +8,14 @@ - - - - - - diff --git a/100_core/src/gplx/Err_.java b/100_core/src/gplx/Err_.java index 2d510b865..d51f655aa 100644 --- a/100_core/src/gplx/Err_.java +++ b/100_core/src/gplx/Err_.java @@ -51,10 +51,8 @@ public class Err_ { return new Err(Bool_.Y, Trace_null, Type__gplx, "cast failed", "type", Type_adp_.NameOf_type(t), "obj", o_str); } - public static String Message_lang(Exception e) {return e.getMessage();} - public static String Message_lang_error(Error e) {return e.getMessage();} - public static String Trace_lang(Exception e) {return Trace_lang_exec(e.getStackTrace());} - public static String Trace_lang(Error e) {return Trace_lang_exec(e.getStackTrace());} + public static String Message_lang(Throwable e) {return e.getMessage();} + public static String Trace_lang(Throwable e) {return Trace_lang_exec(e.getStackTrace());} private static String Trace_lang_exec(StackTraceElement[] ary) { String rv = ""; int len = ary.length; @@ -70,6 +68,6 @@ public class Err_ { } public static String Message_gplx_full(Exception e) {return cast_or_make(e).To_str__full();} public static String Message_gplx_log(Exception e) {return cast_or_make(e).To_str__log();} - public static Err cast_or_make(Exception e) {return Type_adp_.Eq_typeSafe(e, Err.class) ? (Err)e : new Err(Bool_.N, Err_.Trace_lang(e), Type_adp_.NameOf_obj(e), Err_.Message_lang(e));} + public static Err cast_or_make(Throwable e) {return Type_adp_.Eq_typeSafe(e, Err.class) ? (Err)e : new Err(Bool_.N, Err_.Trace_lang(e), Type_adp_.NameOf_obj(e), Err_.Message_lang(e));} public static final String Type__op_canceled = "gplx.op_canceled"; } diff --git a/100_core/src_200_io/gplx/Io_mgr.java b/100_core/src/gplx/Io_mgr.java similarity index 96% rename from 100_core/src_200_io/gplx/Io_mgr.java rename to 100_core/src/gplx/Io_mgr.java index 4951588b8..5b1a32eb5 100644 --- a/100_core/src_200_io/gplx/Io_mgr.java +++ b/100_core/src/gplx/Io_mgr.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.primitives.*; import gplx.ios.*; /*IoItmFil, IoItmDir..*/ -public class Io_mgr { // exists primarily to gather all cmds under gplx namespace; otherwise need to use gplx.ios whenever copying/deleting file +import gplx.core.primitives.*; import gplx.core.ios.*; /*IoItmFil, IoItmDir..*/ +public class Io_mgr { // exists primarily to gather all cmds under gplx namespace; otherwise need to use gplx.core.ios whenever copying/deleting file public boolean Exists(Io_url url) {return url.Type_dir() ? ExistsDir(url) : ExistsFil(url);} public boolean ExistsFil(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).ExistsFil_api(url);} public void ExistsFilOrFail(Io_url url) {if (!ExistsFil(url)) throw Err_.new_wo_type("could not find file", "url", url);} diff --git a/100_core/src_200_io/gplx/Io_mgr__tst.java b/100_core/src/gplx/Io_mgr__tst.java similarity index 100% rename from 100_core/src_200_io/gplx/Io_mgr__tst.java rename to 100_core/src/gplx/Io_mgr__tst.java diff --git a/100_core/src_800_tst/gplx/Tfds.java b/100_core/src/gplx/Tfds.java similarity index 98% rename from 100_core/src_800_tst/gplx/Tfds.java rename to 100_core/src/gplx/Tfds.java index b29369da1..605a6530a 100644 --- a/100_core/src_800_tst/gplx/Tfds.java +++ b/100_core/src/gplx/Tfds.java @@ -151,7 +151,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt } static final String EmptyStr = TfdsMsgBldr.EmptyStr; static TfdsMsgBldr msgBldr = TfdsMsgBldr.new_(); - public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("xowa", "dev", "tst"); + public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("000", "200_dev", "190_tst"); public static DateAdp Now_time0_add_min(int minutes) {return time0.Add_minute(minutes);} @gplx.Internal protected static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled; private static boolean now_freeze; public static void Now_enabled_n_() {now_enabled = false; now_freeze = false;} diff --git a/100_core/src_800_tst/gplx/TfdsEqListItmStr.java b/100_core/src/gplx/TfdsEqListItmStr.java similarity index 100% rename from 100_core/src_800_tst/gplx/TfdsEqListItmStr.java rename to 100_core/src/gplx/TfdsEqListItmStr.java diff --git a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java index 20a857edb..632a00d45 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java @@ -48,6 +48,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));} public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), val);} public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);} + public Btrie_slim_mgr Add_str_str(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));} public Btrie_slim_mgr Add_bry_bry(byte[] key, byte[] val) {return (Btrie_slim_mgr)Add_obj(key, val);} public Btrie_slim_mgr Add_bry_byte(byte b, byte val) {return (Btrie_slim_mgr)Add_obj(new byte[] {b}, Byte_obj_val.new_(val));} public Btrie_slim_mgr Add_bry_byte(byte[] bry, byte val) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(val));} diff --git a/100_core/src/gplx/core/btries/Btrie_u8_itm.java b/100_core/src/gplx/core/btries/Btrie_u8_itm.java index 6127f9a79..e7880d780 100644 --- a/100_core/src/gplx/core/btries/Btrie_u8_itm.java +++ b/100_core/src/gplx/core/btries/Btrie_u8_itm.java @@ -40,7 +40,7 @@ class Btrie_u8_itm { else { // itm has asymmetric_bry; EX: "İ" was added to trie, must match "İ" and "i"; if (called_by_match) { // called by mgr.Match return - ( Bry_.Eq(src, c_bgn, c_end, rv.key) // key matches src; EX: "aİ" + ( Bry_.Eq(src, c_bgn, c_end, rv.key) // key matches src; EX: "aİ" || Bry_.Eq(src, c_bgn, c_end, rv.asymmetric_bry) // asymmetric_bry matches src; EX: "ai"; note that "aI" won't match ) ? rv : null; diff --git a/100_core/src/gplx/core/criterias/Criteria_.java b/100_core/src/gplx/core/criterias/Criteria_.java index 093882c7f..67b44d0b0 100644 --- a/100_core/src/gplx/core/criterias/Criteria_.java +++ b/100_core/src/gplx/core/criterias/Criteria_.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.criterias; import gplx.*; import gplx.core.*; -import gplx.texts.*; /*RegxPatn_cls_like*/ +import gplx.core.texts.*; /*RegxPatn_cls_like*/ public class Criteria_ { public static final Criteria All = new Criteria_const(true); public static final Criteria None = new Criteria_const(false); diff --git a/100_core/src/gplx/core/criterias/Criteria_ioItm_tst.java b/100_core/src/gplx/core/criterias/Criteria_ioItm_tst.java index d2c1f2154..9eb145b84 100644 --- a/100_core/src/gplx/core/criterias/Criteria_ioItm_tst.java +++ b/100_core/src/gplx/core/criterias/Criteria_ioItm_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.criterias; import gplx.*; import gplx.core.*; import org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Criteria_ioItm_tst { IoItmFil fil; Criteria crt; IoItm_fxt fx = IoItm_fxt.new_(); @Test public void IoType() { diff --git a/100_core/src/gplx/core/criterias/Criteria_ioMatch.java b/100_core/src/gplx/core/criterias/Criteria_ioMatch.java index f1603af6d..5190dd5dc 100644 --- a/100_core/src/gplx/core/criterias/Criteria_ioMatch.java +++ b/100_core/src/gplx/core/criterias/Criteria_ioMatch.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.criterias; import gplx.*; import gplx.core.*; -import gplx.texts.*; +import gplx.core.texts.*; public class Criteria_ioMatch implements Criteria { // EX: url IOMATCH '*.xml|*.txt' public Criteria_ioMatch(boolean match, RegxPatn_cls_ioMatch pattern) {this.match = match; this.pattern = pattern;} public byte Tid() {return Criteria_.Tid_iomatch;} diff --git a/100_core/src/gplx/core/criterias/Criteria_like.java b/100_core/src/gplx/core/criterias/Criteria_like.java index 2f6c4417c..e54febc1e 100644 --- a/100_core/src/gplx/core/criterias/Criteria_like.java +++ b/100_core/src/gplx/core/criterias/Criteria_like.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.criterias; import gplx.*; import gplx.core.*; -import gplx.texts.*; /*RegxPatn_cls_like*/ +import gplx.core.texts.*; /*RegxPatn_cls_like*/ public class Criteria_like implements Criteria { @gplx.Internal protected Criteria_like(boolean negated, RegxPatn_cls_like pattern) { this.negated = negated; this.pattern = pattern; diff --git a/100_core/src/gplx/core/encoders/Base85_.java b/100_core/src/gplx/core/encoders/Base85_.java new file mode 100644 index 000000000..5643e8621 --- /dev/null +++ b/100_core/src/gplx/core/encoders/Base85_.java @@ -0,0 +1,65 @@ +/* +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.encoders; import gplx.*; import gplx.core.*; +public class Base85_ { + public static String To_str(int val, int min_len) {return String_.new_u8(Set_bry(val, null, 0, min_len));} + public static byte[] To_bry(int val, int min_len) {return Set_bry(val, null, 0, min_len);} + public static byte[] Set_bry(int val, byte[] ary, int ary_pos, int min_len) { + int val_len = Bry_len(val); + int ary_len = val_len, pad_len = 0; + boolean pad = ary_len < min_len; + if (pad) { + pad_len = min_len - ary_len; + ary_len = min_len; + } + if (ary == null) ary = new byte[ary_len]; + if (pad) { + for (int i = 0; i < pad_len; i++) // fill ary with pad_len + ary[i + ary_pos] = A7_offset; + } + for (int i = ary_len - pad_len; i > 0; i--) { + int div = Pow85[i - 1]; + byte tmp = (byte)(val / div); + ary[ary_pos + ary_len - i] = (byte)(tmp + A7_offset); + val -= tmp * div; + } + return ary; + } + public static int To_int_by_str(String s) { + byte[] ary = Bry_.new_u8(s); + return To_int_by_bry(ary, 0, ary.length - 1); + } + public static int To_int_by_bry(byte[] ary, int bgn, int end) { + int rv = 0, factor = 1; + for (int i = end; i >= bgn; i--) { + rv += (ary[i] - A7_offset) * factor; + factor *= Radix; + } + return rv; + } + public static int Bry_len(int v) { + if (v == 0) return 1; + for (int i = Pow85_last; i > -1; i--) + if (v >= Pow85[i]) return i + 1; + throw Err_.new_wo_type("neg number not allowed", "v", v); + } + public static final int Len_int = 5; + private static final int Pow85_last = 4, Radix = 85; private static final byte A7_offset = 33; + public static final int Pow85_0 = 1, Pow85_1 = 85, Pow85_2 = 7225, Pow85_3 = 614125, Pow85_4 = 52200625; + public static int[] Pow85 = new int[]{Pow85_0, Pow85_1, Pow85_2, Pow85_3, Pow85_4}; // NOTE: ary constructed to match index to exponent; Pow85[1] = 85^1 +} diff --git a/100_core/src/gplx/core/encoders/Base85__tst.java b/100_core/src/gplx/core/encoders/Base85__tst.java new file mode 100644 index 000000000..f3268532e --- /dev/null +++ b/100_core/src/gplx/core/encoders/Base85__tst.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.core.encoders; import gplx.*; import gplx.core.*; +import org.junit.*; +public class Base85__tst { + private final Base85__fxt fxt = new Base85__fxt(); + @Test public void Log() { + fxt.Test_log( 0, 1); + fxt.Test_log( 84, 1); + fxt.Test_log( 85, 2); + fxt.Test_log( 7224, 2); + fxt.Test_log( 7225, 3); + fxt.Test_log( 614124, 3); + fxt.Test_log( 614125, 4); + fxt.Test_log( 52200624, 4); + fxt.Test_log( 52200625, 5); + fxt.Test_log(Int_.Max_value, 5); + } + @Test public void To_str() { + fxt.Test_to_str( 0, "!"); + fxt.Test_to_str( 84, "u"); + fxt.Test_to_str( 85, "\"!"); + fxt.Test_to_str( 7224, "uu"); + fxt.Test_to_str( 7225, "\"!!"); + fxt.Test_to_str( 614124, "uuu"); + fxt.Test_to_str( 614125, "\"!!!"); + fxt.Test_to_str( 52200624, "uuuu"); + fxt.Test_to_str( 52200625, "\"!!!!"); + } + @Test public void XtoStrAry() { + byte[] ary = new byte[9]; + fxt.Exec_to_str(ary, 0, 2); // !!# + fxt.Exec_to_str(ary, 3, 173); // !#$ + fxt.Exec_to_str(ary, 6, 14709); // #$% + Tfds.Eq("!!#!#$#$%", String_.new_u8(ary)); + } +} +class Base85__fxt { + public void Test_log(int val, int expd) {Tfds.Eq(expd, Base85_.Bry_len(val));} + public void Test_to_str(int val, String expd) { + String actl = Base85_.To_str(val, 0); + Tfds.Eq(expd, actl); + Tfds.Eq(val, Base85_.To_int_by_str(expd)); + } + public void Exec_to_str(byte[] ary, int aryPos, int val) {Base85_.Set_bry(val, ary, aryPos, 3);} +} diff --git a/100_core/src/gplx/core/intls/Utf16_.java b/100_core/src/gplx/core/intls/Utf16_.java index e5a21fb5f..2a8be712e 100644 --- a/100_core/src/gplx/core/intls/Utf16_.java +++ b/100_core/src/gplx/core/intls/Utf16_.java @@ -53,7 +53,7 @@ public class Utf16_ { public static byte[] Encode_hex_to_bry(String raw) {return Encode_hex_to_bry(Bry_.new_a7(raw));} public static byte[] Encode_hex_to_bry(byte[] raw) { if (raw == null) return null; - int int_val = gplx.texts.HexDecUtl.parse_or(raw, Int_.Min_value); + int int_val = gplx.core.texts.HexDecUtl.parse_or(raw, Int_.Min_value); return int_val == Int_.Min_value ? null : Encode_int_to_bry(int_val); } public static byte[] Encode_int_to_bry(int c) { diff --git a/100_core/src_200_io/gplx/ios/IoEngine.java b/100_core/src/gplx/core/ios/IoEngine.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine.java rename to 100_core/src/gplx/core/ios/IoEngine.java index 88247acc3..c7674c995 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine.java +++ b/100_core/src/gplx/core/ios/IoEngine.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; import gplx.core.criterias.*; public interface IoEngine { String Key(); diff --git a/100_core/src_200_io/gplx/ios/IoEnginePool.java b/100_core/src/gplx/core/ios/IoEnginePool.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoEnginePool.java rename to 100_core/src/gplx/core/ios/IoEnginePool.java index dfee6ef85..d8af70b95 100644 --- a/100_core/src_200_io/gplx/ios/IoEnginePool.java +++ b/100_core/src/gplx/core/ios/IoEnginePool.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEnginePool { private final Hash_adp hash = Hash_adp_.new_(); public void Add_if_dupe_use_nth(IoEngine engine) { diff --git a/100_core/src_200_io/gplx/ios/IoEngine_.java b/100_core/src/gplx/core/ios/IoEngine_.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoEngine_.java rename to 100_core/src/gplx/core/ios/IoEngine_.java index b57ff377c..8d9ab3aeb 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_.java +++ b/100_core/src/gplx/core/ios/IoEngine_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_ { public static final String SysKey = "sys"; public static final String MemKey = "mem"; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_base.java b/100_core/src/gplx/core/ios/IoEngine_base.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoEngine_base.java rename to 100_core/src/gplx/core/ios/IoEngine_base.java index 31ac347bc..928665fdf 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_base.java +++ b/100_core/src/gplx/core/ios/IoEngine_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public abstract class IoEngine_base implements IoEngine { public abstract String Key(); public abstract boolean ExistsFil_api(Io_url url); diff --git a/100_core/src_200_io/gplx/ios/IoEngine_memory.java b/100_core/src/gplx/core/ios/IoEngine_memory.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_memory.java rename to 100_core/src/gplx/core/ios/IoEngine_memory.java index c3e034f46..7ee937784 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_memory.java +++ b/100_core/src/gplx/core/ios/IoEngine_memory.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_memory extends IoEngine_base { @Override public String Key() {return key;} private String key = IoEngine_.MemKey; @Override public boolean ExistsFil_api(Io_url url) {return FetchFil(url) != IoItmFil_mem.Null;} diff --git a/100_core/src_200_io/gplx/ios/IoEngine_system.java b/100_core/src/gplx/core/ios/IoEngine_system.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoEngine_system.java rename to 100_core/src/gplx/core/ios/IoEngine_system.java index 65fa7d536..8814f20bd 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_system.java +++ b/100_core/src/gplx/core/ios/IoEngine_system.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; @@ -493,9 +493,9 @@ public class IoEngine_system extends IoEngine_base { class IoEngineArgs { public int LoadFilStr_BufferSize = 4096 * 256; public String LoadFilStr_Encoding = "UTF-8"; - public String Err_ReadonlyFileNotWritable = "gplx.ios.ReadonlyFileNotWritable"; - public String Err_FileNotFound = "gplx.ios.FileNotFound"; - public String Err_IoException = "gplx.ios.IoException"; + public String Err_ReadonlyFileNotWritable = "gplx.core.ios.ReadonlyFileNotWritable"; + public String Err_FileNotFound = "gplx.core.ios.FileNotFound"; + public String Err_IoException = "gplx.core.ios.IoException"; public static final IoEngineArgs Instance = new IoEngineArgs(); } class IoEngine_system_xtn { diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java b/100_core/src/gplx/core/ios/IoEngine_xrg_deleteDir.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_deleteDir.java index b8cf7add5..2da411c37 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_deleteDir.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; import gplx.core.criterias.*; public class IoEngine_xrg_deleteDir { public Io_url Url() {return url;} public IoEngine_xrg_deleteDir Url_(Io_url val) {url = val; return this;} Io_url url; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_deleteFil.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_deleteFil.java index 6b50c061d..41cd7f61b 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_deleteFil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_deleteFil extends IoEngine_xrg_fil_affects1_base { @gplx.New public IoEngine_xrg_deleteFil Url_(Io_url val) {Url_set(val); return this;} public IoEngine_xrg_deleteFil ReadOnlyFails_off() {return ReadOnlyFails_(false);} public IoEngine_xrg_deleteFil ReadOnlyFails_(boolean v) {ReadOnlyFails_set(v); return this;} diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java index eafedf710..8a9ab7388 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_downloadFil { public String Src() {return src;} public IoEngine_xrg_downloadFil Src_(String v) {src = v; return this;} private String src; public Io_url Trg() {return trg;} public IoEngine_xrg_downloadFil Trg_(Io_url v) {trg = v; return this;} private Io_url trg; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_fil_affects1_base.java b/100_core/src/gplx/core/ios/IoEngine_xrg_fil_affects1_base.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_fil_affects1_base.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_fil_affects1_base.java index 0122b645c..442b4ae6c 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_fil_affects1_base.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_fil_affects1_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_fil_affects1_base { public Io_url Url() {return url;} public void Url_set(Io_url v) {url = v;} Io_url url; public IoEngine_xrg_fil_affects1_base Url_(Io_url v) {url = v; return this;} diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java b/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.java index bdbe9701b..2bc3e76e8 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_loadFilStr.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.ios; import gplx.*; -import gplx.texts.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.texts.*; 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_200_io/gplx/ios/IoEngine_xrg_openRead.java b/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java index 05eb4ae61..3e207669c 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_openRead { public Io_url Url() {return url;} Io_url url; public String ErrMsg() {return errMsg;} private String errMsg; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java b/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java index 68ffca5b5..9e6509a92 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_openWrite { public Io_url Url() {return url;} public IoEngine_xrg_openWrite Url_(Io_url val) {url = val; return this;} Io_url url; public boolean ReadOnlyIgnored() {return readOnlyIgnored;} public IoEngine_xrg_openWrite ReadOnlyIgnored_() {return ReadOnlyIgnored_(true);} public IoEngine_xrg_openWrite ReadOnlyIgnored_(boolean v) {readOnlyIgnored = v; return this;} private boolean readOnlyIgnored = false; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java b/100_core/src/gplx/core/ios/IoEngine_xrg_queryDir.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_queryDir.java index 8f2ff1468..a7ed4e1ef 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_queryDir.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; import gplx.core.criterias.*; public class IoEngine_xrg_queryDir { public Io_url Url() {return url;} public IoEngine_xrg_queryDir Url_(Io_url val) {url = val; return this;} Io_url url; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java index 62d04d635..339883a0e 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class IoEngine_xrg_recycleFil extends IoEngine_xrg_fil_affects1_base { public IoEngine_xrg_recycleFil MissingFails_off() {return MissingFails_(false);} public IoEngine_xrg_recycleFil MissingFails_(boolean v) {MissingFails_set(v); return this;} diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java b/100_core/src/gplx/core/ios/IoEngine_xrg_saveFilStr.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_saveFilStr.java index 0b54858dd..ec4419977 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_saveFilStr.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.ios; import gplx.*; -import gplx.texts.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.texts.*; public class IoEngine_xrg_saveFilStr { public Io_url Url() {return url;} public IoEngine_xrg_saveFilStr Url_(Io_url val) {url = val; return this;} Io_url url; public String Text() {return text;} public IoEngine_xrg_saveFilStr Text_(String val) {text = val; return this;} private String text = ""; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java b/100_core/src/gplx/core/ios/IoEngine_xrg_xferDir.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_xferDir.java index e4448250e..378e9f6bb 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_xferDir.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.criterias.*; public class IoEngine_xrg_xferDir { public boolean Type_move() {return move;} public boolean Type_copy() {return !move;} private boolean move = false; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_xferFil.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java rename to 100_core/src/gplx/core/ios/IoEngine_xrg_xferFil.java index f0a5975f5..1e9b606ac 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_xferFil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngine_xrg_xferFil { public boolean Type_move() {return move;} private boolean move = false; public Io_url Src() {return src;} Io_url src; diff --git a/100_core/src_200_io/gplx/ios/IoErr.java b/100_core/src/gplx/core/ios/IoErr.java similarity index 91% rename from 100_core/src_200_io/gplx/ios/IoErr.java rename to 100_core/src/gplx/core/ios/IoErr.java index 8114f278e..78560ab70 100644 --- a/100_core/src_200_io/gplx/ios/IoErr.java +++ b/100_core/src/gplx/core/ios/IoErr.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoErr { - public static String Namespace = "gplx.ios."; + public static String Namespace = "gplx.core.ios."; public static String FileIsReadOnly_key = Namespace + "FileIsReadOnlyError"; public static String FileNotFound_key = Namespace + "FileNotFoundError"; public static Err FileIsReadOnly(Io_url url) { diff --git a/100_core/src_200_io/gplx/ios/IoItmAttrib.java b/100_core/src/gplx/core/ios/IoItmAttrib.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoItmAttrib.java rename to 100_core/src/gplx/core/ios/IoItmAttrib.java index 1772e57d0..e60249725 100644 --- a/100_core/src_200_io/gplx/ios/IoItmAttrib.java +++ b/100_core/src/gplx/core/ios/IoItmAttrib.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmAttrib { public boolean ReadOnly() {return readOnly;} public IoItmAttrib ReadOnly_() {return ReadOnly_(true);} public IoItmAttrib ReadOnly_(boolean val) {readOnly = val; return this;} private boolean readOnly; public boolean Hidden() {return hidden;} public IoItmAttrib Hidden_() {return Hidden_(true);} public IoItmAttrib Hidden_(boolean val) {hidden = val; return this;} private boolean hidden; diff --git a/100_core/src_200_io/gplx/ios/IoItmClassXtn.java b/100_core/src/gplx/core/ios/IoItmClassXtn.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoItmClassXtn.java rename to 100_core/src/gplx/core/ios/IoItmClassXtn.java index 16a6d7e7c..51dca4100 100644 --- a/100_core/src_200_io/gplx/ios/IoItmClassXtn.java +++ b/100_core/src/gplx/core/ios/IoItmClassXtn.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; 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_200_io/gplx/ios/IoItmDir.java b/100_core/src/gplx/core/ios/IoItmDir.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoItmDir.java rename to 100_core/src/gplx/core/ios/IoItmDir.java index 04371ae7e..6538167e7 100644 --- a/100_core/src_200_io/gplx/ios/IoItmDir.java +++ b/100_core/src/gplx/core/ios/IoItmDir.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.criterias.*; public class IoItmDir extends IoItm_base { public boolean Exists() {return exists;} public void Exists_set(boolean v) {exists = v;} private boolean exists = true; diff --git a/100_core/src_200_io/gplx/ios/IoItmDir_.java b/100_core/src/gplx/core/ios/IoItmDir_.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoItmDir_.java rename to 100_core/src/gplx/core/ios/IoItmDir_.java index 91eba13a1..88193e1fe 100644 --- a/100_core/src_200_io/gplx/ios/IoItmDir_.java +++ b/100_core/src/gplx/core/ios/IoItmDir_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmDir_ { public static IoItmDir as_(Object obj) {return obj instanceof IoItmDir ? (IoItmDir)obj : null;} public static final IoItmDir Null = null_(); diff --git a/100_core/src_200_io/gplx/ios/IoItmFil.java b/100_core/src/gplx/core/ios/IoItmFil.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoItmFil.java rename to 100_core/src/gplx/core/ios/IoItmFil.java index d02d8b8d8..cd291c822 100644 --- a/100_core/src_200_io/gplx/ios/IoItmFil.java +++ b/100_core/src/gplx/core/ios/IoItmFil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmFil extends IoItm_base { @Override public int TypeId() {return IoItmFil.Type_Fil;} @Override public boolean Type_dir() {return false;} @Override public boolean Type_fil() {return true;} public static final int Type_Fil = 2; public boolean Exists() {return size != Size_invalid;} // NOTE: questionable logic, but preserved for historical reasons; requires that length be set to -1 if !.exists diff --git a/100_core/src_200_io/gplx/ios/IoItmFil_.java b/100_core/src/gplx/core/ios/IoItmFil_.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoItmFil_.java rename to 100_core/src/gplx/core/ios/IoItmFil_.java index 9f847ce5a..667d58800 100644 --- a/100_core/src_200_io/gplx/ios/IoItmFil_.java +++ b/100_core/src/gplx/core/ios/IoItmFil_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmFil_ { public static IoItmFil as_(Object obj) {return obj instanceof IoItmFil ? (IoItmFil)obj : null;} public static final String diff --git a/100_core/src_200_io/gplx/ios/IoItmFil_mem.java b/100_core/src/gplx/core/ios/IoItmFil_mem.java similarity index 92% rename from 100_core/src_200_io/gplx/ios/IoItmFil_mem.java rename to 100_core/src/gplx/core/ios/IoItmFil_mem.java index c313a3e02..2eb242c43 100644 --- a/100_core/src_200_io/gplx/ios/IoItmFil_mem.java +++ b/100_core/src/gplx/core/ios/IoItmFil_mem.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.ios; import gplx.*; -import gplx.ios.*; /*IoStream_mem*/ import gplx.texts.*; /*Encoding_*/ +package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.*; /*IoStream_mem*/ import gplx.core.texts.*; /*Encoding_*/ class IoItmFil_mem extends IoItmFil { public static IoItmFil_mem as_(Object obj) {return obj instanceof IoItmFil_mem ? (IoItmFil_mem)obj : null;} @gplx.Internal protected IoStream_mem Stream() {return stream;} IoStream_mem stream; // NOTE: using stream instead of Text, b/c no events for IoStream.Dispose; ex: stream.OpenStreamWrite; stream.Write("hi"); stream.Dispose(); "hi" would not be saved if Text is member variable @Override public long Size() {return (int)stream.Len();} diff --git a/100_core/src_200_io/gplx/ios/IoItmHash.java b/100_core/src/gplx/core/ios/IoItmHash.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoItmHash.java rename to 100_core/src/gplx/core/ios/IoItmHash.java index 210654155..f3d55f30b 100644 --- a/100_core/src_200_io/gplx/ios/IoItmHash.java +++ b/100_core/src/gplx/core/ios/IoItmHash.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmHash extends Ordered_hash_base { public Io_url Url() {return url;} Io_url url; public void Add(IoItm_base itm) {Add_base(MakeKey(itm.Url()), itm);} diff --git a/100_core/src_200_io/gplx/ios/IoItmList.java b/100_core/src/gplx/core/ios/IoItmList.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoItmList.java rename to 100_core/src/gplx/core/ios/IoItmList.java index 4c7e01c13..c3941edae 100644 --- a/100_core/src_200_io/gplx/ios/IoItmList.java +++ b/100_core/src/gplx/core/ios/IoItmList.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.lists.*; /*Ordered_hash_base*/ public class IoItmList extends Ordered_hash_base { public boolean Has(Io_url url) {return Has_base(MakeKey(url));} diff --git a/100_core/src_200_io/gplx/ios/IoItm_base.java b/100_core/src/gplx/core/ios/IoItm_base.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoItm_base.java rename to 100_core/src/gplx/core/ios/IoItm_base.java index d77cd2659..a95c1072b 100644 --- a/100_core/src_200_io/gplx/ios/IoItm_base.java +++ b/100_core/src/gplx/core/ios/IoItm_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public abstract class IoItm_base implements GfoInvkAble, CompareAble { public abstract int TypeId(); public abstract boolean Type_dir(); public abstract boolean Type_fil(); public Io_url Url() {return ownerDir == null ? url : ownerDir.Url().GenSubFil(name); /*NOTE: must call .Url*/} Io_url url; diff --git a/100_core/src_200_io/gplx/ios/IoItm_base_.java b/100_core/src/gplx/core/ios/IoItm_base_.java similarity index 93% rename from 100_core/src_200_io/gplx/ios/IoItm_base_.java rename to 100_core/src/gplx/core/ios/IoItm_base_.java index 39d34b5ce..d7b7add63 100644 --- a/100_core/src_200_io/gplx/ios/IoItm_base_.java +++ b/100_core/src/gplx/core/ios/IoItm_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItm_base_ { public static IoItm_base as_(Object obj) {return obj instanceof IoItm_base ? (IoItm_base)obj : null;} public static final String diff --git a/100_core/src_200_io/gplx/ios/IoRecycleBin.java b/100_core/src/gplx/core/ios/IoRecycleBin.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoRecycleBin.java rename to 100_core/src/gplx/core/ios/IoRecycleBin.java index 836aa3dae..5670ce880 100644 --- a/100_core/src_200_io/gplx/ios/IoRecycleBin.java +++ b/100_core/src/gplx/core/ios/IoRecycleBin.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class IoRecycleBin { public void Send(Io_url url) {Send_xrg(url).Exec();} diff --git a/100_core/src_200_io/gplx/ios/IoStream.java b/100_core/src/gplx/core/ios/IoStream.java similarity index 93% rename from 100_core/src_200_io/gplx/ios/IoStream.java rename to 100_core/src/gplx/core/ios/IoStream.java index 2cae01fb2..7b0e8c88d 100644 --- a/100_core/src_200_io/gplx/ios/IoStream.java +++ b/100_core/src/gplx/core/ios/IoStream.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface IoStream extends RlsAble { Object UnderRdr(); Io_url Url(); diff --git a/100_core/src_200_io/gplx/ios/IoStream_.java b/100_core/src/gplx/core/ios/IoStream_.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoStream_.java rename to 100_core/src/gplx/core/ios/IoStream_.java index 86e1cb34c..1888202a6 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_.java +++ b/100_core/src/gplx/core/ios/IoStream_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; diff --git a/100_core/src_200_io/gplx/ios/IoStream_mem.java b/100_core/src/gplx/core/ios/IoStream_mem.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoStream_mem.java rename to 100_core/src/gplx/core/ios/IoStream_mem.java index 6bf6897bb..01847ef75 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_mem.java +++ b/100_core/src/gplx/core/ios/IoStream_mem.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.ios; import gplx.*; -import gplx.texts.*; /*Encoding_*/ +package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.texts.*; /*Encoding_*/ class IoStream_mem extends IoStream_base { @Override public Io_url Url() {return url;} Io_url url; @Override public Object UnderRdr() {throw Err_.new_unimplemented();} // NOTE: should not use System.IO.MemoryStream, b/c resized data will not be captured in this instance's buffer diff --git a/100_core/src_200_io/gplx/ios/IoStream_mem_tst.java b/100_core/src/gplx/core/ios/IoStream_mem_tst.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoStream_mem_tst.java rename to 100_core/src/gplx/core/ios/IoStream_mem_tst.java index 1d8601494..ce896f65d 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_mem_tst.java +++ b/100_core/src/gplx/core/ios/IoStream_mem_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; //using System.IO; /*Stream*/ public class IoStream_mem_tst { @Test public void Write() { // confirm that changes written to Stream acquired via .AdpObj are written to IoStream_mem.Buffer diff --git a/100_core/src_200_io/gplx/ios/IoStream_mock.java b/100_core/src/gplx/core/ios/IoStream_mock.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/IoStream_mock.java rename to 100_core/src/gplx/core/ios/IoStream_mock.java index 7ef426cb8..f89baedec 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_mock.java +++ b/100_core/src/gplx/core/ios/IoStream_mock.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoStream_mock implements IoStream { public byte[] Data_bry() {return data_bry;} public IoStream_mock Data_bry_(byte[] v) {data_bry = v; data_bry_len = v.length; return this;} private byte[] data_bry; int data_bry_len; public int Data_bry_pos() {return data_bry_pos;} int data_bry_pos; diff --git a/100_core/src_200_io/gplx/ios/IoStream_mock_tst.java b/100_core/src/gplx/core/ios/IoStream_mock_tst.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoStream_mock_tst.java rename to 100_core/src/gplx/core/ios/IoStream_mock_tst.java index d3f64f0e7..29b7d7f64 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_mock_tst.java +++ b/100_core/src/gplx/core/ios/IoStream_mock_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoStream_mock_tst { @Before public void init() {fxt.Clear();} IoStream_mock_fxt fxt = new IoStream_mock_fxt(); diff --git a/100_core/src_200_io/gplx/ios/IoStream_stream_rdr.java b/100_core/src/gplx/core/ios/IoStream_stream_rdr.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoStream_stream_rdr.java rename to 100_core/src/gplx/core/ios/IoStream_stream_rdr.java index 7030826d3..08b4e11e1 100644 --- a/100_core/src_200_io/gplx/ios/IoStream_stream_rdr.java +++ b/100_core/src/gplx/core/ios/IoStream_stream_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoStream_stream_rdr implements IoStream { public int Read(byte[] bfr, int bfr_bgn, int bfr_len) { try { diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfo.java b/100_core/src/gplx/core/ios/IoUrlInfo.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/IoUrlInfo.java rename to 100_core/src/gplx/core/ios/IoUrlInfo.java index 90838b954..bdf50a433 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfo.java +++ b/100_core/src/gplx/core/ios/IoUrlInfo.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface IoUrlInfo { String Key(); byte DirSpr_byte(); diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java b/100_core/src/gplx/core/ios/IoUrlInfoRegy.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java rename to 100_core/src/gplx/core/ios/IoUrlInfoRegy.java index ab5f9449a..a54821cab 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java +++ b/100_core/src/gplx/core/ios/IoUrlInfoRegy.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoUrlInfoRegy implements GfoInvkAble { public void Reg(IoUrlInfo info) {hash.Add_if_dupe_use_nth(info.Key(), info);} public IoUrlInfo Match(String raw) { diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfo_.java b/100_core/src/gplx/core/ios/IoUrlInfo_.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoUrlInfo_.java rename to 100_core/src/gplx/core/ios/IoUrlInfo_.java index 07fb1ccc4..ea8f2a67b 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfo_.java +++ b/100_core/src/gplx/core/ios/IoUrlInfo_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoUrlInfo_ { public static final IoUrlInfo Nil = IoUrlInfo_nil.Instance; public static final IoUrlInfo Wnt = IoUrlInfo_wnt.Instance; diff --git a/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java b/100_core/src/gplx/core/ios/IoUrlTypeRegy.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java rename to 100_core/src/gplx/core/ios/IoUrlTypeRegy.java index bb3292ff4..ccf6cb4cc 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java +++ b/100_core/src/gplx/core/ios/IoUrlTypeRegy.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class IoUrlTypeRegy implements GfoInvkAble { public String[] FetchAryOr(String key, String... or) { diff --git a/100_core/src_200_io/gplx/ios/IoZipWkr.java b/100_core/src/gplx/core/ios/IoZipWkr.java similarity index 89% rename from 100_core/src_200_io/gplx/ios/IoZipWkr.java rename to 100_core/src/gplx/core/ios/IoZipWkr.java index 3b3127fde..37f66feb9 100644 --- a/100_core/src_200_io/gplx/ios/IoZipWkr.java +++ b/100_core/src/gplx/core/ios/IoZipWkr.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.stores.*; /*GfoNdeRdr_*/ public class IoZipWkr { public Io_url ExeUrl() {return (Io_url)GfoRegy.Instance.FetchValOrFail(Regy_ExeUrl);} @@ -30,7 +30,7 @@ public class IoZipWkr { } ProcessAdp process = new ProcessAdp(); public static IoZipWkr regy_() {return new IoZipWkr();} - static final String Regy_ExeUrl = "gplx.ios.IoZipWkr.ExeUrl", Regy_ExeArgFmt = "gplx.ios.IoZipWkr.ExeArgFmt"; + 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) { GfoRegy.Instance.RegObj(Regy_ExeUrl, exeUrl); GfoRegy.Instance.RegObj(Regy_ExeArgFmt, expandArgs); diff --git a/100_core/src_200_io/gplx/ios/IoZipWkr_tst.java b/100_core/src/gplx/core/ios/IoZipWkr_tst.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/IoZipWkr_tst.java rename to 100_core/src/gplx/core/ios/IoZipWkr_tst.java index 0e84395c1..1c56abcdf 100644 --- a/100_core/src_200_io/gplx/ios/IoZipWkr_tst.java +++ b/100_core/src/gplx/core/ios/IoZipWkr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoZipWkr_tst { @Test public void Basic() { diff --git a/100_core/src_200_io/gplx/ios/Io_download_fmt.java b/100_core/src/gplx/core/ios/Io_download_fmt.java similarity index 97% rename from 100_core/src_200_io/gplx/ios/Io_download_fmt.java rename to 100_core/src/gplx/core/ios/Io_download_fmt.java index e764700fd..4c3f23c80 100644 --- a/100_core/src_200_io/gplx/ios/Io_download_fmt.java +++ b/100_core/src/gplx/core/ios/Io_download_fmt.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.brys.*; 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")); diff --git a/100_core/src_200_io/gplx/ios/Io_download_fmt_tst.java b/100_core/src/gplx/core/ios/Io_download_fmt_tst.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/Io_download_fmt_tst.java rename to 100_core/src/gplx/core/ios/Io_download_fmt_tst.java index dff9305ce..d7527223a 100644 --- a/100_core/src_200_io/gplx/ios/Io_download_fmt_tst.java +++ b/100_core/src/gplx/core/ios/Io_download_fmt_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_download_fmt_tst { Io_download_fmt_fxt fxt = new Io_download_fmt_fxt(); diff --git a/100_core/src_200_io/gplx/ios/Io_fil.java b/100_core/src/gplx/core/ios/Io_fil.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/Io_fil.java rename to 100_core/src/gplx/core/ios/Io_fil.java index 452c7014d..36348805a 100644 --- a/100_core/src_200_io/gplx/ios/Io_fil.java +++ b/100_core/src/gplx/core/ios/Io_fil.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_fil implements gplx.CompareAble { public Io_fil(Io_url url, String data) {this.url = url; this.data = data;} public Io_url Url() {return url;} public Io_fil Url_(Io_url v) {url = v; return this;} Io_url url; diff --git a/100_core/src_200_io/gplx/ios/Io_fil_mkr.java b/100_core/src/gplx/core/ios/Io_fil_mkr.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/Io_fil_mkr.java rename to 100_core/src/gplx/core/ios/Io_fil_mkr.java index 09f38a499..8054295c1 100644 --- a/100_core/src_200_io/gplx/ios/Io_fil_mkr.java +++ b/100_core/src/gplx/core/ios/Io_fil_mkr.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_fil_mkr { private final List_adp list = List_adp_.new_(); public Io_fil_mkr Add(String url, String data) {return Add(Io_url_.mem_fil_(url), data);} diff --git a/100_core/src_200_io/gplx/ios/Io_size_.java b/100_core/src/gplx/core/ios/Io_size_.java similarity index 93% rename from 100_core/src_200_io/gplx/ios/Io_size_.java rename to 100_core/src/gplx/core/ios/Io_size_.java index e8b2b2a23..f1bd4e0d4 100644 --- a/100_core/src_200_io/gplx/ios/Io_size_.java +++ b/100_core/src/gplx/core/ios/Io_size_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_size_ { public static String To_str(long val) { long cur = val; int pow = 0; @@ -109,7 +109,7 @@ class Io_size_fmtr_arg implements Bry_fmtr_arg { } long div = (long)Math_.Pow((long)1024, (long)pow); Decimal_adp val_decimal = Decimal_adp_.divide_(val, div); - bfr.Add_str(val_decimal.To_str("#,###.000")).Add_byte(Byte_ascii.Space).Add(gplx.ios.Io_size_.Units_bry[pow]); + bfr.Add_str_a7(val_decimal.To_str("#,###.000")).Add_byte(Byte_ascii.Space).Add(gplx.core.ios.Io_size_.Units_bry[pow]); if (suffix != null) bfr.Add(suffix); } diff --git a/100_core/src_200_io/gplx/ios/Io_size__tst.java b/100_core/src/gplx/core/ios/Io_size__tst.java similarity index 96% rename from 100_core/src_200_io/gplx/ios/Io_size__tst.java rename to 100_core/src/gplx/core/ios/Io_size__tst.java index 127f86ec1..19976faae 100644 --- a/100_core/src_200_io/gplx/ios/Io_size__tst.java +++ b/100_core/src/gplx/core/ios/Io_size__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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_size__tst { private Io_size__fxt fxt = new Io_size__fxt(); diff --git a/100_core/src_200_io/gplx/ios/Io_stream_.java b/100_core/src/gplx/core/ios/Io_stream_.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/Io_stream_.java rename to 100_core/src/gplx/core/ios/Io_stream_.java index 52289e190..bff902396 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_.java +++ b/100_core/src/gplx/core/ios/Io_stream_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_stream_ { // SERIALIZED public static final byte Tid_null = 0, Tid_raw = 1, Tid_zip = 2, Tid_gzip = 3, Tid_bzip2 = 4; public static final String Ext_zip = ".zip", Ext_gz = ".gz", Ext_bz2 = ".bz2"; diff --git a/100_core/src_200_io/gplx/ios/Io_stream_rdr.java b/100_core/src/gplx/core/ios/Io_stream_rdr.java similarity index 93% rename from 100_core/src_200_io/gplx/ios/Io_stream_rdr.java rename to 100_core/src/gplx/core/ios/Io_stream_rdr.java index 3b5585a0a..da30a91fc 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_rdr.java +++ b/100_core/src/gplx/core/ios/Io_stream_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_stream_rdr extends RlsAble { byte Tid(); boolean Exists(); diff --git a/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java b/100_core/src/gplx/core/ios/Io_stream_rdr_.java similarity index 90% rename from 100_core/src_200_io/gplx/ios/Io_stream_rdr_.java rename to 100_core/src/gplx/core/ios/Io_stream_rdr_.java index ec3e71aed..d7c0de45a 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java +++ b/100_core/src/gplx/core/ios/Io_stream_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_stream_rdr_ { public static Io_stream_rdr file_(Io_url url) {return new Io_stream_rdr_file().Url_(url);} public static Io_stream_rdr file_(java.io.InputStream strm) {return new Io_stream_rdr_file().Under_(strm);} @@ -24,10 +24,10 @@ public class Io_stream_rdr_ { public static Io_stream_rdr bzip2_(Io_url url) {return new Io_stream_rdr_bzip2().Url_(url);} public static Io_stream_rdr new_by_url_(Io_url url) { String ext = url.Ext(); - if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.ios.Io_stream_rdr_.zip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.ios.Io_stream_rdr_.gzip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.ios.Io_stream_rdr_.bzip2_(url); - else return gplx.ios.Io_stream_rdr_.file_(url); + if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.Io_stream_rdr_.zip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.Io_stream_rdr_.gzip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.Io_stream_rdr_.bzip2_(url); + else return gplx.core.ios.Io_stream_rdr_.file_(url); } public static Io_stream_rdr new_by_tid_(byte tid) { switch (tid) { @@ -58,7 +58,7 @@ public class Io_stream_rdr_ { byte[] bry = new byte[4096]; while (true) { int read = rdr.Read(bry, 0, 4096); - if (read < gplx.ios.Io_stream_rdr_.Read_done_compare) break; + if (read < gplx.core.ios.Io_stream_rdr_.Read_done_compare) break; rv.Add_mid(bry, 0, read); } } finally {rdr.Rls();} @@ -95,7 +95,7 @@ public class Io_stream_rdr_ { bry_len = end - cur; if (cur == end) break; // no more bytes needed; break; EX: 8 kb bry passed; 1st pass is 8kb; 2nd pass is 0 and cur == end int read = stream.read(bry, cur, bry_len); - if (read == gplx.ios.Io_stream_rdr_.Read_done) // read done; end + if (read == gplx.core.ios.Io_stream_rdr_.Read_done) // read done; end break; rv += read; cur += read; @@ -179,7 +179,7 @@ class Io_stream_rdr_file extends Io_stream_rdr_base { if (!Io_mgr.Instance.Exists(url)) stream = Wrap_stream(new java.io.ByteArrayInputStream(Bry_.Empty)); else { - if (url.Info().EngineKey() == gplx.ios.IoEngine_.MemKey) + if (url.Info().EngineKey() == IoEngine_.MemKey) stream = Wrap_stream(new java.io.ByteArrayInputStream(Io_mgr.Instance.LoadFilBry(url.Xto_api()))); else stream = Wrap_stream(new java.io.FileInputStream(url.Xto_api())); @@ -210,9 +210,9 @@ class Io_stream_rdr_zip implements Io_stream_rdr { try { while (true){ int read = zip_stream.read(bry, bgn, len); - if (read == gplx.ios.Io_stream_rdr_.Read_done) { + if (read == Io_stream_rdr_.Read_done) { if (zip_stream.getNextEntry() == null) - return gplx.ios.Io_stream_rdr_.Read_done; + return Io_stream_rdr_.Read_done; } else return read; @@ -236,13 +236,13 @@ class Io_stream_rdr_gzip extends Io_stream_rdr_base { int total_read = 0; while (true) { // NOTE: the gz stream reads partially; (request 100; only get back 10); keep reading until entire bfr is full or -1 int read = stream.read(bry, bgn, len); - if (read == gplx.ios.Io_stream_rdr_.Read_done) break; + if (read == Io_stream_rdr_.Read_done) break; total_read += read; if (total_read >= len) break; // entire bfr full; stop bgn += read; // increase bgn by amount read len -= read; // decrease len by amount read } - return total_read == 0 ? gplx.ios.Io_stream_rdr_.Read_done : total_read; // gzip seems to allow 0 bytes read (bz2 and zip return -1 instead); normalize return to -1; + return total_read == 0 ? Io_stream_rdr_.Read_done : total_read; // gzip seems to allow 0 bytes read (bz2 and zip return -1 instead); normalize return to -1; } catch (Exception e) { throw Err_.new_exc(e, "io", "read failed", "bgn", bgn, "len", len); diff --git a/100_core/src_200_io/gplx/ios/Io_stream_rdr_tst.java b/100_core/src/gplx/core/ios/Io_stream_rdr_tst.java similarity index 95% rename from 100_core/src_200_io/gplx/ios/Io_stream_rdr_tst.java rename to 100_core/src/gplx/core/ios/Io_stream_rdr_tst.java index b72d27fc3..04383596b 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_rdr_tst.java +++ b/100_core/src/gplx/core/ios/Io_stream_rdr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_stream_rdr_tst { @Before public void init() {fxt.Clear();} private Io_stream_rdr_fxt fxt = new Io_stream_rdr_fxt(); diff --git a/100_core/src_200_io/gplx/ios/Io_stream_wtr.java b/100_core/src/gplx/core/ios/Io_stream_wtr.java similarity index 93% rename from 100_core/src_200_io/gplx/ios/Io_stream_wtr.java rename to 100_core/src/gplx/core/ios/Io_stream_wtr.java index 3b89f1cb2..77d4286fc 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_wtr.java +++ b/100_core/src/gplx/core/ios/Io_stream_wtr.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_stream_wtr extends RlsAble { byte Tid(); Io_url Url(); Io_stream_wtr Url_(Io_url v); diff --git a/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java b/100_core/src/gplx/core/ios/Io_stream_wtr_.java similarity index 89% rename from 100_core/src_200_io/gplx/ios/Io_stream_wtr_.java rename to 100_core/src/gplx/core/ios/Io_stream_wtr_.java index 82f589802..b6487eee1 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java +++ b/100_core/src/gplx/core/ios/Io_stream_wtr_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_stream_wtr_ { public static Io_stream_wtr bzip2_(Io_url url) {return new Io_stream_wtr_bzip2().Url_(url);} public static Io_stream_wtr gzip_(Io_url url) {return new Io_stream_wtr_gzip().Url_(url);} @@ -23,10 +23,10 @@ public class Io_stream_wtr_ { public static Io_stream_wtr file_(Io_url url) {return new Io_stream_wtr_file().Url_(url);} public static Io_stream_wtr new_by_url_(Io_url url) { String ext = url.Ext(); - if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.ios.Io_stream_wtr_.zip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.ios.Io_stream_wtr_.gzip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.ios.Io_stream_wtr_.bzip2_(url); - else return gplx.ios.Io_stream_wtr_.file_(url); + if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.Io_stream_wtr_.zip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.Io_stream_wtr_.gzip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.Io_stream_wtr_.bzip2_(url); + else return gplx.core.ios.Io_stream_wtr_.file_(url); } public static Io_stream_wtr new_by_mem(Bry_bfr bfr, byte tid) { Io_stream_wtr wtr = new_by_tid_(tid).Url_(Io_url_.Empty); @@ -35,10 +35,10 @@ public class Io_stream_wtr_ { } public static Io_stream_wtr new_by_tid_(byte v) { switch (v) { - case gplx.ios.Io_stream_.Tid_raw : return new Io_stream_wtr_file(); - case gplx.ios.Io_stream_.Tid_zip : return new Io_stream_wtr_zip(); - case gplx.ios.Io_stream_.Tid_gzip : return new Io_stream_wtr_gzip(); - case gplx.ios.Io_stream_.Tid_bzip2 : return new Io_stream_wtr_bzip2(); + case gplx.core.ios.Io_stream_.Tid_raw : return new Io_stream_wtr_file(); + case gplx.core.ios.Io_stream_.Tid_zip : return new Io_stream_wtr_zip(); + case gplx.core.ios.Io_stream_.Tid_gzip : return new Io_stream_wtr_gzip(); + case gplx.core.ios.Io_stream_.Tid_bzip2 : return new Io_stream_wtr_bzip2(); default : throw Err_.new_unhandled(v); } } @@ -60,7 +60,7 @@ public class Io_stream_wtr_ { download_progress.Bgn(rdr.Len()); while (true) { int read = rdr.Read(bry, 0, 4096); - if (read < gplx.ios.Io_stream_rdr_.Read_done_compare) break; + if (read < gplx.core.ios.Io_stream_rdr_.Read_done_compare) break; if (download_progress != Io_download_fmt.Null) download_progress.Prog(read); wtr.Write(bry, 0, read); diff --git a/100_core/src_200_io/gplx/ios/Io_url_obj_ref.java b/100_core/src/gplx/core/ios/Io_url_obj_ref.java similarity index 94% rename from 100_core/src_200_io/gplx/ios/Io_url_obj_ref.java rename to 100_core/src/gplx/core/ios/Io_url_obj_ref.java index afb8fa113..c67719c22 100644 --- a/100_core/src_200_io/gplx/ios/Io_url_obj_ref.java +++ b/100_core/src/gplx/core/ios/Io_url_obj_ref.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_url_obj_ref { public Io_url Val() {return val;} public Io_url_obj_ref Val_(Io_url v) {val = v; return this;} private Io_url val; public String Val_as_str() {return val.Raw();} diff --git a/100_core/src_000_err/gplx/Gfo_msg_data.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_data.java similarity index 95% rename from 100_core/src_000_err/gplx/Gfo_msg_data.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_data.java index 4d1456804..e76f0c124 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_data.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_data.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_data { public int Uid() {return uid;} int uid = uid_next++; public Gfo_msg_itm Item() {return item;} Gfo_msg_itm item; diff --git a/100_core/src_000_err/gplx/Gfo_msg_grp.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java similarity index 95% rename from 100_core/src_000_err/gplx/Gfo_msg_grp.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java index 1106ed587..a948b69a8 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_grp.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_grp implements Gfo_msg_obj { public Gfo_msg_grp(Gfo_msg_grp owner, int uid, byte[] key) { this.owner = owner; this.uid = uid; this.key = key; this.key_str = String_.new_a7(key); diff --git a/100_core/src_000_err/gplx/Gfo_msg_grp_.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java similarity index 95% rename from 100_core/src_000_err/gplx/Gfo_msg_grp_.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java index c45cf1827..bd5fa9c8c 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_grp_.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_grp_ { public static final Gfo_msg_grp Root_gplx = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.new_a7("gplx")); public static final Gfo_msg_grp Root = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.Empty); diff --git a/100_core/src_000_err/gplx/Gfo_msg_itm.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java similarity index 95% rename from 100_core/src_000_err/gplx/Gfo_msg_itm.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java index dac56b62b..8827a7bf0 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_itm.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_itm implements Gfo_msg_obj { public Gfo_msg_itm(Gfo_msg_grp owner, int uid, byte cmd, byte[] key_bry, byte[] fmt, boolean add_to_owner) { this.owner = owner; this.uid = uid; this.cmd = cmd; this.key_bry = key_bry; this.fmt = fmt; diff --git a/100_core/src_000_err/gplx/Gfo_msg_itm_.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm_.java similarity index 95% rename from 100_core/src_000_err/gplx/Gfo_msg_itm_.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_itm_.java index e416722f1..29ffbbae6 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_itm_.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm_.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_itm_ { public static final byte Cmd_null = 0, Cmd_log = 1, Cmd_note = 2, Cmd_warn = 3, Cmd_stop = 4, Cmd_fail = 5; public static final byte[][] CmdBry = new byte[][] {Object_.Bry__null, Bry_.new_a7("log"), Bry_.new_a7("note"), Bry_.new_a7("warn"), Bry_.new_a7("stop"), Bry_.new_a7("fail")}; diff --git a/100_core/src_000_err/gplx/Gfo_msg_log.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_log.java similarity index 96% rename from 100_core/src_000_err/gplx/Gfo_msg_log.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_log.java index 112deb916..046776361 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_log.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_log.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_log { public Gfo_msg_log(String root_key) {root = new Gfo_msg_root(root_key);} Gfo_msg_root root; public int Ary_len() {return ary_idx;} diff --git a/100_core/src_000_err/gplx/Gfo_msg_obj.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_obj.java similarity index 92% rename from 100_core/src_000_err/gplx/Gfo_msg_obj.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_obj.java index 0e166b958..d229de941 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_obj.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_obj.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.log_msgs; import gplx.*; import gplx.core.*; public interface Gfo_msg_obj { String Key_str(); Gfo_msg_obj Subs_get_by_key(String sub_key); diff --git a/100_core/src_000_err/gplx/Gfo_msg_root.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_root.java similarity index 96% rename from 100_core/src_000_err/gplx/Gfo_msg_root.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_root.java index 91a289e76..3248fedea 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_root.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_root.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.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_root { public Gfo_msg_root(String root_key) { this.root_key = root_key; diff --git a/100_core/src_000_err/gplx/Gfo_msg_root_tst.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_root_tst.java similarity index 96% rename from 100_core/src_000_err/gplx/Gfo_msg_root_tst.java rename to 100_core/src/gplx/core/log_msgs/Gfo_msg_root_tst.java index 94fa66dba..29833b6eb 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_root_tst.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_root_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.log_msgs; import gplx.*; import gplx.core.*; import org.junit.*; public class Gfo_msg_root_tst { Gfo_msg_root_fxt fxt = new Gfo_msg_root_fxt(); diff --git a/100_core/src_160_hash/gplx/security/HashAlgo.java b/100_core/src/gplx/core/security/HashAlgo.java similarity index 89% rename from 100_core/src_160_hash/gplx/security/HashAlgo.java rename to 100_core/src/gplx/core/security/HashAlgo.java index 846816c70..51a98fc94 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo.java +++ b/100_core/src/gplx/core/security/HashAlgo.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.security; import gplx.*; +package gplx.core.security; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; -import gplx.ios.*; /*IoStream*/ +import gplx.core.ios.*; /*IoStream*/ public interface HashAlgo { String Key(); String CalcHash(Console_adp dialog, IoStream stream); diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_.java b/100_core/src/gplx/core/security/HashAlgo_.java similarity index 91% rename from 100_core/src_160_hash/gplx/security/HashAlgo_.java rename to 100_core/src/gplx/core/security/HashAlgo_.java index 3ce82e346..8227ef3e8 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_.java +++ b/100_core/src/gplx/core/security/HashAlgo_.java @@ -15,12 +15,12 @@ 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.security; import gplx.*; +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.ios.*; /*IoStream*/import gplx.texts.*; /*Base32Converter*/ +import gplx.core.ios.*; /*IoStream*/import gplx.core.texts.*; /*Base32Converter*/ public class HashAlgo_ { public static final HashAlgo Null = new HashAlgo_null(); public static final HashAlgo Sha1 = HashAlgo_sha1.new_(); @@ -41,18 +41,18 @@ public class HashAlgo_ { } class HashAlgo_null implements HashAlgo { public String Key() {return "HashAlgo_null";} - public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(v)));} + public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.core.ios.IoStream_.ary_(v)));} public String CalcHash(Console_adp dialog, IoStream stream) {return "NullAlgoHash";} } class HashAlgo_md5 implements HashAlgo { public String Key() {return KEY;} public static final String KEY = "md5"; - public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(v)));} + public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, IoStream_.ary_(v)));} public String CalcHash(Console_adp dialog, IoStream stream) {return HashAlgoUtl.CalcHashAsString(dialog, stream, "MD5");} public static HashAlgo_md5 new_() {return new HashAlgo_md5();} HashAlgo_md5() {} } class HashAlgo_sha1 implements HashAlgo { public String Key() {return KEY;} public static final String KEY = "sha1"; - public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(v)));} + public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, IoStream_.ary_(v)));} public String CalcHash(Console_adp dialog, IoStream stream) {return HashAlgoUtl.CalcHashAsString(dialog, stream, "SHA1");} public static HashAlgo_sha1 new_() {return new HashAlgo_sha1();} HashAlgo_sha1() {} } diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_md5_tst.java b/100_core/src/gplx/core/security/HashAlgo_md5_tst.java similarity index 92% rename from 100_core/src_160_hash/gplx/security/HashAlgo_md5_tst.java rename to 100_core/src/gplx/core/security/HashAlgo_md5_tst.java index e226d3576..346a6ef93 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_md5_tst.java +++ b/100_core/src/gplx/core/security/HashAlgo_md5_tst.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.security; import gplx.*; +package gplx.core.security; import gplx.*; import gplx.core.*; import org.junit.*; -import gplx.core.consoles.*; import gplx.ios.*; /*IoStream*/ +import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ public class HashAlgo_md5_tst { @Test public void Empty() { tst_CalcBase16FromString("", "d41d8cd98f00b204e9800998ecf8427e"); diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_sha1_tst.java b/100_core/src/gplx/core/security/HashAlgo_sha1_tst.java similarity index 93% rename from 100_core/src_160_hash/gplx/security/HashAlgo_sha1_tst.java rename to 100_core/src/gplx/core/security/HashAlgo_sha1_tst.java index 2d9547446..24cf3c0b0 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_sha1_tst.java +++ b/100_core/src/gplx/core/security/HashAlgo_sha1_tst.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.security; import gplx.*; +package gplx.core.security; import gplx.*; import gplx.core.*; import org.junit.*; -import gplx.core.consoles.*; import gplx.ios.*; /*IoStream*/ +import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ public class HashAlgo_sha1_tst { @Test public void Empty() { tst_CalcBase16FromString("", "da39a3ee5e6b4b0d3255bfef95601890afd80709"); diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java b/100_core/src/gplx/core/security/HashAlgo_tth192.java similarity index 97% rename from 100_core/src_160_hash/gplx/security/HashAlgo_tth192.java rename to 100_core/src/gplx/core/security/HashAlgo_tth192.java index ba0f60be8..892f6836c 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java +++ b/100_core/src/gplx/core/security/HashAlgo_tth192.java @@ -15,13 +15,13 @@ 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.security; import gplx.*; +package gplx.core.security; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; -import gplx.ios.*; /*IoStream*/ +import gplx.core.ios.*; /*IoStream*/ public class HashAlgo_tth192 implements HashAlgo { public String Key() {return KEY;} public static final String KEY = "tth192"; public int BlockSize() {return blockSize;} public void BlockSize_set(int v) {blockSize = v;} int blockSize = 1024; - public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(v)));} + public byte[] Calc_hash_bry(byte[] v) {return Bry_.new_a7(CalcHash(Console_adp_.Noop, gplx.core.ios.IoStream_.ary_(v)));} public String CalcHash(Console_adp dialog, IoStream stream) { int leafCount = (int)(stream.Len() / blockSize); HashDlgWtr dialogWtr = HashDlgWtr_.Current; diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_tth192_tree_tst.java b/100_core/src/gplx/core/security/HashAlgo_tth192_tree_tst.java similarity index 95% rename from 100_core/src_160_hash/gplx/security/HashAlgo_tth192_tree_tst.java rename to 100_core/src/gplx/core/security/HashAlgo_tth192_tree_tst.java index 455145aaa..c9f0f8e52 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_tth192_tree_tst.java +++ b/100_core/src/gplx/core/security/HashAlgo_tth192_tree_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.security; import gplx.*; +package gplx.core.security; import gplx.*; import gplx.core.*; import org.junit.*; public class HashAlgo_tth192_tree_tst { @Test public void CalcRecursiveHalves() { diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_tth192_tst.java b/100_core/src/gplx/core/security/HashAlgo_tth192_tst.java similarity index 93% rename from 100_core/src_160_hash/gplx/security/HashAlgo_tth192_tst.java rename to 100_core/src/gplx/core/security/HashAlgo_tth192_tst.java index 652145907..ae775b2ad 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_tth192_tst.java +++ b/100_core/src/gplx/core/security/HashAlgo_tth192_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.security; import gplx.*; -import org.junit.*; import gplx.core.consoles.*; import gplx.ios.*; /*IoStream*/ +package gplx.core.security; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ public class HashAlgo_tth192_tst { @Test public void Char0000() {tst_CalcBase32FromString("", "LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ");} @Test public void Char0001() {tst_CalcBase32FromString("\0", "VK54ZIEEVTWNAUI5D5RDFIL37LX2IQNSTAXFKSA");} diff --git a/100_core/src_160_hash/gplx/security/HashDlgWtr_tst.java b/100_core/src/gplx/core/security/HashDlgWtr_tst.java similarity index 89% rename from 100_core/src_160_hash/gplx/security/HashDlgWtr_tst.java rename to 100_core/src/gplx/core/security/HashDlgWtr_tst.java index 74db949a8..bee4fdfa3 100644 --- a/100_core/src_160_hash/gplx/security/HashDlgWtr_tst.java +++ b/100_core/src/gplx/core/security/HashDlgWtr_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.security; import gplx.*; -import org.junit.*; import gplx.core.consoles.*; import gplx.ios.*; /*IoStream*/ +package gplx.core.security; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ public class HashDlgWtr_tst { @Before public void setup() { HashAlgo_tth192 algo = HashAlgo_tth192.new_(); diff --git a/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java similarity index 95% rename from 100_core/src_800_tst/gplx/PerfLogMgr_fxt.java rename to 100_core/src/gplx/core/tests/PerfLogMgr_fxt.java index 95884cc7b..0def28ba9 100644 --- a/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java +++ b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.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.*; import gplx.core.strings.*; public class PerfLogMgr_fxt { public void Init(Io_url url, String text) { diff --git a/100_core/src_150_text/gplx/texts/Base32Converter.java b/100_core/src/gplx/core/texts/Base32Converter.java similarity index 96% rename from 100_core/src_150_text/gplx/texts/Base32Converter.java rename to 100_core/src/gplx/core/texts/Base32Converter.java index 535c9d0b2..c64c76d0e 100644 --- a/100_core/src_150_text/gplx/texts/Base32Converter.java +++ b/100_core/src/gplx/core/texts/Base32Converter.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class Base32Converter { public static String EncodeString(String orig) {return Encode(Bry_.new_u8(orig));} public static String Encode(byte[] raw) { diff --git a/100_core/src_150_text/gplx/texts/Base64Converter.java b/100_core/src/gplx/core/texts/Base64Converter.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/Base64Converter.java rename to 100_core/src/gplx/core/texts/Base64Converter.java index 5b3c340c3..036453836 100644 --- a/100_core/src_150_text/gplx/texts/Base64Converter.java +++ b/100_core/src/gplx/core/texts/Base64Converter.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class Base64Converter { private final static char[] ALPHABET = String_.XtoCharAry("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); private static int[] toInt = null;//new int[128]; diff --git a/100_core/src_150_text/gplx/texts/BaseXXConverter_tst.java b/100_core/src/gplx/core/texts/BaseXXConverter_tst.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/BaseXXConverter_tst.java rename to 100_core/src/gplx/core/texts/BaseXXConverter_tst.java index 9bcaf8cd8..ac6d8d2ec 100644 --- a/100_core/src_150_text/gplx/texts/BaseXXConverter_tst.java +++ b/100_core/src/gplx/core/texts/BaseXXConverter_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; public class BaseXXConverter_tst { @Test public void Base32() { diff --git a/100_core/src_150_text/gplx/texts/CharStream.java b/100_core/src/gplx/core/texts/CharStream.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/CharStream.java rename to 100_core/src/gplx/core/texts/CharStream.java index 5afe29840..1e83e7c42 100644 --- a/100_core/src_150_text/gplx/texts/CharStream.java +++ b/100_core/src/gplx/core/texts/CharStream.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class CharStream { public char[] Ary() {return ary;} char[] ary; public int Len() {return len;} int len; diff --git a/100_core/src_150_text/gplx/texts/CharStream_tst.java b/100_core/src/gplx/core/texts/CharStream_tst.java similarity index 94% rename from 100_core/src_150_text/gplx/texts/CharStream_tst.java rename to 100_core/src/gplx/core/texts/CharStream_tst.java index 535e5d9c9..71fd52931 100644 --- a/100_core/src_150_text/gplx/texts/CharStream_tst.java +++ b/100_core/src/gplx/core/texts/CharStream_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; public class CharStream_tst { @Before public void setup() { diff --git a/100_core/src_150_text/gplx/texts/HexDecUtl.java b/100_core/src/gplx/core/texts/HexDecUtl.java similarity index 97% rename from 100_core/src_150_text/gplx/texts/HexDecUtl.java rename to 100_core/src/gplx/core/texts/HexDecUtl.java index e9fc15104..61681587a 100644 --- a/100_core/src_150_text/gplx/texts/HexDecUtl.java +++ b/100_core/src/gplx/core/texts/HexDecUtl.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class HexDecUtl { public static int parse_or(String raw, int or) { int rv = 0; int digit; int factor = 1, rawLen = String_.Len(raw); diff --git a/100_core/src_150_text/gplx/texts/HexDecUtl_tst.java b/100_core/src/gplx/core/texts/HexDecUtl_tst.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/HexDecUtl_tst.java rename to 100_core/src/gplx/core/texts/HexDecUtl_tst.java index c7d3416da..219dd8ffe 100644 --- a/100_core/src_150_text/gplx/texts/HexDecUtl_tst.java +++ b/100_core/src/gplx/core/texts/HexDecUtl_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; public class HexDecUtl_tst { @Test public void XtoInt() { diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch.java b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch.java similarity index 94% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch.java index 7720263be..e712d566c 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import gplx.langs.regxs.*; public class RegxPatn_cls_ioMatch { public String Raw() {return raw;} private String raw; diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_.java b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_.java similarity index 96% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_.java index 26b6e7cb3..fe86e4ba0 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.langs.regxs.*; public class RegxPatn_cls_ioMatch_ { public static final String Wildcard = "*"; diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_tst.java b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_tst.java similarity index 96% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_tst.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_tst.java index 0e861543b..52d244de9 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_ioMatch_tst.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_ioMatch_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; public class RegxPatn_cls_ioMatch_tst { @Test public void SimpleMatches() { diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like.java b/100_core/src/gplx/core/texts/RegxPatn_cls_like.java similarity index 94% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_like.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_like.java index cb6992244..6d49ea45f 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_like.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import gplx.langs.regxs.*; public class RegxPatn_cls_like { public char Escape() {return escape;} char escape; public static final char EscapeDefault = '|'; diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like_.java b/100_core/src/gplx/core/texts/RegxPatn_cls_like_.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_like_.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_like_.java index 6a5a93f3f..063acb9e6 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like_.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_like_.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.langs.regxs.*; public class RegxPatn_cls_like_ { public static RegxPatn_cls_like parse(String regxRaw, char escape) { diff --git a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like_tst.java b/100_core/src/gplx/core/texts/RegxPatn_cls_like_tst.java similarity index 96% rename from 100_core/src_150_text/gplx/texts/RegxPatn_cls_like_tst.java rename to 100_core/src/gplx/core/texts/RegxPatn_cls_like_tst.java index ffc1b2eee..e6d53b150 100644 --- a/100_core/src_150_text/gplx/texts/RegxPatn_cls_like_tst.java +++ b/100_core/src/gplx/core/texts/RegxPatn_cls_like_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; import gplx.langs.regxs.*; public class RegxPatn_cls_like_tst { @Test public void Basic() { diff --git a/100_core/src_150_text/gplx/texts/StringTableBldr.java b/100_core/src/gplx/core/texts/StringTableBldr.java similarity index 95% rename from 100_core/src_150_text/gplx/texts/StringTableBldr.java rename to 100_core/src/gplx/core/texts/StringTableBldr.java index 39fa868b3..ad5379350 100644 --- a/100_core/src_150_text/gplx/texts/StringTableBldr.java +++ b/100_core/src/gplx/core/texts/StringTableBldr.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class StringTableBldr { public void ClearRows() {rows.Clear();} diff --git a/100_core/src_150_text/gplx/texts/StringTableBldr_tst.java b/100_core/src/gplx/core/texts/StringTableBldr_tst.java similarity index 94% rename from 100_core/src_150_text/gplx/texts/StringTableBldr_tst.java rename to 100_core/src/gplx/core/texts/StringTableBldr_tst.java index 1ca0b4dda..b87bd6768 100644 --- a/100_core/src_150_text/gplx/texts/StringTableBldr_tst.java +++ b/100_core/src/gplx/core/texts/StringTableBldr_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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; import org.junit.*; public class StringTableBldr_tst { @Before public void setup() { diff --git a/100_core/src_150_text/gplx/texts/StringTableCol.java b/100_core/src/gplx/core/texts/StringTableCol.java similarity index 96% rename from 100_core/src_150_text/gplx/texts/StringTableCol.java rename to 100_core/src/gplx/core/texts/StringTableCol.java index 184990856..962a1f0c2 100644 --- a/100_core/src_150_text/gplx/texts/StringTableCol.java +++ b/100_core/src/gplx/core/texts/StringTableCol.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class StringTableCol { public StringTableColAlign Halign() {return halign;} public StringTableCol Halign_(StringTableColAlign val) {halign = val; return this;} StringTableColAlign halign = StringTableColAlign.Left; public int LengthMax() {return lengthMax;} int lengthMax = Int_.Min_value; diff --git a/100_core/src_150_text/gplx/texts/StringTableColAlign.java b/100_core/src/gplx/core/texts/StringTableColAlign.java similarity index 94% rename from 100_core/src_150_text/gplx/texts/StringTableColAlign.java rename to 100_core/src/gplx/core/texts/StringTableColAlign.java index 24e919606..c6b2a2631 100644 --- a/100_core/src_150_text/gplx/texts/StringTableColAlign.java +++ b/100_core/src/gplx/core/texts/StringTableColAlign.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.texts; import gplx.*; +package gplx.core.texts; import gplx.*; import gplx.core.*; public class StringTableColAlign { public int Val() {return val;} int val = 0; public static StringTableColAlign new_(int v) { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdrOpts.java b/100_core/src/gplx/langs/dsvs/DsvDataRdrOpts.java similarity index 95% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdrOpts.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdrOpts.java index 3205f8c9e..df8660f3f 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdrOpts.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdrOpts.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class DsvDataRdrOpts { public boolean HasHeader() {return hasHeader;} public DsvDataRdrOpts HasHeader_(boolean val) {hasHeader = val; return this;} private boolean hasHeader = false; public String NewLineSep() {return newLineSep;} public DsvDataRdrOpts NewLineSep_(String val) {newLineSep = val; return this;} private String newLineSep = String_.CrLf; diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java similarity index 96% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_.java index 83c2cf0a7..bbae049e8 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.stores.dsvs; import gplx.*; import gplx.stores.*; -import gplx.core.strings.*; -import gplx.texts.*; /*CharStream*/ +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; +import gplx.core.strings.*; import gplx.stores.*; +import gplx.core.texts.*; /*CharStream*/ public class DsvDataRdr_ { public static DataRdr dsv_(String text) {return DsvParser.dsv_().ParseAsRdr(text);} public static DataRdr csv_hdr_(String text) {return csv_opts_(text, DsvDataRdrOpts.new_().HasHeader_(true));} diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java similarity index 96% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java index 6c999178c..4abe242cb 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; import gplx.core.strings.*; public class DsvDataRdr_csv_dat_tst { @Before public void setup() { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_dat_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_dat_tst.java similarity index 94% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_dat_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_dat_tst.java index b8849711e..d3b6fb0c0 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_dat_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_dat_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataRdr_dsv_dat_tst { @Before public void setup() {fx.Clear();} DsvDataRdr_fxt fx = DsvDataRdr_fxt.new_(); diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java similarity index 94% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_tst.java index 94bdaf66a..ee159c54c 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_hdr_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataRdr_dsv_hdr_tst { @Before public void setup() {fx.Clear();} DsvDataRdr_fxt fx = DsvDataRdr_fxt.new_(); diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java similarity index 95% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_tst.java index e8dabe8df..890eb0873 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_dsv_misc_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataRdr_dsv_misc_tst { @Before public void setup() {fx.Clear();} DsvDataRdr_fxt fx = DsvDataRdr_fxt.new_(); diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_layout_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java similarity index 95% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_layout_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_tst.java index 5c2592e0a..b2b5ed63c 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_layout_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_layout_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataRdr_layout_tst { @Test public void TableName() { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr.java similarity index 96% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr.java rename to 100_core/src/gplx/langs/dsvs/DsvDataWtr.java index 095fd4007..4f815a3e9 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import gplx.core.strings.*; public class DsvDataWtr extends DataWtr_base implements DataWtr { public void InitWtr(String key, Object val) { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr_.java similarity index 93% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_.java rename to 100_core/src/gplx/langs/dsvs/DsvDataWtr_.java index f13b4b8f3..19707681e 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr_.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class DsvDataWtr_ { public static DsvDataWtr csv_hdr_() { DsvDataWtr rv = new DsvDataWtr(); diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java similarity index 96% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_tst.java index d8ed53ad3..4612ee827 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr_csv_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataWtr_csv_tst { @Test public void Dat_Val_0() { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_tbls_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataWtr_tbls_tst.java similarity index 94% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_tbls_tst.java rename to 100_core/src/gplx/langs/dsvs/DsvDataWtr_tbls_tst.java index 981de747a..4adbaec36 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_tbls_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataWtr_tbls_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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; import org.junit.*; public class DsvDataWtr_tbls_tst { @Before public void setup() { diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvHeaderList.java b/100_core/src/gplx/langs/dsvs/DsvHeaderList.java similarity index 95% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvHeaderList.java rename to 100_core/src/gplx/langs/dsvs/DsvHeaderList.java index 0a87283a4..65a5d0041 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvHeaderList.java +++ b/100_core/src/gplx/langs/dsvs/DsvHeaderList.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class DsvHeaderList { @gplx.Internal protected int Count() {return list.Count();} @gplx.Internal protected DsvHeaderItm Get_at(int i) {return (DsvHeaderItm)list.Get_at(i);} diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvStoreLayout.java b/100_core/src/gplx/langs/dsvs/DsvStoreLayout.java similarity index 95% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvStoreLayout.java rename to 100_core/src/gplx/langs/dsvs/DsvStoreLayout.java index b0070c785..657cfa608 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvStoreLayout.java +++ b/100_core/src/gplx/langs/dsvs/DsvStoreLayout.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class DsvStoreLayout { public DsvHeaderList HeaderList() {return headerList;} DsvHeaderList headerList = DsvHeaderList.new_(); @gplx.Internal protected boolean WriteCmdSequence() {return writeCmdSequence;} @gplx.Internal protected DsvStoreLayout WriteCmdSequence_(boolean val) {writeCmdSequence = val; return this;} private boolean writeCmdSequence; diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvSymbols.java b/100_core/src/gplx/langs/dsvs/DsvSymbols.java similarity index 96% rename from 100_core/src_340_dsv/gplx/stores/dsvs/DsvSymbols.java rename to 100_core/src/gplx/langs/dsvs/DsvSymbols.java index 2e2e5f9ed..aba65be55 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvSymbols.java +++ b/100_core/src/gplx/langs/dsvs/DsvSymbols.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.dsvs; import gplx.*; import gplx.stores.*; +package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; class DsvSymbols { public String FldSep() {return fldSep;} public DsvSymbols FldSep_(String v) {fldSep = v; CmdSequence_set(); return this;} private String fldSep; public String RowSep() {return rowSep;} diff --git a/100_core/src_900_xml/gplx/HierStrBldr.java b/100_core/src/gplx/langs/xmls/HierStrBldr.java similarity index 96% rename from 100_core/src_900_xml/gplx/HierStrBldr.java rename to 100_core/src/gplx/langs/xmls/HierStrBldr.java index c6a797434..59b50f1d4 100644 --- a/100_core/src_900_xml/gplx/HierStrBldr.java +++ b/100_core/src/gplx/langs/xmls/HierStrBldr.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.langs.xmls; import gplx.*; import gplx.langs.*; import gplx.core.strings.*; public class HierStrBldr { public String Root() {return root;} public HierStrBldr Root_(String v) {root = v; return this;} private String root; diff --git a/100_core/src_900_xml/gplx/HierStrBldr_tst.java b/100_core/src/gplx/langs/xmls/HierStrBldr_tst.java similarity index 93% rename from 100_core/src_900_xml/gplx/HierStrBldr_tst.java rename to 100_core/src/gplx/langs/xmls/HierStrBldr_tst.java index 68db38e89..1a5c2aeba 100644 --- a/100_core/src_900_xml/gplx/HierStrBldr_tst.java +++ b/100_core/src/gplx/langs/xmls/HierStrBldr_tst.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.junit.*; -import gplx.ios.*; import gplx.texts.*; +import gplx.core.ios.*; import gplx.core.texts.*; public class HierStrBldr_tst { @Before public void setup() {bldr = new HierStrBldr();} HierStrBldr bldr; @Test public void Hier0() { diff --git a/100_core/src_900_xml/gplx/xmls/XmlAtr.java b/100_core/src/gplx/langs/xmls/XmlAtr.java similarity index 93% rename from 100_core/src_900_xml/gplx/xmls/XmlAtr.java rename to 100_core/src/gplx/langs/xmls/XmlAtr.java index d99b1b427..9128adc0b 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlAtr.java +++ b/100_core/src/gplx/langs/xmls/XmlAtr.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.w3c.dom.Node; public class XmlAtr { public String Name() {return xatr.getNodeName();} diff --git a/100_core/src_900_xml/gplx/xmls/XmlAtrList.java b/100_core/src/gplx/langs/xmls/XmlAtrList.java similarity index 94% rename from 100_core/src_900_xml/gplx/xmls/XmlAtrList.java rename to 100_core/src/gplx/langs/xmls/XmlAtrList.java index 593ab3f61..456f52012 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlAtrList.java +++ b/100_core/src/gplx/langs/xmls/XmlAtrList.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; public class XmlAtrList { diff --git a/100_core/src_900_xml/gplx/xmls/XmlDoc.java b/100_core/src/gplx/langs/xmls/XmlDoc.java similarity index 93% rename from 100_core/src_900_xml/gplx/xmls/XmlDoc.java rename to 100_core/src/gplx/langs/xmls/XmlDoc.java index 7c2df540a..f256f8521 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlDoc.java +++ b/100_core/src/gplx/langs/xmls/XmlDoc.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.w3c.dom.Document; public class XmlDoc { public XmlNde Root() {return new XmlNde(xdoc.getDocumentElement());} diff --git a/100_core/src_900_xml/gplx/xmls/XmlDoc_.java b/100_core/src/gplx/langs/xmls/XmlDoc_.java similarity index 95% rename from 100_core/src_900_xml/gplx/xmls/XmlDoc_.java rename to 100_core/src/gplx/langs/xmls/XmlDoc_.java index 2e1a44598..4bfc065b9 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlDoc_.java +++ b/100_core/src/gplx/langs/xmls/XmlDoc_.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import gplx.Io_url; import java.io.File; import java.io.IOException; diff --git a/100_core/src_900_xml/gplx/xmls/XmlDoc_tst.java b/100_core/src/gplx/langs/xmls/XmlDoc_tst.java similarity index 94% rename from 100_core/src_900_xml/gplx/xmls/XmlDoc_tst.java rename to 100_core/src/gplx/langs/xmls/XmlDoc_tst.java index 98ac85634..19c6c421b 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlDoc_tst.java +++ b/100_core/src/gplx/langs/xmls/XmlDoc_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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.junit.*; public class XmlDoc_tst { String xml; XmlDoc xdoc; XmlNde xnde; diff --git a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java b/100_core/src/gplx/langs/xmls/XmlFileSplitter.java similarity index 95% rename from 100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java rename to 100_core/src/gplx/langs/xmls/XmlFileSplitter.java index fe5399232..cbf92b483 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java +++ b/100_core/src/gplx/langs/xmls/XmlFileSplitter.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import gplx.core.consoles.*; -import gplx.ios.*; -import gplx.texts.*; +import gplx.core.ios.*; +import gplx.core.texts.*; public class XmlFileSplitter { public XmlFileSplitterOpts Opts() {return opts;} XmlFileSplitterOpts opts = new XmlFileSplitterOpts(); public byte[] Hdr() {return hdr;} private byte[] hdr; diff --git a/100_core/src_900_xml/gplx/xmls/XmlFileSplitterOpts.java b/100_core/src/gplx/langs/xmls/XmlFileSplitterOpts.java similarity index 96% rename from 100_core/src_900_xml/gplx/xmls/XmlFileSplitterOpts.java rename to 100_core/src/gplx/langs/xmls/XmlFileSplitterOpts.java index 39825f2d8..b29913c77 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlFileSplitterOpts.java +++ b/100_core/src/gplx/langs/xmls/XmlFileSplitterOpts.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; public class XmlFileSplitterOpts { public int FileSizeMax() {return fileSizeMax;} public XmlFileSplitterOpts FileSizeMax_(int v) {fileSizeMax = v; return this;} int fileSizeMax = 1024 * 1024; public String[] XmlNames() {return xmlNames;} public XmlFileSplitterOpts XmlNames_(String... v) {xmlNames = v; return this;} private String[] xmlNames; diff --git a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java b/100_core/src/gplx/langs/xmls/XmlFileSplitter_tst.java similarity index 95% rename from 100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java rename to 100_core/src/gplx/langs/xmls/XmlFileSplitter_tst.java index d6dbda2a8..6c50bdf25 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java +++ b/100_core/src/gplx/langs/xmls/XmlFileSplitter_tst.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.junit.*; -import gplx.ios.*; import gplx.texts.*; +import gplx.core.ios.*; import gplx.core.texts.*; public class XmlFileSplitter_tst { @Before public void setup() { splitter = new XmlFileSplitter(); diff --git a/100_core/src_900_xml/gplx/xmls/XmlNde.java b/100_core/src/gplx/langs/xmls/XmlNde.java similarity index 96% rename from 100_core/src_900_xml/gplx/xmls/XmlNde.java rename to 100_core/src/gplx/langs/xmls/XmlNde.java index 6b345988b..066750771 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlNde.java +++ b/100_core/src/gplx/langs/xmls/XmlNde.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import java.io.StringWriter; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; diff --git a/100_core/src_900_xml/gplx/xmls/XmlNdeList.java b/100_core/src/gplx/langs/xmls/XmlNdeList.java similarity index 94% rename from 100_core/src_900_xml/gplx/xmls/XmlNdeList.java rename to 100_core/src/gplx/langs/xmls/XmlNdeList.java index fe12b87fd..e8a148574 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlNdeList.java +++ b/100_core/src/gplx/langs/xmls/XmlNdeList.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.w3c.dom.NodeList; public interface XmlNdeList { int Count(); diff --git a/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java b/100_core/src/gplx/langs/xmls/XmlSplitRdr.java similarity index 93% rename from 100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java rename to 100_core/src/gplx/langs/xmls/XmlSplitRdr.java index 0959b6519..26da27779 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java +++ b/100_core/src/gplx/langs/xmls/XmlSplitRdr.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.xmls; import gplx.*; -import gplx.ios.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; +import gplx.core.ios.*; public class XmlSplitRdr { public byte[] CurAry() {return curAry;} private byte[] curAry; public long CurSum() {return curSum;} long curSum; diff --git a/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java b/100_core/src/gplx/langs/xmls/XmlSplitWtr.java similarity index 92% rename from 100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java rename to 100_core/src/gplx/langs/xmls/XmlSplitWtr.java index 35da43aad..18fbf55af 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java +++ b/100_core/src/gplx/langs/xmls/XmlSplitWtr.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.xmls; import gplx.*; -import gplx.ios.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; +import gplx.core.ios.*; public class XmlSplitWtr { public Io_url Url() {return url;} Io_url url; public XmlSplitWtr Init_(Io_url partDir, byte[] hdr, XmlFileSplitterOpts opts) { diff --git a/100_core/src_900_xml/gplx/xmls/Xpath_.java b/100_core/src/gplx/langs/xmls/Xpath_.java similarity index 96% rename from 100_core/src_900_xml/gplx/xmls/Xpath_.java rename to 100_core/src/gplx/langs/xmls/Xpath_.java index 2f9129f5f..88336556c 100644 --- a/100_core/src_900_xml/gplx/xmls/Xpath_.java +++ b/100_core/src/gplx/langs/xmls/Xpath_.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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; public class Xpath_ { public static XmlNdeList SelectAll(XmlNde owner, String xpath) {return Select(owner, xpath, Xpath_Args.all_());} diff --git a/100_core/src_900_xml/gplx/xmls/Xpath__tst.java b/100_core/src/gplx/langs/xmls/Xpath__tst.java similarity index 93% rename from 100_core/src_900_xml/gplx/xmls/Xpath__tst.java rename to 100_core/src/gplx/langs/xmls/Xpath__tst.java index 41a007c5b..3a484d714 100644 --- a/100_core/src_900_xml/gplx/xmls/Xpath__tst.java +++ b/100_core/src/gplx/langs/xmls/Xpath__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.xmls; import gplx.*; +package gplx.langs.xmls; import gplx.*; import gplx.langs.*; import org.junit.*; public class Xpath__tst { @Test public void Select_all() { diff --git a/100_core/src_100_types_primitive/gplx/Byte_ascii.java b/100_core/src_100_types_primitive/gplx/Byte_ascii.java index 8618b837e..f70b5176c 100644 --- a/100_core/src_100_types_primitive/gplx/Byte_ascii.java +++ b/100_core/src_100_types_primitive/gplx/Byte_ascii.java @@ -20,6 +20,7 @@ public class Byte_ascii { public static final byte Null = 0 , Backfeed = 8, Tab = 9 , Nl = 10, Formfeed = 12, Cr = 13 + , Escape = 27 , Space = 32, Bang = 33, Quote = 34 , Hash = 35, Dollar = 36, Percent = 37, Amp = 38, Apos = 39 , Paren_bgn = 40, Paren_end = 41, Star = 42, Plus = 43, Comma = 44 @@ -75,14 +76,15 @@ public class Byte_ascii { public static boolean Is_num(byte b) { return b > Byte_ascii.Slash && b < Byte_ascii.Colon; } - public static int Xto_digit(byte b) {return b - Byte_ascii.Num_0;} - public static byte To_a7_byte(int digit) { + public static byte To_a7_int(byte b) {return (byte)(b - Byte_ascii.Num_0);} + public static byte To_a7_str(int digit) { switch (digit) { case 0: return Byte_ascii.Num_0; case 1: return Byte_ascii.Num_1; case 2: return Byte_ascii.Num_2; case 3: return Byte_ascii.Num_3; case 4: return Byte_ascii.Num_4; case 5: return Byte_ascii.Num_5; case 6: return Byte_ascii.Num_6; case 7: return Byte_ascii.Num_7; case 8: return Byte_ascii.Num_8; case 9: return Byte_ascii.Num_9; default: throw Err_.new_("Byte_ascii", "unknown digit", "digit", digit); } } + public static String To_str(byte b) {return Char_.To_str((char)b);} public static byte Case_upper(byte b) { return b > 96 && b < 123 ? (byte)(b - 32) @@ -102,6 +104,7 @@ public class Byte_ascii { , Hash_bry = new byte[] {Byte_ascii.Hash} , Dot_bry = new byte[] {Byte_ascii.Dot} , Angle_bgn_bry = new byte[] {Byte_ascii.Angle_bgn} + , Angle_end_bry = new byte[] {Byte_ascii.Angle_end} , Comma_bry = new byte[] {Byte_ascii.Comma} , Colon_bry = new byte[] {Byte_ascii.Colon} , Amp_bry = new byte[] {Byte_ascii.Amp} diff --git a/100_core/src_120_basicDataType/gplx/Io_url.java b/100_core/src_120_basicDataType/gplx/Io_url.java index cfc341ba5..1caa50eeb 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url.java +++ b/100_core/src_120_basicDataType/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.strings.*; import gplx.ios.*; /*IoUrlInfo*/ +import gplx.core.strings.*; import gplx.core.ios.*; /*IoUrlInfo*/ public class Io_url implements CompareAble, EqAble, ParseAble, GfoInvkAble { //_20101005 URL:doc/Io_url.txt public IoUrlInfo Info() {return info;} IoUrlInfo info; public String Raw() {return raw;} final String raw; diff --git a/100_core/src_120_basicDataType/gplx/Io_url_.java b/100_core/src_120_basicDataType/gplx/Io_url_.java index cd8091006..0d20638e4 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url_.java +++ b/100_core/src_120_basicDataType/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.ios.*; /*IoUrlInfo_*/ +import gplx.core.ios.*; /*IoUrlInfo_*/ 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_120_basicDataType/gplx/KeyVal_.java index cf95ba5f1..101bf8fa8 100644 --- a/100_core/src_120_basicDataType/gplx/KeyVal_.java +++ b/100_core/src_120_basicDataType/gplx/KeyVal_.java @@ -73,11 +73,11 @@ public class KeyVal_ { for (int i = 0; i < len; ++i) { KeyVal itm = ary[i]; if (indent > 0) - bfr.Add_byte_repeat(Byte_ascii.Space, indent * 2); // add indent : " " - bfr.Add_str(Object_.Xto_str_strict_or_empty(itm.Key())).Add_byte_eq(); // add key + eq : "key=" + bfr.Add_byte_repeat(Byte_ascii.Space, indent * 2); // add indent : " " + bfr.Add_str_u8(Object_.Xto_str_strict_or_empty(itm.Key())).Add_byte_eq();// add key + eq : "key=" Object val = itm.Val(); if (val == null) - bfr.Add_str(String_.Null_mark); + bfr.Add_str_a7(String_.Null_mark); else { Class val_type = Type_adp_.ClassOf_obj(val); if (Type_adp_.Eq(val_type, KeyVal[].class)) { // val is KeyVal[]; recurse @@ -90,7 +90,7 @@ public class KeyVal_ { bfr.Add(val_as_bool ? Bool_.True_bry : Bool_.False_bry); // add "true" or "false"; don't call toString } else - bfr.Add_str(Object_.Xto_str_strict_or_null_mark(val)); // call toString() + bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(val)); // call toString() } bfr.Add_byte_nl(); } diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java index 8fee5eff9..7ed125efa 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java +++ b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java @@ -47,7 +47,7 @@ public class TimeSpanAdp_ { switch (b) { case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4: case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: - int unit_digit = Byte_ascii.Xto_digit(b); + int unit_digit = Byte_ascii.To_a7_int(b); unit_val = (unit_multiple == 1) ? unit_digit : unit_val + (unit_digit * unit_multiple); switch (colon_pos) { case 0: val_s = unit_val; break; @@ -80,7 +80,7 @@ public class TimeSpanAdp_ { } return sign * (val_f + (val_s * Divisors[1]) + (val_m * Divisors[2]) + (val_h * Divisors[3])); } - @gplx.Internal protected static String To_str(long frc, String fmt) { + public static String To_str(long frc, String fmt) { String_bldr sb = String_bldr_.new_(); int[] units = Split_long(frc, Divisors); diff --git a/100_core/src_130_brys/gplx/Bry_.java b/100_core/src_130_brys/gplx/Bry_.java index 871eda3ba..dce01deb5 100644 --- a/100_core/src_130_brys/gplx/Bry_.java +++ b/100_core/src_130_brys/gplx/Bry_.java @@ -17,10 +17,9 @@ along with this program. If not, see . */ package gplx; import java.lang.*; -import gplx.core.primitives.*; import gplx.ios.*; +import gplx.core.primitives.*; import gplx.core.ios.*; public class Bry_ { public static final String Cls_val_name = "byte[]"; - public static final int NotFound = -1; public static final byte[] Empty = new byte[0]; public static final byte[][] Ary_empty = new byte[0][]; public static final Class Cls_ref_type = byte[].class; @@ -32,6 +31,8 @@ public class Bry_ { rv[i] = (byte)ary[i]; return rv; } + public static byte[] Coalesce_to_empty(byte[] v) {return v == null ? Bry_.Empty : v;} + public static byte[] Coalesce(byte[] v, byte[] or) {return v == null ? or : v;} public static byte[] new_a7(String str) { if (str == null) return null; int str_len = str.length(); @@ -245,7 +246,7 @@ public class Bry_ { } public static byte[] Replace_one(byte[] src, byte[] find, byte[] repl) { int src_len = src.length; - int findPos = Bry_find_.Find(src, find, 0, src_len, true); if (findPos == Bry_.NotFound) return src; + int findPos = Bry_find_.Find(src, find, 0, src_len, true); if (findPos == Bry_find_.Not_found) return src; int findLen = find.length, replLen = repl.length; int rvLen = src_len + replLen - findLen; byte[] rv = new byte[rvLen]; @@ -300,11 +301,13 @@ public class Bry_ { return Mid(src, bgn, src.length); } public static byte[] Mid(byte[] src, int bgn, int end) { - int len = end - bgn; if (len == 0) return Bry_.Empty; - byte[] rv = new byte[len]; - for (int i = bgn; i < end; i++) - rv[i - bgn] = src[i]; - return rv; + try { + int len = end - bgn; if (len == 0) return Bry_.Empty; + byte[] rv = new byte[len]; + for (int i = bgn; i < end; i++) + rv[i - bgn] = src[i]; + return rv; + } catch (Exception e) {Err_.Noop(e); throw Err_.new_("Bry_", "mid failed", "bgn", bgn, "end", end);} } public static byte[] Mid_w_trim(byte[] src, int bgn, int end) { int len = end - bgn; if (len == 0) return Bry_.Empty; @@ -443,7 +446,7 @@ public class Bry_ { if (src_end > src_len) src_end = src_len; // must limit src_end to src_len, else ArrayIndexOutOfBounds below; DATE:2015-01-31 int find_len = find_end - find_bgn; if (find_len != src_end - src_bgn) return false; - if (find_len == 0) return src_end - src_bgn == 0; // "" only matches "" + if (find_len == 0) return src_end - src_bgn == 0; // "" only matches "" for (int i = 0; i < find_len; i++) { int pos = src_bgn + i; if (pos >= src_end) return false; // ran out of src; exit; EX: src=ab; find=abc @@ -451,6 +454,21 @@ public class Bry_ { } return true; } + public static boolean Match_w_swap(byte[] src, int src_bgn, int src_end, byte[] find, int find_bgn, int find_end, byte swap_src, byte swap_trg) {// same as above, but used by XOWA for ttl matches; + int src_len = src.length; + if (src_end > src_len) src_end = src_len; // must limit src_end to src_len, else ArrayIndexOutOfBounds below; DATE:2015-01-31 + int find_len = find_end - find_bgn; + if (find_len != src_end - src_bgn) return false; + if (find_len == 0) return src_end - src_bgn == 0; // "" only matches "" + for (int i = 0; i < find_len; i++) { + int pos = src_bgn + i; + if (pos >= src_end) return false; // ran out of src; exit; EX: src=ab; find=abc + byte src_byte = src[pos]; if (src_byte == swap_src) src_byte = swap_trg; + byte trg_byte = find[i + find_bgn]; if (trg_byte == swap_src) trg_byte = swap_trg; + if (src_byte != trg_byte) return false; + } + return true; + } public static boolean Match_bwd_any(byte[] src, int src_end, int src_bgn, byte[] find) { // NOTE: utf8 doesn't matter (matching byte for byte) int find_len = find.length; for (int i = 0; i < find_len; i++) { @@ -496,12 +514,12 @@ public class Bry_ { if (neg == 1) ary[0] = Byte_NegSign; for (int i = 0; i < pad; i++) // fill ary with pad - ary[i + aryBgn] = Byte_ascii.To_a7_byte(0); + ary[i + aryBgn] = Byte_ascii.To_a7_str(0); aryBgn += pad; // advance aryBgn by pad for (int i = neg; i < ary_len - pad; i++) { int denominator = (int)(factor / 10); // cache denominator to check for divide by 0 int digit = denominator == 0 ? 0 : (int)((val % factor) / denominator); - ary[aryBgn + i] = Byte_ascii.To_a7_byte(digit); + ary[aryBgn + i] = Byte_ascii.To_a7_str(digit); factor /= 10; } return ary; @@ -766,7 +784,7 @@ public class Bry_ { public static int ReadCsvInt(byte[] ary, Int_obj_ref posRef, byte lkp) { int bgn = posRef.Val(); int pos = Bry_find_.Find_fwd(ary, lkp, bgn, ary.length); - if (pos == Bry_.NotFound) throw Err_.new_wo_type("lkp failed", "lkp", (char)lkp, "bgn", bgn); + if (pos == Bry_find_.Not_found) throw Err_.new_wo_type("lkp failed", "lkp", (char)lkp, "bgn", bgn); int rv = Bry_.To_int_or(ary, posRef.Val(), pos, -1); posRef.Val_(pos + 1); // +1 = lkp.Len return rv; @@ -774,7 +792,7 @@ public class Bry_ { public static double ReadCsvDouble(byte[] ary, Int_obj_ref posRef, byte lkp) { int bgn = posRef.Val(); int pos = Bry_find_.Find_fwd(ary, lkp, bgn, ary.length); - if (pos == Bry_.NotFound) throw Err_.new_wo_type("lkp failed", "lkp", (char)lkp, "bgn", bgn); + if (pos == Bry_find_.Not_found) throw Err_.new_wo_type("lkp failed", "lkp", (char)lkp, "bgn", bgn); double rv = Bry_.To_double(ary, posRef.Val(), pos); posRef.Val_(pos + 1); // +1 = lkp.Len return rv; @@ -841,14 +859,14 @@ public class Bry_ { while (true) { if (pos >= src_len) break; int bgn_pos = Bry_find_.Find_fwd(src, bgn, pos); - if (bgn_pos == Bry_.NotFound) { + if (bgn_pos == Bry_find_.Not_found) { bfr.Add_mid(src, pos, src_len); break; } else { int bgn_rhs = bgn_pos + bgn_len; int end_pos = replace_all ? bgn_rhs : Bry_find_.Find_fwd(src, end, bgn_rhs); - if (end_pos == Bry_.NotFound) { + if (end_pos == Bry_find_.Not_found) { bfr.Add_mid(src, pos, src_len); break; } diff --git a/100_core/src_130_brys/gplx/Bry__tst.java b/100_core/src_130_brys/gplx/Bry__tst.java index 4f93eceab..009b7e7e2 100644 --- a/100_core/src_130_brys/gplx/Bry__tst.java +++ b/100_core/src_130_brys/gplx/Bry__tst.java @@ -72,7 +72,7 @@ public class Bry__tst { byte[] expd = new byte[expdAryAsInt.length]; for (int i = 0; i < expd.length; i++) { int expdInt = expdAryAsInt[i]; - expd[i] = expdInt == Bry_.Byte_NegSign ? Bry_.Byte_NegSign : Byte_ascii.To_a7_byte(expdAryAsInt[i]); + expd[i] = expdInt == Bry_.Byte_NegSign ? Bry_.Byte_NegSign : Byte_ascii.To_a7_str(expdAryAsInt[i]); } Tfds.Eq_ary(expd, Bry_.To_a7_bry(val, Int_.DigitCount(val))); } diff --git a/100_core/src_130_brys/gplx/Bry_bfr.java b/100_core/src_130_brys/gplx/Bry_bfr.java index 26da6b9fa..61cc77459 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr.java +++ b/100_core/src_130_brys/gplx/Bry_bfr.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx; import gplx.core.primitives.*; +import gplx.core.encoders.*; public class Bry_bfr { private Bry_bfr_mkr_mgr mkr_mgr; private int reset; public byte[] Bfr() {return bfr;} private byte[] bfr; @@ -96,6 +97,18 @@ public class Bry_bfr { bfr_len += len; return this; } + public Bry_bfr Add_mid_w_swap(byte[] val, int bgn, int end, byte swap_src, byte swap_trg) { + int len = end - bgn; + if (len < 0) throw Err_.new_wo_type("negative len", "bgn", bgn, "end", end, "excerpt", String_.new_u8__by_len(val, bgn, bgn + 16)); // NOTE: check for invalid end < bgn, else difficult to debug errors later; DATE:2014-05-11 + if (bfr_len + len > bfr_max) Resize((bfr_max + len) * 2); + int val_len = end - bgn; + for (int i = 0; i < val_len; ++i) { + byte b = val[i + bgn]; if (b == swap_src) b = swap_trg; + bfr[i + bfr_len] = b; + } + bfr_len += len; + 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); @@ -278,8 +291,8 @@ public class Bry_bfr { Add(val); return this; } - public Bry_bfr Add_str(String v) {return Add_str_u8(v);} public Bry_bfr Add_str_u8_w_nl(String s) {Add_str_u8(s); return Add_byte_nl();} + public Bry_bfr Add_str_u8_null(String s) {return Add_str_u8(s == null ? String_.Null_mark : s);} public Bry_bfr Add_str_u8(String str) { try { int str_len = str.length(); @@ -291,6 +304,7 @@ public class Bry_bfr { } catch (Exception e) {throw Err_.new_exc(e, "core", "invalid UTF-8 sequence", "s", str);} } + public Bry_bfr Add_str_a7_null(String s) {return Add_str_a7(s == null ? String_.Null_mark : s);} public Bry_bfr Add_str_a7_w_nl(String s) {Add_str_a7(s); return Add_byte_nl();} public Bry_bfr Add_str_a7(String str) { try { @@ -312,8 +326,8 @@ public class Bry_bfr { this.Add_byte(line ? Byte_ascii.Nl : Byte_ascii.Tab); return this; } - public Bry_bfr Add_float(float f) {Add_str(Float_.To_str(f)); return this;} - public Bry_bfr Add_double(double v) {Add_str(Double_.To_str(v)); return this;} + public Bry_bfr Add_float(float f) {Add_str_a7(Float_.To_str(f)); return this;} + public Bry_bfr Add_double(double v) {Add_str_a7(Double_.To_str(v)); return this;} public Bry_bfr Add_dte(DateAdp val) {return Add_dte_segs(val.Year(), val.Month(),val.Day(), val.Hour(), val.Minute(), val.Second(), val.Frac());} public Bry_bfr Add_dte_segs(int y, int M, int d, int H, int m, int s, int f) { // yyyyMMdd HHmmss.fff if (bfr_len + 19 > bfr_max) Resize((bfr_len + 19) * 2); @@ -398,7 +412,7 @@ public class Bry_bfr { else if (o_type == Integer.class) Add_int_variable(Int_.cast(o)); else if (o_type == Byte.class) Add_byte(Byte_.cast(o)); else if (o_type == Long.class) Add_long_variable(Long_.cast(o)); - else if (o_type == String.class) Add_str((String)o); + else if (o_type == String.class) Add_str_u8((String)o); else if (o_type == Bry_bfr.class) Add_bfr_and_preserve((Bry_bfr)o); else if (o_type == DateAdp.class) Add_dte((DateAdp)o); else if (o_type == Io_url.class) Add(((Io_url)o).RawBry()); @@ -415,7 +429,7 @@ public class Bry_bfr { else if (o_type == Integer.class) Add_int_variable(Int_.cast(o)); else if (o_type == Byte.class) Add_byte(Byte_.cast(o)); else if (o_type == Long.class) Add_long_variable(Long_.cast(o)); - else if (o_type == String.class) Add_str((String)o); + else if (o_type == String.class) Add_str_u8((String)o); else if (o_type == Bry_bfr.class) Add_bfr_and_preserve((Bry_bfr)o); else if (o_type == DateAdp.class) Add_dte((DateAdp)o); else if (o_type == Io_url.class) Add(((Io_url)o).RawBry()); @@ -430,7 +444,7 @@ public class Bry_bfr { public Bry_bfr Add_base85(int v, int pad) { int new_len = bfr_len + pad; if (new_len > bfr_max) Resize((new_len) * 2); - Base85_utl.XtoStrByAry(v, bfr, bfr_len, pad); + Base85_.Set_bry(v, bfr, bfr_len, pad); bfr_len = new_len; return this; } diff --git a/100_core/src_130_brys/gplx/Bry_bfr_tst.java b/100_core/src_130_brys/gplx/Bry_bfr_tst.java index 4b28d1668..8a71f9611 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr_tst.java +++ b/100_core/src_130_brys/gplx/Bry_bfr_tst.java @@ -110,7 +110,7 @@ public class Bry_bfr_tst { // } // } // long l = Pow38_to(y, m, d, h, n, s); -//// Base85_utl.XtoStrByAry(l, bb. +//// Base85_.Set_bry(l, bb. // bb.Add_int(l); } // @Test public void InsertAt_str() { @@ -132,7 +132,7 @@ public class Bry_bfr_tst { tst_XtoAryAndClearAndTrim(" " , ""); } void tst_XtoAryAndClearAndTrim(String raw, String expd) { - bb.Add_str(raw); + bb.Add_str_u8(raw); Tfds.Eq(expd, String_.new_u8(bb.To_bry_and_clear_and_trim())); } @Test public void XtoInt() { @@ -141,7 +141,7 @@ public class Bry_bfr_tst { tst_XtoInt("9999999999", Int_.Min_value); } void tst_XtoInt(String raw, int expd) { - bb.Add_str(raw); + bb.Add_str_u8(raw); Tfds.Eq(expd, bb.To_int_and_clear(Int_.Min_value)); } static long Pow38_to(int year, int month, int day, int hour, int minute, int second, int frac) { @@ -166,7 +166,7 @@ public class Bry_bfr_tst { tst_Add_bfr_trimEnd_and_clear("a ", "a"); } void tst_Add_bfr_trimEnd_and_clear(String raw, String expd) { - Bry_bfr tmp = Bry_bfr.new_().Add_str(raw); + Bry_bfr tmp = Bry_bfr.new_().Add_str_u8(raw); Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, false, true).To_str_and_clear()); } @Test public void Add_bfr_trimAll_and_clear() { @@ -176,7 +176,7 @@ public class Bry_bfr_tst { tst_Add_bfr_trimAll_and_clear("", ""); } void tst_Add_bfr_trimAll_and_clear(String raw, String expd) { - Bry_bfr tmp = Bry_bfr.new_().Add_str(raw); + Bry_bfr tmp = Bry_bfr.new_().Add_str_u8(raw); Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, true, true).To_str_and_clear()); } @Test public void Add_int_pad_bgn() { @@ -219,9 +219,9 @@ class ByteAryBfr_fxt { byte[] val_bry = Bry_.new_u8(val); Tfds.Eq(expd, bfr.Add_bry_escape(Byte_ascii.Apos, Byte_.Ary(Byte_ascii.Apos, Byte_ascii.Apos), val_bry, 0, val_bry.length).To_str_and_clear()); } - public void Test_Insert_at(String init, int pos, String val, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val)).To_str_and_clear());} - public void Test_Insert_at(String init, int pos, String val, int val_bgn, int val_end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val), val_bgn, val_end).To_str_and_clear());} - public void Test_Delete_rng(String init, int bgn, int end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng(bgn, end).To_str_and_clear());} - public void Test_Delete_rng_to_bgn(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_bgn(pos).To_str_and_clear());} - public void Test_Delete_rng_to_end(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_end(pos).To_str_and_clear());} + public void Test_Insert_at(String init, int pos, String val, String expd) {Tfds.Eq(expd, bfr.Add_str_u8(init).Insert_at(pos, Bry_.new_u8(val)).To_str_and_clear());} + public void Test_Insert_at(String init, int pos, String val, int val_bgn, int val_end, String expd) {Tfds.Eq(expd, bfr.Add_str_u8(init).Insert_at(pos, Bry_.new_u8(val), val_bgn, val_end).To_str_and_clear());} + public void Test_Delete_rng(String init, int bgn, int end, String expd) {Tfds.Eq(expd, bfr.Add_str_u8(init).Delete_rng(bgn, end).To_str_and_clear());} + public void Test_Delete_rng_to_bgn(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str_u8(init).Delete_rng_to_bgn(pos).To_str_and_clear());} + public void Test_Delete_rng_to_end(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str_u8(init).Delete_rng_to_end(pos).To_str_and_clear());} } diff --git a/100_core/src_130_brys/gplx/Bry_find__tst.java b/100_core/src_130_brys/gplx/Bry_find__tst.java index 2b2455948..ee58f8dd5 100644 --- a/100_core/src_130_brys/gplx/Bry_find__tst.java +++ b/100_core/src_130_brys/gplx/Bry_find__tst.java @@ -41,7 +41,7 @@ public class Bry_find__tst { @Test public void Find_bwd_last_ws() { fxt.Test_Find_bwd_1st_ws_tst("a b" , 2, 1); // basic fxt.Test_Find_bwd_1st_ws_tst("a b" , 3, 1); // multiple - fxt.Test_Find_bwd_1st_ws_tst("ab" , 1, Bry_.NotFound); // none + fxt.Test_Find_bwd_1st_ws_tst("ab" , 1, Bry_find_.Not_found); // none } @Test public void Trim_fwd_space_tab() { fxt.Test_Trim_fwd_space_tab(" a b" , 1); diff --git a/100_core/src_130_brys/gplx/Bry_fmtr.java b/100_core/src_130_brys/gplx/Bry_fmtr.java index a703a85aa..36e56de01 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr.java @@ -216,9 +216,9 @@ public class Bry_fmtr { } } int Compile_eval_cmd(byte[] fmt, int fmt_len, int eval_lhs_bgn, List_adp list) { - int eval_lhs_end = Bry_find_.Find_fwd(fmt, char_eval_end, eval_lhs_bgn + Int_.Const_dlm_len, fmt_len); if (eval_lhs_end == Bry_.NotFound) throw Err_.new_wo_type("eval_lhs_end_invalid: could not find eval_lhs_end", "snip", String_.new_u8(fmt, eval_lhs_bgn, fmt_len)); + int eval_lhs_end = Bry_find_.Find_fwd(fmt, char_eval_end, eval_lhs_bgn + Int_.Const_dlm_len, fmt_len); if (eval_lhs_end == Bry_find_.Not_found) throw Err_.new_wo_type("eval_lhs_end_invalid: could not find eval_lhs_end", "snip", String_.new_u8(fmt, eval_lhs_bgn, fmt_len)); byte[] eval_dlm = Bry_.Mid(fmt, eval_lhs_bgn , eval_lhs_end + Int_.Const_dlm_len); - int eval_rhs_bgn = Bry_find_.Find_fwd(fmt, eval_dlm , eval_lhs_end + Int_.Const_dlm_len, fmt_len); if (eval_rhs_bgn == Bry_.NotFound) throw Err_.new_wo_type("eval_rhs_bgn_invalid: could not find eval_rhs_bgn", "snip", String_.new_u8(fmt, eval_lhs_end, fmt_len)); + int eval_rhs_bgn = Bry_find_.Find_fwd(fmt, eval_dlm , eval_lhs_end + Int_.Const_dlm_len, fmt_len); if (eval_rhs_bgn == Bry_find_.Not_found) throw Err_.new_wo_type("eval_rhs_bgn_invalid: could not find eval_rhs_bgn", "snip", String_.new_u8(fmt, eval_lhs_end, fmt_len)); byte[] eval_cmd = Bry_.Mid(fmt, eval_lhs_end + Int_.Const_dlm_len, eval_rhs_bgn); byte[] eval_rslt = eval_mgr.Eval(eval_cmd); int eval_rhs_end = eval_rhs_bgn + Int_.Const_dlm_len + eval_dlm.length; @@ -240,7 +240,7 @@ public class Bry_fmtr { public static Bry_fmtr new_bry_(byte[] fmt, String... keys) {return new Bry_fmtr().Fmt_(fmt).Keys_(keys);} public static String New_fmt_str(String key, Object[] args) { tmp_bfr.Clear(); - tmp_bfr.Add_str(key); + tmp_bfr.Add_str_u8(key); tmp_bfr.Add_byte(Byte_ascii.Colon); int args_len = args.length; for (int i = 0; i < args_len; i++) { // add " 0='~{0}'" diff --git a/100_core/src/gplx/core/brys/Bry_rdr.java b/100_core/src_130_brys/gplx/Bry_rdr.java similarity index 86% rename from 100_core/src/gplx/core/brys/Bry_rdr.java rename to 100_core/src_130_brys/gplx/Bry_rdr.java index 0fefaf6b6..36e19ea8b 100644 --- a/100_core/src/gplx/core/brys/Bry_rdr.java +++ b/100_core/src_130_brys/gplx/Bry_rdr.java @@ -15,17 +15,21 @@ 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.*; +package gplx; public class Bry_rdr { + private byte[] scope = Bry_.Empty; public byte[] Src() {return src;} protected byte[] src; public int Src_len() {return src_len;} protected int src_len; - public void Init(byte[] src) {this.Init(src, 0);} - public void Init(byte[] src, int pos) { + public void Init(byte[] src) {this.Init(Bry_.Empty, src, 0);} + public void Init(byte[] src, int pos) {this.Init(Bry_.Empty, src, pos);} + public void Init(byte[] scope, byte[] src, int pos) { this.src = src; this.src_len = src.length; this.pos = pos; + this.scope = scope; } public int Pos() {return pos;} public Bry_rdr Pos_(int v) {this.pos = v; return this;} protected int pos; public void Pos_add(int v) {pos += v;} - public boolean Pos_is_eos() {return pos == src_len;} + public boolean Pos_is_eos() {return pos == src_len;} + public boolean Pos_is_reading() {return pos < src_len;} public void Pos_add_one() {++pos;} public int Or_int() {return or_int;} public void Or_int_(int v) {or_int = v;} private int or_int = Int_.Min_value; public byte[] Or_bry() {return or_bry;} public void Or_bry_(byte[] v) {or_bry = v;} private byte[] or_bry; @@ -39,6 +43,7 @@ public class Bry_rdr { if (find_pos != Bry_find_.Not_found) pos = find_pos; return find_pos; } + public byte Read_byte() {return src[pos];} public int Read_int_to_semic() {return Read_int_to(Byte_ascii.Semic);} public int Read_int_to_comma() {return Read_int_to(Byte_ascii.Comma);} public int Read_int_to_pipe() {return Read_int_to(Byte_ascii.Pipe);} @@ -152,4 +157,13 @@ public class Bry_rdr { int end = pos + len; if (end > src_len) end = src_len; return Bry_.Mid(src, pos, end); } + public boolean Chk_bry_wo_move(byte[] bry, int pos) { + int bry_len = bry.length; + return Bry_.Match(src, pos, pos + bry_len, bry); + } + public int Warn(String err, int bgn, int rv) { + int end = rv + 256; if (end > src_len) end = src_len; + Gfo_usr_dlg_.Instance.Warn_many("", "", "read failed: scope=~{0} err=~{1} mid=~{2}", scope, err, String_.new_u8(src, bgn, end)); + return rv + 1; // rv is always hook_bgn; add +1 to set at next character, else infinite loop + } } \ No newline at end of file diff --git a/100_core/src_130_brys/gplx/Bry_split_.java b/100_core/src_130_brys/gplx/Bry_split_.java index 6fffe4326..afd5bbfdd 100644 --- a/100_core/src_130_brys/gplx/Bry_split_.java +++ b/100_core/src_130_brys/gplx/Bry_split_.java @@ -76,7 +76,7 @@ public class Bry_split_ { List_adp rv = List_adp_.new_(); while (true) { int find_pos = Bry_find_.Find_fwd(src, dlm, cur_pos); - if (find_pos == Bry_.NotFound) { + if (find_pos == Bry_find_.Not_found) { if (cur_pos == src_len) break; // dlm is last sequence in src; do not create empty itm find_pos = src_len; } diff --git a/100_core/src_140_list/gplx/Hash_adp_bry.java b/100_core/src_140_list/gplx/Hash_adp_bry.java index 6b34f631e..accc9685b 100644 --- a/100_core/src_140_list/gplx/Hash_adp_bry.java +++ b/100_core/src_140_list/gplx/Hash_adp_bry.java @@ -37,6 +37,10 @@ public class Hash_adp_bry extends gplx.lists.Hash_adp_base implements Hash_adp { Object o = Get_by_mid(key, bgn, end); return (o == null) ? or : ((Int_obj_val)o).Val(); } + public byte Get_as_byte_or(byte[] key, int bgn, int end, byte or) { + Object o = Get_by_mid(key, bgn, end); + return o == null ? or : ((Byte_obj_val)o).Val(); + } public Object Get_by_bry(byte[] src) {return super.Fetch_base(key_ref.Init(src));} public Object Get_by_mid(byte[] src, int bgn, int end) {return super.Fetch_base(key_ref.Init(src, bgn, end));} public Hash_adp_bry Add_byte_int(byte key, int val) {this.Add_base(Bry_.new_bytes(key), Int_obj_val.new_(val)); return this;} diff --git a/100_core/src_330_store/gplx/DataRdr.java b/100_core/src_330_store/gplx/DataRdr.java index 86c31c6ea..0a9ff2110 100644 --- a/100_core/src_330_store/gplx/DataRdr.java +++ b/100_core/src_330_store/gplx/DataRdr.java @@ -41,7 +41,7 @@ public interface DataRdr extends SrlMgr, RlsAble { byte ReadByte(String key); byte ReadByteOr(String key, byte or); Decimal_adp ReadDecimal(String key); Decimal_adp ReadDecimalOr(String key, Decimal_adp or); DateAdp ReadDate(String key); DateAdp ReadDateOr(String key, DateAdp or); - gplx.ios.Io_stream_rdr ReadRdr(String key); + gplx.core.ios.Io_stream_rdr ReadRdr(String key); boolean MoveNextPeer(); DataRdr Subs(); diff --git a/100_core/src_330_store/gplx/DataRdr_.java b/100_core/src_330_store/gplx/DataRdr_.java index c3557d3f2..367288e02 100644 --- a/100_core/src_330_store/gplx/DataRdr_.java +++ b/100_core/src_330_store/gplx/DataRdr_.java @@ -45,7 +45,7 @@ class DataRdr_null implements DataRdr { public byte ReadByte(String key) {return Byte_.Min_value;} public byte ReadByteOr(String key, byte or) {return or;} public Decimal_adp ReadDecimal(String key) {return Decimal_adp_.Zero;}public Decimal_adp ReadDecimalOr(String key, Decimal_adp or) {return or;} public DateAdp ReadDate(String key) {return DateAdp_.MinValue;} public DateAdp ReadDateOr(String key, DateAdp or) {return or;} - public gplx.ios.Io_stream_rdr ReadRdr(String key) {return gplx.ios.Io_stream_rdr_.Noop;} + public gplx.core.ios.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.Io_stream_rdr_.Noop;} public boolean MoveNextPeer() {return false;} public DataRdr Subs() {return this;} public DataRdr Subs_byName(String name) {return this;} diff --git a/100_core/src_330_store/gplx/stores/DataRdr_base.java b/100_core/src_330_store/gplx/stores/DataRdr_base.java index 740ae823d..23e2f45aa 100644 --- a/100_core/src_330_store/gplx/stores/DataRdr_base.java +++ b/100_core/src_330_store/gplx/stores/DataRdr_base.java @@ -179,7 +179,7 @@ public abstract class DataRdr_base implements SrlMgr { try {return (byte[])val;} catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, byte[].class, key, val, or); return or;} } - public gplx.ios.Io_stream_rdr ReadRdr(String key) {return gplx.ios.Io_stream_rdr_.Noop;} + public gplx.core.ios.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.Io_stream_rdr_.Noop;} public boolean SrlBoolOr(String key, boolean or) {return ReadBoolOr(key, or);} public byte SrlByteOr(String key, byte or) {return ReadByteOr(key, or);} public int SrlIntOr(String key, int or) {return ReadIntOr(key, or);} diff --git a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java b/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java index cb9c1b9d6..d3abf0abe 100644 --- a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.java +++ b/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr.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.stores.xmls; import gplx.*; import gplx.stores.*; -import gplx.xmls.*; /*Xpath_*/ +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();} @Override public int FieldCount() {return nde.Atrs() == null ? 0 : nde.Atrs().Count();} // nde.Attributes == null when nde is XmlText; ex: val diff --git a/100_core/src_400_gfs/gplx/GfsLibIni_core.java b/100_core/src_400_gfs/gplx/GfsLibIni_core.java index 31312c7be..2716a6a70 100644 --- a/100_core/src_400_gfs/gplx/GfsLibIni_core.java +++ b/100_core/src_400_gfs/gplx/GfsLibIni_core.java @@ -26,8 +26,8 @@ public class GfsLibIni_core implements GfsLibIni { core.AddObj(GfoTemplateFactory.Instance, "factory"); core.AddObj(GfoRegy.Instance, "GfoRegy_"); core.AddObj(GfsCore.Instance, "GfsCore_"); - core.AddObj(gplx.ios.IoUrlInfoRegy.Instance, "IoUrlInfoRegy_"); - core.AddObj(gplx.ios.IoUrlTypeRegy.Instance, "IoUrlTypeRegy_"); + core.AddObj(gplx.core.ios.IoUrlInfoRegy.Instance, "IoUrlInfoRegy_"); + core.AddObj(gplx.core.ios.IoUrlTypeRegy.Instance, "IoUrlTypeRegy_"); GfoRegy.Instance.Parsers().Add("Io_url", Io_url_.Parser); } diff --git a/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java b/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java index 2d2757b62..2393dd71d 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java @@ -19,9 +19,9 @@ package gplx; public class Gfo_log_bfr { private Bry_bfr bfr = Bry_bfr.reset_(255); public Gfo_log_bfr Add(String s) { - bfr.Add_str(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); + bfr.Add_str_a7(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); bfr.Add_byte_space(); - bfr.Add_str(s); + bfr.Add_str_u8(s); bfr.Add_byte_nl(); return this; } diff --git a/100_core/src_900_xml/gplx/Base85_utl.java b/100_core/src_900_xml/gplx/Base85_utl.java deleted file mode 100644 index 40975239a..000000000 --- a/100_core/src_900_xml/gplx/Base85_utl.java +++ /dev/null @@ -1,66 +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 Base85_utl { - public static String To_str(int val, int minLen) {return String_.new_u8(XtoStrByAry(val, null, 0, minLen));} - public static byte[] XtoStrByAry(int val, int minLen) {return XtoStrByAry(val, null, 0, minLen);} - public static byte[] XtoStrByAry(int val, byte[] ary, int aryPos, int minLen) { - int strLen = DigitCount(val); - int aryLen = strLen, padLen = 0; - boolean pad = aryLen < minLen; - if (pad) { - padLen = minLen - aryLen; - aryLen = minLen; - } - if (ary == null) ary = new byte[aryLen]; - if (pad) { - for (int i = 0; i < padLen; i++) // fill ary with padLen - ary[i + aryPos] = AsciiOffset; - } - for (int i = aryLen - padLen; i > 0; i--) { - int div = Pow85[i - 1]; - byte tmp = (byte)(val / div); - ary[aryPos + aryLen - i] = (byte)(tmp + AsciiOffset); - val -= tmp * div; - } - return ary; - } - public static byte XtoByteChar(int v) {return (byte)(v + AsciiOffset);} - public static int XtoInt(byte v) {return v - AsciiOffset;} - public static int XtoIntByStr(String s) { - byte[] ary = Bry_.new_u8(s); - return XtoIntByAry(ary, 0, ary.length - 1); - } - public static int XtoIntByAry(byte[] ary, int bgn, int end) { - int rv = 0, factor = 1; - for (int i = end; i >= bgn; i--) { - rv += (ary[i] - AsciiOffset) * factor; - factor *= Radix; - } - return rv; - } - public static int DigitCount(int v) { - if (v == 0) return 1; - for (int i = Pow85Last; i > -1; i--) - if (v >= Pow85[i]) return i + 1; - throw Err_.new_wo_type("neg number not allowed", "v", v); - } - static int[] Pow85 = new int[]{1, 85, 7225, 614125, 52200625}; // NOTE: ary constructed to match index to exponent; Pow85[1] = 85^1 - static final int Pow85Last = 4, Radix = 85; static final byte AsciiOffset = 33; - public static final int Len_int = 5; -} diff --git a/100_core/src_900_xml/gplx/Base85_utl_tst.java b/100_core/src_900_xml/gplx/Base85_utl_tst.java deleted file mode 100644 index a5298c4dc..000000000 --- a/100_core/src_900_xml/gplx/Base85_utl_tst.java +++ /dev/null @@ -1,56 +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 Base85_utl_tst { - @Test public void Log() { - tst_Log( 0, 1); - tst_Log( 84, 1); - tst_Log( 85, 2); - tst_Log( 7224, 2); - tst_Log( 7225, 3); - tst_Log( 614124, 3); - tst_Log( 614125, 4); - tst_Log( 52200624, 4); - tst_Log( 52200625, 5); - tst_Log(Int_.Max_value, 5); - } void tst_Log(int val, int expd) {Tfds.Eq(expd, Base85_utl.DigitCount(val));} - @Test public void To_str() { - tst_XtoStr( 0, "!"); - tst_XtoStr( 84, "u"); - tst_XtoStr( 85, "\"!"); - tst_XtoStr( 7224, "uu"); - tst_XtoStr( 7225, "\"!!"); - tst_XtoStr( 614124, "uuu"); - tst_XtoStr( 614125, "\"!!!"); - tst_XtoStr( 52200624, "uuuu"); - tst_XtoStr( 52200625, "\"!!!!"); - } - void tst_XtoStr(int val, String expd) { - String actl = Base85_utl.To_str(val, 0); - Tfds.Eq(expd, actl); - Tfds.Eq(val, Base85_utl.XtoIntByStr(expd)); - } - @Test public void XtoStrAry() { - byte[] ary = new byte[9]; - run_XtoStr(ary, 0, 2); // !!# - run_XtoStr(ary, 3, 173); // !#$ - run_XtoStr(ary, 6, 14709); // #$% - Tfds.Eq("!!#!#$#$%", String_.new_u8(ary)); - } void run_XtoStr(byte[] ary, int aryPos, int val) {Base85_utl.XtoStrByAry(val, ary, aryPos, 3);} -} diff --git a/100_core/tst/gplx/ios/IoEngineFxt.java b/100_core/tst/gplx/core/ios/IoEngineFxt.java similarity index 96% rename from 100_core/tst/gplx/ios/IoEngineFxt.java rename to 100_core/tst/gplx/core/ios/IoEngineFxt.java index 84c57d4eb..0d3cc4776 100644 --- a/100_core/tst/gplx/ios/IoEngineFxt.java +++ b/100_core/tst/gplx/core/ios/IoEngineFxt.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEngineFxt { IoEngine EngineOf(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey());} public void tst_ExistsPaths(boolean expd, Io_url... ary) { diff --git a/100_core/tst/gplx/ios/IoEngine_dir_basic_base.java b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_base.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_dir_basic_base.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_basic_base.java index c80d93e92..ba07b4c55 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_basic_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public abstract class IoEngine_dir_basic_base { @Before public void setup() { @@ -76,4 +76,4 @@ public abstract class IoEngine_dir_basic_base { engine.CopyDir(src, trg); fx.tst_ExistsPaths(true, src, trg); } -} +} \ No newline at end of file diff --git a/100_core/tst/gplx/ios/IoEngine_dir_basic_memory_tst.java b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_memory_tst.java similarity index 93% rename from 100_core/tst/gplx/ios/IoEngine_dir_basic_memory_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_basic_memory_tst.java index d11cae4f3..532d9ff0b 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_basic_memory_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_memory_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_dir_basic_memory_tst extends IoEngine_dir_basic_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_dir_basic_system_tst.java b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_system_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoEngine_dir_basic_system_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_basic_system_tst.java index b0c92c571..8ae66e7be 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_basic_system_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_basic_system_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_dir_basic_system_tst extends IoEngine_dir_basic_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_dir_deep_base.java b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_base.java similarity index 96% rename from 100_core/tst/gplx/ios/IoEngine_dir_deep_base.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_deep_base.java index 6e4c0524b..0a6b0bf17 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_deep_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public abstract class IoEngine_dir_deep_base { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoEngine_dir_deep_memory_tst.java b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_memory_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoEngine_dir_deep_memory_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_deep_memory_tst.java index d2f75c244..98e78c6bf 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_deep_memory_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_memory_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_dir_deep_memory_tst extends IoEngine_dir_deep_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_dir_deep_system_tst.java b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_system_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoEngine_dir_deep_system_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_dir_deep_system_tst.java index 79672c36f..9c4e73508 100644 --- a/100_core/tst/gplx/ios/IoEngine_dir_deep_system_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_dir_deep_system_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_dir_deep_system_tst extends IoEngine_dir_deep_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_fil_basic_base.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_fil_basic_base.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java index d6e1f20b6..e70329b37 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_basic_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_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.ios; import gplx.*; -import org.junit.*; import gplx.texts.*;/*EncodingAdp_*/ +package gplx.core.ios; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.texts.*;/*EncodingAdp_*/ public abstract class IoEngine_fil_basic_base { @Before public void setup() { engine = engine_(); diff --git a/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java index 305f5fcff..5190d6401 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_fil_basic_memory_tst extends IoEngine_fil_basic_base { @Override protected IoEngine engine_() {return IoEngine_.Mem_init_();} diff --git a/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java index 0dc2613fe..3e67e1c21 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_fil_basic_system_tst extends IoEngine_fil_basic_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_fil_xfer_base.java b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_base.java similarity index 96% rename from 100_core/tst/gplx/ios/IoEngine_fil_xfer_base.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_xfer_base.java index 8729f870a..3f0459d3e 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_xfer_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public abstract class IoEngine_fil_xfer_base { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_memory_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_xfer_memory_tst.java index 0248a8508..24088905e 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_memory_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_fil_xfer_memory_tst extends IoEngine_fil_xfer_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_fil_xfer_system_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_system_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoEngine_fil_xfer_system_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_fil_xfer_system_tst.java index 793de5756..d9913f7f8 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_xfer_system_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_xfer_system_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_fil_xfer_system_tst extends IoEngine_fil_xfer_base { @Override protected void setup_hook() { diff --git a/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java b/100_core/tst/gplx/core/ios/IoEngine_stream_xfer_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_stream_xfer_tst.java index f710b4a82..642feef31 100644 --- a/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_stream_xfer_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_stream_xfer_tst { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java b/100_core/tst/gplx/core/ios/IoEngine_xrg_queryDir_tst.java similarity index 96% rename from 100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_xrg_queryDir_tst.java index 2a1e97db2..6a2fa8f21 100644 --- a/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_xrg_queryDir_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_xrg_queryDir_tst { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoEngine_xrg_recycleFil_tst.java b/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoEngine_xrg_recycleFil_tst.java rename to 100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java index 79a7e8c5a..da121df2e 100644 --- a/100_core/tst/gplx/ios/IoEngine_xrg_recycleFil_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoEngine_xrg_recycleFil_tst { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoItmDir_FetchDeepOrNull_tst.java b/100_core/tst/gplx/core/ios/IoItmDir_FetchDeepOrNull_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoItmDir_FetchDeepOrNull_tst.java rename to 100_core/tst/gplx/core/ios/IoItmDir_FetchDeepOrNull_tst.java index 25233d520..c030353ae 100644 --- a/100_core/tst/gplx/ios/IoItmDir_FetchDeepOrNull_tst.java +++ b/100_core/tst/gplx/core/ios/IoItmDir_FetchDeepOrNull_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoItmDir_FetchDeepOrNull_tst { @Before public void setup() { diff --git a/100_core/tst/gplx/ios/IoItm_fxt.java b/100_core/tst/gplx/core/ios/IoItm_fxt.java similarity index 94% rename from 100_core/tst/gplx/ios/IoItm_fxt.java rename to 100_core/tst/gplx/core/ios/IoItm_fxt.java index c11ba52fc..c7d57b87d 100644 --- a/100_core/tst/gplx/ios/IoItm_fxt.java +++ b/100_core/tst/gplx/core/ios/IoItm_fxt.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItm_fxt { public IoItmFil fil_wnt_(String s) {return fil_(Io_url_.wnt_fil_(s));} public IoItmFil fil_(Io_url url) {return IoItmFil_.new_(url, 1, DateAdp_.parse_gplx("2001-01-01"), DateAdp_.parse_gplx("2001-01-01"));} diff --git a/100_core/tst/gplx/ios/IoUrlInfo_alias_tst.java b/100_core/tst/gplx/core/ios/IoUrlInfo_alias_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoUrlInfo_alias_tst.java rename to 100_core/tst/gplx/core/ios/IoUrlInfo_alias_tst.java index 424a7302f..6ae71a8c7 100644 --- a/100_core/tst/gplx/ios/IoUrlInfo_alias_tst.java +++ b/100_core/tst/gplx/core/ios/IoUrlInfo_alias_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoUrlInfo_alias_tst { IoUrlInfo_alias alias; diff --git a/100_core/tst/gplx/ios/IoUrl_lnx_tst.java b/100_core/tst/gplx/core/ios/IoUrl_lnx_tst.java similarity index 95% rename from 100_core/tst/gplx/ios/IoUrl_lnx_tst.java rename to 100_core/tst/gplx/core/ios/IoUrl_lnx_tst.java index 912e4045a..889ca1885 100644 --- a/100_core/tst/gplx/ios/IoUrl_lnx_tst.java +++ b/100_core/tst/gplx/core/ios/IoUrl_lnx_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoUrl_lnx_tst { IoUrlFxt fx = IoUrlFxt.new_(); diff --git a/100_core/tst/gplx/ios/IoUrl_map_tst.java b/100_core/tst/gplx/core/ios/IoUrl_map_tst.java similarity index 94% rename from 100_core/tst/gplx/ios/IoUrl_map_tst.java rename to 100_core/tst/gplx/core/ios/IoUrl_map_tst.java index 2b2a094e3..6270cc5de 100644 --- a/100_core/tst/gplx/ios/IoUrl_map_tst.java +++ b/100_core/tst/gplx/core/ios/IoUrl_map_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoUrl_map_tst { IoUrlFxt fx = IoUrlFxt.new_(); diff --git a/100_core/tst/gplx/ios/IoUrl_wnt_tst.java b/100_core/tst/gplx/core/ios/IoUrl_wnt_tst.java similarity index 97% rename from 100_core/tst/gplx/ios/IoUrl_wnt_tst.java rename to 100_core/tst/gplx/core/ios/IoUrl_wnt_tst.java index ed10bbd58..80cf41404 100644 --- a/100_core/tst/gplx/ios/IoUrl_wnt_tst.java +++ b/100_core/tst/gplx/core/ios/IoUrl_wnt_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class IoUrl_wnt_tst { IoUrlFxt fx = IoUrlFxt.new_(); diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java index 155d3fcfe..86087fd64 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.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.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public interface GfmlLxr extends GfoEvObj { String Key(); String[] Hooks(); diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java index 86610890b..322a01e48 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; import gplx.core.strings.*; -import gplx.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public class GfmlLxr_ { public static GfmlLxr general_(String key, GfmlTkn protoTkn) {return GfmlLxr_general.new_(key, protoTkn);} public static GfmlLxr solo_(String key, GfmlTkn singletonTkn) {return GfmlLxr_singleton.new_(key, singletonTkn.Raw(), singletonTkn);} diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java index b21e2a299..5c0210251 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.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.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public class GfmlTrie { public String[] Symbols() { String[] rv = new String[symbols.Count()]; diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java b/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java index 34de2ea87..21992cf6f 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlBldr.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.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public class GfmlBldr { @gplx.Internal protected GfmlDoc Doc() {return gdoc;} GfmlDoc gdoc = GfmlDoc.new_(); @gplx.Internal protected GfmlFrame CurFrame() {return curFrame;} GfmlFrame curFrame; diff --git a/110_gfml/tst/gplx/gfml/z012_GfmlTrie_tst.java b/110_gfml/tst/gplx/gfml/z012_GfmlTrie_tst.java index d04f3b8b0..699c885c3 100644 --- a/110_gfml/tst/gplx/gfml/z012_GfmlTrie_tst.java +++ b/110_gfml/tst/gplx/gfml/z012_GfmlTrie_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; import org.junit.*; -import gplx.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public class z012_GfmlTrie_tst { @Before public void setup() { trie = GfmlTrie.new_(); diff --git a/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java b/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java index 5dfff31a3..031a89e03 100644 --- a/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java +++ b/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; import org.junit.*; -import gplx.texts.*; /*CharStream*/ +import gplx.core.texts.*; /*CharStream*/ public class z091_GfmlLxr_basic_tst { @Before public void setup() { rootLxr = GfmlLxr_.general_("gfml.root", GfmlTkn_.cmd_("tkn:text", GfmlBldrCmd_.Null)); diff --git a/110_gfml/tst/gplx/gfml/z901_perf_tst.java b/110_gfml/tst/gplx/gfml/z901_perf_tst.java index a3cadc1ca..f2fbc5d7b 100644 --- a/110_gfml/tst/gplx/gfml/z901_perf_tst.java +++ b/110_gfml/tst/gplx/gfml/z901_perf_tst.java @@ -29,7 +29,7 @@ public class z901_perf_tst { // sbXml.Add(longText); // sbXml.Add("/>"); // tmr.Bgn(); -// gplx.xmls.XmlDoc_.parse(sbXml.To_str()); +// gplx.langs.xmls.XmlDoc_.parse(sbXml.To_str()); // tmr.End_and_print("xml"); // 400 String_bldr sbGfml = String_bldr_.new_(); @@ -40,7 +40,7 @@ public class z901_perf_tst { // sbGfml.Add(longText); } // tmr.Bgn(); -// gplx.texts.CharStream.pos0_(sbGfml.To_str()); +// gplx.core.texts.CharStream.pos0_(sbGfml.To_str()); // tmr.End_and_print("char"); // 1700 tmr.Bgn(); diff --git a/140_dbs/src/gplx/dbs/Db_stmt.java b/140_dbs/src/gplx/dbs/Db_stmt.java index 65e47570a..10d68cf25 100644 --- a/140_dbs/src/gplx/dbs/Db_stmt.java +++ b/140_dbs/src/gplx/dbs/Db_stmt.java @@ -49,7 +49,7 @@ public interface Db_stmt extends RlsAble { Db_stmt Crt_bry_as_str(String k, byte[] v); Db_stmt Val_bry_as_str(String k, byte[] v); Db_stmt Val_bry_as_str(byte[] v); - Db_stmt Val_rdr_(gplx.ios.Io_stream_rdr rdr, long rdr_len); + Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr rdr, long rdr_len); boolean Exec_insert(); int Exec_update(); int Exec_delete(); 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 66e415f8f..3381fe0d8 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 @@ -98,10 +98,10 @@ public class Db_stmt__mem implements Db_stmt { try {Add(k, where, v);} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "String", "val", v);} return this; } - public Db_stmt Val_rdr_(gplx.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { try { Bry_bfr bfr = Bry_bfr.new_(); - gplx.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); + gplx.core.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); Add("", Bool_.N, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; 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 a5be48b3b..3fa761b61 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr_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.stores.*; /*DsvDataRdr*/ import gplx.stores.dsvs.*; /*DsvDataWtr*/ +import gplx.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_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java index 8e45d8e2b..4da9b703b 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_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.stores.dsvs.*; /*DsvDataWtr*/ +import gplx.langs.dsvs.*; /*DsvDataWtr*/ 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/TdbFileList.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java index be98660c6..65acfcf29 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.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.stores.dsvs.*; /*DsvStoreLayout*/ +import gplx.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_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java index 993ba7524..73912f4dd 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.ios.*; /*IoMgrFxt*/ import gplx.dbs.qrys.*; +import gplx.core.ios.*; /*IoMgrFxt*/ import gplx.dbs.qrys.*; public class TdbFlush_tst { @Before public void setup() { Io_mgr.Instance.InitEngine_mem(); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java index c02d2c3e4..4bcb814c0 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbStores.java @@ -18,7 +18,7 @@ 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.stores.dsvs.*; /*DsvDataWtr*/ +import gplx.langs.dsvs.*; /*DsvDataWtr*/ import gplx.lists.*; /*GfoNdeRdr*/ class TdbStores { public static final String Dsv = "dsv"; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTable.java index 7825fc8ea..a38595898 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.stores.dsvs.*; /*DsvStoreLayout*/ +import gplx.*; /*GfoNdeList*/ import gplx.stores.*; import gplx.langs.dsvs.*; /*DsvStoreLayout*/ 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 95c237a7b..c13809f90 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.stores.dsvs.*; /*DsvStoreLayout*/ +import gplx.lists.*; /*Ordered_hash_base*/ import gplx.langs.dsvs.*; /*DsvStoreLayout*/ 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/qrys/Db_qry_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java index 22904f464..7fc65f7ea 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java @@ -45,7 +45,7 @@ public class Db_qry_sql implements Db_qry { Bry_bfr bfr = Bry_bfr.new_(src_len); while (pos < src_len) { int question_pos = Bry_find_.Find_fwd(src, Byte_ascii.Question, pos); - if (question_pos == Bry_.NotFound) + if (question_pos == Bry_find_.Not_found) question_pos = src_len; bfr.Add_mid(src, pos, question_pos); if (args_idx < args_len) @@ -70,9 +70,9 @@ public class Db_qry_sql implements Db_qry { else if (Type_adp_.Eq(val_type, Byte_.Cls_ref_type)) bfr.Add_byte(Byte_.cast(val)); else if (Type_adp_.Eq(val_type, DateAdp_.Cls_ref_type)) - bfr.Add_byte_apos().Add_str(DateAdp_.cast(val).XtoStr_gplx_long()).Add_byte_apos(); + bfr.Add_byte_apos().Add_str_a7(DateAdp_.cast(val).XtoStr_gplx_long()).Add_byte_apos(); else if (Type_adp_.Eq(val_type, Decimal_adp_.Cls_ref_type)) - bfr.Add_str(Decimal_adp_.cast(val).To_str()); + bfr.Add_str_a7(Decimal_adp_.cast(val).To_str()); else { byte[] val_bry = Bry_.new_u8(Object_.Xto_str_strict_or_null(val)); val_bry = Bry_.Replace(val_bry, Byte_ascii.Apos_bry, Bry_escape_apos); 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 33a7ce251..16f500149 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java @@ -106,7 +106,7 @@ public class Db_stmt_cmd implements Db_stmt { try {stmt.setString(++val_idx, v);} catch (Exception e) {this.Rls(); throw Err_.new_exc(e, "db", "failed to add value", "type", "String", "val", v, "sql", sql);} return this; } - public Db_stmt Val_rdr_(gplx.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { try {stmt.setBinaryStream(++val_idx, (java.io.InputStream)v.Under(), (int)rdr_len);} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; } 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 d190bda13..1a86f9a5f 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java @@ -90,10 +90,10 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen try {Add(k, Val_str_wrap(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "String", "val", v);} return this; } - public Db_stmt Val_rdr_(gplx.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { try { Bry_bfr bfr = Bry_bfr.new_(); - gplx.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); + gplx.core.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); Add(Key_na, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; @@ -146,7 +146,7 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen int arg_idx = 0; int pos_prv = 0; tmp_bfr.Clear(); while (true) { - int pos_cur = Bry_find_.Find_fwd(sql_bry, Byte_ascii.Question, pos_prv); if (pos_cur == Bry_.NotFound) break; + int pos_cur = Bry_find_.Find_fwd(sql_bry, Byte_ascii.Question, pos_prv); if (pos_cur == Bry_find_.Not_found) break; tmp_bfr.Add_mid(sql_bry, pos_prv, pos_cur); tmp_bfr.Add_byte(Byte_ascii.Tilde).Add_byte(Byte_ascii.Curly_bgn); tmp_bfr.Add_int_variable(arg_idx++); diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_iosql_tst.java b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_iosql_tst.java index d0c64d33f..e47732399 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_iosql_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_iosql_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; import org.junit.*; import gplx.core.strings.*; import gplx.core.criterias.*; /*Criteria_base*/ -import gplx.ios.*; import gplx.dbs.sqls.*; +import gplx.core.ios.*; import gplx.dbs.sqls.*; public class Sql_qry_wtr_iosql_tst { @Test public void Type() { fld = IoItm_base_.Prop_Type; diff --git a/140_dbs/src/gplx/stores/Db_data_rdr.java b/140_dbs/src/gplx/stores/Db_data_rdr.java index bf0e0ca10..affe83163 100644 --- a/140_dbs/src/gplx/stores/Db_data_rdr.java +++ b/140_dbs/src/gplx/stores/Db_data_rdr.java @@ -51,12 +51,12 @@ public class Db_data_rdr extends DataRdr_base implements DataRdr { return DateAdp_.dateTime_(g); } @Override public Decimal_adp ReadDecimal(String key) {return Decimal_adp_.db_(this.Read(key));} - @Override public gplx.ios.Io_stream_rdr ReadRdr(String key) { + @Override public gplx.core.ios.Io_stream_rdr ReadRdr(String key) { try { java.io.InputStream input_stream = rdr.getBinaryStream(key); - return gplx.ios.Io_stream_rdr_.file_(input_stream); + return gplx.core.ios.Io_stream_rdr_.file_(input_stream); } - catch (SQLException e) {return gplx.ios.Io_stream_rdr_.Noop;} + catch (SQLException e) {return gplx.core.ios.Io_stream_rdr_.Noop;} } public boolean MoveNextPeer() { diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java index 2087912e5..3d3713c78 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.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.core.strings.*; import gplx.texts.*; +import gplx.core.strings.*; import gplx.core.texts.*; public class ColorAdp { public int Value() {return val;} int val; public int Alpha() {return (255 & val >> 24);} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java index 6d3d3d3d3..29e2895e1 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.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.texts.*; +import gplx.core.texts.*; public class ColorAdp_ implements ParseAble { public static ColorAdp as_(Object obj) {return obj instanceof ColorAdp ? (ColorAdp)obj : null;} public static ColorAdp cast(Object obj) {try {return (ColorAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, ColorAdp.class, obj);}} diff --git a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java index 2ae39af95..9bbcdb936 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java +++ b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java @@ -46,7 +46,7 @@ public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { IptBnd_.cmd_to_(IptCfg_.Null, consoleBox, cmds, GfoConsoleWinCmds.Invk_Help, IptKey_.add_(IptKey_.Ctrl, IptKey_.D)); IptBnd_.cmd_to_(IptCfg_.Null, consoleBox, cmds, GfoConsoleWinCmds.Invk_Clear, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.C)); logger = new GfuiTextBoxLogger(this).Init(statusBox); -// gplx.ios.GfioApp.InitGfs(); +// gplx.core.ios.GfioApp.InitGfs(); UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Note, this); win.Lyt_activate(); diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java b/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java index ee2243bad..908116a8b 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java +++ b/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; import gplx.core.primitives.*; -import gplx.ios.*; /*IoStream*/ +import gplx.core.ios.*; /*IoStream*/ import java.io.File; import java.io.FileInputStream; import java.io.IOException; diff --git a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java b/150_gfui/tst/gplx/gfui/ImageAdp_tst.java index c54851bd3..a8c547d3c 100644 --- a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java +++ b/150_gfui/tst/gplx/gfui/ImageAdp_tst.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import org.junit.*; import gplx.core.consoles.*; -import gplx.ios.*; -import gplx.security.*; +import gplx.core.ios.*; +import gplx.core.security.*; public class ImageAdp_tst { @Before public void setup() { load = Tfds.RscDir.GenSubFil_nest("150_gfui", "imgs", "strawberry_java.bmp"); diff --git a/400_xowa/src/gplx/core/brys/Bry_parser.java b/400_xowa/src/gplx/core/brys/Bry_parser.java new file mode 100644 index 000000000..c7e19283c --- /dev/null +++ b/400_xowa/src/gplx/core/brys/Bry_parser.java @@ -0,0 +1,130 @@ +/* +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_parser { + private final gplx.core.primitives.Int_obj_ref pos_ref = gplx.core.primitives.Int_obj_ref.neg1_(); + private byte[] page; private String wkr_name; private int hook_bgn; + public byte[] Src() {return src;} private byte[] src; + public int Src_len() {return src_len;} private int src_len; + public int Pos() {return pos;} private int pos; + public void Init_src(byte[] page, byte[] src, int src_len, int pos) { + this.page = page; this.src = src; this.src_len = src_len; this.pos = pos; + } + public void Init_hook(String wkr_name, int hook_bgn, int hook_end) { + this.wkr_name = wkr_name; this.hook_bgn = hook_bgn; this.pos = hook_end; + } + public int Pos_(int v) {this.pos = v; return pos;} + public int Pos_add_one() {return Pos_add(1);} + public int Pos_add(int adj) { + this.pos += adj; + return pos; + } + public byte Read_byte() { + byte rv = src[pos]; + ++pos; + return rv; + } + public int Read_int_to(byte to_char) { + int bgn = pos; + int rv = 0; + int negative = 1; + while (pos < src_len) { + byte b = src[pos++]; + switch (b) { + case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4: + case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: + rv = (rv * 10) + (b - Byte_ascii.Num_0); + break; + case Byte_ascii.Dash: + if (negative == -1) // 2nd negative + throw Fail("invalid int", String_.new_u8(src, bgn, pos)); + else // 1st negative + negative = -1; // flag negative + break; + default: { + boolean match = b == to_char; + if (to_char == Byte_ascii.Null) {// hack for Read_int_to_non_num + --pos; + match = true; + } + if (!match) throw Fail("invalid int", String_.new_u8(src, bgn, pos)); + return rv * negative; + } + } + } + if (bgn == pos) throw Fail("int is empty", String_.Empty); + return rv * negative; + } + public byte Read_byte_as_a7_int() { + byte rv = Byte_ascii.To_a7_int(src[pos]); + ++pos; + return rv; + } + public int Read_int_by_base85(int reqd) { + int rv = gplx.xowa.htmls.core.hzips.Xoh_hzip_int_.Decode(reqd, src, src_len, pos, pos_ref); + pos = pos_ref.Val(); + return rv; + } + public boolean Is(byte find) { + boolean rv = src[pos] == find; + if (rv) ++pos; // only advance if match; + return rv; + } + public int Chk(byte[] find) { + int find_end = pos + find.length; + if (!Bry_.Match(src, pos, find_end, find)) throw Fail("failed check", String_.new_u8(find)); + pos = find_end; + return pos; + } + public int Chk(byte find) { + if (src[pos] != find) throw Fail("failed check", Byte_ascii.To_str(find)); + ++pos; + return pos; + } + public int Fwd_bgn(byte[] find) { + int find_pos = Bry_find_.Find_fwd(src, find, pos, src_len); + if (find_pos == Bry_find_.Not_found) throw Fail("missing", String_.new_u8(find)); + pos = find_pos + find.length; + return find_pos; + } + public int Fwd_bgn(byte find) { + int find_pos = Bry_find_.Find_fwd(src, find, pos, src_len); + if (find_pos == Bry_find_.Not_found) throw Fail("missing", Byte_ascii.To_str(find)); + pos = find_pos + 1; + return find_pos; + } + public int Fwd_end(byte[] find) { + int find_pos = Bry_find_.Find_fwd(src, find, pos, src_len); + if (find_pos == Bry_find_.Not_found) throw Fail("missing", String_.new_u8(find)); + pos = find_pos + find.length; + return pos; + } + public int Fwd_end(byte find) { + int find_pos = Bry_find_.Find_fwd(src, find, pos, src_len); + if (find_pos == Bry_find_.Not_found) throw Fail("missing", Byte_ascii.To_str(find)); + pos = find_pos + 1; + return pos; + } + public int Fwd_while(byte find) { + this.pos = Bry_find_.Find_fwd_while(src, pos, src_len, find); + return pos; + } + public Err Fail(String msg, String arg) { + return Err_.new_("Bry_parser", msg, "arg", arg, "page", page, "wkr", wkr_name, "excerpt", Bry_.Mid_by_len_safe(src, hook_bgn, 255)); + } +} diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java index dd5d6adec..8ea52bce7 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_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.flds; import gplx.*; import gplx.core.*; +import gplx.core.encoders.*; public class Gfo_fld_rdr extends Gfo_fld_base { private Bry_bfr bfr = Bry_bfr.new_(); private static final byte[] Bry_nil = Bry_.new_a7("\\0"); public byte[] Data() {return data;} public Gfo_fld_rdr Data_(byte[] v) {data = v; data_len = v.length; pos = 0; return this;} private byte[] data; int data_len; @@ -28,8 +29,8 @@ public class Gfo_fld_rdr extends Gfo_fld_base { public String Read_str_simple() {Move_next_simple(); return String_.new_u8(data, fld_bgn, fld_end);} public byte[] Read_bry_simple() {Move_next_simple(); return Bry_.Mid(data, fld_bgn, fld_end);} // was Mid_by_len???; 20120915 - public int Read_int_base85_lenN(int len) {fld_bgn = pos; fld_end = pos + len - 1 ; pos = pos + len + 1 ; return Base85_utl.XtoIntByAry(data, fld_bgn, fld_end);} - public int Read_int_base85_len5() {fld_bgn = pos; fld_end = pos + 4 ; pos = pos + 6 ; return Base85_utl.XtoIntByAry(data, fld_bgn, fld_end);} + public int Read_int_base85_lenN(int len) {fld_bgn = pos; fld_end = pos + len - 1 ; pos = pos + len + 1 ; return Base85_.To_int_by_bry(data, fld_bgn, fld_end);} + public int Read_int_base85_len5() {fld_bgn = pos; fld_end = pos + 4 ; pos = pos + 6 ; return Base85_.To_int_by_bry(data, fld_bgn, fld_end);} public int Read_int() {Move_next_simple(); return Bry_.To_int_or(data, fld_bgn, fld_end, -1);} public byte Read_int_as_byte() {Move_next_simple(); return (byte)Bry_.To_int_or(data, fld_bgn, fld_end, -1);} public byte Read_byte() {Move_next_simple(); return data[fld_bgn];} diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java index 0f15ff27c..452b1ed88 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.flds; import gplx.*; import gplx.core.*; import org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Gfo_fld_rdr_tst { Gfo_fld_rdr_fxt fxt = new Gfo_fld_rdr_fxt(); @Test public void Read_int() {fxt.ini_xdat().Raw_("123|") .tst_Read_int(123);} diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java index 77301d24a..07ba28880 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.flds; import gplx.*; import gplx.core.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.core.encoders.*; public class Gfo_fld_wtr extends Gfo_fld_base { public Bry_bfr Bfr() {return bfr;} public Gfo_fld_wtr Bfr_(Bry_bfr v) {bfr = v; return this;} Bry_bfr bfr; public Gfo_fld_wtr() {this.bfr = Bry_bfr.new_();} - public Gfo_fld_wtr Write_int_base85_len5_fld(int v) {bfr.Add_base85(v, Base85_utl.Len_int); bfr.Add_byte(fld_dlm); return this;} + public Gfo_fld_wtr Write_int_base85_len5_fld(int v) {bfr.Add_base85(v, Base85_.Len_int); bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_base85_lenN_fld(int v, int len) {bfr.Add_base85(v, len); bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_variable_fld(int v) {bfr.Add_int_variable(v); bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_fixed_fld(int v, int len) {bfr.Add_int_fixed(v, len); bfr.Add_byte(fld_dlm); return this;} @@ -31,7 +31,7 @@ public class Gfo_fld_wtr extends Gfo_fld_base { public Gfo_fld_wtr Write_dlm_row() { bfr.Add_byte(row_dlm); return this;} public Gfo_fld_wtr Write_dlm_fld() { bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_base85_lenN_row(int v, int len) {bfr.Add_base85(v, len); bfr.Add_byte(row_dlm); return this;} - public Gfo_fld_wtr Write_int_base85_len5_row(int v) {bfr.Add_base85(v, Base85_utl.Len_int); bfr.Add_byte(row_dlm); return this;} + public Gfo_fld_wtr Write_int_base85_len5_row(int v) {bfr.Add_base85(v, Base85_.Len_int); bfr.Add_byte(row_dlm); return this;} public Gfo_fld_wtr Write_bry_escape_row(byte[] val) {Write_bry_escape(val, 0, val.length); bfr.Add_byte(row_dlm); return this;} public Gfo_fld_wtr Write_bry_escape_row(byte[] val, int bgn, int end) {Write_bry_escape(val, bgn, end); bfr.Add_byte(row_dlm); return this;} public Gfo_fld_wtr Write_double_row(double v) {bfr.Add_double(v); bfr.Add_byte(row_dlm); return this;} diff --git a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr.java b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java similarity index 95% rename from 400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr.java rename to 400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr.java index a83ea7562..6010c45e3 100644 --- a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr.java +++ b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.lists.*; class BinaryHeap_Io_line_rdr { public BinaryHeap_Io_line_rdr(ComparerAble comparer) {this.comparer = comparer;} ComparerAble comparer; diff --git a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr_tst.java similarity index 95% rename from 400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java rename to 400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr_tst.java index 1403e19e3..646006e23 100644 --- a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/BinaryHeap_Io_line_rdr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class BinaryHeap_Io_line_rdr_tst { BinaryHeap_Io_line_rdr_fxt fxt = new BinaryHeap_Io_line_rdr_fxt(); diff --git a/400_xowa/src/gplx/ios/Io_buffer_rdr.java b/400_xowa/src/gplx/core/ios/Io_buffer_rdr.java similarity index 92% rename from 400_xowa/src/gplx/ios/Io_buffer_rdr.java rename to 400_xowa/src/gplx/core/ios/Io_buffer_rdr.java index fec60d8a8..a633865dd 100644 --- a/400_xowa/src/gplx/ios/Io_buffer_rdr.java +++ b/400_xowa/src/gplx/core/ios/Io_buffer_rdr.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.ios; import gplx.*; -import gplx.ios.*;/*IoStream*/ +package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.*;/*IoStream*/ public class Io_buffer_rdr implements RlsAble { private Io_stream_rdr rdr; Io_buffer_rdr(Io_stream_rdr rdr, Io_url url, int bfr_len) { @@ -43,7 +43,7 @@ public class Io_buffer_rdr implements RlsAble { } private boolean Bfr_load(int bgn, int len) { int read = rdr.Read(bfr, bgn, len); - if (read == gplx.ios.Io_stream_rdr_.Read_done) {fil_eof = true; return false;} + if (read == gplx.core.ios.Io_stream_rdr_.Read_done) {fil_eof = true; return false;} fil_pos += read; bfr_len = bgn + read; if (read < len) fil_eof = true; diff --git a/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java b/400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java similarity index 94% rename from 400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java rename to 400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java index d76ede2fe..4173add93 100644 --- a/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_buffer_rdr_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.ios; import gplx.*; -import org.junit.*; import gplx.ios.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.ios.*; public class Io_buffer_rdr_tst { @Before public void init() { Io_mgr.Instance.InitEngine_mem(); diff --git a/400_xowa/src/gplx/ios/Io_fil_chkr.java b/400_xowa/src/gplx/core/ios/Io_fil_chkr.java similarity index 87% rename from 400_xowa/src/gplx/ios/Io_fil_chkr.java rename to 400_xowa/src/gplx/core/ios/Io_fil_chkr.java index df6d88774..53dd3c846 100644 --- a/400_xowa/src/gplx/ios/Io_fil_chkr.java +++ b/400_xowa/src/gplx/core/ios/Io_fil_chkr.java @@ -15,15 +15,15 @@ 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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.tests.*; public class Io_fil_chkr implements Tst_chkr { public Io_fil_chkr(Io_url url, String data) {this.expd_url = url; this.expd_data = data;} public Io_url Expd_url() {return expd_url;} public Io_fil_chkr Expd_url_(Io_url v) {expd_url = v; return this;} Io_url expd_url; public String Expd_data() {return expd_data;} public Io_fil_chkr Expd_data_(String v) {expd_data = v; return this;} private String expd_data; - public Class TypeOf() {return gplx.ios.Io_fil.class;} + public Class TypeOf() {return gplx.core.ios.Io_fil.class;} public int Chk(Tst_mgr mgr, String path, Object actl) { - gplx.ios.Io_fil fil = (gplx.ios.Io_fil)actl; + gplx.core.ios.Io_fil fil = (gplx.core.ios.Io_fil)actl; int rv = 0; rv += mgr.Tst_val(expd_url == null, path, "url", expd_url, fil.Url()); rv += mgr.Tst_val(expd_data == null, path, "data", expd_data, fil.Data()); diff --git a/400_xowa/src/gplx/ios/Io_line_rdr.java b/400_xowa/src/gplx/core/ios/Io_line_rdr.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_line_rdr.java rename to 400_xowa/src/gplx/core/ios/Io_line_rdr.java index 78d993c92..f029b5a26 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr.java +++ b/400_xowa/src/gplx/core/ios/Io_line_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_line_rdr { public Io_line_rdr (Gfo_usr_dlg usr_dlg, Io_url... urls) {this.usr_dlg = usr_dlg; this.urls = urls; if (urls.length == 0) bfr_state = Bfr_state_end;} Gfo_usr_dlg usr_dlg; public int Url_idx() {return url_idx;} private int url_idx; @@ -140,11 +140,11 @@ public class Io_line_rdr { byte[] stream_bry = Io_mgr.Instance.LoadFilBry(url); int stream_bry_len = stream_bry.length; int nl_pos = Bry_find_.Find_fwd(stream_bry, Byte_ascii.Nl, 0, stream_bry_len); - if (nl_pos == Bry_.NotFound) + if (nl_pos == Bry_find_.Not_found) stream_bry = Bry_.Empty; else stream_bry = Bry_.Mid(stream_bry, nl_pos + 1, stream_bry_len); - stream = gplx.ios.IoStream_.ary_(stream_bry); + stream = gplx.core.ios.IoStream_.ary_(stream_bry); } else { stream = Io_mgr.Instance.OpenStreamRead(url); diff --git a/400_xowa/src/gplx/ios/Io_line_rdr_key_gen.java b/400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen.java similarity index 92% rename from 400_xowa/src/gplx/ios/Io_line_rdr_key_gen.java rename to 400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen.java index ec6dfef5c..6140fe5d6 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr_key_gen.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_line_rdr_key_gen { void Gen(Io_line_rdr bfr); } diff --git a/400_xowa/src/gplx/ios/Io_line_rdr_key_gen_.java b/400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen_.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_line_rdr_key_gen_.java rename to 400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen_.java index 93c2454d1..b7d1a5646 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr_key_gen_.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr_key_gen_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_line_rdr_key_gen_ { public static final Io_line_rdr_key_gen first_pipe = new Io_line_rdr_key_gen_first(Byte_ascii.Pipe); public static final Io_line_rdr_key_gen last_pipe = new Io_line_rdr_key_gen_last(Byte_ascii.Pipe); diff --git a/400_xowa/src/gplx/ios/Io_line_rdr_tst.java b/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java similarity index 96% rename from 400_xowa/src/gplx/ios/Io_line_rdr_tst.java rename to 400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java index 105fae21a..4f763aaf6 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_line_rdr_tst { Io_line_rdr_fxt fxt; diff --git a/400_xowa/src/gplx/ios/Io_make_cmd.java b/400_xowa/src/gplx/core/ios/Io_make_cmd.java similarity index 92% rename from 400_xowa/src/gplx/ios/Io_make_cmd.java rename to 400_xowa/src/gplx/core/ios/Io_make_cmd.java index 545cc2826..7ecd57f05 100644 --- a/400_xowa/src/gplx/ios/Io_make_cmd.java +++ b/400_xowa/src/gplx/core/ios/Io_make_cmd.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_make_cmd extends Io_sort_cmd { Io_sort_cmd Make_dir_(Io_url v); } diff --git a/400_xowa/src/gplx/ios/Io_sort.java b/400_xowa/src/gplx/core/ios/Io_sort.java similarity index 97% rename from 400_xowa/src/gplx/ios/Io_sort.java rename to 400_xowa/src/gplx/core/ios/Io_sort.java index 08aa36003..ec7b988a4 100644 --- a/400_xowa/src/gplx/ios/Io_sort.java +++ b/400_xowa/src/gplx/core/ios/Io_sort.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.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; diff --git a/400_xowa/src/gplx/ios/Io_sort_cmd.java b/400_xowa/src/gplx/core/ios/Io_sort_cmd.java similarity index 92% rename from 400_xowa/src/gplx/ios/Io_sort_cmd.java rename to 400_xowa/src/gplx/core/ios/Io_sort_cmd.java index 9949f012e..5c209ddb0 100644 --- a/400_xowa/src/gplx/ios/Io_sort_cmd.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_cmd.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_sort_cmd { void Sort_bgn(); void Sort_do(Io_line_rdr rdr); diff --git a/400_xowa/src/gplx/ios/Io_sort_filCmd.java b/400_xowa/src/gplx/core/ios/Io_sort_filCmd.java similarity index 94% rename from 400_xowa/src/gplx/ios/Io_sort_filCmd.java rename to 400_xowa/src/gplx/core/ios/Io_sort_filCmd.java index e0aa8822c..90e16fb71 100644 --- a/400_xowa/src/gplx/ios/Io_sort_filCmd.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_filCmd.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_sort_filCmd { void Bfr_add(Io_line_rdr stream); void Fil_bgn(Io_line_rdr stream); diff --git a/400_xowa/src/gplx/ios/Io_sort_fil_basic.java b/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_sort_fil_basic.java rename to 400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java index 6f2a7fb4f..fc0c7510d 100644 --- a/400_xowa/src/gplx/ios/Io_sort_fil_basic.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_sort_fil_basic implements Io_sort_cmd { // 123|bgn|end|1 public Io_sort_fil_basic(Gfo_usr_dlg usr_dlg, Io_url_gen url_gen, int flush_len) {this.usr_dlg = usr_dlg; this.url_gen = url_gen; this.flush_len = flush_len;} Io_url_gen url_gen; Bry_bfr bfr = Bry_bfr.new_(); int flush_len; Gfo_usr_dlg usr_dlg; public void Sort_bgn() {} diff --git a/400_xowa/src/gplx/ios/Io_sort_misc_tst.java b/400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_sort_misc_tst.java rename to 400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java index 326565eea..4bdd2388f 100644 --- a/400_xowa/src/gplx/ios/Io_sort_misc_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_misc_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_sort_misc_tst { @Before public void init() { diff --git a/400_xowa/src/gplx/ios/Io_sort_split_itm.java b/400_xowa/src/gplx/core/ios/Io_sort_split_itm.java similarity index 94% rename from 400_xowa/src/gplx/ios/Io_sort_split_itm.java rename to 400_xowa/src/gplx/core/ios/Io_sort_split_itm.java index 85055cecb..fd827780a 100644 --- a/400_xowa/src/gplx/ios/Io_sort_split_itm.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_split_itm.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_sort_split_itm { public Io_sort_split_itm() {} public Io_sort_split_itm(Io_line_rdr rdr) {Set(rdr);} diff --git a/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java rename to 400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java index c96d1a85d..a4f325084 100644 --- a/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_sort_split_itm_sorter implements gplx.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; diff --git a/400_xowa/src/gplx/ios/Io_sort_tst.java b/400_xowa/src/gplx/core/ios/Io_sort_tst.java similarity index 96% rename from 400_xowa/src/gplx/ios/Io_sort_tst.java rename to 400_xowa/src/gplx/core/ios/Io_sort_tst.java index b56fc14c9..c0b733f15 100644 --- a/400_xowa/src/gplx/ios/Io_sort_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; import gplx.core.strings.*; public class Io_sort_tst { Io_sort_fxt fxt = new Io_sort_fxt(); diff --git a/400_xowa/src/gplx/ios/Io_stream_rdr_process.java b/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java similarity index 96% rename from 400_xowa/src/gplx/ios/Io_stream_rdr_process.java rename to 400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java index 311966db5..90c2c24a3 100644 --- a/400_xowa/src/gplx/ios/Io_stream_rdr_process.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.InputStream; public class Io_stream_rdr_process implements Io_stream_rdr { private Process process; diff --git a/400_xowa/src/gplx/ios/Io_stream_zip_mgr.java b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java similarity index 94% rename from 400_xowa/src/gplx/ios/Io_stream_zip_mgr.java rename to 400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java index 3ffbe9d2e..82fa5ecbe 100644 --- a/400_xowa/src/gplx/ios/Io_stream_zip_mgr.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_stream_zip_mgr { - private Bry_bfr bfr = Bry_bfr.reset_(256); + private final Bry_bfr bfr = Bry_bfr.reset_(256); private Io_stream_wtr wtr_gzip, wtr_zip, wtr_bzip2; private Io_stream_rdr rdr_gzip, rdr_zip, rdr_bzip2; public byte[] Zip(byte type, byte[] val) { diff --git a/400_xowa/src/gplx/ios/Io_url_gen.java b/400_xowa/src/gplx/core/ios/Io_url_gen.java similarity index 92% rename from 400_xowa/src/gplx/ios/Io_url_gen.java rename to 400_xowa/src/gplx/core/ios/Io_url_gen.java index 6daf42c29..d8fb229ae 100644 --- a/400_xowa/src/gplx/ios/Io_url_gen.java +++ b/400_xowa/src/gplx/core/ios/Io_url_gen.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_url_gen { Io_url Cur_url(); Io_url Nxt_url(); diff --git a/400_xowa/src/gplx/ios/Io_url_gen_.java b/400_xowa/src/gplx/core/ios/Io_url_gen_.java similarity index 96% rename from 400_xowa/src/gplx/ios/Io_url_gen_.java rename to 400_xowa/src/gplx/core/ios/Io_url_gen_.java index 35457c177..6d90a8e6e 100644 --- a/400_xowa/src/gplx/ios/Io_url_gen_.java +++ b/400_xowa/src/gplx/core/ios/Io_url_gen_.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_url_gen_ { public static Io_url_gen dir_(Io_url v) {return new Io_url_gen_dir(v);} public static Io_url_gen dir_(Io_url v, String fmt, int digits) {return new Io_url_gen_dir(v).Fmt_(fmt).Fmt_digits_(digits);} diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr.java b/400_xowa/src/gplx/core/ios/Io_zip_mgr.java similarity index 93% rename from 400_xowa/src/gplx/ios/Io_zip_mgr.java rename to 400_xowa/src/gplx/core/ios/Io_zip_mgr.java index 84646a41d..c5089561d 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr.java +++ b/400_xowa/src/gplx/core/ios/Io_zip_mgr.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public interface Io_zip_mgr { void Zip_fil(Io_url src_fil, Io_url trg_fil); byte[] Zip_bry(byte[] src, int bgn, int len); diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr_base.java b/400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java similarity index 96% rename from 400_xowa/src/gplx/ios/Io_zip_mgr_base.java rename to 400_xowa/src/gplx/core/ios/Io_zip_mgr_base.java index a4d4281eb..0f029fc7e 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_base.java +++ b/400_xowa/src/gplx/core/ios/Io_zip_mgr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.*; import java.util.zip.*; public class Io_zip_mgr_base implements Io_zip_mgr { diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java b/400_xowa/src/gplx/core/ios/Io_zip_mgr_mok.java similarity index 95% rename from 400_xowa/src/gplx/ios/Io_zip_mgr_mok.java rename to 400_xowa/src/gplx/core/ios/Io_zip_mgr_mok.java index 7a4668641..101ddc87f 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java +++ b/400_xowa/src/gplx/core/ios/Io_zip_mgr_mok.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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_zip_mgr_mok 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/ios/Io_zip_mgr_tst.java b/400_xowa/src/gplx/core/ios/Io_zip_mgr_tst.java similarity index 93% rename from 400_xowa/src/gplx/ios/Io_zip_mgr_tst.java rename to 400_xowa/src/gplx/core/ios/Io_zip_mgr_tst.java index 55e92fc68..4eda1204f 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_zip_mgr_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.ios; import gplx.*; +package gplx.core.ios; import gplx.*; import gplx.core.*; import org.junit.*; public class Io_zip_mgr_tst { @Test public void Zip_unzip() { diff --git a/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java b/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java index 2b2047c1f..3069f27d1 100644 --- a/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java +++ b/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.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.net; import gplx.*; import gplx.core.*; -import gplx.ios.*; +import gplx.core.ios.*; class Gfo_inet_conn__http implements Gfo_inet_conn { private final IoEngine_xrg_downloadFil downloader = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); public int Tid() {return Gfo_inet_conn_.Tid__http;} 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 0f5734afb..40c944c3e 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser.java @@ -47,7 +47,7 @@ public class Gfo_url_parser { } if (!rel) { // search for ":"; NOTE: only search if not rel; i.e.: "//" int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, pos, src_end); // no colon found; EX: "//a.org/b"; "a.org/b" - if (colon_pos != Bry_.NotFound) // colon found; EX: "http://" or "https://" + if (colon_pos != Bry_find_.Not_found) // colon found; EX: "http://" or "https://" pos = colon_pos + Int_.Const_dlm_len; if (pos < src_end && src[pos] == Byte_ascii.Slash) { // skip slash after colon pos += 1; @@ -56,7 +56,7 @@ public class Gfo_url_parser { } } int slash_pos = Bry_find_.Find_fwd(src, Byte_ascii.Slash, pos, src_end); - if (slash_pos == Bry_.NotFound) // no terminating slash; EX: http://a.org + if (slash_pos == Bry_find_.Not_found) // no terminating slash; EX: http://a.org slash_pos = src_end; slash_pos = Bry_.Trim_end_pos(src, slash_pos); site_data.Atrs_set(rel, pos, slash_pos); diff --git a/400_xowa/src/gplx/core/net/Http_client_wtr.java b/400_xowa/src/gplx/core/net/Http_client_wtr.java index 2a9a16120..5b60c6995 100644 --- a/400_xowa/src/gplx/core/net/Http_client_wtr.java +++ b/400_xowa/src/gplx/core/net/Http_client_wtr.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.net; import gplx.*; import gplx.core.*; -import gplx.ios.*; +import gplx.core.ios.*; public interface Http_client_wtr { void Stream_(Object o); void Write_bry(byte[] bry); diff --git a/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java b/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java index 113548e25..85afb5275 100644 --- a/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java +++ b/400_xowa/src/gplx/core/net/Http_client_wtr__stream.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.net; import gplx.*; import gplx.core.*; -import gplx.ios.*; +import gplx.core.ios.*; import java.io.*; class Http_client_wtr__stream implements Http_client_wtr { private final byte[] tmp_stream_bry = new byte[1024]; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java index b806fc975..d22c13f46 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java @@ -59,7 +59,7 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { kit.Ask_ok(GRP_KEY, "download.fail", "download failed. Please select 'read from file' if you've already downloaded a dump: url=~{0} error=~{1}", src, xrg.Rslt_err_str()); } } boolean download_pass = true; - protected gplx.ios.IoEngine_xrg_downloadFil xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty); + protected gplx.core.ios.IoEngine_xrg_downloadFil xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_async_bgn)) Download(); else if (ctx.Match(k, Invk_owner)) return owner; 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 2e73b8527..e74c38da0 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 @@ -32,7 +32,7 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { public boolean Async_prog_enabled() {return true;} public void Async_prog_run(int async_sleep_sum) { String size_str = " please wait..."; - if (trg.Type_fil()) size_str = gplx.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg).Size()); + if (trg.Type_fil()) size_str = gplx.core.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg).Size()); usr_dlg.Prog_many(GRP_KEY, "unzip", "unzipping: ~{0}", size_str); } @gplx.Virtual public byte Async_init() { diff --git a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java index 65d4ad7e8..f12ec1849 100644 --- a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java +++ b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java @@ -19,10 +19,10 @@ package gplx.core.threads.poolables; import gplx.*; import gplx.core.*; import g public class Gfo_poolable_mgr { private final Object thread_lock = new Object(); private final Gfo_poolable_itm prototype; private final Object[] make_args, clear_args; - private Gfo_poolable_itm[] pool; private int pool_next, pool_len; private final int pool_max; - public Gfo_poolable_mgr(Gfo_poolable_itm prototype, Object[] make_args, Object[] clear_args, int init_pool_len, int pool_max) {// 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 + private Gfo_poolable_itm[] pool; private int pool_nxt, pool_len; + public Gfo_poolable_mgr(Gfo_poolable_itm prototype, Object[] make_args, Object[] clear_args, int init_pool_len, int pool_max) {// NOTE: random IndexOutOfBounds errors in Get around free_ary[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 this.prototype = prototype; this.make_args = make_args; this.clear_args = clear_args; - this.pool_len = init_pool_len; this.pool_max = pool_max; + this.pool_len = init_pool_len; this.Clear_fast(); } public void Clear_safe() {synchronized (thread_lock) {Clear_fast();}} @@ -30,21 +30,21 @@ public class Gfo_poolable_mgr { this.pool = new Gfo_poolable_itm[pool_len]; for (int i = 0; i < pool_len; ++i) pool[i] = prototype.Pool__make(i, make_args); - this.free = new int[pool_len]; - pool_next = free_len = 0; + this.free_ary = new int[pool_len]; + pool_nxt = free_len = 0; } public Gfo_poolable_itm Get_safe() {synchronized (thread_lock) {return Get_fast();}} public Gfo_poolable_itm Get_fast() { Gfo_poolable_itm rv = null; int pool_idx = -1; if (free_len > 0) { // free_itms in pool; use it - pool_idx = free[--free_len]; + pool_idx = free_ary[--free_len]; rv = pool[pool_idx]; } else { // nothing in pool; take next - if (pool_next == pool_len) + if (pool_nxt == pool_len) Expand_pool(); - pool_idx = pool_next++; + pool_idx = pool_nxt++; rv = pool[pool_idx]; if (rv == null) { rv = prototype.Pool__make(pool_idx, make_args); @@ -57,23 +57,18 @@ public class Gfo_poolable_mgr { public void Rls_safe(int idx) {synchronized (thread_lock) {Rls_safe(idx);}} public void Rls_fast(int idx) { if (idx == -1) throw Err_.new_wo_type("rls called on poolable that was not created by pool_mgr"); - int pool_idx = pool_next - 1; + int pool_idx = pool_nxt - 1; if (idx == pool_idx) // in-sequence; decrement count - this.pool_next = pool_idx; - else { // out-of-sequence - if (free_len == pool_max) { // all used; assume entire pool released, but out of order -// Array_.Sort((Object[])free); -// for (int i = 0; i < pool_max; ++i) { -// if (i != free[i]) throw Err_.new_("pool", "available_list out of order", "contents", ""); -// } + if (free_len == 0) + this.pool_nxt = pool_idx; + else { // idx == pool_idx; assume entire pool released, but out of order for (int i = 0; i < free_len; ++i) - free[i] = 0; + free_ary[i] = 0; free_len = 0; } - else { // add to free pool - free[free_len] = idx; - ++free_len; - } + else { // out-of-sequence + free_ary[free_len] = idx; + ++free_len; } } private void Expand_pool() { @@ -84,44 +79,13 @@ public class Gfo_poolable_mgr { this.pool = new_pool; this.pool_len = new_pool_len; - // expand free to same len + // expand free_ary to same len int[] new_free = new int[pool_len]; - Array_.Copy_to(free, 0, new_free, 0, free_len); - this.free = new_free; + Array_.Copy_to(free_ary, 0, new_free, 0, free_len); + this.free_ary = new_free; } - @gplx.Internal protected int[] Free() {return free;} private int[] free; private int free_len; + @gplx.Internal protected int[] Free_ary() {return free_ary;} private int[] free_ary; private int free_len; + @gplx.Internal protected int Free_len() {return free_len;} @gplx.Internal protected int Pool_len() {return pool_len;} -// public int Mgr_id() {return mgr_id;} private int mgr_id; -// 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++) { -// Object 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++) { -// Object 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; -// } -// } + @gplx.Internal protected int Pool_nxt() {return pool_nxt;} } diff --git a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java index 74387b69d..346874730 100644 --- a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java +++ b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java @@ -22,9 +22,43 @@ public class Gfo_poolable_mgr_tst { @Before public void init() {tstr.Clear();} @Test public void Get__one() { tstr.Test__get(0); - tstr.Test__mgr__free(0, 0); + tstr.Test__free__len(0); tstr.Test__pool__len(2); } + @Test public void Get__many__expand() { + tstr.Test__get(0); + tstr.Test__get(1); + tstr.Test__get(2); + tstr.Test__free__len(0); + tstr.Test__pool__len(4); + } + @Test public void Rls__lifo() { + tstr.Test__get(0); + tstr.Test__get(1); + tstr.Test__get(2); + tstr.Exec__rls(2); + tstr.Exec__rls(1); + tstr.Exec__rls(0); + tstr.Test__pool__nxt(0); + tstr.Test__free__len(0); + } + @Test public void Rls__fifo() { + tstr.Test__get(0); + tstr.Test__get(1); + tstr.Test__get(2); + tstr.Exec__rls(0); + tstr.Exec__rls(1); + tstr.Test__pool__nxt(3); + tstr.Test__free__len(2); // 2 items in free_ary + tstr.Test__free__ary(0, 1, 0, 0); + + tstr.Test__get(1); + tstr.Exec__rls(1); + + tstr.Exec__rls(2); + tstr.Test__free__len(0); // 0 items in free_ary + tstr.Test__free__ary(0, 0, 0, 0); + } } class Gfo_poolable_mgr_tstr { private final Gfo_poolable_mgr mgr = new Gfo_poolable_mgr(new Sample_poolable_itm(-1, Object_.Ary_empty), Object_.Ary("make"), Object_.Ary("clear"), 2, 8); @@ -33,12 +67,11 @@ class Gfo_poolable_mgr_tstr { Sample_poolable_itm actl_itm = (Sample_poolable_itm)mgr.Get_fast(); Tfds.Eq(expd_idx, actl_itm.Pool__idx(), "pool_idx"); } - public void Test__mgr__free(int... expd) { - Tfds.Eq_ary(expd, mgr.Free(), "mgr.Free()"); - } - public void Test__pool__len(int expd) { - Tfds.Eq(expd, mgr.Pool_len(), "mgr.Pool_len()"); - } + public void Test__free__ary(int... expd) {Tfds.Eq_ary(expd, mgr.Free_ary(), "mgr.Free_ary()");} + public void Test__free__len(int expd) {Tfds.Eq(expd, mgr.Free_len(), "mgr.Free_len()");} + public void Test__pool__len(int expd) {Tfds.Eq(expd, mgr.Pool_len(), "mgr.Pool_len()");} + public void Test__pool__nxt(int expd) {Tfds.Eq(expd, mgr.Pool_nxt(), "mgr.Pool_nxt()");} + public void Exec__rls(int idx) {mgr.Rls_fast(idx);} } class Sample_poolable_itm implements Gfo_poolable_itm { public Sample_poolable_itm(int pool_idx, Object[] make_args) {this.pool_idx = pool_idx; this.pool__make_args = make_args;} 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 af587648d..694d020f4 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; import gplx.core.primitives.*; -import gplx.dbs.*; import gplx.ios.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.dbs.engines.sqlite.*; public class Fsd_bin_tbl implements RlsAble { private final String tbl_name = "fsdb_bin"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java index 57a12bb95..6ba6ba3f7 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.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.meta; import gplx.*; import gplx.fsdb.*; -import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.ios.*; +import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.fsdb.data.*; public class Fsm_atr_fil { private final Fsm_mnt_itm mnt_itm; private final int mnt_id; diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java index a2b6a2990..82ee08652 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.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.meta; import gplx.*; import gplx.fsdb.*; -import gplx.ios.*; import gplx.dbs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.fsdb.data.*; public class Fsm_bin_fil { private final Fsd_bin_tbl tbl; @@ -31,7 +31,7 @@ public class Fsm_bin_fil { public Db_conn Conn() {return conn;} private final Db_conn conn; public boolean Select_to_url(int id, Io_url url) {return tbl.Select_to_url(id, url);} public Io_stream_rdr Select_as_rdr(int id) {return tbl.Select_as_rdr(id);} - public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.ios.Io_stream_rdr rdr) { + public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.core.ios.Io_stream_rdr rdr) { tbl.Insert_rdr(bin_id, owner_tid, rdr_len, rdr); Bin_len_(bin_len + rdr_len); } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java index e48f0babf..b64948a6d 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_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.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.ios.*; import gplx.dbs.*; +import gplx.core.ios.*; import gplx.dbs.*; public class Fsm_bin_mgr { private final Fsdb_db_mgr core_mgr; private final int mnt_id; private final Fsm_bin_tbl tbl; private Fsm_bin_fil[] dbs__ary = Fsm_bin_fil.Ary_empty; private int dbs__ary_len = 0; private Fsm_bin_fil nth_db; diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java index 28719f3cf..63a7e414c 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_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.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.fsdb.data.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.fsdb.data.*; public class Fsm_mnt_itm { public Fsm_mnt_itm(int id, String name, String url_rel) {this.id = id; this.name = name; this.url_rel = url_rel;} public int Id() {return id;} private final int id; @@ -47,7 +47,7 @@ public class Fsm_mnt_itm { int fil_id = atr_fil.Insert_img(rv, dir, fil, ext_id, img_w, img_h, bin_fil.Id(), bin_len, bin_rdr); bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr); } - public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.ios.Io_stream_rdr bin_rdr) { + public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.core.ios.Io_stream_rdr bin_rdr) { int fil_id = atr_fil.Insert_fil(rv, dir, fil, ext_id, bin_fil.Id(), bin_len, bin_rdr); bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr); } diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java index ac7d7b3dc..ea0075ef7 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java @@ -56,8 +56,8 @@ class Gfs_lxr_comment_flat implements Gfs_lxr { public int Process(Gfs_parser_ctx ctx, int lxr_bgn, int lxr_end) { byte[] src = ctx.Src(); int src_len = ctx.Src_len(); int end_pos = Bry_find_.Find_fwd(src, end_bry, lxr_end, src_len); - // if (end_pos == Bry_.NotFound) throw Err_.new_fmt_("comment is not closed: {0}", String_.new_u8(end_bry)); - return (end_pos == Bry_.NotFound) + // if (end_pos == Bry_find_.Not_found) throw Err_.new_fmt_("comment is not closed: {0}", String_.new_u8(end_bry)); + return (end_pos == Bry_find_.Not_found) ? src_len // allow eos to terminate flat comment; needed for "tidy-always-adds-nl-in-textarea" fix; NOTE: DATE:2014-06-21 : end_pos + end_bry_len; // position after end_bry } @@ -150,7 +150,7 @@ class Gfs_lxr_quote implements Gfs_lxr { public int Process(Gfs_parser_ctx ctx, int lxr_bgn, int lxr_end) { byte[] src = ctx.Src(); int src_len = ctx.Src_len(); int end_pos = Bry_find_.Find_fwd(src, end_bry, lxr_end, src_len); - if (end_pos == Bry_.NotFound) throw Err_.new_wo_type("quote is not closed", "end", String_.new_u8(end_bry)); + if (end_pos == Bry_find_.Not_found) throw Err_.new_wo_type("quote is not closed", "end", String_.new_u8(end_bry)); Bry_bfr bfr = ctx.Tmp_bfr().Clear(); int prv_pos = lxr_end; int nxt_pos = end_pos + end_bry_len; @@ -160,7 +160,7 @@ class Gfs_lxr_quote implements Gfs_lxr { bfr.Add(end_bry); // add end_bry prv_pos = nxt_pos + end_bry_len; // set prv_pos to after doubled end_bry end_pos = Bry_find_.Find_fwd(src, end_bry, prv_pos, src_len); - if (end_pos == Bry_.NotFound) throw Err_.new_wo_type("quote is not closed", "end", String_.new_u8(end_bry)); + if (end_pos == Bry_find_.Not_found) throw Err_.new_wo_type("quote is not closed", "end", String_.new_u8(end_bry)); nxt_pos = end_pos + end_bry_len; if (!Bry_.Match(src, nxt_pos, nxt_pos + end_bry_len, end_bry)) { bfr.Add_mid(src, prv_pos, end_pos); diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java index 4ea2006d1..4e9b351ff 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java @@ -88,14 +88,14 @@ class Gfs_err_mgr { } public static final String Fail_msg_invalid_lxr = "invalid character", Fail_msg_unknown_char = "unknown char", Fail_msg_eos = "end of stream", Fail_msg_nde_stack_empty = "node stack empty"; String Fail_msg(String type, KeyValList fail_args) { - tmp_fail_bfr.Add_str(type).Add_byte(Byte_ascii.Colon); + tmp_fail_bfr.Add_str_u8(type).Add_byte(Byte_ascii.Colon); int len = fail_args.Count(); for (int i = 0; i < len; i++) { tmp_fail_bfr.Add_byte(Byte_ascii.Space); KeyVal kv = fail_args.GetAt(i); - tmp_fail_bfr.Add_str(kv.Key()); + tmp_fail_bfr.Add_str_u8(kv.Key()); tmp_fail_bfr.Add_byte(Byte_ascii.Eq).Add_byte(Byte_ascii.Apos); - tmp_fail_bfr.Add_str(kv.Val_to_str_or_empty()).Add_byte(Byte_ascii.Apos); + tmp_fail_bfr.Add_str_u8(kv.Val_to_str_or_empty()).Add_byte(Byte_ascii.Apos); } return tmp_fail_bfr.To_str_and_clear(); } diff --git a/400_xowa/src/gplx/langs/htmls/Html_atr_.java b/400_xowa/src/gplx/langs/htmls/Html_atr_.java index e9c4ee217..3dd633d2c 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_atr_.java +++ b/400_xowa/src/gplx/langs/htmls/Html_atr_.java @@ -17,13 +17,12 @@ along with this program. If not, see . */ package gplx.langs.htmls; import gplx.*; import gplx.langs.*; public class Html_atr_ { - public static final String - Src_str = "src" - ; public static final byte[] - Id_bry = Bry_.new_a7("id") - , Cls_bry = Bry_.new_a7("class") - , Style_bry = Bry_.new_a7("style") - , Href_bry = Bry_.new_a7("href") + Bry__id = Bry_.new_a7("id") + , Bry__class = Bry_.new_a7("class") + , Bry__rel = Bry_.new_a7("rel") + , Bry__href = Bry_.new_a7("href") + , Bry__title = Bry_.new_a7("title") + , Bry__style = Bry_.new_a7("style") ; } diff --git a/400_xowa/src/gplx/langs/htmls/Html_parser_tst.java b/400_xowa/src/gplx/langs/htmls/Html_parser_tst.java index 4fbd175a8..38b2589fd 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_parser_tst.java +++ b/400_xowa/src/gplx/langs/htmls/Html_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.htmls; import gplx.*; import gplx.langs.*; import org.junit.*; public class Html_parser_tst { - @Before public void init() {fxt.Clear();} private Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Before public void init() {fxt.Clear();} private Html_parser_fxt fxt = new Html_parser_fxt(); @Test public void One() {fxt.Test_parse_find_all("", "id0");} @Test public void Many() {fxt.Test_parse_find_all("", "id0", "id1", "id2");} @Test public void Inline() {fxt.Test_parse_find_all("", "id0");} @@ -26,14 +26,14 @@ public class Html_parser_tst { @Test public void Quote_double() {fxt.Test_parse_find_all("", "id'0");} @Test public void Quote_escape() {fxt.Test_parse_find_all("", "id'0");} } -class Xoh_parser_fxt { +class Html_parser_fxt { public void Clear() { if (parser == null) { parser = new Html_parser(); } } private Html_parser parser; - public Xoh_parser_fxt Test_parse_find_all(String raw_str, String... expd) {return Test_parse_find(raw_str, Html_parser.Wildcard_str, Html_parser.Wildcard_str, expd);} - public Xoh_parser_fxt Test_parse_find(String raw_str, String find_key, String find_val, String... expd) { + public Html_parser_fxt Test_parse_find_all(String raw_str, String... expd) {return Test_parse_find(raw_str, Html_parser.Wildcard_str, Html_parser.Wildcard_str, expd);} + public Html_parser_fxt Test_parse_find(String raw_str, String find_key, String find_val, String... expd) { byte[] raw = Bry_.new_a7(raw_str); Html_nde[] actl_ndes = parser.Parse_as_ary(raw, 0, raw.length, Bry_.new_a7(find_key), Bry_.new_a7(find_val)); String[] actl = Xto_ids(raw, actl_ndes); diff --git a/400_xowa/src/gplx/langs/htmls/Html_tag_.java b/400_xowa/src/gplx/langs/htmls/Html_tag_.java index 819d93a44..2ec1c1991 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_tag_.java +++ b/400_xowa/src/gplx/langs/htmls/Html_tag_.java @@ -29,9 +29,12 @@ public class Html_tag_ { Br_inl = Bry_.new_a7("
") , Hr_inl = Bry_.new_a7("
") , Body_lhs = Bry_.new_a7("") , Body_rhs = Bry_.new_a7("") + , A_lhs_bgn = Bry_.new_a7("") , B_lhs = Bry_.new_a7("") , B_rhs = Bry_.new_a7("") , I_lhs = Bry_.new_a7("") , I_rhs = Bry_.new_a7("") , P_lhs = Bry_.new_a7("

") , P_rhs = Bry_.new_a7("

") + , Pre_lhs = Bry_.new_a7("
")			, Pre_rhs					= Bry_.new_a7("
") , Div_lhs = Bry_.new_a7("
") , Div_rhs = Bry_.new_a7("
") , Html_rhs = Bry_.new_a7("") , Head_lhs_bgn = Bry_.new_a7("") , Script_lhs_w_type = Bry_.new_a7("") + , Span_lhs = Bry_.new_a7("") ; @@ -56,4 +60,28 @@ public class Html_tag_ { Comm_bgn_len = Comm_bgn.length , Comm_end_len = Comm_end.length ; + public static final int + Id__eos = -2 + , Id__any = -1 + , Id__unknown = 0 + , Id__a = 1 + , Id__h2 = 2 + , Id__h3 = 3 + , Id__h4 = 4 + , Id__h5 = 5 + , Id__h6 = 6 + , Id__span = 7 + , Id__div = 8 + , Id__comment = 9 + ; + public static final Hash_adp_bry Hash = Hash_adp_bry.ci_a7() + .Add_str_int("a" , Id__a) + .Add_str_int("h2" , Id__h2) + .Add_str_int("h3" , Id__h3) + .Add_str_int("h4" , Id__h4) + .Add_str_int("h5" , Id__h5) + .Add_str_int("h6" , Id__h6) + .Add_str_int("span" , Id__span) + .Add_str_int("div" , Id__div) + ; } diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java new file mode 100644 index 000000000..0a6d63607 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_atr.java @@ -0,0 +1,35 @@ +/* +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.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +public class Html_atr { + private final byte[] src; + public Html_atr(int idx, byte[] key, byte[] val, byte[] src, int val_bgn, int val_end) { + this.idx = idx; this.key = key; this.val = val; + this.src = src; this.val_bgn = val_bgn; this.val_end = val_end; + } + public int Idx() {return idx;} private final int idx; + 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 byte[] Val() { + if (val == null) + val = Bry_.Mid(src, val_bgn, val_end); + return val; + } private byte[] val; + public static final Html_atr Noop = new Html_atr(-1, Bry_.Empty, Bry_.Empty, Bry_.Empty, 0, 0); +} \ No newline at end of file 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 new file mode 100644 index 000000000..ea5a3293c --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_parser.java @@ -0,0 +1,60 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.btries.*; +public class Html_doc_parser { + private final Btrie_slim_mgr trie = Btrie_slim_mgr.cs(); + private final List_adp list = List_adp_.new_(); + private Html_txt_wkr txt_wkr; + public Html_doc_parser Reg_txt(Html_txt_wkr txt_wkr) { + this.txt_wkr = txt_wkr; + return this; + } + public void Reg(Html_doc_wkr... wkr_ary) { + for (Html_doc_wkr wkr : wkr_ary) { + trie.Add_obj(wkr.Hook(), wkr); + list.Add(wkr); + } + } + public void Parse(byte[] src, int src_bgn, int src_end) { + txt_wkr.Init(src, src_bgn, src_end); + int len = list.Count(); + for (int i = 0; i < len; ++i) { + Html_doc_wkr wkr = (Html_doc_wkr)list.Get_at(i); + wkr.Init(src, src_bgn, src_end); + } + int pos = src_bgn; + int txt_bgn = -1; + while (pos < src_end) { + Object o = trie.Match_bgn(src, pos, src_end); + if (o == null) { + if (txt_bgn == -1) txt_bgn = pos; + ++pos; + } + else { + if (txt_bgn != -1) { + txt_wkr.Parse(txt_bgn, pos); + txt_bgn = -1; + } + Html_doc_wkr wkr = (Html_doc_wkr)o; + pos = wkr.Parse(pos); + } + } + if (txt_bgn != -1) txt_wkr.Parse(txt_bgn, src_end); + } +} diff --git a/100_core/src_800_tst/gplx/Tfds_tst.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_wkr.java similarity index 73% rename from 100_core/src_800_tst/gplx/Tfds_tst.java rename to 400_xowa/src/gplx/langs/htmls/parsers/Html_doc_wkr.java index a3d9fd624..61d12d5d8 100644 --- a/100_core/src_800_tst/gplx/Tfds_tst.java +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_doc_wkr.java @@ -15,15 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx; -import org.junit.*; -public class Tfds_tst { - @Before public void init() {fxt.Clear();} private final Tfds_fxt fxt = new Tfds_fxt(); - @Test public void Basic() { - } -} -class Tfds_fxt { - public void Clear() {} - public void Test() { - } -} +package gplx.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +public interface Html_doc_wkr { + byte[] Hook(); + void Init(byte[] src, int src_bgn, int src_end); + int Parse(int pos); +} \ No newline at end of file diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java new file mode 100644 index 000000000..c1f1be121 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag.java @@ -0,0 +1,96 @@ +/* +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.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.xowa.parsers.htmls.*; +public class Html_tag implements Mwh_atr_wkr { + private Html_tag_rdr rdr; + private Ordered_hash atrs_hash; private boolean atrs_null; private int atrs_bgn, atrs_end; + public Html_tag Init(Html_tag_rdr 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.rdr = rdr; 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(rdr, 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; + } + public int Name_id() {return name_id;} private int name_id; + public int Src_bgn() {return src_bgn;} private int src_bgn; + public int Src_end() {return src_end;} private int src_end; + public boolean Tag_is_tail() {return tag_is_tail;} private boolean tag_is_tail; + public boolean Tag_is_inline() {return tag_is_inline;} private boolean tag_is_inline; + public boolean Atrs__match_pair(byte[] key, byte[] val) { + if (atrs_null) Atrs__make(); + Html_atr rv = (Html_atr)atrs_hash.Get_by(key); + return rv == null ? false : Bry_.Eq(val, rv.Val()); + } + public byte[] Atrs__get_as_bry(byte[] key) { + if (atrs_null) Atrs__make(); + Html_atr rv = (Html_atr)atrs_hash.Get_by(key); + return rv == null ? Bry_.Empty : rv.Val(); + } + public Html_atr Atrs__get_by(byte[] key) { + if (atrs_null) Atrs__make(); + Html_atr rv = (Html_atr)atrs_hash.Get_by(key); + return rv == null ? Html_atr.Noop : rv; + } + public String Atrs__print() { + if (atrs_null) Atrs__make(); + Bry_bfr bfr = Bry_bfr.new_(); + int len = atrs_hash.Count(); + for (int i = 0; i < len; ++i) { + Html_atr atr = (Html_atr)atrs_hash.Get_at(i); + bfr.Add(atr.Key()).Add_byte_eq().Add(atr.Val()).Add_byte_nl(); + } + return bfr.To_str(); + } + private void Atrs__make() { + atrs_null = false; + if (atrs_hash == null) atrs_hash = Ordered_hash_.New_bry(); + else atrs_hash.Clear(); + rdr.Atrs__make(this, atrs_bgn, atrs_end); + } + public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) { + if (!valid) return; + byte[] val_bry = val_bry_manual; + int val_bgn = -1, val_end = -1; + if (key_exists) { + if (val_bry == null) { + val_bgn = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_bgn]; + val_end = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_end]; + } + } + else + val_bry_manual = key_bry; + Html_atr atr = new Html_atr(atrs_hash.Count(), key_bry, val_bry_manual, src, val_bgn, val_end); + atrs_hash.Add(key_bry, atr); + } + private static Ordered_hash Copy(Ordered_hash src) { + Ordered_hash rv = Ordered_hash_.New(); + int len = src.Count(); + for (int i = 0; i < len; ++i) { + Html_atr atr = (Html_atr)src.Get_at(i); + rv.Add(atr.Key(), atr); + } + 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 new file mode 100644 index 000000000..6b20cbb59 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr.java @@ -0,0 +1,195 @@ +/* +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.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import gplx.core.primitives.*; import gplx.core.btries.*; +import gplx.xowa.parsers.htmls.*; +public class Html_tag_rdr { + private final Hash_adp_bry name_hash = Html_tag_.Hash; + private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); + private final Html_tag tag__tmp = new Html_tag(), tag__eos = new Html_tag(), tag__comment = new Html_tag(); + private final Int_obj_ref tmp_depth = Int_obj_ref.zero_(); + public byte[] Src() {return src;} private byte[] src; + public int Src_end() {return src_end;} private int src_end; + public void Init(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); + } + public int Pos() {return pos;} private int pos; + public void Pos_(int v) {this.pos = v;} + public void Atrs__make(Mwh_atr_wkr atr_wkr, int head_bgn, int head_end) {atr_parser.Parse(atr_wkr, -1, -1, src, head_bgn, head_end);} + public Html_tag Tag__move_fwd_head() {return Tag__find(Bool_.Y, Bool_.N, Bool_.N, Html_tag_.Id__any);} + public Html_tag Tag__move_fwd_head(int match_name_id) {return Tag__find(Bool_.Y, Bool_.N, Bool_.N, match_name_id);} + public Html_tag Tag__move_fwd_tail(int match_name_id) {return Tag__find(Bool_.Y, Bool_.N, Bool_.Y, match_name_id);} + public Html_tag Tag__peek_fwd_head() {return Tag__find(Bool_.N, Bool_.N, Bool_.N, Html_tag_.Id__any);} + public Html_tag Tag__peek_fwd_head(int match_name_id) {return Tag__find(Bool_.N, Bool_.N, Bool_.N, match_name_id);} + public Html_tag Tag__peek_fwd_tail(int match_name_id) {return Tag__find(Bool_.N, Bool_.N, Bool_.Y, match_name_id);} + public Html_tag Tag__peek_bwd_tail(int match_name_id) {return Tag__find(Bool_.N, Bool_.Y, Bool_.Y, match_name_id);} + public Html_tag Tag__peek_bwd_head() {return Tag__find(Bool_.N, Bool_.Y, Bool_.Y, Html_tag_.Id__any);} + private Html_tag Tag__find(boolean move, boolean bwd, boolean tail, int match_name_id) { + int tmp = pos; + int stop_pos = src_end; int adj = 1; + if (bwd) { + stop_pos = -1; + adj = -1; + --tmp; // subtract 1 from tmp; needed when pos is at src_len, else array error below + } + tmp_depth.Val_zero_(); + Html_tag rv = null; + while (tmp != stop_pos) { + if (src[tmp] == Byte_ascii.Angle_bgn) { + rv = Tag__extract(tail, match_name_id, tmp); + if (Tag__match(bwd, tail, match_name_id, tmp_depth, rv)) + break; + else { + tmp = bwd ? rv.Src_bgn() - 1 : rv.Src_end(); + rv = null; + } + } + else + tmp += adj; + } + if (rv == null) rv = tag__eos; + if (move) pos = rv.Src_end(); + return rv; + } + private boolean Tag__match(boolean bwd, boolean tail, int match_name_id, Int_obj_ref depth_obj, Html_tag tag) { + int tag_name_id = tag.Name_id(); + if ( tag_name_id != match_name_id // tag doesn't match requested + && match_name_id != Html_tag_.Id__any // requested is not wildcard + ) return false; + if (tag_name_id == Html_tag_.Id__comment) { + if (match_name_id == Html_tag_.Id__comment) + return true; + else + return false; + } + + int depth = depth_obj.Val(); + boolean tag_is_tail = tag.Tag_is_tail(); + if (tail == tag_is_tail) { + if (depth == 0) + return true; + else { + depth_obj.Val_add(-1); + return false; + } + } + else { + if (!bwd && tail && !tag_is_tail) { + depth_obj.Val_add(1); + return false; + } + else + return false; + } + } + private Html_tag Tag__extract(boolean tail, int match_name_id, int tag_bgn) { + int name_bgn = tag_bgn + 1; if (name_bgn == src_end) return tag__eos; // EX: "" + name_end = atrs_end = name_pos; + tag_end = name_end + 1; + loop = false; + break; + case Byte_ascii.Slash: // EX: "
" + name_end = name_pos; + tag_end = name_pos + 1; if (tag_end == src_end) return tag__eos; // EX: "" + } + return tag__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)); + } + public boolean Read_and_move(byte match) { + byte b = src[pos]; + if (b == match) { + ++pos; + return true; + } + else + return false; + } + public int Read_int_to(byte to_char, int or_int) { + int bgn = pos; + int rv = 0; + int negative = 1; + while (pos < src_end) { + byte b = src[pos++]; + switch (b) { + case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4: + case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: + rv = (rv * 10) + (b - Byte_ascii.Num_0); + break; + case Byte_ascii.Dash: + if (negative == -1) // 2nd negative + return or_int; // return or_int + else // 1st negative + negative = -1; // flag negative + break; + default: { + boolean match = b == to_char; + if (to_char == Byte_ascii.Null) {// hack for Read_int_to_non_num + --pos; + match = true; + } + return match ? rv * negative : or_int; + } + } + } + return bgn == pos ? or_int : rv * negative; + } + 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); + } +} 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 new file mode 100644 index 000000000..ca14dcdaa --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_tag_rdr_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.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +import org.junit.*; +public class Html_tag_rdr_tst { + private final Html_tag_rdr_fxt fxt = new Html_tag_rdr_fxt(); + @Test public void Basic() { + fxt.Init("1
2
3
4
5
6
7"); + fxt.Test__move_fwd_head("
"); fxt.Test__pos("2"); + fxt.Test__peek_fwd_head("
"); fxt.Test__pos("2"); + fxt.Test__move_fwd_head("
"); fxt.Test__pos("4"); + fxt.Test__peek_bwd_tail("
3") ; fxt.Test__pos("4"); + } + @Test public void Comment() { + fxt.Init("135
6
"); + fxt.Test__move_fwd_head(Html_tag_.Id__comment , "") ; fxt.Test__pos("3"); + fxt.Test__move_fwd_head(Html_tag_.Id__any , "
") ; fxt.Test__pos("6"); + } + @Test public void Recursive() { + fxt.Init("12345"); + fxt.Test__move_fwd_head(Html_tag_.Id__a , "") ; fxt.Test__pos("2"); + fxt.Test__move_fwd_tail(Html_tag_.Id__a , "") ; fxt.Test__pos("5"); + } +} +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); + } + 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) { + Html_tag actl_tag = rdr.Tag__move_fwd_head(match_name_id); + Tfds.Eq_str(expd, String_.new_u8(rdr.Src(), actl_tag.Src_bgn(), actl_tag.Src_end())); + } + public void Test__move_fwd_tail(int match_name_id, String expd) { + Html_tag actl_tag = rdr.Tag__move_fwd_tail(match_name_id); + Tfds.Eq_str(expd, String_.new_u8(rdr.Src(), actl_tag.Src_bgn(), actl_tag.Src_end())); + } + public void Test__peek_fwd_head(String expd) { + Html_tag actl_tag = rdr.Tag__peek_fwd_head(); + Tfds.Eq_str(expd, String_.new_u8(rdr.Src(), actl_tag.Src_bgn(), actl_tag.Src_end())); + } + public void Test__peek_bwd_tail(String expd_str) { + byte[] expd_bry = Bry_.new_u8(expd_str); + Html_tag actl_tag = rdr.Tag__peek_bwd_tail(-1); + Tfds.Eq_bry(expd_bry, Bry_.Mid(rdr.Src(), actl_tag.Src_bgn(), actl_tag.Src_bgn() + expd_bry.length)); + } + public void Test__pos(String expd_str) { + byte[] expd_bry = Bry_.new_u8(expd_str); + Tfds.Eq_bry(expd_bry, Bry_.Mid(rdr.Src(), rdr.Pos(), rdr.Pos() + expd_bry.length)); + } +} diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Html_txt_wkr.java b/400_xowa/src/gplx/langs/htmls/parsers/Html_txt_wkr.java new file mode 100644 index 000000000..1d6d251a9 --- /dev/null +++ b/400_xowa/src/gplx/langs/htmls/parsers/Html_txt_wkr.java @@ -0,0 +1,22 @@ +/* +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.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; +public interface Html_txt_wkr { + void Parse(int rng_bgn, int rng_end); + void Init(byte[] src, int src_bgn, int src_end); +} \ No newline at end of file diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java index 3d8fe7aac..386971191 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java @@ -57,7 +57,7 @@ class Json_itm_str extends Json_itm_base { case Byte_ascii.Ltr_b: bfr.Add_byte(Byte_ascii.Backfeed); break; case Byte_ascii.Ltr_f: bfr.Add_byte(Byte_ascii.Formfeed); break; case Byte_ascii.Ltr_u: - int utf8_val = gplx.texts.HexDecUtl.parse_or(src, i + 1, i + 5, -1); + int utf8_val = gplx.core.texts.HexDecUtl.parse_or(src, i + 1, i + 5, -1); int len = gplx.core.intls.Utf16_.Encode_int(utf8_val, utf8_bry, 0); bfr.Add_mid(utf8_bry, 0, len); i += 4; diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java b/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java index 3f789d535..fc8b0af23 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java @@ -23,7 +23,7 @@ public class Json_itm_tmp implements Json_itm { // TEST: public int Src_bgn() {return -1;} public int Src_end() {return -1;} public Object Data() {return data;} private String data; - public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_str(data);} + public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_str_u8(data);} public boolean Data_eq(byte[] comp) {return false;} public void Clear() {} public static Json_itm new_str_(String v) {return new Json_itm_tmp(Json_itm_.Tid__str, "\"" + v + "\"");} diff --git a/400_xowa/src/gplx/langs/phps/Php_evaluator.java b/400_xowa/src/gplx/langs/phps/Php_evaluator.java index c25cff08e..40392c1d1 100644 --- a/400_xowa/src/gplx/langs/phps/Php_evaluator.java +++ b/400_xowa/src/gplx/langs/phps/Php_evaluator.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.langs.phps; import gplx.*; import gplx.langs.*; +import gplx.core.log_msgs.*; /* NOTE: naive implementation of PHP evaluator. intended only for parsing Messages**.php files in MediaWiki. Specifically, it assumes the following: - all lines are assignment lines: EX: $a = b; diff --git a/400_xowa/src/gplx/langs/phps/Php_lxr.java b/400_xowa/src/gplx/langs/phps/Php_lxr.java index ff317c27f..ef86bf7ae 100644 --- a/400_xowa/src/gplx/langs/phps/Php_lxr.java +++ b/400_xowa/src/gplx/langs/phps/Php_lxr.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.phps; import gplx.*; import gplx.langs.*; -import gplx.core.btries.*; +import gplx.core.btries.*; import gplx.core.log_msgs.*; interface Php_lxr { int Lxr_tid(); void Lxr_ini(Btrie_slim_mgr trie, Php_parser_interrupt[] parser_interrupts); @@ -117,7 +117,7 @@ class Php_lxr_comment extends Php_lxr_base { public byte[] Comment_end() {return comment_end;} private byte[] comment_end; @Override public int Lxr_make(Php_ctx ctx, int bgn, int cur) { int end = Bry_find_.Find_fwd(src, comment_end, bgn); - if (end == Bry_.NotFound) { + if (end == Bry_find_.Not_found) { tkn_wkr.Msg_many(src, bgn, cur, Php_lxr_comment.Dangling_comment, comment_tid, comment_end); cur = src_len; // NOTE: terminating sequence not found; assume rest of src is comment } @@ -198,7 +198,7 @@ class Php_lxr_quote extends Php_lxr_base { int end = -1; while (true) { end = Bry_find_.Find_fwd(src, quote_bry, cur); - if (end == Bry_.NotFound) { + if (end == Bry_find_.Not_found) { tkn_wkr.Msg_many(src, bgn, cur, Php_lxr_quote.Dangling_quote, quote_tid, quote_bry); cur = src_len; // NOTE: terminating sequence not found; assume rest of src is comment break; diff --git a/400_xowa/src/gplx/langs/phps/Php_parser.java b/400_xowa/src/gplx/langs/phps/Php_parser.java index 8d0647019..503e3dc80 100644 --- a/400_xowa/src/gplx/langs/phps/Php_parser.java +++ b/400_xowa/src/gplx/langs/phps/Php_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.langs.phps; import gplx.*; import gplx.langs.*; -import gplx.core.btries.*; +import gplx.core.btries.*; import gplx.core.log_msgs.*; public class Php_parser { Php_lxr[] lxrs; int lxrs_len; int txt_bgn; Php_tkn_txt txt_tkn; diff --git a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java b/400_xowa/src/gplx/langs/phps/Php_parser_tst.java index 5ab122545..bfb5b4165 100644 --- a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_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.langs.phps; import gplx.*; import gplx.langs.*; -import org.junit.*; import gplx.core.tests.*; +import org.junit.*; import gplx.core.tests.*; import gplx.core.log_msgs.*; public class Php_parser_tst { Php_parser_fxt fxt = new Php_parser_fxt(); @Before public void init() {fxt.Clear();} diff --git a/400_xowa/src/gplx/langs/phps/Php_srl_itm.java b/400_xowa/src/gplx/langs/phps/Php_srl_itm.java index 966911cd2..07c6d1ec3 100644 --- a/400_xowa/src/gplx/langs/phps/Php_srl_itm.java +++ b/400_xowa/src/gplx/langs/phps/Php_srl_itm.java @@ -39,7 +39,7 @@ abstract class Php_srl_itm_base implements Php_srl_itm { @gplx.Virtual public void Xto_bfr(Bry_bfr bfr, int depth) { Php_srl_wtr.Indent(bfr, depth); bfr.Add(Php_srl_itm_.Names[this.Tid()]).Add_byte(Byte_ascii.Colon); - bfr.Add_str(Object_.Xto_str_strict_or_null_mark(this.Val())).Add_byte(Byte_ascii.Semic).Add_byte_nl(); + bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(this.Val())).Add_byte(Byte_ascii.Semic).Add_byte_nl(); } public void Clear() {} } diff --git a/400_xowa/src/gplx/langs/phps/Php_srl_parser.java b/400_xowa/src/gplx/langs/phps/Php_srl_parser.java index 9fbfc3387..c775df47b 100644 --- a/400_xowa/src/gplx/langs/phps/Php_srl_parser.java +++ b/400_xowa/src/gplx/langs/phps/Php_srl_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.langs.phps; import gplx.*; import gplx.langs.*; -import gplx.texts.*; +import gplx.core.texts.*; public class Php_srl_parser { @gplx.Internal protected Php_srl_factory Factory() {return factory;} Php_srl_factory factory = new Php_srl_factory(); byte[] raw; int raw_len, pos; diff --git a/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java b/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java index c30cfcbcb..35c19cec1 100644 --- a/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java +++ b/400_xowa/src/gplx/langs/phps/Php_tkn_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.langs.phps; import gplx.*; import gplx.langs.*; +import gplx.core.log_msgs.*; public interface Php_tkn_wkr { void Init(Php_ctx ctx); void Process(Php_tkn tkn); diff --git a/400_xowa/src/gplx/xowa/Xoa_app.java b/400_xowa/src/gplx/xowa/Xoa_app.java index 97fcf4abd..b7a608082 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app.java +++ b/400_xowa/src/gplx/xowa/Xoa_app.java @@ -16,13 +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; import gplx.*; -import gplx.ios.*; import gplx.core.net.*; +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.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; -import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.bridges.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.langs.*; import gplx.xowa.bldrs.wms.*; diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index 44d443fd0..b901b91f1 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.ios.*; +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.*; @@ -28,13 +28,13 @@ public class Xoa_app_ { boot_mgr.Run(args, arg_mgr); } catch (Error e) { if (arg_mgr.App_type().Tid_is_gui()) - Xog_error_win.Run(Err_.Message_lang_error(e), Err_.Trace_lang(e)); + Xog_error_win.Run(Err_.Message_lang(e), Err_.Trace_lang(e)); else throw e; } } public static final String Name = "xowa"; - public static final String Version = "2.10.3.1"; + public static final String Version = "2.11.1.1"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys_str; public static String User_agent = ""; diff --git a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java index 6e49284a5..f1980691b 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java @@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.langs.*; -import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.apps.*; import gplx.xowa.files.exts.*; import gplx.xowa.wikis.domains.*; public class Xoa_app_fxt { @@ -28,16 +28,39 @@ public class Xoa_app_fxt { Db_conn_bldr.Instance.Reg_default_mem(); return app_("linux", Io_url_.mem_dir_("mem/xowa/")); } + public static Xoav_app Make__app__view() { + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); + return Make__app__view("linux", Io_url_.mem_dir_("mem/xowa/")); + } + public static Xoav_app Make__app__view(String op_sys, Io_url root_dir) { + Io_url user_dir = root_dir.GenSubDir_nest("user", "test_user"); + Gfo_usr_dlg__log_base.Instance.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); + Xoav_app rv = new Xoav_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_gui, op_sys, root_dir, root_dir.GenSubDir("file"), root_dir.GenSubDir("css")); + return rv; + } public static Xoae_app app_(String op_sys, Io_url root_dir) { Io_url user_dir = root_dir.GenSubDir_nest("user", "test_user"); Gfo_usr_dlg__log_base.Instance.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); Xoae_app app = new Xoae_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_cmd, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), user_dir, root_dir.GenSubDir_nest("user", "anonymous", "wiki"), op_sys); - app.Setup_mgr().Dump_mgr().Data_storage_format_(gplx.ios.Io_stream_.Tid_raw); // TEST: set data_storage_format to file, else bldr tests will fails (expects plain text) + app.Setup_mgr().Dump_mgr().Data_storage_format_(gplx.core.ios.Io_stream_.Tid_raw); // TEST: set data_storage_format to file, else bldr tests will fails (expects plain text) GfsCore.Instance.Clear(); // NOTE: must clear GfsCore.Instance.AddCmd(app, Xoae_app.Invk_app); // NOTE: must add app to GfsCore; app.Gfs_mgr() always adds current app to GfsCore; note this causes old test to leave behind GfsCore for new test GfsCore.Instance.AddCmd(app, Xoae_app.Invk_xowa); // add alias for app; DATE:2014-06-09 return app; } + public static Xowv_wiki Make__wiki__view(Xoa_app app) {return Make__wiki__view(app, "en.wikipedia.org");} + public static Xowv_wiki Make__wiki__view(Xoa_app app, String domain_str) { + byte[] domain_bry = Bry_.new_u8(domain_str); + Io_url wiki_dir = app.Fsys_mgr().Wiki_dir().GenSubDir(domain_str); + Xowv_wiki rv = new Xowv_wiki((Xoav_app)app, domain_bry, wiki_dir); + ((Xoav_wiki_mgr)app.Wiki_mgri()).Add(rv); + return rv; + } +// public static Xow_wiki Make__wiki__view(Xoa_app app, String domain_str) { +// byte[] domain_bry = Bry_.new_u8(domain_str); +// return app.Wiki_mgri().Get_by_key_or_make_init_y(domain_bry); +// } public static Xowe_wiki wiki_nonwmf(Xoae_app app, String key) { Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Xol_lang_itm_.Key_en).Kwd_mgr__strx_(true); Xol_lang_itm_.Lang_init(lang); diff --git a/400_xowa/src/gplx/xowa/Xoa_test_.java b/400_xowa/src/gplx/xowa/Xoa_test_.java index 3e75fb628..1d6728c3f 100644 --- a/400_xowa/src/gplx/xowa/Xoa_test_.java +++ b/400_xowa/src/gplx/xowa/Xoa_test_.java @@ -28,6 +28,11 @@ public class Xoa_test_ { wiki.Db_mgr_create_as_sql(); wiki.Data__core_mgr().Init_by_make(Xowd_core_db_props.Test, Xob_info_session.Test); } + public static void Init__db__mem(gplx.xowa.wikis.Xowv_wiki wiki) { + Db__init__mem(); + wiki.Init_by_make(Xowd_core_db_props.Test, Xob_info_session.Test); +// wiki.Data__core_mgr().Init_by_make(Xowd_core_db_props.Test, Xob_info_session.Test); + } public static void Db__init__mem() { Io_mgr.Instance.InitEngine_mem(); Db_conn_bldr.Instance.Reg_default_mem(); diff --git a/400_xowa/src/gplx/xowa/Xoa_ttl.java b/400_xowa/src/gplx/xowa/Xoa_ttl.java index bf230b411..71d122e73 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.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.*; @@ -88,7 +88,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. public byte[] Page_txt_wo_qargs() { // assume that no Special page has non-ascii characters int full_txt_len = full_txt.length; int ques_pos = Bry_find_.Find_bwd(full_txt, Byte_ascii.Question, full_txt_len, page_bgn); - return Bry_.Mid(full_txt, page_bgn, ques_pos == Bry_.NotFound ? full_txt_len : ques_pos); + return Bry_.Mid(full_txt, page_bgn, ques_pos == Bry_find_.Not_found ? full_txt_len : ques_pos); } public static Xoa_ttl parse(Xowe_wiki wiki, int ns_id, byte[] ttl) { Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(ns_id); @@ -235,7 +235,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. break; case Xop_amp_trie_itm.Char_int_null: // &#xx; int end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Semic, match_pos, end); - if (end_pos == Bry_.NotFound) {} // &# but no terminating ";" noop: defaults to current_byte which will be added below; + if (end_pos == Bry_find_.Not_found) {} // &# but no terminating ";" noop: defaults to current_byte which will be added below; else { b_ary = amp_itm.Xml_name_bry(); match_pos = end_pos + 1; @@ -340,7 +340,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. return false; } full_txt = bfr.To_bry_and_clear(); - if ( ns.Case_match() == Xow_ns_case_.Id_1st + if ( ns.Case_match() == Xow_ns_case_.Tid__1st && wik_bgn == -1 ) { // do not check case if xwiki; EX: "fr:" would have a wik_bgn of 0 (and a wik_end of 3); "A" (and any non-xwiki ttl) would have a wik_bgn == -1 byte char_1st = full_txt[page_bgn]; int char_1st_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(char_1st); diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 402b88c3c..0599ab468 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.java @@ -48,14 +48,14 @@ public class Xoa_url { public byte[] Page_for_lnki() { int raw_len = raw.length; int page_bgn = Page_bgn(raw_len); - if (page_bgn == Bry_.NotFound) // no /wiki/ found; return page + if (page_bgn == Bry_find_.Not_found) // no /wiki/ found; return page return page_bry == null ? Bry_.Empty : page_bry; // guard against null ref else return Bry_.Mid(raw, page_bgn, raw_len);// else take everything after "/wiki/"; } private int Page_bgn(int raw_len) { int wiki_pos = Bry_find_.Find_fwd(raw, Xoh_href_.Bry__wiki, 0, raw_len); // look for /wiki/ - return wiki_pos == Bry_.NotFound ? Bry_.NotFound : wiki_pos + Xoh_href_.Bry__wiki.length; + return wiki_pos == Bry_find_.Not_found ? Bry_find_.Not_found : wiki_pos + Xoh_href_.Bry__wiki.length; } public boolean Eq_page(Xoa_url comp) {return Bry_.Eq(wiki_bry, comp.wiki_bry) && Bry_.Eq(page_bry, comp.page_bry) && this.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__yes) == comp.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__yes);} public String To_str() {return String_.new_u8(To_bry(Bool_.Y, Bool_.Y));} diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index 9e02df873..851dd2703 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -16,13 +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; import gplx.*; -import gplx.core.btries.*; import gplx.core.flds.*; import gplx.ios.*; import gplx.core.threads.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.btries.*; 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.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.*; import gplx.xowa.files.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; import gplx.xowa.wikis.*; import gplx.xowa.users.*; import gplx.xowa.guis.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.apps.fmtrs.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.wikis.xwikis.parsers.*; -import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.math.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apps.servers.tcp.*; import gplx.xowa.apps.servers.http.*; diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index b3dec64b1..18ce13d17 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*; import gplx.xowa.langs.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.htmls.tocs.*; -import gplx.xowa.htmls.modules.popups.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.xtns.wdatas.pfuncs.*; +import gplx.xowa.htmls.modules.popups.*; import gplx.xowa.xtns.wdatas.pfuncs.*; import gplx.xowa.parsers.*; public class Xoae_page implements Xoa_page { Xoae_page(Xowe_wiki wiki, Xoa_ttl ttl) { @@ -40,7 +40,7 @@ public class Xoae_page implements Xoa_page { public Xopg_revision_data Revision_data() {return revision_data;} private Xopg_revision_data revision_data = new Xopg_revision_data(); public Xowe_wiki Wikie() {return wiki;} private Xowe_wiki wiki; public Xopg_redlink_lnki_list Redlink_lnki_list() {return redlink_lnki_list;} private Xopg_redlink_lnki_list redlink_lnki_list; - public Xol_lang_itm Lang() {return lang;} public Xoae_page Lang_(Xol_lang_itm v) {lang = v; return this;} private Xol_lang_itm lang; + public Xol_lang_itm Lang() {return lang;} public Xoae_page Lang_(Xol_lang_itm v) {lang = v; return this;} private Xol_lang_itm lang; public Xopg_html_data Html_data() {return html_data;} private Xopg_html_data html_data = new Xopg_html_data(); public Xopg_tab_data Tab_data() {return tab_data;} private final Xopg_tab_data tab_data = new Xopg_tab_data(); public Xopg_hdump_data Hdump_data() {return hdump_data;} private final Xopg_hdump_data hdump_data = new Xopg_hdump_data(); diff --git a/400_xowa/src/gplx/xowa/Xop_fxt.java b/400_xowa/src/gplx/xowa/Xop_fxt.java index 1c30ebc7f..34bf3f347 100644 --- a/400_xowa/src/gplx/xowa/Xop_fxt.java +++ b/400_xowa/src/gplx/xowa/Xop_fxt.java @@ -16,9 +16,10 @@ 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.tests.*; +import gplx.core.tests.*; import gplx.core.log_msgs.*; import gplx.xowa.apps.cfgs.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.htmls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.nss.*; @@ -103,7 +104,7 @@ public class Xop_fxt { public Xop_tblw_td_tkn_chkr tkn_tblw_td_(int bgn, int end) {return (Xop_tblw_td_tkn_chkr)new Xop_tblw_td_tkn_chkr().Src_rng_(bgn, end);} public Xop_tblw_th_tkn_chkr tkn_tblw_th_(int bgn, int end) {return (Xop_tblw_th_tkn_chkr)new Xop_tblw_th_tkn_chkr().Src_rng_(bgn, end);} public Xop_tblw_tr_tkn_chkr tkn_tblw_tr_(int bgn, int end) {return (Xop_tblw_tr_tkn_chkr)new Xop_tblw_tr_tkn_chkr().Src_rng_(bgn, end);} - public Xop_hdr_tkn_chkr tkn_hdr_(int bgn, int end, int hdr_len) {return (Xop_hdr_tkn_chkr)new Xop_hdr_tkn_chkr().Hdr_len_(hdr_len).Src_rng_(bgn, end);} + public Xop_hdr_tkn_chkr tkn_hdr_(int bgn, int end, int hdr_len) {return (Xop_hdr_tkn_chkr)new Xop_hdr_tkn_chkr().Hdr_level_(hdr_len).Src_rng_(bgn, end);} public Xop_xnde_tkn_chkr tkn_xnde_br_(int pos) {return tkn_xnde_(pos, pos).Xnde_tagId_(Xop_xnde_tag_.Tid_br);} public Xop_xnde_tkn_chkr tkn_xnde_() {return tkn_xnde_(String_.Pos_neg1, String_.Pos_neg1);} public Xop_xnde_tkn_chkr tkn_xnde_(int bgn, int end) {return (Xop_xnde_tkn_chkr)new Xop_xnde_tkn_chkr().Src_rng_(bgn, end);} @@ -165,7 +166,7 @@ public class Xop_fxt { public Xop_fxt Init_para_y_() {ctx.Para().Enabled_y_(); return this;} public Xop_fxt Init_para_n_() {ctx.Para().Enabled_n_(); return this;} public Xop_fxt Init_log_(Gfo_msg_itm... itms) {for (Gfo_msg_itm itm : itms) log_itms.Add(itm); return this;} List_adp log_itms = List_adp_.new_(); - public void Init_defn_add(String name, String text) {Init_defn_add(name, text, Xow_ns_case_.Id_all);} + public void Init_defn_add(String name, String text) {Init_defn_add(name, text, Xow_ns_case_.Tid__all);} public void Init_defn_add(String name, String text, byte case_match) { Xot_defn_tmpl itm = run_Parse_tmpl(Bry_.new_a7(name), Bry_.new_u8(text)); wiki.Cache_mgr().Defn_cache().Add(itm, case_match); @@ -419,4 +420,15 @@ public class Xop_fxt { Xoae_app app = Xoa_app_fxt.app_(); return new Xop_fxt(app, Xoa_app_fxt.wiki_nonwmf(app, "nethackwiki")); } + private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + public String Exec__parse_to_hdump(String src_str) { + byte[] src_bry = Bry_.new_u8(src_str); + Xop_root_tkn root = Exec_parse_page_all_as_root(src_bry); + Xoh_wtr_ctx hctx = Xoh_wtr_ctx.Hdump; + Xoh_html_wtr html_wtr = wiki.Html_mgr().Html_wtr(); + html_wtr.Cfg().Toc__show_(Bool_.Y); // needed for hdr to show + ctx.Cur_page().Redlink_lnki_list().Clear(); + html_wtr.Write_all(tmp_bfr, ctx, hctx, src_bry, root); + return tmp_bfr.To_str_and_clear(); + } } diff --git a/400_xowa/src/gplx/xowa/Xow_wiki.java b/400_xowa/src/gplx/xowa/Xow_wiki.java index f9ddc1ca6..b58049522 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.apps.urls.*; public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { @@ -41,8 +41,7 @@ public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { Xof_bin_mgr File__bin_mgr(); Fsm_mnt_mgr File__mnt_mgr(); boolean Html__hdump_enabled(); - Xow_hzip_mgr Html__hzip_mgr(); - Xohd_hdump_rdr Html__hdump_rdr(); + Xow_hdump_mgr Html__hdump_mgr(); Xoh_page_wtr_mgr Html__wtr_mgr(); boolean Html__css_installing(); void Html__css_installing_(boolean v); Xow_mw_parser_mgr Mw_parser_mgr(); diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index 3e0ef02ae..ad81acd92 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -22,7 +22,7 @@ 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.*; import gplx.xowa.users.*; import gplx.xowa.htmls.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.exts.*; -import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.guis.views.*; @@ -37,9 +37,8 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { this.fsys_mgr = new Xow_fsys_mgr(wiki_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str)); this.url__parser = new Xoa_url_parser(this); this.xwiki_mgr = new Xow_xwiki_mgr(this); + this.html__hdump_mgr = new Xow_hdump_mgr(this); this.html_mgr = new Xow_html_mgr(this); - this.html_mgr__hdump_rdr = new Xohd_hdump_rdr(app, this); - this.html_mgr__hdump_wtr = new Xohd_hdump_wtr(app, this); tdb_fsys_mgr = new Xotdb_fsys_mgr(wiki_dir, ns_mgr); redirect_mgr = new Xop_redirect_mgr(this); @@ -77,8 +76,9 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { } public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr; - public Xoa_ttl Ttl_parse(byte[] ttl) {return Xoa_ttl.parse(this, ttl);} - public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) {return Xoa_ttl.parse(this, ns_id, ttl);} + public Xoa_ttl Ttl_parse(byte[] ttl) {return Xoa_ttl.parse(this, ttl);} + public Xoa_ttl Ttl_parse(byte[] src, int src_bgn, int src_end) {return Xoa_ttl.new_(this, app.Msg_log(), src, src_bgn, src_end);} + public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) {return Xoa_ttl.parse(this, ns_id, ttl);} public boolean Type_is_edit() {return Bool_.Y;} public Xoa_app App() {return app;} public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; @@ -88,7 +88,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public byte[] Domain_abrv() {return domain_abrv;} private final byte[] domain_abrv; public Xow_domain_itm Domain_itm() {return domain_itm;} private final Xow_domain_itm domain_itm; public Xow_fsys_mgr Fsys_mgr() {return fsys_mgr;} private final Xow_fsys_mgr fsys_mgr; - public Xowd_db_mgr Data__core_mgr() {return db_mgr.Tid() == Xodb_mgr_txt.Tid_txt ? null : this.Db_mgr_as_sql().Core_data_mgr();} // TEST: + public Xowd_db_mgr Data__core_mgr() {if (db_mgr == null) return null; return db_mgr.Tid() == Xodb_mgr_txt.Tid_txt ? null : this.Db_mgr_as_sql().Core_data_mgr();} // TEST: public Xof_fsdb_mode File__fsdb_mode() {return file_mgr.Fsdb_mode();} public Fsdb_db_mgr File__fsdb_core() {return file_mgr.Db_core();} public Xow_repo_mgr File__repo_mgr() {return file_mgr.Repo_mgr();} @@ -96,8 +96,6 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public Xof_bin_mgr File__bin_mgr() {return file_mgr.Fsdb_mgr().Bin_mgr();} public Fsm_mnt_mgr File__mnt_mgr() {return file_mgr.Fsdb_mgr().Mnt_mgr();} public boolean Html__hdump_enabled() {return html_mgr__hdump_enabled;} private boolean html_mgr__hdump_enabled = Bool_.N; - public Xow_hzip_mgr Html__hzip_mgr() {return html_mgr.Hzip_mgr();} - public Xohd_hdump_rdr Html__hdump_rdr() {return html_mgr__hdump_rdr;} private final Xohd_hdump_rdr html_mgr__hdump_rdr; public Xoh_page_wtr_mgr Html__wtr_mgr() {return html_mgr.Page_wtr_mgr();} public boolean Html__css_installing() {return html__css_installing;} public void Html__css_installing_(boolean v) {html__css_installing = v;} private boolean html__css_installing; public Xoa_url_parser Utl__url_parser() {return url__parser;} private final Xoa_url_parser url__parser; @@ -106,7 +104,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props(); public Xow_parser_mgr Parser_mgr() {return parser_mgr;} private final Xow_parser_mgr parser_mgr; - public Xohd_hdump_wtr Html__hdump_wtr() {return html_mgr__hdump_wtr;} private final Xohd_hdump_wtr html_mgr__hdump_wtr; + public Xow_hdump_mgr Html__hdump_mgr() {return html__hdump_mgr;} private final Xow_hdump_mgr html__hdump_mgr; public Xoae_app Appe() {return app;} private Xoae_app app; public Xow_gui_mgr Gui_mgr() {return gui_mgr;} private final Xow_gui_mgr gui_mgr = new Xow_gui_mgr(); public Xow_user User() {return user;} private Xow_user user = new Xow_user(); @@ -200,6 +198,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { app.Html__css_installer().Install(this, Xowd_css_core_mgr.Key_default); Html__hdump_enabled_(html_mgr__hdump_enabled); html_mgr.Init_by_wiki(this); + html__hdump_mgr.Init_by_db(this); this.Copy_cfg(app.Usere().Wiki()); Xow_repo_mgr_.Assert_repos(app, this); xtn_mgr.Init_by_wiki(this); @@ -212,9 +211,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { private void Html__hdump_enabled_(boolean v) { this.html_mgr__hdump_enabled = v; if (html_mgr__hdump_enabled) { - Xowd_html_tbl.Assert_col__page_html_db_id(Db_mgr_as_sql().Core_data_mgr()); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages - html_mgr__hdump_rdr.Init_by_db(this.Data__core_mgr()); - html_mgr__hdump_wtr.Init_by_db(this.Data__core_mgr()); + Xowd_page_tbl.Assert_col__page_html_db_id(Db_mgr_as_sql().Core_data_mgr()); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages } } public void Rls() { diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java index 23482ee36..62fad5b9f 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java @@ -36,7 +36,7 @@ public class Xoa_sys_cfg implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_version)) return Xoa_app_.Version; else if (ctx.Match(k, Invk_build_date)) return Xoa_app_.Build_date; - else if (ctx.Match(k, Invk_free_mem_when_)) free_mem_when = gplx.ios.Io_size_.parse_or(m.ReadStr("v"), Io_mgr.Len_mb * 5); + else if (ctx.Match(k, Invk_free_mem_when_)) free_mem_when = gplx.core.ios.Io_size_.parse_or(m.ReadStr("v"), Io_mgr.Len_mb * 5); else if (ctx.Match(k, Invk_lang)) return lang_key; else if (ctx.Match(k, Invk_lang_)) Lang_(m.ReadBry("v")); else if (ctx.Match(k, Invk_lang_list)) return Options_lang_list(); diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_app.java b/400_xowa/src/gplx/xowa/apps/Xoav_app.java index 504619092..3509d6153 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_app.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_app.java @@ -16,13 +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.apps; import gplx.*; import gplx.xowa.*; -import gplx.core.net.*; import gplx.langs.jsons.*; -import gplx.ios.*; +import gplx.core.net.*; import gplx.core.log_msgs.*; import gplx.langs.jsons.*; +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.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.apps.gfs.*; -import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.bridges.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.users.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.langs.*; diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java index f22ef8bd9..1a4f6ed86 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java @@ -63,6 +63,7 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { hash.Add_if_dupe_use_nth(domain_bry, rv); return rv; } + public void Add(Xow_wiki wiki) {hash.Add_if_dupe_use_nth(wiki.Domain_bry(), wiki);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_import_by_fil)) return Import_by_fil(Io_url_.new_fil_(m.ReadStr("v"))); else return GfoInvkAble_.Rv_unhandled; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java index ed8608386..bcb3c52da 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java @@ -24,7 +24,7 @@ public class Xoapi_net implements GfoInvkAble, GfoEvObj { public boolean Enabled() {return enabled;} private boolean enabled = true; public void Enabled_(boolean v) { this.enabled = v; - gplx.ios.IoEngine_system.Web_access_enabled = v; + gplx.core.ios.IoEngine_system.Web_access_enabled = v; GfoEvMgr_.PubVal(this, gplx.xowa.guis.menus.dom.Xog_mnu_evt_mgr.Evt_selected_changed, v); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java index 6d12b9ee7..9682fcf4a 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.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.bldrs.filters.dansguardians; 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.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.*; -import gplx.ios.*; import gplx.xowa.bldrs.filters.dansguardians.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.filters.dansguardians.*; public class Xoapi_dansguardian implements GfoInvkAble { public void Ctor_by_app(Xoa_app app) { root_dir = app.Fsys_mgr().Bin_xowa_dir().GenSubDir_nest("cfg", "bldr", "filter"); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java index b83f4fab2..d355a814f 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.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.bldrs.imports; 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.bldrs.*; -import gplx.ios.*; import gplx.xowa.wikis.data.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.*; public class Xoapi_import implements GfoInvkAble { public long Layout_all_max() {return layout_all_max;} private long layout_all_max = 0; // disable by default; may set to 200 MB in future public long Layout_text_max() {return layout_text_max;} private long layout_text_max = Io_size_.To_long_by_int_mb(1500); // 1.5 GB @@ -29,6 +29,7 @@ public class Xoapi_import implements GfoInvkAble { public byte[] Ns_file_map() {return ns_file_map;} private byte[] ns_file_map = Ns_file_map__each; public byte Zip_tid_text() {return zip_tid_text;} private byte zip_tid_text = Io_stream_.Tid_gzip; public byte Zip_tid_html() {return zip_tid_html;} private byte zip_tid_html = Io_stream_.Tid_gzip; + public boolean Hzip_enabled() {return hzip_enabled;} private boolean hzip_enabled = Bool_.Y; public String User_name() {return user_name;} private String user_name = "anonymous"; public Xowd_core_db_props New_props(String domain_str, long dump_file_size) { Xowd_db_layout layout_text, layout_html, layout_file; @@ -39,7 +40,7 @@ public class Xoapi_import implements GfoInvkAble { layout_html = dump_file_size < layout_html_max ? Xowd_db_layout.Itm_few : Xowd_db_layout.Itm_lot; layout_file = dump_file_size < layout_file_max ? Xowd_db_layout.Itm_few : Xowd_db_layout.Itm_lot; } - return new Xowd_core_db_props(2, layout_text, layout_html, layout_file, zip_tid_text, zip_tid_html); + return new Xowd_core_db_props(2, layout_text, layout_html, layout_file, zip_tid_text, zip_tid_html, hzip_enabled); } public byte[] New_ns_file_map(long dump_file_size) { return dump_file_size < layout_text_max ? Bry_.Empty : Ns_file_map__each; @@ -69,6 +70,8 @@ public class Xoapi_import implements GfoInvkAble { else if (ctx.Match(k, Invk_zip_tid_list)) return Options_zip_tid__list; else if (ctx.Match(k, Invk_zip_tid_html)) return Io_stream_.To_str(zip_tid_html); else if (ctx.Match(k, Invk_zip_tid_html_)) zip_tid_html = Io_stream_.To_tid(m.ReadStr("v")); + else if (ctx.Match(k, Invk_hzip_enabled)) return Yn.To_str(hzip_enabled); + else if (ctx.Match(k, Invk_hzip_enabled_)) hzip_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_user_name)) return user_name; else if (ctx.Match(k, Invk_user_name_)) user_name = m.ReadStr("v"); else return GfoInvkAble_.Rv_unhandled; @@ -88,6 +91,7 @@ public class Xoapi_import implements GfoInvkAble { , Invk_zip_tid_text = "zip_tid_text" , Invk_zip_tid_text_ = "zip_tid_text_", Invk_zip_tid_list = "zip_tid_list" , Invk_zip_tid_html = "zip_tid_html" , Invk_zip_tid_html_ = "zip_tid_html_" , Invk_user_name = "user_name" , Invk_user_name_ = "user_name_" + , Invk_hzip_enabled = "hzip_enabled" , Invk_hzip_enabled_ = "hzip_enabled_" ; public static final byte[] Ns_file_map__each = Bry_.new_a7(""); } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java index 94f0b97f8..c58cdc1b9 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.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.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.xowa.htmls.tidy.*; +import gplx.xowa.htmls.core.htmls.tidy.*; public class Xoapi_tidy implements GfoInvkAble { private Xoae_app app; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java index 855c1c26a..261d66e6e 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.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.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.ios.*; import gplx.xowa.files.caches.*; +import gplx.core.ios.*; import gplx.xowa.files.caches.*; public class Xoapi_cache implements GfoInvkAble { private Xou_cache_mgr cache_mgr; public void Init_by_app(Xoa_app app) {this.cache_mgr = app.User().User_db_mgr().Cache_mgr();} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java index 2ad33eaa8..6d891933b 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java @@ -24,7 +24,10 @@ public class Xowc_xtn_pages implements GfoInvkAble { public int Ns_index_id() {return ns_index_id;} private int ns_index_id = Int_.Min_value; public int Ns_index_talk_id() {return ns_index_talk_id;} private int ns_index_talk_id = Int_.Min_value; public void Ns_names_(byte[] page_name, byte[] page_talk_name, byte[] index_name, byte[] index_talk_name) { - this.page_name = page_name; this.page_talk_name = page_talk_name; this.index_name = index_name; this.index_talk_name = index_talk_name; + this.page_name = Xoa_ttl.Replace_spaces(page_name); // ensure underlines, not space; EX:"Mục_lục" not "Mục lục"; PAGE:vi.s:Việt_Nam_sử_lược/Quyển_II DATE:2015-10-27 + this.page_talk_name = Xoa_ttl.Replace_spaces(page_talk_name); + this.index_name = Xoa_ttl.Replace_spaces(index_name); + this.index_talk_name = Xoa_ttl.Replace_spaces(index_talk_name); } private byte[] page_name = Default_ns_page_name diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java index b15e83d8e..a5446344f 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java @@ -26,6 +26,13 @@ public class Xowc_xtn_pages_tst { fxt.Test_ns_ids(200, 201, 202, 203); fxt.Test_ns_canonical("Page", "Page_talk", "Index", "Index_talk"); } + @Test public void Spaces() { // PURPOSE: ensure underlines, not space; EX:"Mục_lục" not "Mục lục"; PAGE:vi.s:Việt_Nam_sử_lược/Quyển_II DATE:2015-10-27 + fxt.Init_ns(200, "Foreign_page").Init_ns(201, "Foreign_page_talk").Init_ns(202, "Foreign_index").Init_ns(203, "Foreign_index_talk"); // ns set by + fxt.Init_names("Foreign page", "Foreign page talk", "Foreign index", "Foreign index talk"); // ns set by .gfs files in /user/wiki/#cfg + fxt.Exec_init(); + fxt.Test_ns_ids(200, 201, 202, 203); + fxt.Test_ns_canonical("Page", "Page_talk", "Index", "Index_talk"); + } } class Xowc_xtn_pages_fxt { private Xow_ns_mgr ns_mgr; diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java index c6edf8dd0..de4d98dc2 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_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.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xoa_fmtr_mgr implements GfoInvkAble { public Xoa_fmtr_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java index 4e9b3b19f..abc535562 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java @@ -29,7 +29,7 @@ public class Xoa_gfs_bldr { int ary_len = ary.length; for (int i = 0; i < ary_len; i++) { if (i != 0 || cont) bfr.Add_byte(Byte_ascii.Dot); - bfr.Add_str(ary[i]); + bfr.Add_str_u8(ary[i]); } return this; } @@ -63,7 +63,7 @@ public class Xoa_gfs_bldr { public Xoa_gfs_bldr Add_quote_0() {bfr.Add_byte(Byte_ascii.Apos); return this;} public Xoa_gfs_bldr Add_term_nl() {bfr.Add(Bry_semic_nl); return this;} public Xoa_gfs_bldr Add_eq_str(String k, byte[] v) { - bfr.Add_str(k); + bfr.Add_str_u8(k); bfr.Add(Bry_eq); bfr.Add_byte_apos(); bfr.Add(v); diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java index a6b848045..91ff24264 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java @@ -19,7 +19,7 @@ package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa. public class Xoa_gfs_wtr_ { public static byte[] Escape(String v) {return Escape(Bry_.new_u8(v));} public static byte[] Escape(byte[] v) { - return Bry_find_.Find_fwd(v, Byte_ascii.Apos) == Bry_.NotFound ? v : Bry_.Replace(v, Byte_ascii.Apos_bry, Bry__apos_escaped); + return Bry_find_.Find_fwd(v, Byte_ascii.Apos) == Bry_find_.Not_found ? v : Bry_.Replace(v, Byte_ascii.Apos_bry, Bry__apos_escaped); } private static final byte[] Bry__apos_escaped = Bry_.new_a7("''"); public static void Write_prop(Bry_bfr bfr, byte[] prop, byte[] val) { bfr.Add(prop).Add(Bry__val_bgn).Add(Xoa_gfs_wtr_.Escape(val)).Add(Bry__val_end); // EX: "a_('b');\n" @@ -29,7 +29,7 @@ public class Xoa_gfs_wtr_ { int len = ary.length; for (int i = 0; i < len; ++i) { if (i != 0) bfr.Add_byte(Byte_ascii.Dot); - bfr.Add_str(ary[i]); + bfr.Add_str_u8(ary[i]); } return bfr.To_str_and_rls(); } 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 c837d1403..426547b76 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 @@ -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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.*; import gplx.xowa.htmls.js.*; diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java index a26d20084..003c5c427 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_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.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Socket_rdr { private java.net.ServerSocket server; private java.net.Socket client; diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java index c7bd7854f..c4782d4ff 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java @@ -17,7 +17,7 @@ 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.ios.*; import gplx.texts.*; +import gplx.core.ios.*; import gplx.core.texts.*; public class Xosrv_msg_rdr { public Xosrv_msg_rdr(byte[] default_body_bry, IoStream rdr) {this.default_body_bry = default_body_bry; default_body_bry_len = default_body_bry.length; this.rdr = rdr;} private byte[] header_bry = new byte[24], default_body_bry; int default_body_bry_len; public IoStream Rdr() {return rdr;} private IoStream rdr; @@ -45,7 +45,7 @@ public class Xosrv_msg_rdr { } private static byte[] Read_fld(byte[] bry, int bry_len, Int_obj_ref fld_bgn, Bool_obj_ref fail_ref, String_obj_ref fld_ref) { int fld_end = Bry_find_.Find_fwd(bry, Byte_ascii.Pipe, fld_bgn.Val(), bry_len); - if (fld_end == Bry_.NotFound) {fail_ref.Val_y_(); return null;} + if (fld_end == Bry_find_.Not_found) {fail_ref.Val_y_(); return null;} byte[] rv = Bry_.Mid(bry, fld_bgn.Val(), fld_end); fld_bgn.Val_(fld_end + 1); // +1 to place after pipe return rv; diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java index d5099ac40..eb5f8eb09 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java @@ -17,7 +17,7 @@ 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 org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xosrv_msg_rdr_tst { @Before public void init() {fxt.Clear();} private Xosrv_msg_rdr_fxt fxt = new Xosrv_msg_rdr_fxt(); @Test public void Parse() { 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 e2bbd6f22..3443a2505 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,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.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.primitives.*; import gplx.ios.*; import gplx.langs.jsons.*; import gplx.core.threads.*; +import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.langs.jsons.*; import gplx.core.threads.*; 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/servers/tcp/Xosrv_server_tst.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_tst.java index db9379924..7c8127487 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_tst.java @@ -17,7 +17,7 @@ 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 org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xosrv_server_tst { @Before public void init() {fxt.Clear();} private Xosrv_server_fxt fxt = new Xosrv_server_fxt(); @Test public void Exec_js() { diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java index 9290b57ed..351afbb60 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_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.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xosrv_socket_rdr implements GfoInvkAble { private Socket_rdr rdr = new Socket_rdr(); public int Port() {return port;} private int port; diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java index f38a3b77e..0eb81583b 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java @@ -41,7 +41,7 @@ public class Xoa_url__to_str__tst { @Test public void Alias() { fxt.Prep_add_xwiki_to_wiki("wikt", "en.wiktionary.org"); Xow_wiki en_d = fxt.Prep_create_wiki("en.wiktionary.org"); - en_d.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Id_all); + en_d.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Tid__all); fxt.Chk_to_str_href(Bool_.N, "/wiki/wikt:a" , "en.wiktionary.org/wiki/a"); } @Test public void Unknown() {fxt.Chk_to_str_href(Bool_.N, "/wiki/{{{extlink}}}" , "");} // {{{extlink}}} not a valid title; return empty 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 2dbce286b..9783dd017 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 @@ -238,7 +238,7 @@ public class Xoa_url_parser { private byte[] Bld_page_by_alias(byte[] bry) { if (bry == null) return null; int colon_pos = Bry_find_.Find_fwd(bry, Byte_ascii.Colon); // check for colon; EX: commons:Earth - if (colon_pos == Bry_.NotFound) return null; // no colon + if (colon_pos == Bry_find_.Not_found) return null; // no colon Xow_wiki alias_wiki = wiki; // default alias_wiki to cur_wiki if (!tmp_wiki_is_missing) // tmp_wiki exists; use it for alias wikis; DATE:2015-09-17 alias_wiki = wiki.App().Wiki_mgri().Get_by_key_or_make_init_n(tmp_wiki); diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java index f58904c33..634c81103 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java @@ -56,10 +56,10 @@ public class Xoa_url_parser__xwiki_tst { Xowe_wiki en_d = tstr.Prep_create_wiki("en.wiktionary.org"); Xow_ns_mgr ns_mgr = en_d.Ns_mgr(); - ns_mgr.Ns_main().Case_match_(Xow_ns_case_.Id_all); + ns_mgr.Ns_main().Case_match_(Xow_ns_case_.Tid__all); tstr.Run_parse("en.wiktionary.org/wiki/a").Chk_wiki("en.wiktionary.org").Chk_page("a"); - ns_mgr.Ns_category().Case_match_(Xow_ns_case_.Id_all); + ns_mgr.Ns_category().Case_match_(Xow_ns_case_.Tid__all); tstr.Run_parse("en.wiktionary.org/wiki/Category:a").Chk_wiki("en.wiktionary.org").Chk_page("Category:a"); tstr.Run_parse("en.wiktionary.org/wiki/A/B/C").Chk_page("A/B/C"); diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoav_url_parser.java b/400_xowa/src/gplx/xowa/apps/urls/Xoav_url_parser.java index 68d0f4623..ecf2f6bb9 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoav_url_parser.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoav_url_parser.java @@ -30,7 +30,7 @@ public class Xoav_url_parser { } private int Parse_wiki(Xoav_url rv, byte[] src, int src_len, int pos) { int wiki_bgn = pos + Bry_site.length; - int wiki_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, wiki_bgn, src_len); if (wiki_end == Bry_.NotFound) throw Err_.new_wo_type("could not find wiki_end", "src", String_.new_u8(src)); + int wiki_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, wiki_bgn, src_len); if (wiki_end == Bry_find_.Not_found) throw Err_.new_wo_type("could not find wiki_end", "src", String_.new_u8(src)); rv.Wiki_bry_(Bry_.Mid(src, wiki_bgn, wiki_end)); return wiki_end; } diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java index f7247d944..8421fe8b5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_base_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.xowa.bldrs; import gplx.*; import gplx.xowa.*; -import gplx.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_base_fxt { public Xob_base_fxt Clear() { if (app == null) { diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java index e8c08ef1d..0514bc845 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java @@ -87,9 +87,9 @@ public class Xob_bldr implements GfoInvkAble { if (ctx.Match(k, Invk_pause_at_end_)) pause_at_end = m.ReadBoolOrTrue("val"); else if (ctx.Match(k, Invk_cmds)) return cmd_mgr; else if (ctx.Match(k, Invk_wiki_cfg_bldr)) return wiki_cfg_bldr; - else if (ctx.Match(k, Invk_sort_mem_len_)) sort_mem_len = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_dump_fil_len_)) dump_fil_len = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_make_fil_len_)) make_fil_len = gplx.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_sort_mem_len_)) sort_mem_len = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_dump_fil_len_)) dump_fil_len = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_make_fil_len_)) make_fil_len = gplx.core.ios.Io_size_.Load_int_(m); else if (ctx.Match(k, Invk_run)) Run(); else if (ctx.Match(k, Invk_cancel)) Cancel(); else return GfoInvkAble_.Rv_unhandled; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java index cca23c8cd..0e21212ef 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.wikis.*; -import gplx.xowa.files.origs.*; import gplx.xowa.htmls.hdumps.bldrs.*; +import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*; public class Xob_cmd_mgr implements GfoInvkAble { public Xob_cmd_mgr(Xob_bldr bldr) {this.bldr = bldr;} private Xob_bldr bldr; public void Clear() {list.Clear(); dump_rdrs.Clear();} diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java index 03c868f81..030238a49 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.tests.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; public class Xob_fxt { public Xob_fxt Ctor_mem() { Io_mgr.Instance.InitEngine_mem(); diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java b/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java index aea96d114..b8ef25420 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.consoles.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.tmpls.*; public class Xobd_rdr implements Xob_cmd { @@ -40,14 +40,14 @@ public class Xobd_rdr implements Xob_cmd { long fil_len = 0; Gfo_usr_dlg usr_dlg = bldr.App().Usr_dlg(); try { - gplx.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); + gplx.core.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); fil = Io_buffer_rdr.new_(src_rdr, optRdrBfrSize); fil_len = fil.Fil_len(); - if (src_rdr.Tid() == gplx.ios.Io_stream_.Tid_bzip2) fil_len = (fil_len * 100) / 18; // HACK: no way to get actual file progress; assume 18% compression + if (src_rdr.Tid() == gplx.core.ios.Io_stream_.Tid_bzip2) fil_len = (fil_len * 100) / 18; // HACK: no way to get actual file progress; assume 18% compression // fil.Seek(bldr.Opts().ResumeAt()); int prv_pos = 0; while (true) { - int cur_pos = parser.Parse_page(page, usr_dlg, fil, fil.Bfr(), prv_pos, ns_mgr); if (cur_pos == Bry_.NotFound) break; + int cur_pos = parser.Parse_page(page, usr_dlg, fil, fil.Bfr(), prv_pos, ns_mgr); if (cur_pos == Bry_find_.Not_found) break; if (cur_pos < prv_pos) bldr.Print_prog_msg(fil.Fil_pos(), fil_len, 1, optRdrFillFmt, Int_.To_str_pad_bgn_zero((int)(fil.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(fil.Fil_len() / Io_mgr.Len_mb))), "", String_.new_u8(page.Ttl_full_db())); prv_pos = cur_pos; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java index c250d6a82..fe3dc9322 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.ios.*; import gplx.lists.*; +import gplx.core.ios.*; import gplx.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 027866297..5bd20b7f4 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.ios.*; import gplx.lists.*; +import gplx.core.ios.*; import gplx.lists.*; import gplx.xowa.wikis.tdbs.*; class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1 public Io_sort_filCmd_reg() {} @@ -38,7 +38,7 @@ class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1 Io_mgr.Instance.SaveFilBry(fil, bfr.Bfr(), bfr.Len()); } private Bry_bfr bfr = Bry_bfr.new_(); int fil_idx = 0; int itm_count = 0; } -class Io_url_gen_nest implements gplx.ios.Io_url_gen { +class Io_url_gen_nest implements gplx.core.ios.Io_url_gen { public Io_url Cur_url() {return cur_url;} Io_url cur_url; public Io_url Nxt_url() {cur_url = Xotdb_fsys_mgr.Url_fil(root_dir, fil_idx++, ext); return cur_url;} public Io_url[] Prv_urls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java index 0269d4f0e..847c55643 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java @@ -110,7 +110,7 @@ public class Xob_wiki_cfg_bldr_tst { , "" )); String[] wikis = new String[] {"en.wikipedia.org"}; String protocol = "mem/"; - Tfds.Eq_str_lines(Query_ns(protocol, gplx.ios.IoEngine_.MemKey, wikis), String_.Concat_lines_nl + Tfds.Eq_str_lines(Query_ns(protocol, gplx.core.ios.IoEngine_.MemKey, wikis), String_.Concat_lines_nl ( "app.bldr.wiki_cfg_bldr.get('en.wikipedia.org').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"" , "4|WP" , "5|WT" @@ -129,12 +129,12 @@ public class Xob_wiki_cfg_bldr_tst { String api = protocol + wiki + "/w/api.php?action=query&format=xml&meta=siteinfo&siprop=namespacealiases"; String xml = String_.new_u8(Io_mgr.Instance.DownloadFil_args("", null).Trg_engine_key_(trg_engine_key).Exec_as_bry(api)); if (xml == null) continue; // not found - gplx.xmls.XmlDoc xdoc = gplx.xmls.XmlDoc_.parse(xml); - gplx.xmls.XmlNde xnde = gplx.xmls.Xpath_.SelectFirst(xdoc.Root(), "query/namespacealiases"); + gplx.langs.xmls.XmlDoc xdoc = gplx.langs.xmls.XmlDoc_.parse(xml); + gplx.langs.xmls.XmlNde xnde = gplx.langs.xmls.Xpath_.SelectFirst(xdoc.Root(), "query/namespacealiases"); sb.Add("app.bldr.wiki_cfg_bldr.get('").Add(wiki).Add("').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"\n"); int xndes_len = xnde.SubNdes().Count(); for (int j = 0; j < xndes_len; j++) { - gplx.xmls.XmlNde ns_nde = xnde.SubNdes().Get_at(j); + gplx.langs.xmls.XmlNde ns_nde = xnde.SubNdes().Get_at(j); if (!String_.Eq(ns_nde.Name(), "ns")) continue; int id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1")); String name = String_.Replace(String_.Replace(ns_nde.Text_inner(), " ", "_"), "'", "''"); 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 0b494666b..49a1c3ad9 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 @@ -274,7 +274,7 @@ class Xob_dump_bmk_mgr { private void Save_itm(Bry_bfr save_bfr, String key, int val) { String fmt = "{0}('{1}');\n"; String str = String_.Format(fmt, key, val); - save_bfr.Add_str(str); + save_bfr.Add_str_u8(str); } } class Xob_rate_mgr { @@ -297,7 +297,7 @@ class Xob_rate_mgr { int dif = (int)(end - bgn) / 1000; Decimal_adp rate = Decimal_adp_.divide_safe_(count, dif); save_bfr - .Add_str(rate.To_str("#,##0.000")).Add_byte_pipe() + .Add_str_a7(rate.To_str("#,##0.000")).Add_byte_pipe() .Add_int_variable(count).Add_byte_pipe() .Add_int_variable(dif).Add_byte_nl() ; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java index c62f3fbb2..5f35a59fd 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_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.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.bldrs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.wtrs.*; public class Xob_category_registry_sql implements Xob_cmd { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java index cb6609e0e..457794025 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_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.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.core.encoders.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; public class Xob_category_registry_sql_tst { @Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Clear();} private Xob_category_registry_sql_fxt fxt = new Xob_category_registry_sql_fxt(); @After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} @@ -59,7 +59,7 @@ class Xob_category_registry_sql_fxt { String line = lines[i]; if (String_.Len_eq_0(line)) break; // ignore blank line String[] flds = String_.Split(line, '|'); - list.Add(Base85_utl.XtoIntByStr(flds[1])); + list.Add(Base85_.To_int_by_str(flds[1])); } return (int[])list.To_ary_and_clear(int.class); } 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 3f960fffc..743561ca4 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 @@ -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 gplx.core.brys.*; import gplx.ios.*; import gplx.xowa.wikis.ctgs.*; +import gplx.core.brys.*; import gplx.core.ios.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implements Sql_file_parser_cmd { private DateAdp_parser date_parser = DateAdp_parser.new_(); private Sql_file_parser sql_parser; Uca_trie trie; private Bry_bfr uca_bfr = Bry_bfr.reset_(255); @@ -38,7 +38,7 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement } else if (Bry_.Eq(fld_key, Fld_cl_sortkey)) { int nl_pos = Bry_find_.Find_fwd(src, Byte_ascii.Nl, fld_bgn, fld_end); - if (nl_pos != Bry_.NotFound) // sortkey sometimes has format of "sortkey\ntitle"; EX: "WALES, JIMMY\nJIMMY WALES"; discard 2nd to conserve hard-disk space + if (nl_pos != Bry_find_.Not_found) // sortkey sometimes has format of "sortkey\ntitle"; EX: "WALES, JIMMY\nJIMMY WALES"; discard 2nd to conserve hard-disk space fld_end = nl_pos; cur_sortkey = Bry_.Mid(src, fld_bgn, fld_end); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql.java index 43a4eeb65..0a1a943c1 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_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.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.sqls.*; public class Xob_categorylinks_sql extends Xob_categorylinks_base { private Db_idx_mode idx_mode = Db_idx_mode.Itm_end; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java index d0dff6f38..2fcdae97d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.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 gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; +import gplx.core.flds.*; import gplx.core.ios.*; import gplx.core.encoders.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_categorylinks_sql_make implements Io_make_cmd { @@ -118,7 +118,7 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd { while (true) { int compare = Bry_.Compare(ttl, 0, ttl.length, name_id_rdr.Bfr(), name_id_rdr.Key_pos_bgn(), name_id_rdr.Key_pos_end()); switch (compare) { - case CompareAble_.Same: return Base85_utl.XtoIntByAry(name_id_rdr.Bfr(), name_id_rdr.Key_pos_end() + 1, name_id_rdr.Itm_pos_end() - 2); + case CompareAble_.Same: return Base85_.To_int_by_bry(name_id_rdr.Bfr(), name_id_rdr.Key_pos_end() + 1, name_id_rdr.Itm_pos_end() - 2); case CompareAble_.More: boolean reading = name_id_rdr.Read_next(); if (!reading) return Cur_cat_id_null; // eof return 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 8fee0ecb2..7e3f69c68 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 @@ -127,7 +127,7 @@ class Db_tst_qry { } if (!pass) { bfr.Add(Lbl_row_hdr).Add_int_variable(expd_row_idx).Add_byte_nl(); - bfr.Add_str(qry.Xto_sql()).Add_byte(Byte_ascii.Semic); + bfr.Add_str_u8(qry.Xto_sql()).Add_byte(Byte_ascii.Semic); throw Err_.new_wo_type(bfr.To_str_and_clear()); } } static final byte[] Lbl_row_hdr = Bry_.new_a7("row: "), Lbl_eq_y = Bry_.new_a7(" == "), Lbl_eq_n = Bry_.new_a7(" != "); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_txt.java index ea4f404b4..a4c7f5c1c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_txt.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 gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.sqls.*; public class Xob_categorylinks_txt extends Xob_categorylinks_base { public Xob_categorylinks_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java index cc47e4dcc..067eeea37 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.flds.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.wikis.nss.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java index dd04e77d5..81a2122ff 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_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.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import org.junit.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_ctg_v1_base_tst { Xowd_page_wkr_ctg_fxt fxt = new Xowd_page_wkr_ctg_fxt(); @Test public void One() {fxt.ini_("[[Category:A]]").tst_("A");} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java index acbd3fc18..6b2bdebb8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_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.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; +import gplx.core.flds.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.wtrs.*; public class Xob_ctg_v1_sql extends Xob_ctg_v1_base { @Override public String Wkr_key() {return Xob_cmd_keys.Key_text_cat_core_v1;} @@ -34,7 +34,7 @@ class Xob_ctg_v1_sql_make implements Io_make_cmd { Io_url sql_url = wiki.Fsys_mgr().Root_dir().GenSubFil(Url_sql); Io_mgr.Instance.DeleteFil_args(sql_url).MissingFails_off().Exec(); sql_wtr = Xob_tmp_wtr.new_wo_ns_(Io_url_gen_.fil_(sql_url), Io_mgr.Len_mb); - sql_wtr.Bfr().Add_str(Xob_categorylinks_sql.Sql_categorylinks).Add(Sql_hdr); + sql_wtr.Bfr().Add_str_u8(Xob_categorylinks_sql.Sql_categorylinks).Add(Sql_hdr); } public void Sort_do(Io_line_rdr rdr) { if (page_count++ % progress_interval == 0) usr_dlg.Prog_many("", "", "building category; count=~{0}", page_count); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_txt.java index 90b8c4447..ae9a37fae 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_txt.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 gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; public class Xob_ctg_v1_txt extends Xob_ctg_v1_base { @Override public String Wkr_key() {return Xob_cmd_keys.Key_tdb_make_category;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_sql_join_mgr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_sql_join_mgr.java index 4052258c3..ddef68742 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_sql_join_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_sql_join_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.ios.*; +import gplx.core.ios.*; interface Xob_sql_join_wkr { Io_line_rdr New_main_rdr(); Io_line_rdr New_join_rdr(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java index e73de0ff9..db22e8e27 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; public abstract class Xoctg_hiddencat_parser_base extends Xob_sql_dump_base implements Sql_file_parser_cmd { public Xoctg_hiddencat_parser_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb; return this;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java index 513fcb00a..9353084ff 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.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 gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.sqls.*; public class Xoctg_hiddencat_parser_txt extends Xoctg_hiddencat_parser_base { public Xoctg_hiddencat_parser_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java index 74ec5636d..7da460479 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.wkrs.*; public class Xoctg_hiddencat_ttl_wkr extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble { public Xoctg_hiddencat_ttl_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb;} private Xob_sql_join_wkr_ctg_hidden join_wkr; @@ -59,7 +59,7 @@ class Xob_sql_join_wkr_ctg_hidden implements Xob_sql_join_wkr { byte[] src = join.Bfr(); int itm_end = join.Itm_pos_end(); int pipe_pos = Bry_find_.Find_bwd(src, Byte_ascii.Pipe, itm_end); - if (pipe_pos == Bry_.NotFound) throw Err_.new_wo_type("failed to find pipe for name", "excerpt", String_.new_u8(src, join.Itm_pos_bgn(), join.Itm_pos_end())); + if (pipe_pos == Bry_find_.Not_found) throw Err_.new_wo_type("failed to find pipe for name", "excerpt", String_.new_u8(src, join.Itm_pos_bgn(), join.Itm_pos_end())); file_bfr.Add_mid(src, pipe_pos + 1, itm_end - 1).Add_byte_pipe(); file_bfr.Add(key_bry).Add_byte_nl(); } private Bry_bfr file_bfr = Bry_bfr.new_(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java index 256cbd9e9..fc69af2f3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java @@ -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 gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.flds.*; import gplx.core.ios.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; public class Xoctg_link_idx_wkr extends Xob_idx_base { // NOTE: similar functionality to Xob_make_cmd_site, but more complicated due to p,f,s; not inheriting Io_url src_link_dir; int make_fil_max = Int_.Min_value; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java index 984c2f869..b8c147821 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.core.primitives.*; import gplx.ios.*; +import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.fsdb.meta.*; class Xob_bin_db_mgr { private final int[] ns_ids; private final int ns_ids_len; 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 6be19cb1c..882713777 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 @@ -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 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.ios.*; import gplx.xowa.wikis.data.tbls.*; +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.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd { 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 6b13c9ecb..8c36b287f 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 @@ -21,14 +21,14 @@ import gplx.xowa.files.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.xndes.*; -import gplx.xowa.htmls.hdumps.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.vnts.*; public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink_logger { 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_bldr hdump_bldr; private Xob_link_dump_cmd link_dump_cmd; private boolean hzip_enabled = false; + 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; 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;} @@ -86,7 +86,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink 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_bldr(wiki.Ns_mgr(), wiki.Db_mgr_as_sql(), tbl.Conn(), import_cfg.Html_db_max(), hzip_enabled); + 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); } @@ -114,7 +114,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink } if (gen_hdump) { page.Root_(root); - hdump_bldr.Insert_page(page); + 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(); @@ -192,39 +192,5 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink byte[] rv = ttl.Page_db(); return Bry_.Eq(rv, ttl_bry) ? null : rv; } - public static boolean Ns_file_is_case_match_all(Xow_wiki wiki) {return wiki.Ns_mgr().Ns_file().Case_match() == Xow_ns_case_.Id_all;} -} -class Xob_lnki_temp_wkr_ { - public static int[] Ns_ids_by_aliases(Xowe_wiki wiki, String[] aliases) { - int[] rv = Xob_lnki_temp_wkr_.Ids_by_aliases(wiki.Ns_mgr(), aliases); - int aliases_len = aliases.length; - int ids_len = rv.length; - for (int i = 0; i < aliases_len; i++) { - String alias = aliases[i]; - int id = i < ids_len ? rv[i] : -1; - wiki.Appe().Usr_dlg().Note_many("", "", "ns: ~{0} <- ~{1}", Int_.To_str_fmt(id, "0000"), alias); - } - if (aliases_len != ids_len) throw Err_.new_wo_type("mismatch in aliases and ids", "aliases", aliases_len, "ids", ids_len); - return rv; - } - private static int[] Ids_by_aliases(Xow_ns_mgr ns_mgr, String[] aliases) { - List_adp list = List_adp_.new_(); - int len = aliases.length; - for (int i = 0; i < len; i++) { - String alias = aliases[i]; - if (String_.Eq(alias, Xow_ns_.Key_main)) - list.Add(ns_mgr.Ns_main()); - else { - Xow_ns ns = ns_mgr.Names_get_or_null(Bry_.new_u8(alias)); - if (ns != null) - list.Add(ns); - } - } - len = list.Count(); - int[] rv = new int[len]; - for (int i = 0; i < len; i++) { - rv[i] = ((Xow_ns)list.Get_at(i)).Id(); - } - return rv; - } + public static boolean Ns_file_is_case_match_all(Xow_wiki wiki) {return wiki.Ns_mgr().Ns_file().Case_match() == Xow_ns_case_.Tid__all;} } 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 new file mode 100644 index 000000000..f8873169d --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr_.java @@ -0,0 +1,53 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; +import gplx.xowa.wikis.nss.*; +class Xob_lnki_temp_wkr_ { + public static int[] Ns_ids_by_aliases(Xowe_wiki wiki, String[] aliases) { + int[] rv = Xob_lnki_temp_wkr_.Ids_by_aliases(wiki.Ns_mgr(), aliases); + int aliases_len = aliases.length; + int ids_len = rv.length; + for (int i = 0; i < aliases_len; i++) { + String alias = aliases[i]; + int id = i < ids_len ? rv[i] : -1; + wiki.Appe().Usr_dlg().Note_many("", "", "ns: ~{0} <- ~{1}", Int_.To_str_fmt(id, "0000"), alias); + } + if (aliases_len != ids_len) throw Err_.new_wo_type("mismatch in aliases and ids", "aliases", aliases_len, "ids", ids_len); + return rv; + } + private static int[] Ids_by_aliases(Xow_ns_mgr ns_mgr, String[] aliases) { + List_adp list = List_adp_.new_(); + int len = aliases.length; + for (int i = 0; i < len; i++) { + String alias = aliases[i]; + if (String_.Eq(alias, Xow_ns_.Key_main)) + list.Add(ns_mgr.Ns_main()); + else { + Xow_ns ns = ns_mgr.Names_get_or_null(Bry_.new_u8(alias)); + if (ns != null) + list.Add(ns); + } + } + len = list.Count(); + int[] rv = new int[len]; + for (int i = 0; i < len; i++) { + rv[i] = ((Xow_ns)list.Get_at(i)).Id(); + } + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java index 38a451050..6813aeac3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java @@ -53,7 +53,7 @@ class Xob_orig_regy_tbl { } private static void Create_data_for_repo(Gfo_usr_dlg usr_dlg, Db_conn conn, Xowe_wiki local_wiki, byte repo_tid, Io_url join) { usr_dlg.Note_many("", "", "inserting page for xowa.wiki.image: ~{0}", join.OwnerDir().NameOnly()); - boolean wiki_has_cs_file = repo_tid == Xof_repo_itm_.Repo_remote && local_wiki.Ns_mgr().Ns_file().Case_match() == Xow_ns_case_.Id_all; + boolean wiki_has_cs_file = repo_tid == Xof_repo_itm_.Repo_remote && local_wiki.Ns_mgr().Ns_file().Case_match() == Xow_ns_case_.Tid__all; String lnki_ttl_fld = wiki_has_cs_file ? "Coalesce(o.lnki_commons_ttl, o.lnki_ttl)" : "o.lnki_ttl"; // NOTE: use lnki_commons_ttl if [[File]] is cs PAGE:en.d:water EX:[[image:wikiquote-logo.png|50px|none|alt=]]; DATE:2014-09-05 if (wiki_has_cs_file) Sqlite_engine_.Idx_create(usr_dlg, conn, "orig_regy", Idx_ttl_remote); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java index 55ad31f66..6e4a4d31e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java @@ -16,9 +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.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.xowa.xtns.wdatas.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; -import gplx.xowa.bldrs.css.*; -import gplx.xowa.wikis.domains.*; +import gplx.xowa.xtns.wdatas.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cmds.texts.xmls.*; +import gplx.xowa.bldrs.css.*; import gplx.xowa.wikis.domains.*; public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble { private Xob_bldr bldr; private Xowe_wiki wiki; private Gfo_usr_dlg usr_dlg; private byte wbase_enabled = Bool_.__byte; @@ -34,10 +33,8 @@ public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble { } public void Cmd_bgn(Xob_bldr bldr) {} public void Cmd_run() { // parse site_info - gplx.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); - usr_dlg.Plog_many("", "", "reading dump header: ~{0}", src_rdr.Url().Raw()); - byte[] siteinfo_xml = Xob_siteinfo_parser.Siteinfo_extract(src_rdr); - Xob_siteinfo_parser.Siteinfo_parse(wiki, usr_dlg, String_.new_u8(siteinfo_xml)); + gplx.core.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); usr_dlg.Plog_many("", "", "reading dump header: ~{0}", src_rdr.Url().Raw()); + Xob_siteinfo_parser_.Parse(Xob_siteinfo_parser_.Extract(src_rdr), wiki); this.Cmd_run_end(wiki); // save site info } public void Cmd_end() { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java index d2843a229..9466837ea 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.core.primitives.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; 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 a041e7459..989a11860 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 @@ -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.dbs.*; import gplx.ios.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.wikis.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.wikis.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; 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 70415cabd..7f67ce279 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.ios.*; +import gplx.core.ios.*; import gplx.core.encoders.*; 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.*; @@ -25,7 +25,7 @@ public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd { private int search_id = 0; private byte[] prv_word = Bry_.Empty; private int page_count; public Xob_search_sql_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} @Override public String Wkr_key() {return Xob_cmd_keys.Key_text_search_wkr;} - @Override public gplx.ios.Io_make_cmd Make_cmd_site() {return this;} + @Override public gplx.core.ios.Io_make_cmd Make_cmd_site() {return this;} public Io_sort_cmd Make_dir_(Io_url v) {return this;} // noop public void Sort_bgn() { this.usr_dlg = Xoa_app_.Usr_dlg(); @@ -43,7 +43,7 @@ public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd { prv_word = cur_word; page_count = 0; } - search_page_tbl.Insert_cmd_by_batch(search_id, Base85_utl.XtoIntByAry(bry, rdr.Key_pos_end() + 1, rdr.Key_pos_end() + 5)); // -1: ignore rdr_dlm + search_page_tbl.Insert_cmd_by_batch(search_id, Base85_.To_int_by_bry(bry, rdr.Key_pos_end() + 1, rdr.Key_pos_end() + 5)); // -1: ignore rdr_dlm ++page_count; if (search_id % 10000 == 0) usr_dlg.Prog_many("", "", "creating title index: count=~{0}", search_id); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java index f7cbdf563..508da2fc1 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.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.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Io_sort_cmd_ns implements Io_make_cmd { Xob_xdat_file_wtr fil_wtr; Bry_bfr reg_bfr = Bry_bfr.new_(), key_bfr_0 = Bry_bfr.new_(512), key_bfr_n = Bry_bfr.new_(512); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java index a9d9947d7..8d81b7add 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java @@ -56,14 +56,14 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd { } private void Gen_call(boolean first, Bry_bfr bfr, String key, Object... vals) { if (!first) bfr.Add_byte(Byte_ascii.Dot); - bfr.Add_str(key); + bfr.Add_str_u8(key); int len = vals.length; if (len > 0) { bfr.Add_byte(Byte_ascii.Paren_bgn); for (int i = 0; i < len; i++) { if (i != 0) bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); Object val = vals[i]; - bfr.Add_str(Object_.Xto_str_strict_or_null_mark(val)); + bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(val)); } bfr.Add_byte(Byte_ascii.Paren_end); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java index 13a724d43..c01de67f9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.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.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xob_make_cmd_site implements Io_make_cmd { Xob_xdat_file_wtr fil_wtr; Bry_bfr cur_bfr = Bry_bfr.new_(), reg_bfr = Bry_bfr.new_(), reg_key_0 = Bry_bfr.new_(512), reg_key_n = Bry_bfr.new_(512); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java index 3716dd580..7949edb5c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_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.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble { public Xob_make_id_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java index 9a12be299..f32b44223 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java @@ -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.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; @@ -85,8 +85,8 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvk } } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_page_file_len_)) page_file_len = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_title_file_len_)) title_file_len = gplx.ios.Io_size_.Load_int_(m); + if (ctx.Match(k, Invk_page_file_len_)) page_file_len = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_title_file_len_)) title_file_len = gplx.core.ios.Io_size_.Load_int_(m); else return super.Invk(ctx, ikey, k, m); return this; } private static final String Invk_page_file_len_ = "page_file_len_", Invk_title_file_len_ = "title_file_len_"; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java index 9c4842113..94e3368d3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_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.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble { public Xob_parse_dump_templates_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java index 1e76d2692..843ccbead 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; impo public class Xob_search_tdb extends Xob_search_base { public Xob_search_tdb(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} @Override public String Wkr_key() {return Xob_cmd_keys.Key_tdb_make_search_title;} - @Override public gplx.ios.Io_make_cmd Make_cmd_site() { + @Override public gplx.core.ios.Io_make_cmd Make_cmd_site() { return new Xob_make_cmd_site(bldr.Usr_dlg(), this.make_dir, this.make_fil_len); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java index 113c2e589..34e82b4e7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import org.junit.*; -import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xob_tst { @Before public void init() {fxt = new Xob_fxt().Ctor_mem();} private Xob_fxt fxt; @@ -175,7 +175,7 @@ public class Xob_tst { Io_mgr.Instance.SaveFilStr(url, raw); Xotdb_page_raw_parser parser = new Xotdb_page_raw_parser(); Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app); - parser.Load(Gfo_usr_dlg_.Test(), wiki, new Xow_ns(Xow_ns_.Id_template, Xow_ns_case_.Id_1st, Bry_.new_a7("Template"), false), new Io_url[] {url}, 1 * Io_mgr.Len_kb); + parser.Load(Gfo_usr_dlg_.Test(), wiki, new Xow_ns(Xow_ns_.Id_template, Xow_ns_case_.Tid__1st, Bry_.new_a7("Template"), false), new Io_url[] {url}, 1 * Io_mgr.Len_kb); List_adp actl = List_adp_.new_(); Xowd_page_itm page = new Xowd_page_itm(); while (parser.Read(page)) { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_nde.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_nde.java new file mode 100644 index 000000000..054c32f85 --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_nde.java @@ -0,0 +1,49 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs.cmds.texts.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; +import gplx.xowa.wikis.nss.*; +public class Xob_siteinfo_nde { + public Xob_siteinfo_nde(String site_name, String db_name, byte[] main_page, String generator, String case_dflt, Xow_ns_mgr ns_mgr) { + this.site_name = site_name; + this.db_name = db_name; + this.main_page = main_page; + this.generator = generator; + this.case_dflt = case_dflt; + this.ns_mgr = ns_mgr; + } + public String Site_name() {return site_name;} private final String site_name; + public String Db_name() {return db_name;} private final String db_name; + public byte[] Main_page() {return main_page;} private final byte[] main_page; + public String Generator() {return generator;} private final String generator; + public String Case_dflt() {return case_dflt;} private final String case_dflt; + public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr; + public void To_bfr(Bry_bfr bfr) { + bfr.Add (main_page).Add_byte_pipe(); + bfr.Add_str_u8(case_dflt).Add_byte_pipe(); + bfr.Add_str_u8(site_name).Add_byte_pipe(); + bfr.Add_str_u8(db_name).Add_byte_pipe(); + bfr.Add_str_u8(generator).Add_byte_nl(); + int len = ns_mgr.Count(); + for (int i = 0; i < len; ++i) { + Xow_ns ns = ns_mgr.Ords_get_at(i); + bfr.Add_int_variable(ns.Id()).Add_byte_pipe(); + bfr.Add_str_u8(Xow_ns_case_.To_str(ns.Case_match())).Add_byte_pipe(); + bfr.Add(ns.Name_txt()).Add_byte_nl(); + } + } +} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java new file mode 100644 index 000000000..d4330628c --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java @@ -0,0 +1,80 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs.cmds.texts.xmls; 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.langs.xmls.*; // NOTE: gplx.langs.xmls does not support Android; DATE:2013-01-17 +import gplx.xowa.wikis.nss.*; +public class Xob_siteinfo_parser_ { + public static byte[] Extract(Io_stream_rdr src_rdr) { + Io_buffer_rdr rdr = Io_buffer_rdr.Null; + try { + rdr = Io_buffer_rdr.new_(src_rdr, Io_mgr.Len_mb); // ASSUME: siteInfo is fully contained in the 1st MB of the src_xml + byte[] src = rdr.Bfr(); + int bgn = Bry_find_.Find_fwd(src, Bry_siteinfo_bgn, 0) ; if (bgn == Bry_find_.Not_found) throw Err_.new_("Xob_siteinfo_parser_", "could not find ", "src", src); + int end = Bry_find_.Move_fwd(src, Bry_siteinfo_end, bgn); if (end == Bry_find_.Not_found) throw Err_.new_("Xob_siteinfo_parser_", "could not find ", "src", src); + return Bry_.Mid(src, bgn, end); + } + finally {rdr.Rls();} + } + public static void Parse(byte[] siteinfo_bry, Xowe_wiki wiki) { + Xob_siteinfo_nde nde = Parse(String_.new_u8(siteinfo_bry), wiki.Ns_mgr()); + wiki.Props().Bldr_version_(Bry_.new_a7(Xoa_app_.Version)); + wiki.Props().Main_page_(nde.Main_page()); + Bry_bfr bfr = Bry_bfr.new_().Add_str_u8(nde.Site_name()).Add_byte_pipe().Add_str_u8(nde.Generator()).Add_byte_pipe().Add_str_u8(nde.Case_dflt()).Add_byte_pipe(); + wiki.Props().Siteinfo_misc_(bfr.To_bry_and_clear()); + } + public static Xob_siteinfo_nde Parse(String xdoc_src, Xow_ns_mgr ns_mgr) { + XmlDoc xdoc = XmlDoc_.parse(xdoc_src); XmlNde root = xdoc.Root(); + String site_name = "", db_name = "", generator = "", case_dflt = Xow_ns_case_.Key__1st; byte[] main_page = Xoa_page_.Main_page_bry; + int root_len = root.SubNdes().Count(); + for (int i = 0; i < root_len; ++i) { + XmlNde sub_nde = root.SubNdes().Get_at(i); String sub_name = sub_nde.Name(); + if (String_.Eq(sub_name, "sitename")) site_name = sub_nde.Text_inner(); + else if (String_.Eq(sub_name, "generator")) generator = sub_nde.Text_inner(); + else if (String_.Eq(sub_name, "case")) case_dflt = sub_nde.Text_inner(); + else if (String_.Eq(sub_name, "dbname")) db_name = sub_nde.Text_inner(); + else if (String_.Eq(sub_name, "base")) main_page = Parse_base(Bry_.new_u8(sub_nde.Text_inner())); + else if (String_.Eq(sub_name, "namespaces")) Parse_namespaces(sub_nde, ns_mgr, case_dflt); + else if (String_.Eq(sub_name, "#text")) {} // JAVA.XML.#text: ignore unexpected #text nodes + } + return new Xob_siteinfo_nde(site_name, db_name, main_page, generator, case_dflt, ns_mgr); + } + private static byte[] Parse_base(byte[] url) { + int page_bgn = Bry_find_.Find_fwd(url, gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki, 0); + if (page_bgn == Bry_find_.Not_found) { // "/wiki/" not found; EX: "http://mywiki/My_main_page" + page_bgn = Bry_find_.Find_bwd(url, Byte_ascii.Slash); // ASSUME last segment is page + if (page_bgn == Bry_find_.Not_found) throw Err_.new_("Xob_siteinfo_parser_", "could not parse main page url", "url", url); + ++page_bgn; // add 1 to position after slash + } + else // "/wiki/" found + page_bgn += gplx.xowa.htmls.hrefs.Xoh_href_.Len__wiki; // position bgn after "/wiki/" + return Bry_.Mid(url, page_bgn, url.length); // extract everything after "page_bgn"; EX: "http://en.wikipedia.org/wiki/Main_Page" -> "Main_Page" + } + private static void Parse_namespaces(XmlNde grp_nde, Xow_ns_mgr ns_mgr, String case_dflt) { + ns_mgr.Clear(); // NOTE: wipe out any preexisting ns; use siteinfo.xml as definitive list + int grp_len = grp_nde.SubNdes().Count(); + for (int i = 0; i < grp_len; ++i) { + XmlNde itm_nde = grp_nde.SubNdes().Get_at(i); if (itm_nde.Atrs().Count() == 0) continue; // JAVA.XML.#text: ignore unexpected #text nodes + String ns_id = itm_nde.Atrs().FetchValOr("key", null); if (ns_id == null) throw Err_.new_("Xob_siteinfo_parser_", "missing key for ns", "ns_xml", itm_nde.Text_inner()); + String case_match = itm_nde.Atrs().FetchValOr("case", case_dflt); // NOTE: some dumps can omit "case"; EX: https://dumps.wikimedia.org/sep11wiki; DATE:2015-11-01 + String name = itm_nde.Text_inner(); + ns_mgr.Add_new(Int_.parse(ns_id), Bry_.new_u8(name), Xow_ns_case_.To_tid(case_match), false); + } + ns_mgr.Init_w_defaults(); + } + private static final byte[] Bry_siteinfo_bgn = Bry_.new_a7(""), Bry_siteinfo_end = Bry_.new_a7(""); +} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java new file mode 100644 index 000000000..b098f8541 --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java @@ -0,0 +1,110 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs.cmds.texts.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; +import org.junit.*; import gplx.xowa.wikis.nss.*; +public class Xob_siteinfo_parser__tst { + private final Xob_siteinfo_parser__fxt fxt = new Xob_siteinfo_parser__fxt(); + @Test public void Basic__simplewikt() { // PURPOSE: basic test of siteinfo parse; DATE:2015-11-01 + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( " " + , " Wiktionary" + , " simplewiktionary" + , " https://simple.wiktionary.org/wiki/Main_Page" + , " MediaWiki 1.27.0-wmf.3" + , " case-sensitive" + , " " + , " Media" + , " Special" + , " " + , " Talk" + , " User" + , " User talk" + , " Wiktionary" + , " Wiktionary talk" + , " File" + , " File talk" + , " MediaWiki" + , " MediaWiki talk" + , " Template" + , " Template talk" + , " Help" + , " Help talk" + , " Category" + , " Category talk" + , " Module" + , " Module talk" + , " Gadget" + , " Gadget talk" + , " Gadget definition" + , " Gadget definition talk" + , " Topic" + , " " + , " " + ), String_.Concat_lines_nl + ( "Main_Page|case-sensitive|Wiktionary|simplewiktionary|MediaWiki 1.27.0-wmf.3" + , "-2|case-sensitive|Media" + , "-1|first-letter|Special" + , "0|case-sensitive|" + , "1|case-sensitive|Talk" + , "2|first-letter|User" + , "3|first-letter|User talk" + , "4|case-sensitive|Wiktionary" + , "5|case-sensitive|Wiktionary talk" + , "6|case-sensitive|File" + , "7|case-sensitive|File talk" + , "8|first-letter|MediaWiki" + , "9|first-letter|MediaWiki talk" + , "10|case-sensitive|Template" + , "11|case-sensitive|Template talk" + , "12|case-sensitive|Help" + , "13|case-sensitive|Help talk" + , "14|case-sensitive|Category" + , "15|case-sensitive|Category talk" + , "828|case-sensitive|Module" + , "829|case-sensitive|Module talk" + , "2300|case-sensitive|Gadget" + , "2301|case-sensitive|Gadget talk" + , "2302|case-sensitive|Gadget definition" + , "2303|case-sensitive|Gadget definition talk" + , "2600|first-letter|Topic" + , "2601|first-letter|2601" // NOTE: Topic_talk doesn't exist in , but added by XOWA b/c every subj ns must have a talk ns + )); + } + @Test public void Case_dflt() { // PURPOSE: missing case should use dflt DATE:2015-11-01 + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( " " + , " case-sensitive" + , " " + , " Media" + , " " + , " " + ), String_.Concat_lines_nl + ( "Main_Page|case-sensitive|||" + , "-2|case-sensitive|Media" + )); + } +} +class Xob_siteinfo_parser__fxt { + private final Xow_ns_mgr ns_mgr = new Xow_ns_mgr(gplx.xowa.langs.cases.Xol_case_mgr_.U8()); + private final Bry_bfr bfr = Bry_bfr.new_(); + public void Test__parse(String src_str, String expd) { + Xob_siteinfo_nde nde = Xob_siteinfo_parser_.Parse(src_str, ns_mgr); + nde.To_bfr(bfr); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); + } +} 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 8ed27c2db..dc5f07026 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.ios.*; import gplx.core.threads.*; +import gplx.core.ios.*; import gplx.core.threads.*; 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);} @@ -46,7 +46,7 @@ public class Xob_decompress_bz2_cmd extends Xob_itm_basic_base implements Xob_cm decompress.Prog_dlg_(app.Usr_dlg()).Run_mode_(ProcessAdp.Run_mode_async); decompress.Run(src_fil, trg_fil, trg_fil.OwnerDir().Xto_api()); while (decompress.Exit_code() == ProcessAdp.Exit_init) { - String size = gplx.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg_fil).Size()); + 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_deploy_zip_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java index a4c616a6c..39c020169 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_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.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.*; 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 54ee03885..07695a52a 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.ios.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd { 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 5c27a1380..a12a919e7 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 @@ -29,9 +29,9 @@ public class Xob_unzip_wkr { } public void Decompress(Io_url src, Io_url trg) { String src_ext = src.Ext(); - if (String_.Eq(src_ext, gplx.ios.Io_stream_.Ext_bz2)) process = decompress_bz2; - else if (String_.Eq(src_ext, gplx.ios.Io_stream_.Ext_zip)) process = decompress_zip; - else if (String_.Eq(src_ext, gplx.ios.Io_stream_.Ext_gz)) process = decompress_gz; + if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_bz2)) process = decompress_bz2; + else if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_zip)) process = decompress_zip; + else if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_gz)) process = decompress_gz; else throw Err_.new_unhandled(src_ext); Io_url trg_owner_dir = trg.OwnerDir(); Io_mgr.Instance.CreateDirIfAbsent(trg_owner_dir); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd.java index 0702d6b24..f7c49afb8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_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.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.dbs.*; import gplx.ios.*; import gplx.xowa.files.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.xowa.files.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; public class Xob_image_cmd extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble, Sql_file_parser_cmd { private Db_conn conn = null; private Db_stmt stmt = null; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd_tst.java index 9f66369e6..496b6409f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_image_cmd_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.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import org.junit.*; import gplx.ios.*; import gplx.xowa.files.*; +import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.*; public class Xob_image_cmd_tst { private Xob_image_cmd_fxt fxt = new Xob_image_cmd_fxt(); @Test public void Basic() {fxt.Init_("A.png" , Xof_media_type.Name_bitmap , Xof_ext_.Bry_png, 220, 110) .Test(Xof_ext_.Id_png);} // A.png -> png 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 44c9c4bcf..fac0b0b0d 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,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.ios.*; import gplx.xowa.htmls.*; +import gplx.core.ios.*; 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.*; @@ -187,11 +187,11 @@ public class Xoa_css_extractor { private String Logo_find_src() { if (mainpage_html == null) return null; int main_page_html_len = mainpage_html.length; - int logo_bgn = Bry_find_.Find_fwd(mainpage_html, Logo_find_bgn, 0); if (logo_bgn == Bry_.NotFound) return null; + int logo_bgn = Bry_find_.Find_fwd(mainpage_html, Logo_find_bgn, 0); if (logo_bgn == Bry_find_.Not_found) return null; logo_bgn += Logo_find_bgn.length; - logo_bgn = Bry_find_.Find_fwd(mainpage_html, Logo_find_end, logo_bgn); if (logo_bgn == Bry_.NotFound) return null; + logo_bgn = Bry_find_.Find_fwd(mainpage_html, Logo_find_end, logo_bgn); if (logo_bgn == Bry_find_.Not_found) return null; logo_bgn += Logo_find_end.length; - int logo_end = Bry_find_.Find_fwd(mainpage_html, Byte_ascii.Paren_end, logo_bgn, main_page_html_len); if (logo_bgn == Bry_.NotFound) return null; + int logo_end = Bry_find_.Find_fwd(mainpage_html, Byte_ascii.Paren_end, logo_bgn, main_page_html_len); if (logo_bgn == Bry_find_.Not_found) return null; byte[] logo_bry = Bry_.Mid(mainpage_html, logo_bgn, logo_end); return protocol_prefix + String_.new_u8(logo_bry); } @@ -240,9 +240,9 @@ public class Xoa_css_extractor { byte[] protocol_prefix_bry = Bry_.new_u8(protocol_prefix); Gfo_url gfo_url = new Gfo_url(); while (true) { - int url_bgn = Bry_find_.Find_fwd(raw, Css_find_bgn, prv_pos); if (url_bgn == Bry_.NotFound) break; // nothing left; stop + int url_bgn = Bry_find_.Find_fwd(raw, Css_find_bgn, prv_pos); if (url_bgn == Bry_find_.Not_found) break; // nothing left; stop url_bgn += css_find_bgn_len; - int url_end = Bry_find_.Find_fwd(raw, Byte_ascii.Quote, url_bgn, raw_len); if (url_end == Bry_.NotFound) {usr_dlg.Warn_many("", "main_page.css_parse", "could not find css; pos='~{0}' text='~{1}'", url_bgn, String_.new_u8__by_len(raw, url_bgn, url_bgn + 32)); break;} + int url_end = Bry_find_.Find_fwd(raw, Byte_ascii.Quote, url_bgn, raw_len); if (url_end == Bry_find_.Not_found) {usr_dlg.Warn_many("", "main_page.css_parse", "could not find css; pos='~{0}' text='~{1}'", url_bgn, String_.new_u8__by_len(raw, url_bgn, url_bgn + 32)); break;} byte[] css_url_bry = Bry_.Mid(raw, url_bgn, url_end); css_url_bry = Bry_.Replace(css_url_bry, Css_amp_find, Css_amp_repl); // & -> & css_url_bry = url_encoder.Decode(css_url_bry); // %2C -> %7C -> | @@ -264,7 +264,7 @@ public class Xoa_css_extractor { usr_dlg.Prog_many("", "main_page.css_download", "downloading css for '~{0}'", css_url); download_xrg.Prog_fmt_hdr_(css_url); byte[] css_bry = download_xrg.Exec_as_bry(css_url); if (css_bry == null) continue; // css not found; continue - tmp_bfr.Add(Xoa_css_img_downloader.Bry_comment_bgn).Add_str(css_url).Add(Xoa_css_img_downloader.Bry_comment_end).Add_byte_nl(); + tmp_bfr.Add(Xoa_css_img_downloader.Bry_comment_bgn).Add_str_u8(css_url).Add(Xoa_css_img_downloader.Bry_comment_end).Add_byte_nl(); tmp_bfr.Add(css_bry).Add_byte_nl().Add_byte_nl(); } return tmp_bfr.To_bry_and_clear(); 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 234a808c7..d90d48f24 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 @@ -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 org.junit.*; import gplx.ios.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.downloads.*; +import org.junit.*; import gplx.core.ios.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.downloads.*; public class Xoa_css_extractor_basic_tst { @Before public void init() {fxt.Clear();} private Xoa_css_extractor_fxt fxt = new Xoa_css_extractor_fxt(); @Test public void Logo_download() { diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java index bd6e61e88..54dd59cae 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_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.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import org.junit.*; import gplx.ios.*; import gplx.xowa.wikis.nss.*; +import org.junit.*; import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; public class Xoa_css_extractor_wiki_tst { @Before public void init() {fxt.Clear();} private Xoa_css_extractor_fxt fxt = new Xoa_css_extractor_fxt(); @Test public void Css_wiki_generate() { 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 2e0d987e9..79ebbd713 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 @@ -42,7 +42,7 @@ public class Xoa_css_img_downloader { Hash_adp img_hash = Hash_adp_bry.cs(); while (true) { int url_pos = Bry_find_.Find_fwd(src, Bry_url, prv_pos); - if (url_pos == Bry_.NotFound) {bfr.Add_mid(src, prv_pos, src_len); break;} // no more "url("; exit; + if (url_pos == Bry_find_.Not_found) {bfr.Add_mid(src, prv_pos, src_len); break;} // no more "url("; exit; int bgn_pos = url_pos + Bry_url_len; // set bgn_pos after "url(" byte bgn_byte = src[bgn_pos]; byte end_byte = Byte_ascii.Null; @@ -58,7 +58,7 @@ public class Xoa_css_img_downloader { break; } int end_pos = Bry_find_.Find_fwd(src, end_byte, bgn_pos, src_len); - if (end_pos == Bry_.NotFound) { // unclosed "url("; exit since nothing else will be found + if (end_pos == Bry_find_.Not_found) { // unclosed "url("; exit since nothing else will be found usr_dlg.Warn_many(GRP_KEY, "parse.invalid_url.end_missing", "could not find end_sequence for 'url(': bgn='~{0}' end='~{1}'", prv_pos, String_.new_u8__by_len(src, prv_pos, prv_pos + 25)); bfr.Add_mid(src, prv_pos, src_len); break; @@ -76,7 +76,7 @@ public class Xoa_css_img_downloader { continue; } int import_url_end = Import_url_chk(rel_url_prefix, src, src_len, prv_pos, url_pos, img_raw, bfr); // check for embedded stylesheets via @import tag - if (import_url_end != Bry_.NotFound) { + if (import_url_end != Bry_find_.Not_found) { prv_pos = import_url_end; continue; } @@ -110,8 +110,8 @@ public class Xoa_css_img_downloader { ; } private int Import_url_chk(byte[] rel_url_prefix, byte[] src, int src_len, int old_pos, int find_bgn, byte[] url_raw, Bry_bfr bfr) { - if (find_bgn < Bry_import_len) return Bry_.NotFound; - if (!Bry_.Match(src, find_bgn - Bry_import_len, find_bgn, Bry_import)) return Bry_.NotFound; + if (find_bgn < Bry_import_len) return Bry_find_.Not_found; + if (!Bry_.Match(src, find_bgn - Bry_import_len, find_bgn, Bry_import)) return Bry_find_.Not_found; byte[] css_url = url_raw; int css_url_len = css_url.length; if (css_url_len > 0 && css_url[0] == Byte_ascii.Slash) { // css_url starts with "/"; EX: "/page" or "//site/page" DATE:2014-02-03 if (css_url_len > 1 && css_url[1] != Byte_ascii.Slash) // skip if css_url starts with "//"; EX: "//site/page" @@ -124,7 +124,7 @@ public class Xoa_css_img_downloader { byte[] css_trg_bry = download_wkr.Download_xrg().Exec_as_bry(css_src_str); if (css_trg_bry == null) { usr_dlg.Warn_many("", "", "could not import css: url=~{0}", css_src_str); - return Bry_.NotFound; // css not found + return Bry_find_.Not_found; // css not found } bfr.Add_mid(src, old_pos, find_bgn - Bry_import_len).Add_byte_nl(); bfr.Add(Bry_comment_bgn).Add(css_url).Add(Bry_comment_end).Add_byte_nl(); @@ -144,11 +144,11 @@ public class Xoa_css_img_downloader { if (Bry_.Has_at_bgn(raw, Bry_fwd_slashes, 0, raw_len)) pos_bgn = Bry_fwd_slashes.length; if (Bry_.Has_at_bgn(raw, Bry_http, 0, raw_len)) pos_bgn = Bry_http.length; int pos_slash = Bry_find_.Find_fwd(raw, Byte_ascii.Slash, pos_bgn, raw_len); - if (pos_slash == Bry_.NotFound) return null; // first segment is site_name; at least one slash must be present for image name; EX: site.org/img_name.jpg + if (pos_slash == Bry_find_.Not_found) return null; // first segment is site_name; at least one slash must be present for image name; EX: site.org/img_name.jpg if (pos_slash == raw_len - 1) return null; // "site.org/" is invalid int pos_end = raw_len; int pos_question = Bry_find_.Find_bwd(raw, Byte_ascii.Question); - if (pos_question != Bry_.NotFound) + if (pos_question != Bry_find_.Not_found) pos_end = pos_question; // remove query params; EX: img_name?key=val return Bry_.Mid(raw, pos_bgn, pos_end); } diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url.java index 6327f52b4..c44fa2e26 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url.java @@ -34,7 +34,7 @@ class Xob_css_parser__url { break; } int end_pos = Bry_find_.Find_fwd(src, end_byte, bgn_pos, src_len); - if (end_pos == Bry_.NotFound) // unclosed "url("; exit since nothing else will be found + if (end_pos == Bry_find_.Not_found) // unclosed "url("; exit since nothing else will be found return Xob_css_tkn__warn.new_(tkn_bgn, tkn_end, "mirror.parser.url:dangling; bgn=~{0} excerpt=~{1}", bgn_pos, String_.new_u8__by_len(src, tkn_bgn, tkn_bgn + 128)); if (end_pos - bgn_pos == 0) // empty; "url()"; ignore return Xob_css_tkn__warn.new_(tkn_bgn, tkn_end, "mirror.parser.url:empty; bgn=~{0} excerpt=~{1}", bgn_pos, String_.new_u8__by_len(src, tkn_bgn, tkn_bgn + 128)); diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java index b26a7a032..e7d2101bc 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_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.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; import gplx.xowa.files.downloads.*; +import gplx.core.ios.*; import gplx.xowa.files.downloads.*; public class Xob_mirror_mgr { private final Xof_download_wkr download_wkr; private final Xob_css_parser css_parser; private final byte[] page_url; private final Io_url fsys_root; diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java index 623d1bebb..c31ea8802 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java @@ -49,8 +49,8 @@ class Dg_parser_fxt { Tfds.Eq_str_lines(Xto_str(bfr, expd), Xto_str(bfr, actl)); } private String Xto_str(Bry_bfr bfr, Dg_rule line) { - bfr .Add_str("score=").Add_int_variable(line.Score()).Add_byte_nl() - .Add_str("words=").Add_str(String_.Concat_with_str(";", Dg_word.Ary_concat(line.Words(), tmp_bfr, Byte_ascii.Tick))).Add_byte_nl() + bfr .Add_str_a7("score=").Add_int_variable(line.Score()).Add_byte_nl() + .Add_str_a7("words=").Add_str_u8(String_.Concat_with_str(";", Dg_word.Ary_concat(line.Words(), tmp_bfr, Byte_ascii.Tick))).Add_byte_nl() ; return bfr.To_str_and_clear(); } 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 5bf70d0ab..de966f64c 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 @@ -23,10 +23,10 @@ class Xoi_cmd_imageMagick_download extends Gfo_thread_cmd_download implements Gf public Xoi_cmd_imageMagick_download(Gfo_usr_dlg usr_dlg, Gfui_kit kit, Io_url trg) {this.Ctor(usr_dlg, kit); this.trg = trg;} Io_url trg; @Override public byte Async_init() { // // byte[] raw = xrg.Exec_as_bry(Src_imageMagick); -// int find_pos = Bry_find_.Find_fwd(raw, Bry_windows_zip); if (find_pos == Bry_.NotFound) return Fail(); -// int bgn_pos = Bry_find_.Find_bwd(raw, Byte_ascii.Quote, find_pos); if (bgn_pos == Bry_.NotFound) return Fail(); +// int find_pos = Bry_find_.Find_fwd(raw, Bry_windows_zip); if (find_pos == Bry_find_.Not_found) return Fail(); +// int bgn_pos = Bry_find_.Find_bwd(raw, Byte_ascii.Quote, find_pos); if (bgn_pos == Bry_find_.Not_found) return Fail(); // ++bgn_pos; -// int end_pos = Bry_find_.Find_fwd(raw, Byte_ascii.Quote, bgn_pos); if (end_pos == Bry_.NotFound) return Fail(); +// int end_pos = Bry_find_.Find_fwd(raw, Byte_ascii.Quote, bgn_pos); if (end_pos == Bry_find_.Not_found) return Fail(); // String src = Src_imageMagick + String_.new_a7(Bry_.Mid(raw, bgn_pos, end_pos)); String src = "http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/ImageMagick-6.8.8-1-Q16-x86-windows.zip"; this.Init("downloading", src, trg); diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java index 3123ffb76..eaa962583 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java @@ -56,16 +56,16 @@ public class Xoi_cmd_wiki_tst { byte[] pages_articles_key = Bry_.new_a7(wmf_key + "-latest-pages-articles.xml.bz2"); Wmf_latest_itm latest_itm = parser.Get_by(pages_articles_key); bfr.Add(domain_bry).Add_byte_pipe(); - bfr.Add_str(dump_file.File_url()).Add_byte_pipe(); + bfr.Add_str_u8(dump_file.File_url()).Add_byte_pipe(); bfr.Add(Xow_domain_tid_.Get_type_as_bry(domain_itm.Domain_type_id())).Add_byte_pipe(); long src_size = latest_itm.Size(); bfr.Add_long_variable(src_size).Add_byte_pipe(); - bfr.Add_str(gplx.ios.Io_size_.To_str(src_size)).Add_byte_pipe(); + bfr.Add_str_a7(gplx.core.ios.Io_size_.To_str(src_size)).Add_byte_pipe(); time_fmtr.Seconds_(Math_.Div_safe_as_long(src_size, 1000000)).Fmt__do(bfr); bfr.Add_byte_pipe(); - bfr.Add_str(latest_itm.Date().XtoStr_fmt_yyyy_MM_dd_HH_mm()); + bfr.Add_str_a7(latest_itm.Date().XtoStr_fmt_yyyy_MM_dd_HH_mm()); bfr.Add_byte_pipe(); - bfr.Add_str(dump_file.Dump_date()); + bfr.Add_str_a7(dump_file.Dump_date()); bfr.Add_byte_nl(); } /* @@ -94,7 +94,7 @@ public class Xoi_cmd_wiki_tst { // bfr.Add(lang_itm.Canonical_name()).Add_byte_pipe(); long src_size = dump_file.File_len(); bfr.Add_long_variable(src_size).Add_byte_pipe(); - bfr.Add_str(gplx.ios.Io_size_.To_str(src_size)).Add_byte_pipe(); + bfr.Add_str(gplx.core.ios.Io_size_.To_str(src_size)).Add_byte_pipe(); time_fmtr.Seconds_(Math_.Div_safe_as_long(src_size, 1000000)).XferAry(bfr, 0); bfr.Add_byte_pipe(); bfr.Add_str(dump_file.File_modified().XtoStr_fmt_yyyy_MM_dd_HH_mm()); diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java index 69607d25c..de9c912b8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_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.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xoi_dump_mgr implements GfoInvkAble { public String[] Server_urls() {return server_urls;} private String[] server_urls = String_.Ary(Xowm_dump_file_.Server_wmf_https, Xowm_dump_file_.Server_your_org, Xowm_dump_file_.Server_c3sl, Xowm_dump_file_.Server_masaryk); public String[] Custom_cmds() {return custom_cmds;} private String[] custom_cmds = String_.Ary(Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_import.KEY); - public byte Data_storage_format() {return data_storage_format;} public Xoi_dump_mgr Data_storage_format_(byte v) {data_storage_format = v; return this;} private byte data_storage_format = gplx.ios.Io_stream_.Tid_gzip; + public byte Data_storage_format() {return data_storage_format;} public Xoi_dump_mgr Data_storage_format_(byte v) {data_storage_format = v; return this;} private byte data_storage_format = gplx.core.ios.Io_stream_.Tid_gzip; public long Db_text_max() {return db_text_max;} private long db_text_max = (long)3000 * Io_mgr.Len_mb; public long Db_categorylinks_max() {return db_categorylinks_max;} private long db_categorylinks_max = (long)3600 * Io_mgr.Len_mb; public long Db_wikidata_max() {return db_wikidata_max;} private long db_wikidata_max = (long)3600 * Io_mgr.Len_mb; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java index 3c1d5b85d..4381cc1fb 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java @@ -23,9 +23,9 @@ public class Xoi_mirror_parser { List_adp rv = List_adp_.new_(); int pos = 0; while (true) { - int bgn = Bry_find_.Find_fwd(raw, CONST_href_bgn, pos); if (bgn == Bry_.NotFound) break; + int bgn = Bry_find_.Find_fwd(raw, CONST_href_bgn, pos); if (bgn == Bry_find_.Not_found) break; bgn += CONST_href_bgn.length; - int end = Bry_find_.Find_fwd(raw, CONST_href_end, bgn); if (end == Bry_.NotFound) return String_.Ary_empty; + int end = Bry_find_.Find_fwd(raw, CONST_href_end, bgn); if (end == Bry_find_.Not_found) return String_.Ary_empty; byte[] date = Bry_.Mid(raw, bgn, end); pos = end + CONST_href_end.length; if (Bry_.Match(date, CONST_date_parent_dir)) continue; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java index f0045c6d5..edaa586b3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java @@ -97,7 +97,7 @@ class Xow_cfg_wiki_core_fxt { wiki.Cfg_wiki_core().Load(raw); Tfds.Eq_str_lines(raw, String_.new_a7(wiki.Cfg_wiki_core().Build_gfs())); } - public Xow_ns ns_(int id, boolean case_match, String name) {return new Xow_ns(id, case_match ? Xow_ns_case_.Id_all : Xow_ns_case_.Id_1st, Bry_.new_u8(name), false);} + public Xow_ns ns_(int id, boolean case_match, String name) {return new Xow_ns(id, case_match ? Xow_ns_case_.Tid__all : Xow_ns_case_.Tid__1st, Bry_.new_u8(name), false);} public void Load_tst(String raw, Xow_ns... expd_ary) { wiki.Cfg_wiki_core().Load(raw); int expd_len = expd_ary.length; 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 4377bd288..5b317409d 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,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.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.apps.fsys.*; public class Xoi_firefox_installer implements GfoInvkAble { private Io_url src_xpi, trg_xpi; diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java index fcc47957d..7c6d5cfdf 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java @@ -17,7 +17,7 @@ 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 org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xoi_firefox_installer_tst { private Xoi_firefox_pref_fxt fxt = new Xoi_firefox_pref_fxt(); @Test public void Pref_update() { diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java index 1088fa94f..8ebfc07e4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java @@ -21,7 +21,7 @@ public class Wmf_dump_list_parser { Ordered_hash itms = Ordered_hash_.New_bry(); int pos = 0; while (true) { - int a_pos = Bry_find_.Find_fwd(src, Find_anchor, pos); if (a_pos == Bry_.NotFound) break; // no more anchors found + int a_pos = Bry_find_.Find_fwd(src, Find_anchor, pos); if (a_pos == Bry_find_.Not_found) break; // no more anchors found pos = a_pos + Find_anchor.length; try { Wmf_dump_itm itm = new Wmf_dump_itm(); @@ -35,31 +35,31 @@ public class Wmf_dump_list_parser { return (Wmf_dump_itm[])itms.To_ary(Wmf_dump_itm.class); } private boolean Parse_href(Wmf_dump_itm itm, byte[] src, int a_pos) { // EX: http://dumps.wikimedia.org/enwiki/20130807 - int href_pos = Bry_find_.Find_fwd(src, Find_href, a_pos); if (href_pos == Bry_.NotFound) return false; // no
  • ; something bad happened + int href_pos = Bry_find_.Find_fwd(src, Find_href, a_pos); if (href_pos == Bry_find_.Not_found) return false; // no
  • ; something bad happened int href_bgn_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, href_pos + Find_href.length); - int href_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, href_bgn_pos + 1); if (href_end_pos == Bry_.NotFound) return false; + int href_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, href_bgn_pos + 1); if (href_end_pos == Bry_find_.Not_found) return false; byte[] href_bry = Bry_.Mid(src, href_bgn_pos + 1, href_end_pos); int date_end = href_bry.length; - int date_bgn = Bry_find_.Find_bwd(href_bry, Byte_ascii.Slash); if (date_bgn == Bry_.NotFound) return false; + int date_bgn = Bry_find_.Find_bwd(href_bry, Byte_ascii.Slash); if (date_bgn == Bry_find_.Not_found) return false; byte[] date_bry = Bry_.Mid(href_bry, date_bgn + 1, date_end); DateAdp date = DateAdp_.parse_fmt(String_.new_a7(date_bry), "yyyyMMdd"); itm.Dump_date_(date); int abrv_end = date_bgn; - int abrv_bgn = Bry_find_.Find_bwd(href_bry, Byte_ascii.Slash, abrv_end); if (abrv_bgn == Bry_.NotFound) abrv_bgn = -1; // "enwiki/20130708" + int abrv_bgn = Bry_find_.Find_bwd(href_bry, Byte_ascii.Slash, abrv_end); if (abrv_bgn == Bry_find_.Not_found) abrv_bgn = -1; // "enwiki/20130708" byte[] abrv_bry = Bry_.Mid(href_bry, abrv_bgn + 1, abrv_end); itm.Wiki_abrv_(Bry_.Replace(abrv_bry, Byte_ascii.Underline, Byte_ascii.Dash)); return true; } private DateAdp Parse_status_time(byte[] src, int a_pos) { - int li_pos = Bry_find_.Find_bwd(src, Find_li, a_pos); if (li_pos == Bry_.NotFound) return null; - int bgn = Bry_find_.Find_fwd(src, Byte_ascii.Gt, li_pos + Find_li.length); if (bgn == Bry_.NotFound) return null; + int li_pos = Bry_find_.Find_bwd(src, Find_li, a_pos); if (li_pos == Bry_find_.Not_found) return null; + int bgn = Bry_find_.Find_fwd(src, Byte_ascii.Gt, li_pos + Find_li.length); if (bgn == Bry_find_.Not_found) return null; byte[] rv_bry = Bry_.Mid(src, bgn + 1, a_pos); return DateAdp_.parse_fmt(String_.Trim(String_.new_a7(rv_bry)), "yyyy-MM-dd HH:mm:ss"); } private byte[] Parse_status_msg(byte[] src, int a_pos) { - int span_pos = Bry_find_.Find_fwd(src, Find_span_bgn, a_pos); if (span_pos == Bry_.NotFound) return null; - int bgn = Bry_find_.Find_fwd(src, Byte_ascii.Gt, span_pos + Find_span_bgn.length); if (bgn == Bry_.NotFound) return null; - int end = Bry_find_.Find_fwd(src, Find_span_end, bgn); if (end == Bry_.NotFound) return null; + int span_pos = Bry_find_.Find_fwd(src, Find_span_bgn, a_pos); if (span_pos == Bry_find_.Not_found) return null; + int bgn = Bry_find_.Find_fwd(src, Byte_ascii.Gt, span_pos + Find_span_bgn.length); if (bgn == Bry_find_.Not_found) return null; + int end = Bry_find_.Find_fwd(src, Find_span_end, bgn); if (end == Bry_find_.Not_found) return null; return Bry_.Mid(src, bgn + 1, end); } private static byte[] diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java index f40b1260c..3f1f398a6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java @@ -61,7 +61,7 @@ public class Wmf_dump_list_parser_tst { // if (Bry_.Eq(abrv, Bry_.new_a7("testwikidatawiki"))) continue; // byte[] domain_bry = Xow_abrv_wm_.Parse_to_domain_bry(abrv); // if (domain_bry == null) continue; // not a standard WMF wiki; ignore -// if (Bry_find_.Find_fwd(domain_bry, Bry_.new_a7("wikimania")) != Bry_.NotFound) continue; +// if (Bry_find_.Find_fwd(domain_bry, Bry_.new_a7("wikimania")) != Bry_find_.Not_found) continue; // if (excluded_domains.Has(domain_bry)) continue; // Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); // byte[] tid_name = Xto_display_name(Xow_domain_tid_.Get_type_as_bry(domain_itm.Domain_type_id())); diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java index f88266c58..606d3d147 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_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.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -import gplx.core.btries.*; import gplx.ios.*; +import gplx.core.btries.*; import gplx.core.ios.*; public class Wmf_latest_parser { private Ordered_hash hash = Ordered_hash_.New_bry(); public int Count() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser_tst.java index 2acaf4b8e..5c24dddd4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_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.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -import org.junit.*; import gplx.ios.*; +import org.junit.*; import gplx.core.ios.*; public class Wmf_latest_parser_tst { @Before public void init() {fxt.Clear();} private Wmf_latest_parser_fxt fxt = new Wmf_latest_parser_fxt(); @Test public void Parse() { diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java index af6159c87..6e55fdbfc 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_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.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.downloads.*; public class Xoa_maint_mgr implements GfoInvkAble { diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java index b622363ff..63801606b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java @@ -27,7 +27,7 @@ class Upgrader_v00_02_01 { usr_dlg.Note_many(GRP_KEY, "siteinfo.bgn", "siteinfo.bgn for ~{0}", siteinfo_url.Raw()); String siteinfo_str = Io_mgr.Instance.LoadFilStr_args(siteinfo_url).MissingIgnored_(true).Exec(); if (String_.Len_eq_0(siteinfo_str)) throw Err_.new_wo_type("could not find siteinfo.xml", "url", siteinfo_url.Raw()); usr_dlg.Note_many(GRP_KEY, "siteinfo.parse", "parsing siteinfo"); - gplx.xowa.bldrs.xmls.Xob_siteinfo_parser.Siteinfo_parse(wiki, usr_dlg, siteinfo_str); // NOTE: this also resets the namespaces on the wiki; not necessary, but is benign + gplx.xowa.bldrs.cmds.texts.xmls.Xob_siteinfo_parser_.Parse(Bry_.new_u8(siteinfo_str), wiki); // NOTE: this also resets the namespaces on the wiki; not necessary, but is benign usr_dlg.Note_many(GRP_KEY, "siteinfo.save", "saving siteinfo"); byte[] wiki_core_bry = wiki.Cfg_wiki_core().Build_gfs(); Io_mgr.Instance.SaveFilBry(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil(), wiki_core_bry); diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java index e206620c1..45eee19b4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_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.bldrs.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.flds.*; import gplx.ios.*; +import gplx.core.flds.*; import gplx.core.ios.*; public class Sql_file_parser { public Io_url Src_fil() {return src_fil;} public Sql_file_parser Src_fil_(Io_url v) {src_fil = v; return this;} Io_url src_fil; public int Src_len() {return src_len;} public Sql_file_parser Src_len_(int v) {src_len = v; return this;} private int src_len = 8 * Io_mgr.Len_mb; @@ -54,7 +54,7 @@ public class Sql_file_parser { public void Parse(Gfo_usr_dlg usr_dlg) { Io_buffer_rdr rdr = Io_buffer_rdr.Null; try { - rdr = Io_buffer_rdr.new_(gplx.ios.Io_stream_rdr_.new_by_url_(src_fil), src_len); + rdr = Io_buffer_rdr.new_(gplx.core.ios.Io_stream_rdr_.new_by_url_(src_fil), src_len); Bry_bfr fil_bfr = Bry_bfr.new_(), val_bfr = Bry_bfr.new_(); byte[] bfr = rdr.Bfr(); int bfr_len = rdr.Bfr_len(), fld_idx = 0, cur_pos = 0; if (flds_req != null) Identify_flds(bfr); @@ -73,9 +73,9 @@ public class Sql_file_parser { switch (mode) { case Mode_sql_bgn: cur_pos = Bry_find_.Find_fwd(bfr, Bry_insert_into, cur_pos); - if (cur_pos == Bry_.NotFound || cur_pos > bfr_len) {reading_file = false; continue;} + if (cur_pos == Bry_find_.Not_found || cur_pos > bfr_len) {reading_file = false; continue;} cur_pos = Bry_find_.Find_fwd(bfr, Bry_values, cur_pos); - if (cur_pos == Bry_.NotFound || cur_pos > bfr_len) throw Err_.new_wo_type("VALUES not found"); // something went wrong; + if (cur_pos == Bry_find_.Not_found || cur_pos > bfr_len) throw Err_.new_wo_type("VALUES not found"); // something went wrong; mode = Mode_fld; cur_pos += Bry_values.length; break; diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java index 8d8a5c217..1819959f9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_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.bldrs.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import org.junit.*; import gplx.ios.*; +import org.junit.*; import gplx.core.ios.*; public class Sql_file_parser_tst { Sql_file_parser_fxt fxt = new Sql_file_parser_fxt(); @Before public void init() {fxt.Clear();} diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java index 3a6453c68..dd3e18496 100644 --- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_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.bldrs.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; class Sql_fld_mgr { public int Count() {return hash.Count();} public Sql_fld_itm Get_by_key(String fld) {return Get_by_key(Bry_.new_u8(fld));} @@ -25,11 +25,11 @@ class Sql_fld_mgr { } private Ordered_hash hash = Ordered_hash_.New_bry(); public Sql_fld_mgr Parse(byte[] raw) { hash.Clear(); - int bgn = Bry_find_.Find_fwd(raw, Tkn_create_table); if (bgn == Bry_.NotFound) throw Err_.new_wo_type("could not find 'CREATE TABLE'"); - bgn = Bry_find_.Find_fwd(raw, Byte_ascii.Nl, bgn); if (bgn == Bry_.NotFound) throw Err_.new_wo_type("could not find new line after 'CREATE TABLE'"); + int bgn = Bry_find_.Find_fwd(raw, Tkn_create_table); if (bgn == Bry_find_.Not_found) throw Err_.new_wo_type("could not find 'CREATE TABLE'"); + bgn = Bry_find_.Find_fwd(raw, Byte_ascii.Nl, bgn); if (bgn == Bry_find_.Not_found) throw Err_.new_wo_type("could not find new line after 'CREATE TABLE'"); bgn += Int_.Const_position_after_char; - int end = Bry_find_.Find_fwd(raw, Tkn_unique_index); if (end == Bry_.NotFound) throw Err_.new_wo_type("could not find 'UNIQUE KEY'"); - end = Bry_find_.Find_bwd(raw, Byte_ascii.Nl, end); if (bgn == Bry_.NotFound) throw Err_.new_wo_type("could not find new line before 'UNIQUE KEY'"); + int end = Bry_find_.Find_fwd(raw, Tkn_unique_index); if (end == Bry_find_.Not_found) throw Err_.new_wo_type("could not find 'UNIQUE KEY'"); + end = Bry_find_.Find_bwd(raw, Byte_ascii.Nl, end); if (bgn == Bry_find_.Not_found) throw Err_.new_wo_type("could not find new line before 'UNIQUE KEY'"); Parse_lines(Bry_.Mid(raw, bgn, end)); return this; } @@ -39,9 +39,9 @@ class Sql_fld_mgr { int fld_idx = 0; for (int i = 0; i < lines_len; i++) { byte[] line = lines[i]; - int bgn = Bry_find_.Find_fwd(line, Byte_ascii.Tick); if (bgn == Bry_.NotFound) continue; // skip blank lines + int bgn = Bry_find_.Find_fwd(line, Byte_ascii.Tick); if (bgn == Bry_find_.Not_found) continue; // skip blank lines bgn += Int_.Const_position_after_char; - int end = Bry_find_.Find_fwd(line, Byte_ascii.Tick, bgn); if (end == Bry_.NotFound) continue; // skip blank lines + int end = Bry_find_.Find_fwd(line, Byte_ascii.Tick, bgn); if (end == Bry_find_.Not_found) continue; // skip blank lines byte[] key = Bry_.Mid(line, bgn, end); Sql_fld_itm fld = new Sql_fld_itm(fld_idx++, key); hash.Add(fld.Key(), fld); diff --git a/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java index 161f2151f..bd037bed5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java +++ b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_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.bldrs.syncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; class Xob_sync_grp { private final Ordered_hash itms = Ordered_hash_.New(); public Xob_sync_grp Ctor_itm(DateAdp dump_time, DateAdp upload_time) { diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java index f54935dcd..abb1c8d14 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_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.bldrs.wiki_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.core.log_msgs.*; import gplx.langs.phps.*; import gplx.xowa.langs.bldrs.*; class Xob_subpage_parser { public Xob_subpage_wiki[] Parse(byte[] src) { diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_alias.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_alias.java index 4ee1e4bfb..2a9f373db 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_alias.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_alias.java @@ -20,7 +20,7 @@ public class Xoi_wiki_props_alias { public int Id() {return id;} private int id; public String Alias() {return alias;} private String alias; public Xoi_wiki_props_alias Init_by_ctor(int id, String alias) {this.id = id; this.alias = alias; return this;} - public void Init_by_xml(gplx.xmls.XmlNde ns_nde) { + public void Init_by_xml(gplx.langs.xmls.XmlNde ns_nde) { this.id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1")); this.alias = String_.Replace(String_.Replace(ns_nde.Text_inner(), " ", "_"), "'", "''"); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java index da5f84b6c..6cf9e483f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.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.wiki_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xmls.*; import gplx.ios.*; +import gplx.langs.xmls.*; import gplx.core.ios.*; public class Xoi_wiki_props_api { private IoEngine_xrg_downloadFil download_args = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); public String Api_src(String wiki_domain) { @@ -26,15 +26,15 @@ public class Xoi_wiki_props_api { return download_args.Exec_as_bry(src); } public void Build_cfg(Bry_bfr bfr, Xoi_wiki_props_wiki wiki) { - bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.get('").Add(wiki.Wiki_domain()).Add_str("').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"\n"); + bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.get('").Add(wiki.Wiki_domain()).Add_str_a7("').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"\n"); int len = 0; len = wiki.Alias_ary().length; for (int i = 0; i < len; i++) { Xoi_wiki_props_alias alias = wiki.Alias_ary()[i]; - bfr.Add_int_variable(alias.Id()).Add_byte_pipe().Add_str(alias.Alias()).Add_byte_nl(); + bfr.Add_int_variable(alias.Id()).Add_byte_pipe().Add_str_u8(alias.Alias()).Add_byte_nl(); } bfr.Add_str_a7("\");');\n"); - bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.get('").Add(wiki.Wiki_domain()).Add_str("').new_cmd_('wiki.ns_mgr.subpages', \""); + bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.get('").Add(wiki.Wiki_domain()).Add_str_a7("').new_cmd_('wiki.ns_mgr.subpages', \""); len = wiki.Ns_ary().length; boolean first = true; for (int i = 0; i < len; i++) { @@ -45,7 +45,7 @@ public class Xoi_wiki_props_api { } else bfr.Add_byte_nl(); - bfr.Add_str_a7("ns_mgr.get_by_id_or_new(").Add_int_variable(ns.Id()).Add_str(").subpages_enabled_('y');"); + bfr.Add_str_a7("ns_mgr.get_by_id_or_new(").Add_int_variable(ns.Id()).Add_str_a7(").subpages_enabled_('y');"); } } bfr.Add_str_a7("\");\n"); diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java index 2c0a0eda1..d6addc149 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.wiki_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import org.junit.*; import gplx.core.strings.*; -import gplx.xmls.*; +import gplx.langs.xmls.*; import gplx.xowa.bldrs.cfgs.*; public class Xoi_wiki_props_api_tst { private Xoi_wiki_props_fxt fxt = new Xoi_wiki_props_fxt(); @@ -47,7 +47,7 @@ public class Xoi_wiki_props_api_tst { // .Ns_ary_(fxt.ns_(0, false), fxt.ns_(1, true)) // , ""); // } -// Tfds.Eq_str_lines(Query_ns(protocol, gplx.ios.IoEngine_.MemKey, wikis), String_.Concat_lines_nl +// Tfds.Eq_str_lines(Query_ns(protocol, gplx.core.ios.IoEngine_.MemKey, wikis), String_.Concat_lines_nl // ( "app.bldr.wiki_cfg_bldr.get('en.wikipedia.org').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"" // , "4|WP" // , "5|WT" @@ -82,7 +82,7 @@ class Xoi_wiki_props_fxt { bfr.Add_str_a7("aliases").Add_byte_nl(); for (int i = 0; i < len; i++) { Xoi_wiki_props_alias alias = v.Alias_ary()[i]; - bfr.Add_int_variable(alias.Id()).Add_byte_pipe().Add_str(alias.Alias()).Add_byte_nl(); + bfr.Add_int_variable(alias.Id()).Add_byte_pipe().Add_str_u8(alias.Alias()).Add_byte_nl(); } bfr.Add_str_a7("ns").Add_byte_nl(); len = v.Ns_ary().length; diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_ns.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_ns.java index 57f567147..1a6f1b5a8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_ns.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_ns.java @@ -20,7 +20,7 @@ public class Xoi_wiki_props_ns { public int Id() {return id;} private int id; public boolean Subpages_enabled() {return subpages_enabled;} private boolean subpages_enabled; public Xoi_wiki_props_ns Init_by_ctor(int id, boolean subpages_enabled) {this.id = id; this.subpages_enabled = subpages_enabled; return this;} - public void Init_by_xml(gplx.xmls.XmlNde ns_nde) { + public void Init_by_xml(gplx.langs.xmls.XmlNde ns_nde) { this.id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1")); this.subpages_enabled = ns_nde.Atrs().Fetch_or_null("subpages") != null;// per api, subpages="" means ns has subpages; no subpages attribute means no subpages } diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java index b1f746a08..b0211cbe9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_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.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.flds.*; import gplx.ios.*; +import gplx.core.flds.*; import gplx.core.ios.*; public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble { public abstract String Cmd_key(); public Gfo_fld_wtr Fld_wtr() {return fld_wtr;} Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_(); diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java index 9fd35184e..8965d8928 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_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.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.apps.*; public abstract class Xob_itm_dump_base extends Xob_itm_basic_base { protected int sort_mem_len = Int_.Neg1, dump_fil_len = Int_.Neg1, make_fil_len = Int_.Neg1; @@ -44,9 +44,9 @@ public abstract class Xob_itm_dump_base extends Xob_itm_basic_base { } protected void Flush_dump() {Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_sort_mem_len_)) sort_mem_len = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_dump_fil_len_)) dump_fil_len = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_make_fil_len_)) make_fil_len = gplx.ios.Io_size_.Load_int_(m); + if (ctx.Match(k, Invk_sort_mem_len_)) sort_mem_len = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_dump_fil_len_)) dump_fil_len = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_make_fil_len_)) make_fil_len = gplx.core.ios.Io_size_.Load_int_(m); else if (ctx.Match(k, Invk_delete_temp_)) delete_temp = m.ReadBool("v"); else return super.Invk(ctx, ikey, k, m); return this; diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java index 3d44d56ef..ad7293044 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_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.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.flds.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.tdbs.bldrs.*; public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble { private final Sql_file_parser parser = new Sql_file_parser(); private boolean fail = false; diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java index a485ec1ec..b9bfe753f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java @@ -20,7 +20,7 @@ import gplx.core.net.*; public class Xowm_api_mgr { public static byte[] Call_by_qarg(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, String api_args) {return Call_by_url(usr_dlg, inet_conn, domain_str, Bld_api_url(domain_str, api_args));} public static byte[] Call_by_url (Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, String url) { - if (!gplx.ios.IoEngine_system.Web_access_enabled) return null; + if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return null; usr_dlg.Prog_many("", "", "wm.api:calling; wiki=~{0} api=~{1}", domain_str, url); byte[] rslt = inet_conn.Download_as_bytes_or_null(url); if (rslt == null) usr_dlg.Warn_many("", "", "wm.api:wmf api returned nothing; api=~{0}", url); return rslt; diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java index 1235c51b7..0637cb76f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.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.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; -import gplx.ios.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.downloads.*; +import gplx.core.ios.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.downloads.*; public abstract class Xoapi_orig_base { public boolean Api_query_size(Xoapi_orig_rslts rv, Xof_download_wkr download_wkr, Xow_repo_mgr repo_mgr, byte[] ttl, int width, int height) { - if (!gplx.ios.IoEngine_system.Web_access_enabled) return false; // don't check api if download disabled else "download_failed" messages in log (particularly during pkg_make) DATE:2015-02-12 + if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return false; // don't check api if download disabled else "download_failed" messages in log (particularly during pkg_make) DATE:2015-02-12 Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; Xof_repo_pair[] repos = repo_mgr.Repos_ary(); int len = repos.length; 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 f972a6934..c2cddbbbb 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 @@ -33,7 +33,7 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base { int xml_len = xml.length; int pos = 0; pos = Bry_find_.Find_fwd(xml, Bry_xml_ii , pos, xml_len); - if (pos == Bry_.NotFound) {usr_dlg.Log_many(GRP_KEY, "api_failed", "api failed: ~{0}", String_.new_u8(xml)); return false;} + if (pos == Bry_find_.Not_found) {usr_dlg.Log_many(GRP_KEY, "api_failed", "api failed: ~{0}", String_.new_u8(xml)); return false;} pos += Bry_xml_ii.length; byte[] orig_wiki = null, orig_page = null; int orig_w = 0, orig_h = 0; @@ -48,7 +48,7 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base { orig_wiki = gplx.xowa.wikis.xwikis.Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, file_url); byte[] page = Xoa_ttl.Replace_spaces(url.Segs__get_at_nth()); int colon_pos = Bry_find_.Find_fwd(page, Byte_ascii.Colon, 0, page.length); - if (colon_pos != Bry_.NotFound) + if (colon_pos != Bry_find_.Not_found) page = Bry_.Mid(page, colon_pos + 1, page.length); orig_page = page; } @@ -60,9 +60,9 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base { private static Gfo_url_parser url_parser = new Gfo_url_parser(); private static Gfo_url url = new Gfo_url(); private static boolean Parse_xml_val(Int_2_ref rv, Gfo_usr_dlg usr_dlg, byte[] xml, int xml_len, int pos, byte[] key) { int bgn = 0, end = 0; - bgn = Bry_find_.Find_fwd(xml, key, pos, xml_len); if (bgn == Bry_.NotFound) return false; + bgn = Bry_find_.Find_fwd(xml, key, pos, xml_len); if (bgn == Bry_find_.Not_found) return false; bgn += key.length; - end = Bry_find_.Find_fwd(xml, Byte_ascii.Quote , bgn, xml_len); if (end == Bry_.NotFound) return false; + end = Bry_find_.Find_fwd(xml, Byte_ascii.Quote , bgn, xml_len); if (end == Bry_find_.Not_found) return false; rv.Val_all_(bgn, end); return true; } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.java index 598dc4fea..b2ba657ae 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; public class Xowm_dump_file { public Xowm_dump_file(String domain_str, String dump_date, String dump_type_str) { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java index 9600c3cfb..e39d887e6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java @@ -20,8 +20,8 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.installs.*; public class Xowm_dump_file_ { public static Xowm_dump_file parse(byte[] src) { int src_len = src.length; - int dash_0 = Bry_find_.Find_fwd(src, Byte_ascii.Dash, 0 , src_len); if (dash_0 == Bry_.NotFound) throw Err_.new_parse_type(Xowm_dump_file.class, String_.new_u8(src)); - int dash_1 = Bry_find_.Find_fwd(src, Byte_ascii.Dash, dash_0 + 1 , src_len); if (dash_1 == Bry_.NotFound) throw Err_.new_parse_type(Xowm_dump_file.class, String_.new_u8(src)); + int dash_0 = Bry_find_.Find_fwd(src, Byte_ascii.Dash, 0 , src_len); if (dash_0 == Bry_find_.Not_found) throw Err_.new_parse_type(Xowm_dump_file.class, String_.new_u8(src)); + int dash_1 = Bry_find_.Find_fwd(src, Byte_ascii.Dash, dash_0 + 1 , src_len); if (dash_1 == Bry_find_.Not_found) throw Err_.new_parse_type(Xowm_dump_file.class, String_.new_u8(src)); byte[] domain_bry = Xow_abrv_wm_.Parse_to_domain_bry(Bry_.Mid(src, 0, dash_0)); return new Xowm_dump_file(String_.new_u8(domain_bry), String_.new_u8(src, dash_0 + 1, dash_1), String_.new_u8(src, dash_1 + 1, src_len)); } @@ -45,7 +45,7 @@ public class Xowm_dump_file_ { Xoa_app_.Usr_dlg().Note_many("", "", "wmf.dump:dump date; server_url=~{0} dump_date=~{1}", dump_server, dump_date); Xoi_mirror_parser mirror_parser = new Xoi_mirror_parser(); String dump_wiki_url = dump_server + String_.new_a7(rv.Dump_abrv()) + "/"; - byte[] dump_url_wiki_html = gplx.ios.IoEngine_xrg_downloadFil.new_("", Io_url_.Empty).Exec_as_bry(dump_wiki_url); if (Bry_.Len_eq_0(dump_url_wiki_html)) return; + byte[] dump_url_wiki_html = gplx.core.ios.IoEngine_xrg_downloadFil.new_("", Io_url_.Empty).Exec_as_bry(dump_wiki_url); if (Bry_.Len_eq_0(dump_url_wiki_html)) return; String[] dump_available_dates = mirror_parser.Parse(String_.new_u8(dump_url_wiki_html)); String dump_dates_latest = Xoi_mirror_parser.Find_last_lte(dump_available_dates, dump_date); if (String_.Eq(dump_dates_latest, "")) return; // nothing found diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java index 92e1b3f74..89b7ce75c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java @@ -129,7 +129,7 @@ public class Site_core_db { int len = hash.Count(); for (int i = 0; i < len; ++i) { Site_namespace_itm itm = (Site_namespace_itm)hash.Get_at(i); - byte case_match = Xow_ns_case_.parse(String_.new_u8(itm.Case_tid())); + byte case_match = Xow_ns_case_.To_tid(String_.new_u8(itm.Case_tid())); rv.Add_new(itm.Id(), itm.Localized(), case_match, Bool_.N); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java index 301f5826c..1912d0a01 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.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.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; public class Xob_tmp_wtr { Xob_tmp_wtr(Xow_ns ns_itm, Io_url_gen url_gen, int fil_max) { diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java index 0097bd5be..4938766e0 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_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.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; public interface Xob_tmp_wtr_wkr { Xob_tmp_wtr Tmp_wtr_new(Xow_ns ns); diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java index 750526409..bbaefc9b6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__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.bldrs.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; public class Xob_tmp_wtr_wkr__ttl implements Xob_tmp_wtr_wkr { public Xob_tmp_wtr_wkr__ttl(Io_url temp_dir, int dump_fil_len) {this.temp_dir = temp_dir; this.dump_fil_len = dump_fil_len;} Io_url temp_dir; int dump_fil_len; 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 dbc03259f..9b447d2a7 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.ios.*; +import gplx.core.ios.*; 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; diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java deleted file mode 100644 index 556f3ee2e..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java +++ /dev/null @@ -1,89 +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.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.ios.*; import gplx.xmls.*; // NOTE: gplx.xmls does not support Android; DATE:2013-01-17 -import gplx.xowa.wikis.nss.*; -public class Xob_siteinfo_parser { - public static byte[] Siteinfo_extract(gplx.ios.Io_stream_rdr src_rdr) { - Io_buffer_rdr rdr = Io_buffer_rdr.Null; - try { - rdr = Io_buffer_rdr.new_(src_rdr, Io_mgr.Len_mb); // ASSUME: siteInfo is fully contained in the 1st MB of the src_xml - byte[] src = rdr.Bfr(); - int bgn = Bry_find_.Find_fwd(src, Bry_siteinfo_bgn, 0) ; if (bgn == Bry_.NotFound) return null; - int end = Bry_find_.Find_fwd(src, Bry_siteinfo_end, bgn); if (end == Bry_.NotFound) return null; - return Bry_.Mid(src, bgn, end + Bry_siteinfo_end.length); - } - catch (Exception e) {Err_.Noop(e); return null;} - finally {rdr.Rls();} - } - public static void Siteinfo_parse(Xowe_wiki wiki, Gfo_usr_dlg usr_dlg, String siteinfo_str) { - XmlDoc xdoc = XmlDoc_.parse(siteinfo_str); - XmlNde root = xdoc.Root(); - int root_subs_len = root.SubNdes().Count(); - Bry_bfr siteinfo_misc_bfr = Bry_bfr.reset_(512); - for (int i = 0; i < root_subs_len; i++) { - XmlNde sub_nde = root.SubNdes().Get_at(i); - if ( String_.Eq(sub_nde.Name(), "sitename") - || String_.Eq(sub_nde.Name(), "generator") - || String_.Eq(sub_nde.Name(), "case")) siteinfo_misc_bfr.Add_str(sub_nde.Text_inner()).Add_byte_pipe(); - else if ( String_.Eq(sub_nde.Name(), "base")) { - String mainpage_url = sub_nde.Text_inner(); - byte[] mainpage_name = Siteinfo_parse_mainpage(Bry_.new_u8(mainpage_url)); if (mainpage_name == null) throw Err_.new_wo_type("could not extract mainpage", "mainpage", mainpage_url); - wiki.Props().Main_page_(mainpage_name); - } - else if ( String_.Eq(sub_nde.Name(), "namespaces")) { - Siteinfo_parse_ns(wiki, usr_dlg, sub_nde); - } - else if ( String_.Eq(sub_nde.Name(), "#text")) {} // NOTE: JAVA has node names for "#text" - // else throw Err_mgr.Instance.fmt_(GRP_KEY, "siteinfo.root.unknown_sub", "unknown sub for root nde: ~{0}", sub_nde.Name()); // NOTE: do not fail if MW introduces something odd in future (or if JAVA starts picking up other elements) - } - wiki.Props().Siteinfo_misc_(siteinfo_misc_bfr.To_bry_and_clear()); - wiki.Props().Bldr_version_(Bry_.new_a7(Xoa_app_.Version)); - } - private static byte[] Siteinfo_parse_mainpage(byte[] url) { - byte[] wiki_bry = gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki; - int bgn_pos = Bry_find_.Find_fwd(url, wiki_bry, 0); - if (bgn_pos == Bry_.NotFound) { // "/wiki/" not found; EX: http://mywiki/My_main_page - bgn_pos = Bry_find_.Find_bwd(url, Byte_ascii.Slash); // ASSUME last segment is page - if (bgn_pos == Bry_.NotFound) throw Err_.new_wo_type("could not parse main page url", "url", String_.new_u8(url)); - ++bgn_pos; // add 1 to position after slash - } - else // "/wiki/" found - bgn_pos += wiki_bry.length; // position bgn after "/wiki/" - return Bry_.Mid(url, bgn_pos, url.length); - } - private static void Siteinfo_parse_ns(Xowe_wiki wiki, Gfo_usr_dlg usr_dlg, XmlNde ns_nde) { - int subs_len = ns_nde.SubNdes().Count(); - Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); - ns_mgr.Clear(); // NOTE: wipe out any preexisting ns; use siteinfo.xml as definitive list - for (int i = 0; i < subs_len; i++) { - XmlNde sub_nde = ns_nde.SubNdes().Get_at(i); - if (sub_nde.Atrs().Count() == 0) continue; // NOTE: JAVA again has unexpected nodes - try { - int ns_id = Int_.parse(sub_nde.Atrs().FetchValOr("key", "")); - byte case_match = Xow_ns_case_.parse(sub_nde.Atrs().FetchValOr("case", "")); - String name = sub_nde.Text_inner(); - ns_mgr.Add_new(ns_id, Bry_.new_u8(name), case_match, false); - } - catch (Exception e) {throw Err_.new_exc(e, "xo", "parse failed", "inner", sub_nde.Text_inner());} - } - ns_mgr.Init_w_defaults(); - } - private static final byte[] Bry_siteinfo_bgn = Bry_.new_a7(""), Bry_siteinfo_end = Bry_.new_a7(""); - static final String GRP_KEY = "xowa.bldr.core.init"; -} diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java index 4867caf12..11772673b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java @@ -16,20 +16,20 @@ 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.ios.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_xml_page_bldr { public byte[] Xto_bry() {return bfr.To_bry_and_clear();} public Io_buffer_rdr XtoByteStreamRdr() {return XtoByteStreamRdr(Io_mgr.Len_kb);} public Io_buffer_rdr XtoByteStreamRdr(int bfr_len) { Io_url url = Io_url_.mem_fil_("mem/byteStreamRdr.txt"); Io_mgr.Instance.SaveFilBry(url, bfr.To_bry_and_clear()); - return Io_buffer_rdr.new_(gplx.ios.Io_stream_rdr_.file_(url), bfr_len); + return Io_buffer_rdr.new_(gplx.core.ios.Io_stream_rdr_.file_(url), bfr_len); } public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr = Bry_bfr.new_(); public Xob_xml_page_bldr Upd(String find, String repl) { String all = bfr.To_str_and_clear(); all = String_.Replace(all, find, repl); - bfr.Add_str(all); + bfr.Add_str_u8(all); return this; } public Xob_xml_page_bldr Add_ary(Xowd_page_itm... ary) { diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java index b795da463..15271f121 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java @@ -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.btries.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.btries.*; import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xob_xml_parser { Btrie_fast_mgr trie = Xob_xml_parser_.trie_(); Bry_bfr data_bfr = Bry_bfr.new_(); DateAdp_parser date_parser = DateAdp_parser.new_(); @@ -44,7 +44,7 @@ public class Xob_xml_parser { fil.Bfr_load_from(refill_pos); // refill src from pos; src_len = fil.Bfr_len(); } - if (pos >= src_len) return Bry_.NotFound; // no more src left; should only happen at end of file + if (pos >= src_len) return Bry_find_.Not_found; // no more src left; should only happen at end of file byte b = src[pos]; Object o = trie.Match_bgn_w_byte(b, src, pos, src_len); if (o == null) { // text_data; not an xml_nde (), xml_escape (<), or tab diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java index 975eafff9..0d0a33af6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_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.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import org.junit.*; import gplx.ios.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.core.ios.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_xml_parser_tst { @Before public void init() { Io_mgr.Instance.InitEngine_mem(); @@ -107,9 +107,9 @@ public class Xob_xml_parser_tst { } @Test public void Root() { Xowd_page_itm doc = doc_(1, "a", "a", Date_1); - page_bldr.Bfr().Add_str("\n"); + page_bldr.Bfr().Add_str_a7("\n"); page_bldr.Add(doc); - page_bldr.Bfr().Add_str(""); + page_bldr.Bfr().Add_str_a7(""); fil = page_bldr.XtoByteStreamRdr(); tst_parse(fil, doc, 0); } diff --git a/400_xowa/src/gplx/xowa/drds/Xod_app.java b/400_xowa/src/gplx/xowa/drds/Xod_app.java new file mode 100644 index 000000000..838ffc515 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/Xod_app.java @@ -0,0 +1,31 @@ +/* +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.drds; import gplx.*; import gplx.xowa.*; +import gplx.xowa.drds.pages.*; +import gplx.xowa.apps.*; import gplx.xowa.wikis.data.tbls.*; +public class Xod_app { + private final Xoav_app app; + private final Xod_page_mgr page_mgr = new Xod_page_mgr(); + public Xod_app(Xoav_app app) { + this.app = app; + } + public Xod_page_itm Get_page(String wiki_domain, String page_ttl) { + Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_make_init_y(Bry_.new_u8(wiki_domain)); + return page_mgr.Get_page(wiki, page_ttl); + } +} diff --git a/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java b/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java new file mode 100644 index 000000000..42e9bf1af --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java @@ -0,0 +1,58 @@ +/* +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.drds; import gplx.*; import gplx.xowa.*; +import org.junit.*; import gplx.xowa.drds.pages.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.sections.*; +public class Xod_app_tst { + private final Xod_app_tstr tstr = new Xod_app_tstr(); + @Before public void init() {tstr.Init_mem();} + @Test public void Get() { + tstr.Data_mgr().Page__insert(1, "A", "2015-10-19 00:01:02"); + tstr.Data_mgr().Html__insert(1, "abc"); + tstr.Test__get("A", tstr.Make_page(1, "A", "2015-10-19 00:01:02", tstr.Make_section(0, 2, "", "", "abc"))); + } +} +class Xod_app_tstr { + private final gplx.xowa.apps.Xoav_app app; private final Xowv_wiki wiki; + private final Xod_app drd_provider; + public Xod_app_tstr() { + this.app = Xoa_app_fxt.Make__app__view(); + this.wiki = Xoa_app_fxt.Make__wiki__view(app); + data_mgr.Wiki_(wiki); + Xoa_test_.Init__db__mem(wiki); + drd_provider = new Xod_app(app); + } + public Xowd_data_tstr Data_mgr() {return data_mgr;} private final Xowd_data_tstr data_mgr = new Xowd_data_tstr(); + public void Init_mem() { + Io_mgr.Instance.InitEngine_mem(); + } + public void Test__get(String ttl, Xod_page_itm expd) { + Xod_page_itm itm = drd_provider.Get_page("en.wikipedia.org", ttl); + Tfds.Eq(expd.To_str(), itm.To_str()); + } + public Xod_page_itm Make_page(int page_id, String ttl, String modified_on, Xoh_section_itm... section_ary) { + Xod_page_itm rv = new Xod_page_itm(); + rv.Init(page_id, page_id, ttl, ttl, null, null, modified_on, Bool_.N, Bool_.N, Bool_.N, 1, null, null, null); + int len = section_ary.length; + for (int i = 0; i < len; ++i) { + Xoh_section_itm itm = section_ary[i]; + rv.Section_list().Add(itm); + } + return rv; + } + public Xoh_section_itm Make_section(int id, int level, String anchor, String heading, String content) {return new Xoh_section_itm(id, level, Bry_.new_u8(anchor), Bry_.new_u8(heading)).Content_(Bry_.new_u8(content));} +} diff --git a/100_core/src_900_xml/gplx/Base64_utl.java b/400_xowa/src/gplx/xowa/drds/Xod_img_loader.java similarity index 81% rename from 100_core/src_900_xml/gplx/Base64_utl.java rename to 400_xowa/src/gplx/xowa/drds/Xod_img_loader.java index 681c0f580..400127604 100644 --- a/100_core/src_900_xml/gplx/Base64_utl.java +++ b/400_xowa/src/gplx/xowa/drds/Xod_img_loader.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; -public class Base64_utl { - public static void Encode(Bry_bfr bfr, byte[] bry, int bgn, int end) { - for (int i = bgn; i < end; ++i) { - } - } +package gplx.xowa.drds; import gplx.*; import gplx.xowa.*; +public interface Xod_img_loader { + void Show_img(int html_uid); } +/* +int uid +*/ diff --git a/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java b/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java new file mode 100644 index 000000000..a2bf7fced --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java @@ -0,0 +1,40 @@ +/* +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.drds; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wikis.data.*; +import gplx.xowa.htmls.*; import gplx.xowa.wikis.data.tbls.*; +public class Xowd_data_tstr { + public void Wiki_(Xow_wiki wiki) {this.wiki = wiki;} private Xow_wiki wiki; + public void Page__insert(int page_id, String ttl_str, String modified_on) {Page__insert(page_id, ttl_str, modified_on, Bool_.N, 0, page_id, 0, 0);} + public void Page__insert(int page_id, String ttl_str, String modified_on, boolean page_is_redirect, int page_len, int random_int, int text_db_id, int html_db_id) { + Xoa_ttl ttl = wiki.Ttl_parse(Bry_.new_u8(ttl_str)); + wiki.Data__core_mgr().Tbl__page().Insert(page_id, ttl.Ns().Id(), ttl.Page_db(), page_is_redirect, DateAdp_.parse_iso8561(modified_on), page_len, page_id, text_db_id, html_db_id); + } + public void Html__insert(int page_id, String html) { + Xowd_db_file html_db = wiki.Data__core_mgr().Db__html(); + if (html_db == null) { + html_db = wiki.Data__core_mgr().Db__core(); + html_db.Tbl__html_page().Create_tbl(); + } + byte[] html_bry = Bry_.new_u8(html); + Xoh_page gui_page = new Xoh_page(); + gui_page.Body_(html_bry); + byte[] data = html_bry; + html_db.Tbl__html_page().Insert(page_id, 0, 0, Bry_.Empty, Bry_.Empty, Bry_.Empty, data); + } +} diff --git a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java new file mode 100644 index 000000000..ef386b3c7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java @@ -0,0 +1,90 @@ +/* +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.drds.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +import gplx.xowa.htmls.sections.*; +import gplx.xowa.wikis.data.tbls.*; +public class Xod_page_itm { + public Xod_page_itm() {} + public int Page_id() {return page_id;} private int page_id; + public long Rev_id() {return rev_id;} private long rev_id; + public String Ttl_text() {return ttl_text;} private String ttl_text; + public String Ttl_db() {return ttl_db;} private String ttl_db; + public String Redirected() {return redirected;} private String redirected; + public String Description() {return description;} private String description; + public String Modified_on() {return modified_on;} private String modified_on; + public boolean Is_editable() {return is_editable;} private boolean is_editable; + public boolean Is_main_page() {return is_main_page;} private boolean is_main_page; + public boolean Is_disambiguation() {return is_disambiguation;} private boolean is_disambiguation; + public int Lang_count() {return lang_count;} private int lang_count; + public String Head_url() {return head_url;} private String head_url; + public String Head_name() {return head_ttl;} private String head_ttl; + public String First_allowed_editor_role() {return first_allowed_editor_role;} private String first_allowed_editor_role; + public List_adp Section_list() {return section_list;} private List_adp section_list = List_adp_.new_(); + public void Init(int page_id, int rev_id + , String ttl_text, String ttl_db, String redirected, String description, String modified_on + , boolean is_editable, boolean is_main_page, boolean is_disambiguation, int lang_count + , String head_url, String head_ttl + , String first_allowed_editor_role + ) { + this.page_id = page_id; this.rev_id = rev_id; + this.ttl_text = ttl_text; this.ttl_db = ttl_db; this.redirected = redirected; this.description = description; this.modified_on = modified_on; + this.is_editable = is_editable; this.is_main_page = is_main_page; this.is_disambiguation = is_disambiguation; this.lang_count = lang_count; + this.head_url = head_url; this.head_ttl= head_ttl; this.first_allowed_editor_role = first_allowed_editor_role; + } + public void Init() {} + public void Init(Xoa_ttl ttl, Xowd_page_itm db_page) { + this.page_id = db_page.Id(); + this.rev_id = page_id; + this.ttl_text = String_.new_u8(ttl.Page_txt()); + this.ttl_db = ttl.Page_db_as_str(); + this.modified_on = db_page.Modified_on().XtoStr_fmt_iso_8561(); + this.lang_count = 1; + this.redirected = null; + this.description = null; + this.is_editable = false; + this.is_main_page = false; + this.is_disambiguation = false; + this.head_url = null; + this.head_ttl = null; + this.first_allowed_editor_role = null; + } + public String To_str() { + Bry_bfr bfr = Bry_bfr.new_(); + bfr .Add_int_variable(page_id).Add_byte_pipe() + .Add_long_variable(rev_id).Add_byte_pipe() + .Add_str_u8(ttl_text).Add_byte_pipe() + .Add_str_u8(ttl_db).Add_byte_pipe() + .Add_str_a7_null(modified_on).Add_byte_pipe() + .Add_int_variable(lang_count).Add_byte_pipe() + .Add_str_a7_null(redirected).Add_byte_pipe() + .Add_str_a7_null(description).Add_byte_pipe() + .Add_yn(is_editable).Add_byte_pipe() + .Add_yn(is_main_page).Add_byte_pipe() + .Add_yn(is_disambiguation).Add_byte_pipe() + .Add_str_a7_null(head_url).Add_byte_pipe() + .Add_str_a7_null(head_ttl).Add_byte_pipe() + .Add_str_a7_null(first_allowed_editor_role).Add_byte_nl() + ; + int len = section_list.Count(); + for (int i = 0; i < len; ++i) { + Xoh_section_itm section = (Xoh_section_itm)section_list.Get_at(i); + section.To_bfr(bfr); + } + return bfr.To_str_and_clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java new file mode 100644 index 000000000..aba29dd01 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java @@ -0,0 +1,45 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.drds.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.sections.*; +public class Xod_page_mgr { + public Xod_page_itm Get_page(Xow_wiki wiki, String page_ttl) { + Xod_page_itm rv = new Xod_page_itm(); + // load meta info like page_id, modified, etc + Xoa_ttl ttl = wiki.Ttl_parse(Bry_.new_u8(page_ttl)); + Xowd_page_itm dbpg = new Xowd_page_itm(); + wiki.Data__core_mgr().Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db()); + rv.Init(ttl, dbpg); + + // load page data + Xoh_page hpg = new Xoh_page(); + hpg.Init(wiki, Xoa_url.new_(wiki.Domain_bry(), ttl.Page_db()), ttl, 1); + wiki.Html__hdump_mgr().Load_mgr().Load(hpg, ttl); + Load_sections(rv, hpg); + return rv; + } + private void Load_sections(Xod_page_itm rv, Xoh_page hpg) { + Xoh_section_mgr section_mgr = hpg.Section_mgr(); + int len = section_mgr.Len(); + for (int i = 0; i < len; ++i) { + Xoh_section_itm itm = section_mgr.Get_at(i); + rv.Section_list().Add(itm); + } + } +} diff --git a/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java b/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java index de2f534c6..3f64fae9c 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java +++ b/400_xowa/src/gplx/xowa/files/Xof_bin_updater.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; import gplx.*; import gplx.xowa.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; public class Xof_bin_updater { private final Fsd_img_itm tmp_img_itm = new Fsd_img_itm(); private final Fsd_thm_itm tmp_thm_itm = Fsd_thm_itm.new_(); private final Fsd_fil_itm tmp_fil_itm = new Fsd_fil_itm(); diff --git a/400_xowa/src/gplx/xowa/files/Xof_ext_.java b/400_xowa/src/gplx/xowa/files/Xof_ext_.java index 320db82c3..3ef3a771c 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_ext_.java +++ b/400_xowa/src/gplx/xowa/files/Xof_ext_.java @@ -82,7 +82,7 @@ public class Xof_ext_ { public static Xof_ext new_by_ttl_(byte[] ttl) { int ttl_len = ttl.length; int dot_pos = Bry_find_.Find_bwd(ttl, Byte_ascii.Dot); - byte[] ext = (dot_pos == Bry_.NotFound || dot_pos == ttl_len) ? Bry_.Empty : Bry_.Lcase__all(ttl, dot_pos + 1, ttl_len); // +1 to bgn after . + byte[] ext = (dot_pos == Bry_find_.Not_found || dot_pos == ttl_len) ? Bry_.Empty : Bry_.Lcase__all(ttl, dot_pos + 1, ttl_len); // +1 to bgn after . return new_(Get_id_by_ext_(ext), ext); } public static Xof_ext new_by_ext_(byte[] ext) {return new_(Get_id_by_ext_(ext), ext);} @@ -98,7 +98,7 @@ public class Xof_ext_ { public static byte[] Lower_ext(byte[] ttl) { int dot_pos = Bry_find_.Find_bwd(ttl, Byte_ascii.Dot); int ttl_len = ttl.length; - if (dot_pos == Bry_.NotFound || dot_pos == ttl_len - 1) return ttl; + if (dot_pos == Bry_find_.Not_found || dot_pos == ttl_len - 1) return ttl; Object o = ext_hash.Get_by_mid(ttl, dot_pos + 1, ttl_len); if (o == null) return ttl; byte[] ext = (byte[])o; 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 d4a77ba02..08399c3d4 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_wkr.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.xowa.files; import gplx.*; import gplx.xowa.*; -import gplx.core.threads.*; import gplx.ios.*; +import gplx.core.threads.*; import gplx.core.ios.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*; -import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.htmls.core.makes.imgs.*; public class Xof_file_wkr implements Gfo_thread_wkr { private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr; private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr; @@ -35,10 +35,10 @@ public class Xof_file_wkr implements Gfo_thread_wkr { public void Exec() { int len = imgs.Count(); for (int i = 0; i < len; ++i) - Ctor_by_hdump(hpg, (Xohd_data_itm__base)imgs.Get_at(i)); + Ctor_by_hdump(hpg, (Xohd_img_itm__base)imgs.Get_at(i)); Xoa_app_.Usr_dlg().Prog_none("", "", ""); } - private void Ctor_by_hdump(Xoa_page hpg, Xohd_data_itm__base hdump) { + private void Ctor_by_hdump(Xoa_page hpg, Xohd_img_itm__base hdump) { Xof_fsdb_itm fsdb = new Xof_fsdb_itm(); fsdb.Init_at_lnki(Xof_exec_tid.Tid_wiki_page, hpg.Wiki().Domain_itm().Abrv_xo(), hdump.Lnki_ttl(), hdump.Lnki_type(), hdump.Lnki_upright(), hdump.Lnki_w(), hdump.Lnki_h(), hdump.Lnki_time(), hdump.Lnki_page(), Xof_patch_upright_tid_.Tid_all); fsdb.Init_at_hdoc(hdump.Html_uid(), hdump.Html_elem_tid()); @@ -118,7 +118,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr { } public static void Save_bin(Xof_fsdb_itm itm, Fsm_mnt_mgr mnt_mgr, Io_url html_url) { long rdr_len = Io_mgr.Instance.QueryFil(html_url).Size(); - Io_stream_rdr rdr = gplx.ios.Io_stream_rdr_.file_(html_url); + Io_stream_rdr rdr = gplx.core.ios.Io_stream_rdr_.file_(html_url); try { rdr.Open(); Fsm_mnt_itm mnt_itm = mnt_mgr.Mnts__get_insert(); 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 6223f5e02..3b3fb2162 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_wkr_.java @@ -19,7 +19,7 @@ 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 byte[] Md5_fast(byte[] v) {return Bry_.new_a7(gplx.security.HashAlgo_.Md5.CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(v)));} + 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)); 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 diff --git a/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java b/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java index fc519ea0f..412219f61 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_fsdb_itm.java +++ b/400_xowa/src/gplx/xowa/files/Xof_fsdb_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; import gplx.*; import gplx.xowa.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.files.gui.*; import gplx.xowa.files.repos.*; import gplx.xowa.parsers.lnkis.*; public class Xof_fsdb_itm implements Xof_file_itm { diff --git a/400_xowa/src/gplx/xowa/files/Xof_img_size.java b/400_xowa/src/gplx/xowa/files/Xof_img_size.java index cb1d228da..269146e82 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_img_size.java +++ b/400_xowa/src/gplx/xowa/files/Xof_img_size.java @@ -35,7 +35,7 @@ public class Xof_img_size { && !Xop_lnki_type.Id_is_thumbable(lnki_type) // not thumb which is implicitly 220; PAGE:en.w:Edward_Snowden; DATE:2015-08-17 ) lnki_w = orig_w; // use original size; EX:[[File:A.ogv]] -> [[File:A.ogv|550px]] where 550px is orig_w; DATE:2015-08-07 - if (Bitmask_.Has_int(lnki_type, Xop_lnki_type.Id_frame) // frame: always return orig size; Linker.php!makeThumbLink2; // Use image dimensions, don't scale + if (Bitmask_.Has_int(lnki_type, Xop_lnki_type.Id_frame) // frame: always return orig size; Linker.php!makeThumbLink2; // Use image dimensions, don't scale && lnki_h == Null) { // unless lnki_h specified; DATE:2013-12-22 html_w = file_w = orig_w; html_h = file_h = orig_h; 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 e2ece7c9d..b8da8df52 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java @@ -111,7 +111,7 @@ public class Xof_url_bldr { bfr.Add_byte(dir_spr); // add dir_spr; EX: "\" bfr.Add_int_variable(file_w).Add(Bry_px); // add file_w; EX: "220px" if (Xof_lnki_time.Null_n(time)) - bfr.Add_byte(time_dlm).Add_str(Xof_lnki_time.X_str(time)); // add time EX: "@5" + bfr.Add_byte(time_dlm).Add_str_a7(Xof_lnki_time.X_str(time)); // add time EX: "@5" else if (page != Xof_lnki_page.Null) bfr.Add_byte(Byte_ascii.Dash).Add_int_variable(page); // add page EX: "-5" bfr.Add_byte(Byte_ascii.Dot); // add . EX: "." @@ -131,7 +131,7 @@ public class Xof_url_bldr { bfr.Add_int_variable(file_w); // add file_w; EX: "220"; PAGE:en.w:Alice_Brady; DATE:2015-08-06 bfr.Add(Bry_px_dash); // add px; EX: "px-" if (Xof_lnki_time.Null_n(time)) - bfr.Add(Bry_seek).Add_str(Xof_lnki_time.X_str(time)).Add_byte(Byte_ascii.Dash);// add seek; EX: "seek%3D5-" + bfr.Add(Bry_seek).Add_str_a7(Xof_lnki_time.X_str(time)).Add_byte(Byte_ascii.Dash);// add seek; EX: "seek%3D5-" else bfr.Add_byte(Byte_ascii.Dash); // add mid; EX: "-"; NOTE: was "mid-"; DATE:2015-08-06 break; diff --git a/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java b/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java index a5c282283..4ef3c2812 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java +++ b/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java @@ -37,7 +37,7 @@ class Bin_fetcher_fsys implements Bin_fetcher { } } class Bin_fetcher_http implements Bin_fetcher { - private gplx.ios.IoEngine_xrg_downloadFil download = gplx.ios.IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); + private gplx.core.ios.IoEngine_xrg_downloadFil download = gplx.core.ios.IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); public void Init_src_str(String src) {this.src = src;} private String src; public boolean Save_as_url(Io_url trg) { return download.Src_(src).Trg_(trg).Exec(); diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java index 9db3451cb..82d222d09 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_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.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; public interface Io_download_mgr { Io_stream_rdr Download_as_rdr(String src); } diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java index 29a449b4e..5d5c9c5b9 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_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.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Io_download_mgr_ { public static Io_download_mgr new_system() {return new Io_download_mgr__system();} public static Io_download_mgr__memory new_memory() {return new Io_download_mgr__memory();} diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java index f7d582449..4636e8b80 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.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.ios.*; +import gplx.core.ios.*; public class Io_download_mgr__memory implements Io_download_mgr { private final Ordered_hash hash = Ordered_hash_.New(); public void Clear() {hash.Clear();} diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java index 8515a0921..2b8aaafd1 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java @@ -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.primitives.*; import gplx.ios.*; +import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.fsdb.meta.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.caches.*; import gplx.xowa.bldrs.wms.*; diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java index ebef19ccf..a56b46de0 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_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.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; public class Xof_bin_skip_mgr { private Xof_bin_skip_wkr[] wkrs = new Xof_bin_skip_wkr[0]; private int wkrs_len; diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java index 802e3a35b..e71c0e338 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.files.fsdb.*; public interface Xof_bin_wkr { byte Tid(); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java index d6e5d1918..c549f0a60 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_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.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.dbs.*; import gplx.ios.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; public class Xof_bin_wkr__fsdb_sql implements Xof_bin_wkr { private final Xof_bin_wkr_ids tmp_ids = new Xof_bin_wkr_ids(); 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 707ba198c..3d9a5820c 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.ios.*; +import gplx.core.ios.*; 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() {} @@ -25,7 +25,7 @@ public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble public boolean Resize_allowed() {return resize_allowed;} public void Resize_allowed_(boolean v) {resize_allowed = v;} private boolean resize_allowed = false; public Io_stream_rdr Get_as_rdr(Xof_fsdb_itm itm, boolean is_thumb, int w) { Io_url src_url = this.Get_src_url(Xof_repo_itm_.Mode_by_bool(is_thumb), String_.new_u8(itm.Orig_repo_name()), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), w, itm.Lnki_time(), itm.Lnki_page()); - return (src_url == Io_url_.Empty) ? gplx.ios.Io_stream_rdr_.Noop : gplx.ios.Io_stream_rdr_.file_(src_url); + return (src_url == Io_url_.Empty) ? gplx.core.ios.Io_stream_rdr_.Noop : gplx.core.ios.Io_stream_rdr_.file_(src_url); } public boolean Get_to_fsys(Xof_fsdb_itm itm, boolean is_thumb, int w, Io_url bin_url) { return Get_to_fsys(itm.Orig_repo_name(), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), is_thumb, w, itm.Lnki_time(), itm.Lnki_page(), bin_url); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java index 4ac7bb23b..b56aeef1d 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.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.ios.*; import gplx.core.threads.*; +import gplx.core.ios.*; import gplx.core.threads.*; import gplx.xowa.apps.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.domains.*; diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java index 2944ebb0f..3c8ceeb4b 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import org.junit.*; import gplx.ios.*; import gplx.xowa.files.repos.*; +import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.repos.*; public class Xof_bin_wkr__http_wmf__tst { private final Xof_bin_wkr__http_wmf__fxt fxt = new Xof_bin_wkr__http_wmf__fxt(); @Before public void init() {fxt.Clear();} 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 919a640de..a7e51a3a4 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 @@ -43,7 +43,7 @@ public class Xou_cache_mgr { } return KeyVal_.Ary ( KeyVal_.new_("cache folder", cache_dir.Xto_api()) - , KeyVal_.new_("space used", gplx.ios.Io_size_.To_str(fsys_size)) + , KeyVal_.new_("space used", gplx.core.ios.Io_size_.To_str(fsys_size)) , KeyVal_.new_("file count", len) , KeyVal_.new_("oldest file", view_date == Long_.Max_value ? "" : DateAdp_.unixtime_utc_seconds_(view_date).XtoStr_fmt_iso_8561()) ); @@ -194,7 +194,7 @@ class Xou_cache_grp { cache_hash.Del(itm.Lnki_key()); itm.Db_state_(Db_cmd_mode.Tid_delete); cache_tbl.Db_save(itm); - gplx.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(itm.File_url()); + gplx.core.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(itm.File_url()); if (fil.Exists()) { Io_mgr.Instance.DeleteFil(itm.File_url()); deleted = true; diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java b/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java index cfe5a4f5c..d133b0244 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.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.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.gui.*; public class Xou_file_itm_finder { private final Xou_cache_mgr cache_mgr; private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); diff --git a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr.java b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr.java index c5193af30..fe0b5a6c8 100644 --- a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr.java +++ b/400_xowa/src/gplx/xowa/files/downloads/Xof_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.files.downloads; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; public interface Xof_download_wkr { byte Download(boolean src_is_web, String src, Io_url trg, String prog_fmt_hdr); IoEngine_xrg_downloadFil Download_xrg(); diff --git a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java index 72d81c6d6..ca459cfe5 100644 --- a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java +++ b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.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.downloads; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xof_download_wkr_io implements Xof_download_wkr { IoEngine_xrg_downloadFil xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty); public IoEngine_xrg_downloadFil Download_xrg() {return xrg;} diff --git a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java index 44370560a..5e5c518ab 100644 --- a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java +++ b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.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.downloads; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xof_download_wkr_test implements Xof_download_wkr { public IoEngine_xrg_downloadFil Download_xrg() {return IoEngine_xrg_downloadFil.new_("", Io_url_.Empty).Trg_engine_key_(IoEngine_.MemKey);} public byte Download(boolean src_is_web, String src_str, Io_url trg_url, String prog_fmt_hdr) { diff --git a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java index 1c79dfe0b..3da2b6a18 100644 --- a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java +++ b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java @@ -24,8 +24,8 @@ public class Xof_rule_itm implements GfoInvkAble { public long View_max() {return view_max;} public Xof_rule_itm View_max_(long v) {view_max = v; return this;} long view_max = Max_wildcard; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_owner)) return owner; - else if (ctx.Match(k, Invk_make_max_)) make_max = gplx.ios.Io_size_.Load_int_(m); - else if (ctx.Match(k, Invk_view_max_)) view_max = gplx.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_make_max_)) make_max = gplx.core.ios.Io_size_.Load_int_(m); + else if (ctx.Match(k, Invk_view_max_)) view_max = gplx.core.ios.Io_size_.Load_int_(m); else return GfoInvkAble_.Rv_unhandled; return this; } private static final String Invk_owner = "owner", Invk_make_max_ = "make_max_", Invk_view_max_ = "view_max_"; diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java index 2cd5afe16..75c3cd1e0 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.files.fsdb; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.core.primitives.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*; 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 ee204b194..126dcf903 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.ios.*; +import gplx.core.ios.*; 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 42472f622..7020ddabb 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 @@ -58,9 +58,9 @@ class Xof_file_fxt { Fsm_atr_fil atr_fil = mnt_itm.Atr_mgr().Db__core(); Fsm_bin_fil bin_fil = mnt_itm.Bin_mgr().Dbs__get_nth(); if (arg.Is_thumb()) - mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.ios.Io_stream_rdr_.mem_(arg.Bin())); + mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin())); else - mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.ios.Io_stream_rdr_.mem_(arg.Bin())); + mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin())); } public void Exec_get(Xof_exec_arg arg) { byte[] ttl_bry = arg.Ttl(); diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java index fe45da3bb..4644f06ad 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java +++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java @@ -36,7 +36,7 @@ public class Js_img_mgr { String html_id = To_doc_uid(uid); js_wkr.Html_img_update(html_id, html_view_url.To_http_file_str(), html_w, html_h); if (Xop_lnki_type.Id_is_thumbable(lnki_type)) { // thumb needs to set cls and width - js_wkr.Html_atr_set(html_id, "class", gplx.xowa.htmls.lnkis.Xoh_lnki_consts.Str_img_cls_thumbimage); + js_wkr.Html_atr_set(html_id, "class", gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_lnki_consts.Str_img_cls_thumbimage); js_wkr.Html_atr_set("xowa_file_div_" + uid, "style", "width:" + html_w + "px;"); } switch (elem_tid) { diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java index b5129cc4d..ea834635a 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java @@ -26,7 +26,7 @@ public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr { public byte Tid() {return Xof_orig_wkr_.Tid_wmf_api;} public void Find_by_list(Ordered_hash rv, List_adp itms) {Xof_orig_wkr_.Find_by_list(this, rv, itms);} public Xof_orig_itm Find_as_itm(byte[] ttl, int list_idx, int list_len) { - if (!gplx.ios.IoEngine_system.Web_access_enabled) return Xof_orig_itm.Null; // don't check api if download disabled, else prog messages; DATE:2015-06-17 + if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return Xof_orig_itm.Null; // don't check api if download disabled, else prog messages; DATE:2015-06-17 Xoa_app_.Usr_dlg().Prog_none("", "", Prog_msg(list_idx, list_len, ttl)); boolean found = orig_api.Api_query_size(api_rv, download_wkr, repo_mgr, ttl, Xof_img_size.Null, Xof_img_size.Null); // pass in null size to look for orig; DATE:2015-02-10 if (!found) return Xof_orig_itm.Null; // ttl not found by api; return diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java index 2c982bade..7500e19a2 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java @@ -322,7 +322,7 @@ public class Xof_xfer_mgr { private boolean Cmd_download(String src_str, Io_url trg_url, boolean cur_is_orig) { boolean exists = false; if (check_file_exists_before_xfer) { - gplx.ios.IoItmFil fil_itm = Io_mgr.Instance.QueryFil(trg_url); + gplx.core.ios.IoItmFil fil_itm = Io_mgr.Instance.QueryFil(trg_url); exists = fil_itm.Exists() && fil_itm.Size() > 0; } boolean pass = false; @@ -330,11 +330,11 @@ public class Xof_xfer_mgr { pass = true; else { byte download_rslt = wmf_mgr.Download_wkr().Download(src_repo_is_wmf, src_str, trg_url, wmf_mgr.Download_wkr().Download_xrg().Prog_fmt_hdr()); - if (download_rslt == gplx.ios.IoEngine_xrg_downloadFil.Rslt_fail_host_not_found) { + if (download_rslt == gplx.core.ios.IoEngine_xrg_downloadFil.Rslt_fail_host_not_found) { wiki.File_mgr().Cfg_download().Enabled_(false); throw Err_.new_wo_type("download_failed: host not found", "src", src_str, "trg", trg_url.Raw()); } - pass = download_rslt == gplx.ios.IoEngine_xrg_downloadFil.Rslt_pass; + pass = download_rslt == gplx.core.ios.IoEngine_xrg_downloadFil.Rslt_pass; } // update meta attributes; placed here b/c Cmd_download is called by 3 procs; note that thumb meta is handled by calling procs as the logic is more specific if (cur_is_orig) { diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java index 4eeea8ea1..7729d6939 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_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.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.repos.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.imgs.*; public class Xof_xfer_queue_base_fxt { diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_basic_tst.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_basic_tst.java index 8fd79c512..3acf8eee1 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_basic_tst.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_basic_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import org.junit.*; -import gplx.ios.*; import gplx.gfui.*; import gplx.xowa.files.*; +import gplx.core.ios.*; import gplx.gfui.*; import gplx.xowa.files.*; public class Xof_xfer_queue_html_basic_tst { Xof_xfer_queue_html_fxt fxt = new Xof_xfer_queue_html_fxt(); @Before public void init() {fxt.Clear(true);} diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java index 849751147..9b35e00b3 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java @@ -17,7 +17,7 @@ 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.dbs.*; -import gplx.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.*; +import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt { private final Xof_xfer_queue queue = new Xof_xfer_queue(); diff --git a/400_xowa/src/gplx/xowa/guis/Xog_page.java b/400_xowa/src/gplx/xowa/guis/Xog_page.java deleted file mode 100644 index 17d063f5c..000000000 --- a/400_xowa/src/gplx/xowa/guis/Xog_page.java +++ /dev/null @@ -1,78 +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.guis; import gplx.*; import gplx.xowa.*; -import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.pages.*; -import gplx.xowa.files.*; -import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.htmls.heads.*; -public class Xog_page implements Xoa_page { - public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; - public Xoa_url Url() {return page_url;} private Xoa_url page_url; - public byte[] Url_bry_safe() {return page_url == null ? Bry_.Empty : page_url.Raw();} - public Xoa_ttl Ttl() {return page_ttl;} private Xoa_ttl page_ttl; - public void Xtn_gallery_packed_exists_y_() {} - public boolean Exists() {return exists;} public Xog_page Exists_n_() {exists = false; return this;} private boolean exists = true; - public int Exec_tid() {return exec_tid;} private int exec_tid = Xof_exec_tid.Tid_wiki_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 Page_id() {return page_id;} private int page_id; - public int Version_id() {return version_id;} public void Version_id_(int v) {version_id = v;} private int version_id; - public int Img_count() {return img_count;} public void Img_count_(int v) {img_count = v;} private int img_count; - public Xopg_module_mgr Head_mgr() {return module_mgr;} private Xopg_module_mgr module_mgr = new Xopg_module_mgr(); - 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; - public byte[] Page_body() {return page_body;} public void Page_body_(byte[] v) {this.page_body = v;} private byte[] page_body; - public byte[] Display_ttl() {return display_ttl;} public void Display_ttl_(byte[] v) {this.display_ttl = v;} private byte[] display_ttl; - public byte[] Content_sub() {return content_sub;} public void Content_sub_(byte[] v) {this.content_sub = v;} private byte[] content_sub; - public byte[] Sidebar_div() {return sidebar_div;} public void Sidebar_div_(byte[] v) {this.sidebar_div = v;} private byte[] sidebar_div; - public Ordered_hash Redlink_uids() {return redlink_uids;} private final Ordered_hash redlink_uids = Ordered_hash_.New(); - public Xohd_data_itm__base[] Img_itms() {return img_itms;} public void Img_itms_(Xohd_data_itm__base[] v) {this.img_itms = v;} private Xohd_data_itm__base[] img_itms; - public Ordered_hash Gallery_itms() {return gallery_itms;} private Ordered_hash gallery_itms = Ordered_hash_.New(); - public Xog_page Init(Xow_wiki wiki, int page_id, Xoa_url page_url, Xoa_ttl page_ttl) { - this.wiki = wiki; - this.page_id = page_id; this.page_url = page_url; this.page_ttl = page_ttl; - content_sub = sidebar_div = Bry_.Empty; - display_ttl = null; - img_itms = Xohd_data_itm__base.Ary_empty; - module_mgr.Clear(); - gallery_itms.Clear(); - redlink_uids.Clear(); - commons_mgr.Clear(); - return this; - } - public void Ctor_from_page(Bry_bfr tmp_bfr, Xoae_page page) { - page_id = page.Revision_data().Id(); - page_body = page.Hdump_data().Body(); - Xopg_html_data html_data = page.Html_data(); - Xoh_head_mgr mod_mgr = html_data.Head_mgr(); - module_mgr.Init(mod_mgr.Itm__mathjax().Enabled(), mod_mgr.Itm__popups().Bind_hover_area(), mod_mgr.Itm__gallery().Enabled(), mod_mgr.Itm__hiero().Enabled()); - display_ttl = html_data.Display_ttl(); - content_sub = html_data.Content_sub(); - sidebar_div = Save_sidebars(tmp_bfr, page, html_data); - } - private 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(); - boolean sidebar_exists = false; - for (int i = 0; i < len; ++i) { - Xopg_xtn_skin_itm itm = mgr.Get_at(i); - if (itm.Tid() == Xopg_xtn_skin_itm_tid.Tid_sidebar) { - sidebar_exists = true; - itm.Write(tmp_bfr, page); - } - } - return sidebar_exists ? tmp_bfr.To_bry_and_clear() : null; - } -} diff --git a/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java index 5f5997056..b4faf18eb 100644 --- a/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java @@ -19,6 +19,7 @@ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; import gplx.core.threads.*; import gplx.core.net.*; import gplx.xowa.guis.history.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.*; +import gplx.xowa.htmls.*; class Xogv_page_load_wkr implements Gfo_thread_wkr, GfoInvkAble { private final Xoav_wiki_mgr wiki_mgr; private final Gfo_url_parser url_parser; private final Xogv_tab_base tab; private final Xog_history_itm old_itm, new_itm; @@ -28,15 +29,15 @@ class Xogv_page_load_wkr implements Gfo_thread_wkr, GfoInvkAble { public String Name() {return Thread_name;} public static final String Thread_name = "xowa.page_load"; public boolean Resume() {return true;} public void Exec() { - Xog_page new_hpg = Fetch_page(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg()); + Xoh_page new_hpg = Fetch_page(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg()); tab.Show_page(old_itm, new_itm, new_hpg); } - private Xog_page Fetch_page(byte[] wiki_domain, byte[] page_bry, byte[] qarg_bry) { + private Xoh_page Fetch_page(byte[] wiki_domain, byte[] page_bry, byte[] qarg_bry) { Xowv_wiki wiki = wiki_mgr.Get_by_domain(wiki_domain); - if (wiki == null) return new Xog_page().Exists_n_(); // wiki does not exist; happens with xwiki; PAGE:s.w:Photon; EX:[[wikt:transmit]]; DATE:2015-04-27 + if (wiki == null) return new Xoh_page().Exists_n_(); // wiki does not exist; happens with xwiki; PAGE:s.w:Photon; EX:[[wikt:transmit]]; DATE:2015-04-27 Xoa_ttl ttl = wiki.Ttl_parse(page_bry); Gfo_url url = url_parser.Parse(Bry_.Add(wiki_domain, Byte_ascii.Slash_bry, page_bry, qarg_bry)); - Xog_page rv = new Xog_page(); + Xoh_page rv = new Xoh_page(); wiki.Pages_get(rv, url, ttl); return rv; } diff --git a/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java index 4b68eba36..09bae7ec2 100644 --- a/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java +++ b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; import gplx.core.net.*; -import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.guis.history.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.guis.history.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.*; import gplx.xowa.apps.urls.*; import gplx.core.threads.*; public abstract class Xogv_tab_base { @@ -28,28 +28,28 @@ public abstract class Xogv_tab_base { public Xog_history_stack History_stack() {return history_stack;} private final Xog_history_stack history_stack = new Xog_history_stack(); public Xog_history_itm Cur_itm() {return history_stack.Cur_itm();} public Xow_wiki Get_wiki_or_null(byte[] key) {return wiki_mgr.Get_by_domain(key);} - public Xog_page Go_to(byte[] page) {return Go_to(history_stack.Cur_itm().Wiki(), page, Bry_.Empty, Bry_.Empty, false, "");} - public Xog_page Go_to(byte[] wiki, byte[] page) {return Go_to(wiki, page, Bry_.Empty, Bry_.Empty, false, "");} - public Xog_page Go_to(byte[] wiki, byte[] page, byte[] anch, byte[] qarg, boolean redirect_force, String bmk_pos) { + public Xoh_page Go_to(byte[] page) {return Go_to(history_stack.Cur_itm().Wiki(), page, Bry_.Empty, Bry_.Empty, false, "");} + public Xoh_page Go_to(byte[] wiki, byte[] page) {return Go_to(wiki, page, Bry_.Empty, Bry_.Empty, false, "");} + public Xoh_page Go_to(byte[] wiki, byte[] page, byte[] anch, byte[] qarg, boolean redirect_force, String bmk_pos) { Xog_history_itm old_itm = this.Cur_itm(); Xog_history_itm new_itm = new Xog_history_itm(wiki, page, anch, qarg, redirect_force, bmk_pos); - Xog_page rv = Fetch_page_and_show(old_itm, new_itm); + Xoh_page rv = Fetch_page_and_show(old_itm, new_itm); if (rv.Exists()) history_stack.Add(new_itm); return rv; } - public Xog_page Go_bwd() {return Go_by_dir(Bool_.Y);} - public Xog_page Go_fwd() {return Go_by_dir(Bool_.N);} - public Xog_page Reload() {return Fetch_page_and_show(Cur_itm(), Cur_itm());} - private Xog_page Go_by_dir(boolean bwd) { + public Xoh_page Go_bwd() {return Go_by_dir(Bool_.Y);} + public Xoh_page Go_fwd() {return Go_by_dir(Bool_.N);} + public Xoh_page Reload() {return Fetch_page_and_show(Cur_itm(), Cur_itm());} + private Xoh_page Go_by_dir(boolean bwd) { Xog_history_itm old_itm = this.Cur_itm(); Xog_history_itm new_itm = bwd ? history_stack.Go_bwd() : history_stack.Go_fwd(); return Fetch_page_and_show(old_itm, new_itm); } - private Xog_page Fetch_page_and_show(Xog_history_itm old_itm, Xog_history_itm new_itm) { - if (new_itm == Xog_history_itm.Null) return new Xog_page().Exists_n_(); + private Xoh_page Fetch_page_and_show(Xog_history_itm old_itm, Xog_history_itm new_itm) { + if (new_itm == Xog_history_itm.Null) return new Xoh_page().Exists_n_(); Fetch_page__bgn(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg()); - Xog_page new_hpg = new Xog_page(); + Xoh_page new_hpg = new Xoh_page(); // Thread_adp_.invk_(Xogv_page_load_wkr.Thread_name, new Xogv_page_load_wkr(wiki_mgr, url_parser, this, old_itm, new_itm), Xogv_page_load_wkr.Invk_exec).Start(); thread_pool.Add_at_end(new Xogv_page_load_wkr(wiki_mgr, url_parser, this, old_itm, new_itm)); thread_pool.Run(); @@ -58,5 +58,5 @@ public abstract class Xogv_tab_base { @gplx.Virtual protected void Fetch_page__bgn(byte[] wiki_domain, byte[] page_bry, byte[] qarg_bry) {} public void Srl_save(Bry_bfr bfr) {history_stack.Srl_save(bfr);} public void Srl_load(byte[] raw) {history_stack.Srl_load(raw);} - public abstract void Show_page(Xog_history_itm old_itm, Xog_history_itm new_itm, Xog_page new_hpg); + public abstract void Show_page(Xog_history_itm old_itm, Xog_history_itm new_itm, Xoh_page new_hpg); } diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java index 51b41ea7a..490f34f43 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java @@ -217,7 +217,7 @@ class Xog_menu_bldr { public Xog_menu_bldr Add_grp_bgn(String key) { Indent(); bfr.Add(Const_itm_grp_bgn_lhs); - bfr.Add_str(key); + bfr.Add_str_u8(key); bfr.Add(Const_itm_grp_bgn_rhs); Indent_add(); return this; @@ -231,7 +231,7 @@ class Xog_menu_bldr { public Xog_menu_bldr Add_btn(String key) { Indent(); bfr.Add(Const_itm_btn_bgn_lhs); - bfr.Add_str(key); + bfr.Add_str_u8(key); bfr.Add(Const_itm_btn_bgn_rhs); return this; } 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 c5a000052..e97f7d554 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 @@ -73,7 +73,7 @@ public class Xog_url_wkr { if (!Xof_file_wkr.Show_img(fsdb, Xoa_app_.Usr_dlg(), wiki.File__bin_mgr(), wiki.File__mnt_mgr(), wiki.App().User().User_db_mgr().Cache_mgr(), wiki.File__repo_mgr(), gplx.xowa.files.gui.Xog_js_wkr_.Noop, img_size, url_bldr, page)) return Rslt_handled; } - gplx.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(href_url); + 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()); media_player.Run(href_url); @@ -92,7 +92,7 @@ public class Xog_url_wkr { for (int i = 0; i < qargs_len; i++) { Gfo_qarg_itm arg = qargs[i]; int anch_pos = Bry_find_.Find_bwd(arg.Val_bry(), Byte_ascii.Hash); // NOTE: must .FindBwd to handle Category args like de.wikipedia.org/wiki/Kategorie:Begriffskl%C3%A4rung?pagefrom=#::12%20PANZERDIVISION#mw-pages; DATE:2013-06-18 - if (anch_pos != Bry_.NotFound) + if (anch_pos != Bry_find_.Not_found) arg.Val_bry_(Bry_.Mid(arg.Val_bry(), 0, anch_pos)); } } 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 e322e6fe3..cf395b047 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 @@ -48,7 +48,7 @@ public class Load_page_wkr implements Gfo_thread_wkr { Thread_adp_.Sleep(10); if (hdump_enabled && page.Revision_data().Html_db_id() != -1) { // wiki.Parser_mgr().Parse(page, false); - wiki.Html__hdump_rdr().Get_by_ttl(page); + wiki.Html__hdump_mgr().Load_mgr().Load(page); } else wiki.Parser_mgr().Parse(page, false); 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 37939fbc6..561c7f33b 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 @@ -112,7 +112,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_atr_set, m); } } - public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.htmls.lnkis.Xoh_redlink_utl.New_str);} + public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_redlink_utl.New_str);} private void Html_doc_atr_append_or_set(String elem_id, String atr_key, String atr_val) { GfoMsg m = GfoMsg_.new_cast_(Invk_html_doc_atr_append_or_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_doc_atr_append_or_set, m); 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 90bbb0e33..45a5a4ff0 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 @@ -161,7 +161,7 @@ public class Xog_tab_itm implements GfoInvkAble { return; } if (!page.Redirected()) page.Url_(url); // NOTE: handle redirect from commons - if (page.Ttl().Anch_bgn() != Bry_.NotFound) page.Url().Anch_bry_(page.Ttl().Anch_txt()); // NOTE: occurs when page is a redirect to an anchor; EX: w:Duck race -> Rubber duck#Races + if (page.Ttl().Anch_bgn() != Bry_find_.Not_found) page.Url().Anch_bry_(page.Ttl().Anch_txt()); // NOTE: occurs when page is a redirect to an anchor; EX: w:Duck race -> Rubber duck#Races history_mgr.Add(page); Xog_tab_itm_read_mgr.Show_page(this, page, true); if (app.Api_root().Usr().History().Enabled()) { @@ -177,7 +177,7 @@ public class Xog_tab_itm implements GfoInvkAble { Xof_fsdb_mgr fsdb_mgr = wiki.File_mgr().Fsdb_mgr(); async_wkr = new Xof_file_wkr(wiki.File__orig_mgr(), fsdb_mgr.Bin_mgr(), fsdb_mgr.Mnt_mgr(), app.Usere().User_db_mgr().Cache_mgr(), wiki.File__repo_mgr(), html_itm, page, page.Hdump_data().Imgs()); if (wiki.Html__hdump_enabled() && page.Revision_data().Html_db_id() == -1) { - wiki.Html__hdump_wtr().Save(page); + wiki.Html__hdump_mgr().Save_mgr().Save(page); } } else diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java index 24a7338f1..c0f78bcd1 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_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.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.*; +import gplx.gfui.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Xog_tab_itm_edit_mgr { @@ -34,7 +34,7 @@ public class Xog_tab_itm_edit_mgr { Invalidate(wiki); page.Data_raw_(new_text); wiki.Parser_mgr().Parse(page, true); // refresh html - if (wiki.Html__hdump_enabled()) wiki.Html__hdump_wtr().Save(page); // must go after wiki.Parse + if (wiki.Html__hdump_enabled()) wiki.Html__hdump_mgr().Save_mgr().Save(page); // must go after wiki.Parse win_itm.Usr_dlg().Prog_one("", "", "saved page ~{0}", String_.new_u8(page.Ttl().Full_txt_raw())); // NOTE: show message after Parse, b/c Parse will flash "Loading page"; DATE:2014-05-17 if (!quick_save) { // full_save; save page and go to read mode page.Html_data().Edit_preview_(Bry_.Empty); 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 6fe8ad11f..f3ae6621e 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 @@ -124,7 +124,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { private void Win__link_clicked(String anchor_raw) { String url = url_box.Text(); int pos = String_.FindFwd(url, gplx.langs.htmls.Html_tag_.Anchor_str); - if (pos != Bry_.NotFound) url = String_.Mid(url, 0, pos); + if (pos != Bry_find_.Not_found) url = String_.Mid(url, 0, pos); String anchor_str = Parse_evt_location_changing(anchor_raw); byte[] anchor_bry = Bry_.new_u8(anchor_str); Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); @@ -146,7 +146,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { } private static String Parse_evt_location_changing(String v) { // EX: about:blank#anchor -> anchor int pos = String_.FindFwd(v, gplx.langs.htmls.Html_tag_.Anchor_str); - return pos == Bry_.NotFound + return pos == Bry_find_.Not_found ? null : String_.Mid(v, pos + 1); } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java index 28544bae3..3ef20f8d8 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_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; import gplx.*; import gplx.xowa.*; -import gplx.xowa.htmls.tidy.*; import gplx.xowa.htmls.utils.*; import gplx.xowa.htmls.skins.*; +import gplx.xowa.htmls.core.htmls.tidy.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.skins.*; import gplx.xowa.parsers.xndes.*; public class Xoh_html_mgr implements GfoInvkAble { public Xoh_html_mgr(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java new file mode 100644 index 000000000..fcae79701 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java @@ -0,0 +1,70 @@ +/* +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; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.files.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.sections.*; import gplx.xowa.htmls.core.makes.imgs.*; +public class Xoh_page implements Xoa_page { + // core + public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; + public Xoa_url Url() {return page_url;} private Xoa_url page_url; + public Xoa_ttl Ttl() {return page_ttl;} private Xoa_ttl page_ttl; + // props + public boolean Exists() {return exists;} public Xoh_page Exists_n_() {exists = false; return this;} private boolean exists = true; + public int Page_id() {return page_id;} private int page_id; + public byte[] Body() {return body;} public void Body_(byte[] v) {this.body = v;} private byte[] body; + public byte Body_flag() {return body_flag;} private byte body_flag = Byte_.Max_value_127; + public Xoh_section_mgr Section_mgr() {return section_mgr;} private final Xoh_section_mgr section_mgr = new Xoh_section_mgr(); + public byte[] Display_ttl() {return display_ttl;} private byte[] display_ttl; + public byte[] Content_sub() {return content_sub;} private byte[] content_sub; + public byte[] Sidebar_div() {return sidebar_div;} private byte[] sidebar_div; + public Ordered_hash Redlink_uids() {return redlink_uids;} private final Ordered_hash redlink_uids = Ordered_hash_.New(); + public int Img_count() {return img_count;} public void Img_count_(int v) {img_count = v;} private int img_count; + public Xohd_img_itm__base[] Img_itms() {return img_itms;} public void Img_itms_(Xohd_img_itm__base[] v) {this.img_itms = v;} private Xohd_img_itm__base[] img_itms = Xohd_img_itm__base.Ary_empty; + public Ordered_hash Gallery_itms() {return gallery_itms;} private Ordered_hash gallery_itms = Ordered_hash_.New(); + public Xopg_module_mgr Head_mgr() {return head_mgr;} private Xopg_module_mgr head_mgr = new Xopg_module_mgr(); + public void Xtn_gallery_packed_exists_y_() {} + // util + 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 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(); + } + public void Ctor_by_db(int head_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte body_flag, byte[] body) { + head_mgr.Flag_(head_flag); + this.display_ttl = display_ttl; this.content_sub = content_sub; this.sidebar_div = sidebar_div; this.body = body; this.body_flag = body_flag; + } + 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(); + 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()); + this.display_ttl = html_data.Display_ttl(); + this.content_sub = html_data.Content_sub(); + this.sidebar_div = Xoh_page_.Save_sidebars(tmp_bfr, page, html_data); + return this; + } + private void Clear() { + display_ttl = content_sub = sidebar_div = Bry_.Empty; + img_itms = Xohd_img_itm__base.Ary_empty; + head_mgr.Clear(); gallery_itms.Clear(); redlink_uids.Clear(); commons_mgr.Clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java new file mode 100644 index 000000000..d46025445 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_.java @@ -0,0 +1,34 @@ +/* +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; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; +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(); + boolean sidebar_exists = false; + for (int i = 0; i < len; ++i) { + Xopg_xtn_skin_itm itm = mgr.Get_at(i); + if (itm.Tid() == Xopg_xtn_skin_itm_tid.Tid_sidebar) { + sidebar_exists = true; + itm.Write(tmp_bfr, page); + } + } + return sidebar_exists ? tmp_bfr.To_bry_and_clear() : null; + } +} 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 a6d3d23dd..97a6ad63c 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 @@ -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; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.langs.htmls.*; import gplx.xowa.langs.vnts.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.langs.htmls.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.core.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.*; @@ -150,7 +150,7 @@ public class Xoh_page_wtr_wkr implements Bry_fmtr_arg { if (ns_id == Xow_ns_.Id_category) wiki.Html_mgr().Ns_ctg().Bld_html(wiki, page, tidy_bfr); // tidy html - gplx.xowa.htmls.tidy.Xoh_tidy_mgr tidy_mgr = app.Html_mgr().Tidy_mgr(); + gplx.xowa.htmls.core.htmls.tidy.Xoh_tidy_mgr tidy_mgr = app.Html_mgr().Tidy_mgr(); if (tidy_mgr.Enabled()) tidy_mgr.Run_tidy_html(page, tidy_bfr); // add back to main bfr diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java index 07deed2d4..3d1741f29 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import org.junit.*; import gplx.xowa.guis.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.htmls.core.htmls.*; public class Xoh_page_wtr_wkr_tst { @Before public void init() {fxt.Clear();} private Xoh_page_wtr_fxt fxt = new Xoh_page_wtr_fxt(); @Test public void Page_name() { 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 70a3cc06b..151b45cb7 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.xtns.gallery.*; -import gplx.xowa.htmls.portal.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.wikis.modules.*; import gplx.xowa.htmls.hzips.*; +import gplx.xowa.htmls.portal.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.wikis.modules.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.hzips.*; public class Xow_html_mgr implements GfoInvkAble { public Xow_html_mgr(Xowe_wiki wiki) { this.wiki = wiki; @@ -33,7 +33,6 @@ public class Xow_html_mgr implements GfoInvkAble { portal_mgr = new Xow_portal_mgr(wiki); imgs_mgr = new Xoh_imgs_mgr(this); module_mgr = new Xow_module_mgr(wiki); - hzip_mgr = new Xow_hzip_mgr(app.Usr_dlg(), wiki); } public void Init_by_wiki(Xowe_wiki wiki) { html_wtr.Init_by_wiki(wiki); @@ -48,7 +47,6 @@ public class Xow_html_mgr implements GfoInvkAble { public Xow_portal_mgr Portal_mgr() {return portal_mgr;} private Xow_portal_mgr portal_mgr; public Xow_toc_mgr Toc_mgr() {return toc_mgr;} private Xow_toc_mgr toc_mgr = new Xow_toc_mgr(); public Xow_module_mgr Head_mgr() {return module_mgr;} private Xow_module_mgr module_mgr; - public Xow_hzip_mgr Hzip_mgr() {return hzip_mgr;} private Xow_hzip_mgr hzip_mgr; public boolean Importing_ctgs() {return importing_ctgs;} public void Importing_ctgs_(boolean v) {importing_ctgs = v;} private boolean importing_ctgs; public int Img_thumb_width() {return img_thumb_width;} private int img_thumb_width = 220; public byte[] Img_media_play_btn() {return img_media_play_btn;} private byte[] img_media_play_btn; diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xoh_html_dict_.java b/400_xowa/src/gplx/xowa/htmls/core/Xoh_html_dict_.java new file mode 100644 index 000000000..86cf1bec0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/Xoh_html_dict_.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; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +public class Xoh_html_dict_ { + public static final byte[] + Type__hdr = Bry_.new_a7(" data-xotype='hdr_bgn'") + , Hook__space = Bry_.new_a7(" ") + , Hook__lnke = Bry_.new_a7("") + , Rng__bgn = Bry_.new_a7("" + , "a 1" + , "" + , "

    B

    " + , "b" + ); + fxt.Test__html(String_.Concat_lines_nl_skip_last + ( "z" + , "==A 1==" + , "a 1" + , "==B==" + , "b" + ), html); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_hzip.java new file mode 100644 index 000000000..aee1fd3c2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_hzip.java @@ -0,0 +1,64 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.htmls.core.wkrs.hdrs; 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.ttls.*; +import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.hzips.stats.*; +public class Xoh_hdr_hzip extends Xoh_hdr_parse_base implements Xoh_hzip_wkr { + private Hzip_stat_itm stat_itm; + public String Key() {return Xoh_hzip_dict_.Key__hdr;} + public void Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) { + this.stat_itm = stat_itm; + this.Parse(bfr, parser, src, hook_bgn); + } + @Override public void Parse_exec(Bry_bfr bfr, byte[] src, int hook_bgn, int rng_bgn, int rng_end, byte level, int anchor_bgn, int anchor_end, int display_bgn, int display_end) { + stat_itm.Hdr_add(level); + bfr.Del_by(3); // delete " + bfr.Add_mid(src, display_bgn, display_end); // add display; + bfr.Add_byte(Xoh_hzip_dict_.Escape); // add escape + if (!Bry_.Match_w_swap(src, display_bgn, display_end, src, anchor_bgn, anchor_end, Byte_ascii.Underline, Byte_ascii.Space)) // check if anchor == display, while treating " " == "_" + bfr.Add_mid(src, anchor_bgn, anchor_end); // add anchor + bfr.Add_byte(Xoh_hzip_dict_.Escape); // add escape + } + public int Decode(Bry_bfr bfr, Bry_parser parser, byte[] src, int hook_bgn) { + byte level = parser.Read_byte(); + int display_bgn = parser.Pos(); + int display_end = parser.Fwd_bgn(Xoh_hzip_dict_.Escape); + int anchor_bgn = parser.Pos(); + int anchor_end = parser.Fwd_bgn(Xoh_hzip_dict_.Escape); + + bfr.Add(Bry__hdr__0).Add_byte(level); + bfr.Add(Bry__hdr__1); + if (anchor_end - anchor_bgn == 0) + bfr.Add_mid_w_swap (src, display_bgn, display_end, Byte_ascii.Space, Byte_ascii.Underline); + else + bfr.Add_mid (src, anchor_bgn, anchor_end); + bfr.Add(Bry__hdr__2); + bfr.Add_mid(src, display_bgn, display_end); + bfr.Add(Bry__hdr__3).Add_byte(level); + bfr.Add_byte(Byte_ascii.Angle_end); + return parser.Pos(); + } + private static final byte[] + Bry__hdr__0 = Bry_.new_a7("\n ") + , Bry__hdr__3 = Bry_.new_a7("\n. +*/ +package gplx.xowa.htmls.core.wkrs.hdrs; 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.tests.*; +public class Xoh_hdr_hzip_tst { + private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + @Test public void Diff() { + String html = String_.Concat_lines_nl_skip_last + ( "

    " + , " A" + , "

    " + , "a" + ); + String hzip = String_.Concat_lines_nl_skip_last + ( "~\"2A~A~" + , "a" + ); + fxt.Test__bicode(hzip, html); + } + @Test public void Same() { + String html = String_.Concat_lines_nl_skip_last + ( "
    " + , " A" + , "
    " + , "a" + ); + String hzip = String_.Concat_lines_nl_skip_last + ( "~\"6A~~" + , "a" + ); + fxt.Test__bicode(hzip, html); + } + @Test public void Diff_by_underscore() { + String html = String_.Concat_lines_nl_skip_last + ( "

    " + , " A 1" + , "

    " + , "a" + ); + String hzip = String_.Concat_lines_nl_skip_last + ( "~\"2A 1~~" + , "a" + ); + fxt.Test__bicode(hzip, html); + } + @Test public void Same_w_underscore() { + String html = String_.Concat_lines_nl_skip_last + ( "

    " + , " A_1" + , "

    " + , "a" + ); + String hzip = String_.Concat_lines_nl_skip_last + ( "~\"2A_1~~" + , "a" + ); + fxt.Test__bicode(hzip, html); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make.java new file mode 100644 index 000000000..584dd9675 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make.java @@ -0,0 +1,37 @@ +/* +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.hdrs; 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.sections.*; +public class Xoh_hdr_make extends Xoh_hdr_parse_base { + private Xoh_page hpg; + public int Make(Bry_bfr bfr, Xoh_page hpg, Bry_parser parser, byte[] src, int hook_bgn) { + this.hpg = hpg; + this.Parse(bfr, parser, src, hook_bgn); + return parser.Pos(); + } + @Override public void Parse_exec(Bry_bfr bfr, byte[] src, int hook_bgn, int rng_bgn, int rng_end, byte level, int anchor_bgn, int anchor_end, int display_bgn, int display_end) { + // register section + Xoh_section_mgr section_mgr = hpg.Section_mgr(); + int section_len = section_mgr.Len(); + if (section_len != 0) // guard against -1 index; should not happen + section_mgr.Set_content(section_len - 1, src, rng_bgn - 2); // -2 to skip "\n\n" + hpg.Section_mgr().Add(section_len, level, Bry_.Mid(src, anchor_bgn, anchor_end), Bry_.Mid(src, display_bgn, display_end)).Content_bgn_(rng_end + 1); // +1 to skip "\n" + bfr.Add_mid(src, hook_bgn, rng_end); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make_tst.java new file mode 100644 index 000000000..77ad653f8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_make_tst.java @@ -0,0 +1,42 @@ +/* +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.hdrs; 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.makes.tests.*; +public class Xoh_hdr_make_tst { + private final Xoh_make_fxt fxt = new Xoh_make_fxt(); + @Test public void Basic() { + String html = String_.Concat_lines_nl_skip_last + ( "z" + , "" + , "

    " + , " A 1" + , "

    " + , "a 1" + , "" + , "

    " + , " B" + , "

    " + , "b" + ); + fxt.Test__make(html, fxt.Page_chkr().Body_(html) // make sure body is same + .Sections__add(0, 2, "" , "" , "z") + .Sections__add(1, 2, "A_1" , "A 1" , "a 1") + .Sections__add(2, 2, "B" , "B" , "b") + ); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse.java new file mode 100644 index 000000000..8e672e865 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse.java @@ -0,0 +1,62 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.htmls.core.wkrs.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; +import gplx.xowa.htmls.core.parsers.*; +public class Xoh_hdr_parse { + public int Parse(Xoh_wkr wkr, Html_tag_rdr rdr, byte[] src, int hdr_tag_id, int hdr_tag_bgn, Html_tag span) { //
    [1] + Html_atr id_atr = span.Atrs__get_by(Html_atr_.Bry__id); + int id_bgn = id_atr.Val_bgn(), id_end = id_atr.Val_end(); + int capt_bgn = span.Src_end(); + rdr.Tag__move_fwd_tail(hdr_tag_id); // find not since can be nested, but

    cannot + int capt_end = rdr.Tag__peek_bwd_tail(Html_tag_.Id__span).Src_bgn(); // get before

    + boolean id_capt_related = false; + byte[] capt = Bry_.Mid(src, capt_bgn, capt_end); + byte[] id = null; + switch (Match(src, capt_bgn, capt_end, src, id_bgn, id_end)) { + case Bool_.Y_byte: break; + case Bool_.N_byte: id = Bry_.Mid(src, id_bgn, id_end); break; + case Bool_.__byte: id_capt_related = true; break; + } + int tag_end = rdr.Pos(); + wkr.On_hdr(hdr_tag_bgn, tag_end, hdr_tag_id, id, capt, id_capt_related); + return tag_end; + } + private static byte Match(byte[] lhs, int lhs_bgn, int lhs_end, byte[] rhs, int rhs_bgn, int rhs_end) { + int lhs_len = lhs.length; + if (lhs_end > lhs_len) lhs_end = lhs_len; // must limit lhs_end to lhs_len, else ArrayIndexOutOfBounds below; DATE:2015-01-31 + int rhs_len = rhs_end - rhs_bgn; + if (rhs_len != lhs_end - lhs_bgn) return Bool_.N_byte; + if (rhs_len == 0) return lhs_end - lhs_bgn == 0 ? Bool_.Y_byte : Bool_.N_byte; // "" only matches "" + byte rv = Bool_.Y_byte; + for (int i = 0; i < rhs_len; ++i) { + int pos = lhs_bgn + i; + if (pos >= lhs_end) return Bool_.N_byte; // ran out of lhs; exit; EX: lhs=ab; rhs=abc + byte lhs_byte = lhs[pos]; + byte rhs_byte = rhs[i + rhs_bgn]; + if (lhs_byte != rhs_byte) { + if ( lhs_byte == Byte_ascii.Underline + && rhs_byte == Byte_ascii.Space + ) + continue; + return Bool_.N_byte; + } + } + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse_base.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse_base.java new file mode 100644 index 000000000..d28419352 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_parse_base.java @@ -0,0 +1,47 @@ +/* +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.hdrs; 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.ttls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.sections.*; import gplx.xowa.htmls.core.hzips.stats.*; +public abstract class Xoh_hdr_parse_base { + public void Parse(Bry_bfr bfr, Bry_parser parser, byte[] src, int hook_bgn) {// EX:

    + int rng_bgn = parser.Pos_(hook_bgn - 3); // move back to " '2' + byte level = parser.Read_byte_as_a7_int(); + + // get anchor between "id='" and "'>" + parser.Fwd_end(Html_tag_.Span_lhs); + int anchor_bgn = parser.Fwd_end(Bry__atr_id); + int anchor_end = parser.Fwd_bgn(Bry__tag_end); + + // get display between "'>" and "" + int display_bgn = parser.Pos(); + int display_end = parser.Fwd_bgn(Xoh_html_dict_.Hdr__end); + + // get content_bgn after "

    " + int rng_end = parser.Fwd_end(Bry__hdr_rhs_bgn); + if (level != parser.Read_byte_as_a7_int()) throw parser.Fail("levels doesn't match", Byte_.To_str(level)); + rng_end = parser.Chk(Byte_ascii.Angle_end); + + Parse_exec(bfr, src, hook_bgn, rng_bgn, rng_end, level, anchor_bgn, anchor_end, display_bgn, display_end); + } + public abstract void Parse_exec(Bry_bfr bfr, byte[] src, int hook_bgn, int rng_bgn, int rng_end, byte level, int anchor_bgn, int anchor_end, int display_bgn, int display_end); + private static final byte[] Bry__hdr_lhs_bgn = Bry_.new_a7(""), Bry__hdr_rhs_bgn = Bry_.new_a7(". +*/ +package gplx.xowa.htmls.core.wkrs.hdrs; 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.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.core.parsers.*; +public class Xoh_hdr_parse_tst { + private final Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Test public void Basic() { + fxt.Init__hdr(0, 54, Html_tag_.Id__h2, "A_b", "A b", false); + fxt.Test__parse("

    A b

    "); + } +} 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 new file mode 100644 index 000000000..acd88d8fa --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_dict_.java @@ -0,0 +1,45 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.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 + ; + public static final byte[] + Html__atr__0 = Bry_.new_a7("\" rel=\"nofollow\" class=\"external ") + , Html__class__free = Bry_.new_a7("free") + , Html__class__auto = Bry_.new_a7("autonumber") + , Html__class__text = Bry_.new_a7("text") + , Html__rhs_end = Bry_.new_a7("\">") + ; + 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) + .Add_bry_byte(Html__class__text, Type__text) + ; + public static byte[] To_html_class(byte tid) { + switch (tid) { + case Xoh_lnke_dict_.Type__free: return Xoh_lnke_dict_.Html__class__free; + case Xoh_lnke_dict_.Type__auto: return Xoh_lnke_dict_.Html__class__auto; + case Xoh_lnke_dict_.Type__text: return Xoh_lnke_dict_.Html__class__text; + default: throw Err_.new_unhandled(tid); + } + } +} diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java similarity index 53% rename from 400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java index af6b48922..d88e9de90 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java @@ -15,55 +15,48 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.net.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; -import gplx.xowa.apps.urls.*; -public class Xoh_lnke_wtr { -// private Xoae_app app; - public Xoh_lnke_wtr(Xowe_wiki wiki) {}// this.app = wiki.Appe();} - public void Write_all(Bry_bfr bfr, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_ctx ctx, byte[] src, Xop_lnke_tkn lnke) { - int lnke_bgn = lnke.Lnke_bgn(), lnke_end = lnke.Lnke_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; - if (!hctx.Mode_is_alt()) { // write href, unless mode is alt +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.btries.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.urls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkes.*; +import gplx.xowa.htmls.core.htmls.*; +public class Xoh_lnke_html { + public void Write_html(Bry_bfr bfr, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_ctx ctx, byte[] src, Xop_lnke_tkn lnke) { + int href_bgn = lnke.Lnke_href_bgn(), href_end = lnke.Lnke_href_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; + byte lnke_type = Calc_type(lnke); + if (!hctx.Mode_is_alt()) { // do not write "" if mode is alt if (hctx.Mode_is_hdump()) { - if (lnke.Lnke_typ() == Xop_lnke_tkn.Lnke_typ_text) - bfr.Add_str_a7(" 'http://a.org' + bfr.Add_mid(src, href_bgn, href_end); + else // EX: '[http://a.org]' -> '[1]' bfr.Add_byte(Byte_ascii.Brack_bgn).Add_int_variable(ctx.Cur_page().Html_data().Lnke_autonumber_next()).Add_byte(Byte_ascii.Brack_end); } - else { // text available + else { // EX: '[http://a.org a]' -> 'a' for (int i = 0; i < subs_len; i++) html_wtr.Write_tkn(bfr, ctx, hctx, src, lnke, i, lnke.Subs_get(i)); } } private static final byte[] - A_lhs_end_external = Bry_.new_a7("\" class=\"external text\" rel=\"nofollow\">") - , A_lhs_end_internal = Bry_.new_a7("\">") + Bry__href = Bry_.new_a7("' href=\"") ; + private static byte Calc_type(Xop_lnke_tkn lnke) { + if (lnke.Lnke_typ() == Xop_lnke_tkn.Lnke_typ_text) + return Xoh_lnke_dict_.Type__free; + else + return lnke.Subs_len() == 0 ? Xoh_lnke_dict_.Type__auto : Xoh_lnke_dict_.Type__text; + } } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__basic__tst.java similarity index 53% rename from 400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__basic__tst.java index fc27a241d..1c4a0eac8 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__basic__tst.java @@ -15,21 +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.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +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 org.junit.*; -public class Xoh_lnke_wtr_tst { - private Xop_fxt fxt = new Xop_fxt(); - @After public void term() {fxt.Init_para_n_(); fxt.Reset();} - @Test public void Basic() {fxt.Test_parse_page_wiki_str("[irc://a]" , "[1]");} - @Test public void Autonumber() {fxt.Test_parse_page_wiki_str("[irc://a] [irc://b]" , "[1] [2]");} - @Test public void Caption() {fxt.Test_parse_page_wiki_str("[irc://a b]" , "b");} - @Test public void Caption_wtxt() {fxt.Test_parse_page_wiki_str("[irc://a ''b'']" , "b");} +public class Xoh_lnke_html__basic__tst { + @After public void term() {fxt.Init_para_n_(); fxt.Reset();} private final Xop_fxt fxt = new Xop_fxt(); + @Test public void Auto__one() {fxt.Test_parse_page_wiki_str("[https://a]" , "[1]");} + @Test public void Auto__many() {fxt.Test_parse_page_wiki_str("[https://a] [https://b]" , "[1] [2]");} + @Test public void Text__basic() {fxt.Test_parse_page_wiki_str("[https://a b]" , "b");} + @Test public void Text__wtxt() {fxt.Test_parse_page_wiki_str("[https://a ''b'']" , "b");} @Test public void Xowa_protocol() { String img = ""; fxt.Wiki().Sys_cfg().Xowa_proto_enabled_(true); fxt.Test_parse_page_wiki_str("[xowa-cmd:\"a\" z]" , "z" + img + ""); fxt.Test_parse_page_wiki_str("[xowa-cmd:\"a.b('c_d');\" z]" , "z" + img + ""); - fxt.Test_parse_page_wiki_str("[xowa-cmd:*\"a\"b*c\"* z]" , "z" + img + ""); + fxt.Test_parse_page_wiki_str("[xowa-cmd:*\"a\"b*c\"* z]" , "z" + img + ""); fxt.Wiki().Sys_cfg().Xowa_proto_enabled_(false); fxt.Test_parse_page_wiki_str("[xowa-cmd:\"a\" b]" , "[xowa-cmd:"a" b]"); // protocol is disabled: literalize String (i.e.: don't make it an anchor) } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__hdump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__hdump__tst.java new file mode 100644 index 000000000..922261f4a --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html__hdump__tst.java @@ -0,0 +1,30 @@ +/* +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 org.junit.*; import gplx.xowa.htmls.core.makes.tests.*; +public class Xoh_lnke_html__hdump__tst { + private final Xoh_make_fxt fxt = new Xoh_make_fxt(); + public static final String + Html__free = "http://a.org" + , Html__auto = "[1]" + , Html__text = "a" + ; + @Test public void Free() {fxt.Test__html("http://a.org" , Html__free);} + @Test public void Auto() {fxt.Test__html("[http://a.org]" , Html__auto);} + @Test public void Text() {fxt.Test__html("[http://a.org a]" , Html__text);} +} 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 new file mode 100644 index 000000000..deade5e8b --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_hzip.java @@ -0,0 +1,79 @@ +/* +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.xowa.wikis.ttls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.hzips.stats.*; +public class Xoh_lnke_hzip implements Xoh_hzip_wkr { + public String Key() {return Xoh_hzip_dict_.Key__lnke;} + public void Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) { + Parse(bfr, stat_itm, parser, src, hook_bgn); + } + public void Parse(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) {// EX: 'http://a.org' + // NOTE: not serializing caption b/c (a) caption not repeated as title and (b) finding can be tricky, especially with tidy; EX: "[https://a.org b [[A]] c]"; note that lnkis can't be nested; EX: "[https://a.org b [https://b.org] c]" + int rng_bgn = hook_bgn - 2; // -2 to skip "[123]" + rng_end = parser.Fwd_end(Html_tag_.A_rhs); + } + break; + } + Encode_exec(bfr, src, rng_bgn, rng_end, lnke_type, href_bgn, href_end, lnke_id); + } + public void Encode_exec(Bry_bfr bfr, byte[] src, int rng_bgn, int rng_end, byte lnke_type, int href_bgn, int href_end, int lnke_id) { + bfr.Del_by(2); // delete ". +*/ +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 org.junit.*; import gplx.xowa.htmls.core.hzips.tests.*; +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); + } + @Test public void Auto() { + fxt.Test__bicode("~#2http://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); + } + @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]" + , "[123]" + ); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse.java new file mode 100644 index 000000000..3975bafe0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse.java @@ -0,0 +1,48 @@ +/* +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.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.htmls.core.parsers.*; +public class Xoh_lnke_parse { + public int Parse(Xoh_wkr wkr, Html_tag_rdr rdr, byte[] src, Html_tag lnke) { // [1] + int tag_bgn = lnke.Src_bgn(), tag_end = lnke.Src_end(); + byte[] href = lnke.Atrs__get_by(Html_atr_.Bry__href).Val(); + byte[] cls = lnke.Atrs__get_by(Html_atr_.Bry__class).Val(); + byte lnke_type = Parse_lnke_type(cls, 0, cls.length); if (lnke_type == Byte_ascii.Max_7_bit) return tag_end; + int autonumber_id = 0; + switch (lnke_type) { + case Xoh_lnke_dict_.Type__free: + tag_end = 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; + case Xoh_lnke_dict_.Type__auto: + if (rdr.Read_and_move(Byte_ascii.Brack_bgn)) { // HTML tidy can reparent lnkes in strange ways; DATE:2015-08-25 + autonumber_id = rdr.Read_int_to(Byte_ascii.Brack_end, 0); // extract int; EX: "[123]" + tag_end = rdr.Tag__move_fwd_tail(Html_tag_.Id__a).Src_end(); // find ''; note that auto is not recursive; EX: "[https://a.org]" + } + break; + } + wkr.On_lnke(tag_bgn, tag_end, lnke_type, autonumber_id, href); + return tag_end; + } + private static byte Parse_lnke_type(byte[] src, int cls_bgn, int cls_end) { // "external autonumber" + int space = Bry_find_.Find_fwd(src, Byte_ascii.Space, cls_bgn, cls_end); + return Xoh_lnke_dict_.Hash.Get_as_byte_or(src, space + 1, cls_end, Byte_ascii.Max_7_bit); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse_tst.java new file mode 100644 index 000000000..1fb9c0234 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_parse_tst.java @@ -0,0 +1,26 @@ +/* +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 org.junit.*; import gplx.xowa.htmls.core.parsers.*; +public class Xoh_lnke_parse_tst { + private final Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Test public void Free() { + fxt.Init__lnke(0, 96, Xoh_lnke_dict_.Type__free, 0, "http://a.org"); + fxt.Test__parse(Xoh_lnke_html__hdump__tst.Html__free); + } +} 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 new file mode 100644 index 000000000..0a3bc2d21 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_dict_.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.lnkis; 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.parsers.*; +public class Xoh_lnki_dict_ { + public static final byte // SERIALIZED + Type__caption_n = Byte_ascii.Num_0 + , Type__caption_y = Byte_ascii.Num_1 + , Type__same = Xoh_ttl_matcher.Tid__same // EX: [[A]] + , Type__diff = Xoh_ttl_matcher.Tid__diff // EX: [[A|b]] + , Type__trail = Xoh_ttl_matcher.Tid__trail // EX: [[A|b]] + ; +} 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 new file mode 100644 index 000000000..d27b0e9d7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_html__hdump__tst.java @@ -0,0 +1,36 @@ +/* +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.*; 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" + ; + @Before public void init() {fxt.Clear();} + @Test public void Same() {fxt.Test__html("[[A]]" , Html__same);} + @Test public void Diff() {fxt.Test__html("[[A|b]]" , Html__diff);} + @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); + } +} 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 new file mode 100644 index 000000000..69983b12c --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java @@ -0,0 +1,151 @@ +/* +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.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.core.encoders.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.htmls.core.hzips.stats.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.lnkes.*; +public class Xoh_lnki_hzip implements Xoh_hzip_wkr { + private Xow_ttl_parser ttl_parser; + public void Ttl_parser_(Xow_ttl_parser ttl_parser) {this.ttl_parser = ttl_parser;} + public String Key() {return Xoh_hzip_dict_.Key__lnki;} + public void Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) {Parse(bfr, stat_itm, parser, src, hook_bgn);} + public int Parse(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) { + int rng_bgn = hook_bgn - 2; // -2 to skip " rng_end) return Xoh_hzip_dict_.Unhandled; // TODO: handle "jumping" over one " 0; + if ( lnki_type == Xoh_lnki_dict_.Type__caption_n // lnki_text_n; EX: [[A]] not [[A|A1]] + && !site_exists // not xwiki; EX: [[wikt:A]] + && (page_end - page_bgn) != (caption_end - caption_bgn) // note that in 99% of lnki_text_n cases, html_text_len == text_len; however, tidy sometimes relocates html inside html_text; PAGE:en.w:Abyssal_plain; EX:[[A]]; DATE:2015-06-02 + ) { + lnki_type = Xoh_lnki_dict_.Type__caption_y; // change to lnki_text_y + parser.Pos_(caption_bgn); + } + Parse_done(bfr, parser, null, ttl_parser, stat_itm, src, lnki_type, rng_bgn, rng_end, site_exists, site_bgn, site_end, page_bgn, page_end, uid, title_bgn, title_end, caption_bgn, caption_end); + return parser.Pos(); + } + public void Parse_done(Bry_bfr bfr, Bry_parser parser, Bry_rdr rdr, Xow_ttl_parser ttl_parser, Hzip_stat_itm stat_itm, byte[] src, byte lnki_type, int rng_bgn, int rng_end, boolean site_exists, int site_bgn, int site_end, int page_bgn, int page_end, int uid, int title_bgn, int title_end, int caption_bgn, int caption_end) { + Xoa_ttl ttl = ttl_parser.Ttl_parse(Bry_.Mid(src, page_bgn, page_end)); if (ttl == null) throw parser.Fail("lnki.decode:invalid ttl", String_.new_u8(src, page_bgn, page_end)); + bfr.Add(Xoh_hzip_dict_.Bry__lnki); + bfr.Add_byte(lnki_type); + Xoh_hzip_int_.Encode(1, bfr, ttl.Ns().Id()); + Xoh_hzip_int_.Encode(1, bfr, uid); + if (site_exists) + bfr.Add_byte(Xoh_hzip_dict_.Escape).Add_mid(src, site_bgn, site_end).Add_byte(Xoh_hzip_dict_.Escape); + if (lnki_type == Xoh_lnki_dict_.Type__caption_y) { + bfr.Add(ttl.Page_db()); + bfr.Add_byte(Xoh_hzip_dict_.Escape); + stat_itm.Lnki_text_y_add(); + } + else { + if (!ttl.Ns().Id_main()) // 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.Page_db()); + else // main ns should write html_text; handles [[a]] which has a + bfr.Add_mid(src, caption_bgn, caption_end); + bfr.Add_byte(Xoh_hzip_dict_.Escape); + stat_itm.Lnki_text_n_add(); + } + } + public int Decode(Bry_bfr bfr, Bry_parser parser, byte[] src, int hook_bgn) { + // parse vars + byte lnki_type = parser.Read_byte(); + int ns_id = parser.Read_int_by_base85(1); + int uid = parser.Read_int_by_base85(1); + int site_bgn = -1, site_end = -1; + if (parser.Is(Xoh_hzip_dict_.Escape)) { + site_bgn = parser.Pos(); + site_end = parser.Fwd_bgn(Xoh_hzip_dict_.Escape); + } + boolean site_exists = site_end - site_bgn > 0; + int page_bgn = parser.Pos(); + int page_end = parser.Fwd_bgn(Xoh_hzip_dict_.Escape); + byte[] page_bry = Bry_.Mid(src, page_bgn, page_end); + Xoa_ttl ttl = ttl_parser.Ttl_parse(ns_id, page_bry); if (ttl == null) throw parser.Fail("invalid ttl", String_.new_u8(page_bry)); // TODO: parse title based on site + byte[] ttl__full_db = ttl.Full_db(); + + // gen html + bfr.Add(Xoh_html_dict_.Hook__lnki); + bfr.Add_byte(lnki_type); + bfr.Add_str_a7("' href=\""); + if (site_exists) bfr.Add_str_a7("/site/").Add_mid(src, site_bgn, site_end); + bfr.Add(Xoh_href_.Bry__wiki); // "/wiki/" + bfr.Add(Html_utl.Escape_html_as_bry(ttl__full_db)); + bfr.Add_str_a7("\" id=\"").Add_str_a7(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix).Add_int_variable(uid); + bfr.Add_str_a7("\" title=\""); + if (lnki_type == Xoh_lnki_dict_.Type__caption_n) { + byte[] title_bry = site_exists ? ttl.Page_db() : ttl__full_db; // for xwiki, use page, not full alias; EX: "wikt:A" -> "A" x> "wikt:A" + bfr.Add(Html_utl.Escape_html_as_bry(title_bry)).Add_str_a7("\">"); + if (ns_id != 0) page_bry = ttl.Full_db(); + bfr.Add(page_bry); + bfr.Add(Html_tag_.A_rhs); // "" + } + else { + bfr.Add(Html_utl.Escape_html_as_bry(page_bry)); + bfr.Add_str_a7("\">"); + } + return parser.Pos(); + } + private static final byte[] + Bry__href = Bry_.new_a7(" href=\"") + , Bry__id = Bry_.new_a7(" id=\"xowa_lnki_") + , Bry__title = Bry_.new_a7(" title=\"") + ; + private static final byte Href_tid_wiki = 1, Href_tid_site = 2; + private static final Btrie_fast_mgr btrie_href = Btrie_fast_mgr.cs().Add_bry_byte(Xoh_href_.Bry__wiki, Href_tid_wiki).Add_bry_byte(Xoh_href_.Bry__site, Href_tid_site); +// , Find_img_xatrs = Bry_.new_a7("xatrs='") +// private static int[] Save_img_full_pow = new int[] {0, 1, 2}; +// private int Save_img_full(Bry_bfr bfr, Bry_rdr rdr, Hzip_stat_itm stat_itm, byte[] src, int src_len, int bgn, int pos) { +// bfr.Add(Xoh_hzip_dict_.Bry__img_full); +// int xatrs_bgn = Bry_find_.Move_fwd(src, Find_img_xatrs, pos, src_len); if (xatrs_bgn == Bry_find_.Not_found) return rdr.Warn("a.img_xatrs_missing", bgn, pos); +// bry_rdr.Init(src, xatrs_bgn); +// int a_cls = bry_rdr.Read_int_to_pipe(); +// int a_rel = bry_rdr.Read_int_to_pipe(); +// int img_rel = bry_rdr.Read_int_to_pipe(); +// byte meta = (byte)Bit_.Shift_lhs_to_int(Save_img_full_pow, a_cls, a_rel, img_rel); +// bfr.Add_byte(meta); // meta +// Xoh_hzip_int_.Encode(bfr, bry_rdr.Read_int_to_pipe()); // uid +// bfr.Add(bry_rdr.Read_bry_to_pipe()).Add_byte_pipe(); // img_cls_other +// bfr.Add(bry_rdr.Read_bry_to_apos()); // alt +// bfr.Add_byte(Xoh_hzip_dict_.Escape); +// return bry_rdr.Pos() + 2; // +2=/> +// } +} 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 new file mode 100644 index 000000000..cfc32e579 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip_tst.java @@ -0,0 +1,60 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.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.*; import gplx.xowa.htmls.core.hzips.tests.*; +public class Xoh_lnki_hzip_tst { + private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + @Test public void Noop() { + String html = "A"; + fxt.Test__bicode(html, html); + } + @Test public void Lnki__basic() { + fxt.Test__bicode("~$0!#A~", Xoh_lnki_html__hdump__tst.Html__same); + } + @Test public void Lnki__alt_case() { + fxt.Test__bicode("~$0!#a~", "a"); + } + @Test public void Lnki__ns() { + fxt.Test__bicode("~$0+#A~", "Template:A"); + } +// @Test public void Lnki__apos() { +// fxt.Test__bicode("~$0+#A'b~", "Template:A'b"); +// } + @Test public void Lnki__xwiki() { + fxt.Parser_fxt().Init_xwiki_add_wiki_and_user_("wikt", "en.wiktionary.org"); + fxt.Test__bicode("~$0!#~en.wiktionary.org~wikt:A~", Xoh_lnki_html__hdump__tst.Html__xwiki); + } + @Test public void Caption__basic() { + fxt.Test__bicode("~$1!#A~b", Xoh_lnki_html__hdump__tst.Html__diff); + } + @Test public void Caption__nest() { + fxt.Test__bicode("~$1!#A~~$1!#C~C1D", "C1D"); + } +// @Test public void Caption__multiple() { // PURPOSE: if id is missing from 1st anchor, do not get from second +// String hzip = Xoh_hzip_fxt.Escape("$0!#A"); +// String html = "AB"; +// fxt.Test__encode(hzip, html); +//// fxt.Test_save(brys, "AB"); +//// fxt.Test_load(brys, "AB"); +// } + @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_parse.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse.java new file mode 100644 index 000000000..db5353ef9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse.java @@ -0,0 +1,60 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.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.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.ttls.*; import gplx.xowa.htmls.core.parsers.*; +public class Xoh_lnki_parse { + public int Parse(Xoh_wkr wkr, Html_tag_rdr rdr, byte[] src, Html_tag lnki, Xow_ttl_parser ttl_parser) {// b + int tag_bgn = lnki.Src_bgn(), tag_end = lnki.Src_end(); + Html_atr href_atr = lnki.Atrs__get_by(Html_atr_.Bry__href); + int href_pos = href_atr.Val_bgn(); + int site_bgn = href_pos + Xoh_href_.Len__site, site_end = -1; + if (href_hash.Get_as_int_or(src, href_pos, site_bgn, -1) == Href_tid__site) // site; EX:"/site/en.wiktionary.org/" + site_end = href_pos = Bry_find_.Find_fwd(src, Byte_ascii.Slash, site_bgn); + else + site_bgn = -1; + int page_bgn = href_pos + Xoh_href_.Len__wiki, page_end = href_atr.Val_end(); + if (href_hash.Get_as_int_or(src, href_pos, page_bgn, -1) != Href_tid__wiki) // site; EX:"/site/en.wiktionary.org/" + throw Err_.new_("Xoh_parser", "invalid url", "url", String_.new_u8(src, href_pos, page_bgn)); +// Html_atr title_atr = lnki.Atrs__get_by(Html_atr_.Bry__title); +// int title_bgn = title_atr.Val_bgn(), title_end = title_atr.Val_end(); + Html_tag lnki_tail = rdr.Tag__move_fwd_tail(Html_tag_.Id__a); + int capt_bgn = tag_end; int capt_end = lnki_tail.Src_bgn(); + tag_end = lnki_tail.Src_end(); + byte lnki_type = ttl_matcher.Match(ttl_parser, src, page_bgn, page_end, src, capt_bgn, capt_end); + byte[] page_bry = null, capt_bry = null, trail_bry = null; + switch (lnki_type) { + case Xoh_ttl_matcher.Tid__diff: + page_bry = Bry_.Mid(src, page_bgn, page_end); + capt_bry = Bry_.Mid(src, capt_bgn, capt_end); + break; + case Xoh_ttl_matcher.Tid__same: + capt_bry = Bry_.Mid(src, capt_bgn, capt_end); + break; + case Xoh_ttl_matcher.Tid__trail: + capt_bry = Bry_.Mid(src, capt_bgn, ttl_matcher.Trail_bgn()); + trail_bry = Bry_.Mid(src, ttl_matcher.Trail_bgn(), capt_end); + break; + } + wkr.On_lnki(tag_bgn, tag_end, lnki_type, site_bgn, site_end, page_bry, capt_bry, trail_bry); + return tag_end; + } + private static final int Href_tid__wiki = 1, Href_tid__site = 2; + private static final Hash_adp_bry href_hash = Hash_adp_bry.ci_a7().Add_bry_int(Xoh_href_.Bry__wiki, Href_tid__wiki).Add_bry_int(Xoh_href_.Bry__site, Href_tid__site); + private final Xoh_ttl_matcher ttl_matcher = new Xoh_ttl_matcher(); +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse_tst.java new file mode 100644 index 000000000..bad85eb2e --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_parse_tst.java @@ -0,0 +1,38 @@ +/* +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.*; import gplx.xowa.htmls.core.parsers.*; +public class Xoh_lnki_parse_tst { + private final Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Test public void Same() { + fxt.Init__lnki(0, 70, Xoh_lnki_dict_.Type__same, -1, -1, "", "A", ""); + fxt.Test__parse(Xoh_lnki_html__hdump__tst.Html__same); + } + @Test public void Diff() { + fxt.Init__lnki(0, 70, Xoh_lnki_dict_.Type__diff, -1, -1, "A", "b", ""); + fxt.Test__parse(Xoh_lnki_html__hdump__tst.Html__diff); + } + @Test public void Trail() { + fxt.Init__lnki(0, 71, Xoh_lnki_dict_.Type__trail, -1, -1, "", "A", "b"); + fxt.Test__parse(Xoh_lnki_html__hdump__tst.Html__trail); + } + @Test public void Recurse() { +// fxt.Init__lnki(0, 69, Xoh_lnki_dict_.Type__caption_n, -1, -1, "A"); +// fxt.Test__parse("Abc"); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core.java similarity index 79% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core.java index ea85cf88e..5c37e3a60 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.*; public interface Xoh_arg_img_core extends Bry_fmtr_arg { Xoh_arg_img_core Init(int uid, byte[] src, int w, int h); } diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__basic.java similarity index 83% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__basic.java index 1959c3ac0..8e64bba4d 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__basic.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.*; public class Xoh_arg_img_core__basic implements Xoh_arg_img_core { private byte[] src; private int w, h; public Xoh_arg_img_core Init(int uid, byte[] src, int w, int h) {this.src = src; this.w = w; this.h = h; return this;} diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__hdump.java similarity index 77% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__hdump.java index 0940b3c07..a24de7ed0 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__hdump.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.*; public class Xoh_arg_img_core__hdump implements Xoh_arg_img_core { private int uid; public Xoh_arg_img_core Init(int uid, byte[] img_src, int img_w, int img_h) { @@ -24,7 +24,7 @@ public class Xoh_arg_img_core__hdump implements Xoh_arg_img_core { } public void Fmt__do(Bry_bfr bfr) { bfr.Add_byte_space(); - bfr.Add(gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Key_img); + bfr.Add(gplx.xowa.htmls.core.makes.Xoh_make_trie_.Bry__img); bfr.Add_int_variable(uid); bfr.Add_byte_apos(); } diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java similarity index 94% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java index 6ab4a66b9..c825b642f 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java @@ -15,8 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; +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.xowa.files.*; import gplx.xowa.htmls.core.makes.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { private final Xoh_arg_img_core arg_img_core; diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java similarity index 85% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java index 2e8f87a60..e350d76bd 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java @@ -15,9 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.langs.htmls.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.core.makes.*; public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { private Bry_bfr tmp_bfr = Bry_bfr.reset_(128); @gplx.Internal @Override protected Xoh_arg_img_core New_arg_img_core() {return new Xoh_arg_img_core__hdump();} @@ -37,15 +37,15 @@ public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { // tmp_bfr.Add_str_a7("'/>"); // } @Override public void Html_thumb_core(Bry_bfr bfr, int uid, byte[] div1_halign, int div2_width, byte[] div2_content) { - tmp_bfr.Add(Xohd_abrv_.Key_img_style); + tmp_bfr.Add(Xoh_make_trie_.Bry__img_style); tmp_bfr.Add_int_variable(uid); tmp_bfr.Add_byte_apos(); 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, Xohd_abrv_.Key_file_mgnf, uid);} - @Override public void Html_thumb_part_info(Bry_bfr bfr, int uid, byte[] a_href, byte[] img_src) {Write_xnde(bfr, Xohd_abrv_.Key_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, Xohd_abrv_.Key_file_play, uid);} + @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);} public static void Write_xnde(Bry_bfr bfr, byte[] key, int uid) { bfr.Add(key); bfr.Add_int_variable(uid); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_img_wkr.java similarity index 78% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_img_wkr.java index 22e805ca8..2731df181 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_img_wkr.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.xowa.files.*; +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.xowa.files.*; import gplx.xowa.htmls.core.htmls.*; public interface Xoh_file_img_wkr { void Html_full_img(Bry_bfr tmp_bfr, Xoh_wtr_ctx hctx, Xoae_page page, Xof_file_itm xfer_itm, int uid , byte[] a_href, byte a_cls, byte a_rel, byte[] a_title, byte[] a_xowa_title diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java index 7b5f14f1c..e482690a8 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java @@ -15,12 +15,13 @@ 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.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.primitives.*; import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.wikis.tdbs.metas.*; +import gplx.xowa.htmls.core.htmls.*; public class Xoh_file_mgr { private final Xowe_wiki wiki; public Xoh_file_mgr(Xowe_wiki wiki, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr) { diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java similarity index 96% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java index b400d55bc..1673fcc9f 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java @@ -15,11 +15,12 @@ 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.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.langs.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.files.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; public class Xoh_file_wtr__basic { private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr; private final Bry_bfr_mkr bfr_mkr; private final Bry_bfr scratch_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); @@ -84,7 +85,7 @@ public class Xoh_file_wtr__basic { 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); } if (hctx.Mode_is_hdump() && Xof_html_elem.Tid_is_file(xfer_itm.Html_elem_tid())) { - page.Hdump_data().Imgs_add_img(new Xohd_data_itm__img(), xfer_itm, Xohd_data_itm__gallery_itm.Tid_basic); + page.Hdump_data().Imgs_add_img(new Xohd_img_itm__img(), xfer_itm, Xohd_img_itm__gallery_itm.Tid_basic); } } private void Write_file_ns_media(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, byte[] img_orig_src) { diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_audio_video_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_audio_video_tst.java index bfa66f145..576f428d0 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_audio_video_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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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 org.junit.*; import gplx.xowa.files.*; public class Xoh_file_wtr_audio_video_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_basic_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_basic_tst.java index ec7c8eb96..5a923a60d 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_basic_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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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 org.junit.*; public class Xoh_file_wtr_basic_tst { private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_media_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_media_tst.java index 4be80813a..93d174c88 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr_media_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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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 org.junit.*; public class Xoh_file_wtr_media_tst { private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts.java similarity index 90% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts.java index 2ff438dfb..36245f314 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.*; public class Xoh_lnki_consts { public static final byte Tid_a_cls_none = 0 , Tid_a_cls_image = 1 diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts_tst.java similarity index 86% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts_tst.java index 80ef36f06..b08a9ff3e 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_consts_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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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 org.junit.*; public class Xoh_lnki_consts_tst { private Xoh_lnki_consts_fxt fxt = new Xoh_lnki_consts_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java index df5019000..f60d37f7f 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java @@ -15,8 +15,9 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.xowa.parsers.*; +import gplx.xowa.htmls.core.htmls.*; public class Xoh_lnki_text_fmtr implements Bry_fmtr_arg { // formats alt or caption private final Bry_bfr_mkr bfr_mkr; private final Xoh_html_wtr html_wtr; private Xop_ctx ctx; private Xoh_wtr_ctx hctx; private byte[] src; private Xop_tkn_itm text_tkn; private Bry_fmtr fmtr; diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr.java index d7a0cdc9b..73a710be9 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr.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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; public class Xoh_lnki_title_fmtr implements Bry_fmtr_arg { public Xoh_lnki_title_fmtr Set(byte[] src, Xop_tkn_itm tkn) {this.src = src; this.tkn = tkn; return this;} diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java similarity index 87% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java index 4b67248d9..26a7ea733 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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 org.junit.*; import gplx.xowa.parsers.*; public class Xoh_lnki_title_fmtr_tst { @Before public void init() {fxt.Clear();} private Xoh_lnki_title_fmtr_fxt fxt = new Xoh_lnki_title_fmtr_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java index 784304254..03e0eba51 100644 --- a/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java @@ -15,10 +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.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.langs.htmls.*; import gplx.xowa.files.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.htmls.hzips.*; +import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xoh_lnki_wtr { private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private Xop_ctx ctx; @@ -99,7 +100,7 @@ public class Xoh_lnki_wtr { Write_caption(bfr, ctx, hctx, src, lnki, ttl_bry, true, caption_wkr); else { if (hctx.Mode_is_hdump()) - wiki.Html_mgr().Hzip_mgr().Itm__anchor().Html_plain(bfr, lnki); + gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_lnki_wtr.Html_plain(bfr, lnki); else bfr.Add(Xoh_consts.A_bgn); // '' } + bfr.Add(Xoh_consts.__end_quote); // '">' if (lnki_ttl.Anch_bgn() != -1 && !lnki_ttl.Ns().Id_main()) { // anchor exists and not main_ns; anchor must be manually added b/c Xoa_ttl does not handle # for non main-ns byte[] anch_txt = lnki_ttl.Anch_txt(); byte anch_spr @@ -173,11 +169,19 @@ public class Xoh_lnki_wtr { } return false; } + public static void Html_plain(Bry_bfr bfr, Xop_lnki_tkn lnki) { + bfr.Add_str_a7 + ( lnki.Caption_exists() // caption exists; EX: [[A|b]] + || lnki.Tail_bgn() != -1 // trailing chars; EX: [[A]]b + ? ". */ -package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +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.*; public class Xoh_redlink_utl { public static final byte[] Cls_bry = Bry_.new_a7("class='new'"); public static final String New_str = "new"; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip.java new file mode 100644 index 000000000..90ebed3f3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip.java @@ -0,0 +1,36 @@ +/* +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.spaces; 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.ttls.*; +import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.hzips.stats.*; +public class Xoh_space_hzip implements Xoh_hzip_wkr { + public String Key() {return Xoh_hzip_dict_.Key__space;} + public void Encode(Bry_bfr bfr, Hzip_stat_itm stat_itm, Bry_parser parser, byte[] src, int hook_bgn) {// " " -> 27,9,4 + int space_len = parser.Fwd_while(Byte_ascii.Space) - hook_bgn; + + stat_itm.Space_add(space_len); + bfr.Add(Xoh_hzip_dict_.Bry__space); + Xoh_hzip_int_.Encode(1, bfr, space_len); + } + public int Decode(Bry_bfr bfr, Bry_parser parser, byte[] src, int hook_bgn) { + int space_len = parser.Read_int_by_base85(1); + + bfr.Add_byte_repeat(Byte_ascii.Space, space_len); + return parser.Pos(); + } +} 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 new file mode 100644 index 000000000..ccb782c20 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_hzip_tst.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.spaces; 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.tests.*; +public class Xoh_space_hzip_tst { + private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt(); + @Test public void Len__8() { + fxt.Test__bicode("~!)", " "); + } + @Test public void Len__85() { + fxt.Test__bicode("~!{\"!", String_.Repeat(" ", 85)); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse.java new file mode 100644 index 000000000..3ba2f9243 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse.java @@ -0,0 +1,35 @@ +/* +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.spaces; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.langs.htmls.*; import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.core.parsers.*; +import gplx.xowa.htmls.core.hzips.*; +public class Xoh_space_parse implements Html_doc_wkr { + private final Xoh_wkr wkr; + private byte[] src; private int src_end; + public Xoh_space_parse(Xoh_wkr wkr) {this.wkr = wkr;} + public byte[] Hook() {return Hook_bry;} + public void Init(byte[] src, int src_bgn, int src_end) {this.src = src; this.src_end = src_end;} + public int Parse(int pos) { + int rng_end = Bry_find_.Find_fwd_while(src, pos + Hook_len, src_end, Byte_ascii.Space); + + wkr.On_space(pos, rng_end); + return rng_end; + } + private static final byte[] Hook_bry = Bry_.new_a7(" "); + private static final int Hook_len = Hook_bry.length; +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse_tst.java new file mode 100644 index 000000000..96d591d7a --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/spaces/Xoh_space_parse_tst.java @@ -0,0 +1,26 @@ +/* +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.spaces; 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.parsers.*; +public class Xoh_space_parse_tst { + private final Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Test public void Basic() { + fxt.Init__space(0, 6); + fxt.Test__parse(" "); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse.java new file mode 100644 index 000000000..5084b7d0e --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse.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.txts; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; +import gplx.langs.htmls.parsers.*; import gplx.xowa.htmls.core.parsers.*; +public class Xoh_txt_parse implements Html_txt_wkr { + private final Xoh_wkr wkr; + public Xoh_txt_parse(Xoh_wkr wkr) {this.wkr = wkr;} + public void Init(byte[] src, int src_bgn, int src_end) {} + public void Parse(int rng_bgn, int rng_end) { + wkr.On_txt(rng_bgn, rng_end); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse_tst.java new file mode 100644 index 000000000..c33d334f8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/txts/Xoh_txt_parse_tst.java @@ -0,0 +1,26 @@ +/* +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.txts; 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.parsers.*; +public class Xoh_txt_parse_tst { + private final Xoh_parser_fxt fxt = new Xoh_parser_fxt(); + @Test public void Basic() { + fxt.Init__txt(0, 3); + fxt.Test__parse("abc"); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java index e5026dd80..08931eea4 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_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.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xowd_css_core_mgr_tst { @Before public void init() {fxt.Clear();} private Xowd_css_core_mgr_fxt fxt = new Xowd_css_core_mgr_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java index 8b7ab64c3..4657b08ee 100644 --- a/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java +++ b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java @@ -45,27 +45,27 @@ public class Xoh_dom_ { return null; } public static boolean Select_tag(Xoh_find rv, byte[] src, byte[] nde, byte[] key, int rng_bgn, int rng_end) { - int tag_bgn = Bry_find_.Find_fwd(src, nde, rng_bgn, rng_end); if (tag_bgn == Bry_.NotFound) return false; - int tag_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, tag_bgn, rng_end); if (tag_end == Bry_.NotFound) return false; - int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false; + int tag_bgn = Bry_find_.Find_fwd(src, nde, rng_bgn, rng_end); if (tag_bgn == Bry_find_.Not_found) return false; + int tag_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, tag_bgn, rng_end); if (tag_end == Bry_find_.Not_found) return false; + int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_find_.Not_found) return false; int key_end = key_bgn + key.length; - int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false; + int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_find_.Not_found) return false; ++val_bgn; - int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false; + int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_find_.Not_found) return false; rv.Set_all(tag_bgn, tag_end, key_bgn, key_end, val_bgn, val_end); return true; } public static boolean Find_atr_val_in_tag(Xoh_find rv, byte[] src, byte[] key, int tag_bgn, int tag_end) { - int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false; + int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_find_.Not_found) return false; int key_end = key_bgn + key.length; - int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false; + int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_find_.Not_found) return false; ++val_bgn; - int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false; + int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_find_.Not_found) return false; rv.Set_all(tag_bgn, tag_end, key_bgn, key_end, val_bgn, val_end); return true; } public static String Title_by_href(byte[] href, byte[] html_src) { - byte[] xowa_title = Xoh_dom_.Query_val_by_where(dom_find, html_src, Html_tag_.A_name_bry, Html_atr_.Href_bry, href, gplx.xowa.htmls.Xoh_consts.Atr_xowa_title_bry, 0); + byte[] xowa_title = Xoh_dom_.Query_val_by_where(dom_find, html_src, Html_tag_.A_name_bry, Html_atr_.Bry__href, href, gplx.xowa.htmls.Xoh_consts.Atr_xowa_title_bry, 0); return String_.new_u8(xowa_title); } private static final Xoh_find dom_find = new Xoh_find(); } diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java deleted file mode 100644 index 7c07c4861..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java +++ /dev/null @@ -1,89 +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.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.pages.*; -import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; -import gplx.xowa.parsers.*; -public class Xohd_hdump_rdr { - private final Bry_bfr_mkr bfr_mkr; private final Xow_hzip_mgr hzip_mgr; - private final Xohd_abrv_mgr abrv_mgr; private final Xohd_page_html_mgr__load load_mgr; - private Xowd_db_mgr core_data_mgr; private final Xowd_page_itm dbpg = new Xowd_page_itm(); - private final Xow_wiki wiki; - public Xohd_hdump_rdr(Xoa_app app, Xow_wiki wiki) { - this.bfr_mkr = app.Utl__bfr_mkr(); this.hzip_mgr = wiki.Html__hzip_mgr(); this.wiki = wiki; - abrv_mgr = new Xohd_abrv_mgr(app.Usr_dlg(), app.Fsys_mgr(), app.Utl__encoder_mgr().Fsys(), wiki.Domain_bry()); - load_mgr = new Xohd_page_html_mgr__load(); // TODO: get db_id - } - public void Init_by_db(Xowd_db_mgr core_data_mgr) {this.core_data_mgr = core_data_mgr;} - public void Get_by_ttl(Xoae_page page) { - Xog_page hpg = new Xog_page(); - Get_by_ttl(hpg, page.Ttl()); - page.Hdump_data().Body_(hpg.Page_body()); - page.Root_(new Xop_root_tkn()); - Xopg_html_data html_data = page.Html_data(); - html_data.Display_ttl_(hpg.Display_ttl()); - html_data.Content_sub_(hpg.Content_sub()); - html_data.Xtn_skin_mgr().Add(new Xopg_xtn_skin_itm_stub(hpg.Sidebar_div())); - Load_module_mgr(html_data.Head_mgr(), hpg); - for (gplx.xowa.htmls.hdumps.core.Xohd_data_itm__base itm : hpg.Img_itms()) - page.Hdump_data().Imgs_add(itm); - } - public void Get_by_ttl(Xog_page rv, Xoa_ttl ttl) { - synchronized (dbpg) { - dbpg.Clear(); - if ( !Get_by_ttl__fill_hpg(rv, ttl) - || rv.Page_body() == null) { // occurs when row exists in page_table, but not in html_table - rv.Exists_n_(); - return; - } - Bry_bfr bfr = bfr_mkr.Get_m001(); - Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.abrv: ttl=~{0}", ttl.Full_db_as_str()); - byte[] body_bry = abrv_mgr.Parse(bfr, rv); - Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.hzip: ttl=~{0}", ttl.Full_db_as_str()); - body_bry = hzip_mgr.Parse(bfr, ttl.Page_db(), body_bry, rv.Redlink_uids()); - bfr.Mkr_rls(); - rv.Page_body_(body_bry); - } - } - private boolean Get_by_ttl__fill_hpg(Xog_page rv, Xoa_ttl ttl) { - Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.meta: ttl=~{0}", ttl.Full_db_as_str()); - core_data_mgr.Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db()); // get rows from db - if (dbpg.Redirect_id() != -1) Get_by_ttl__resolve_redirect(dbpg, rv); - if (dbpg.Html_db_id() == -1) return false; // dbpg does not hdump; exit; - rv.Init(wiki, dbpg.Id(), null, ttl); // FIXME - Xowd_db_file html_db = core_data_mgr.Dbs__get_at(dbpg.Html_db_id()); - load_mgr.Load_page(wiki, rv, html_db.Tbl__html(), dbpg.Id(), ttl); - return true; - } - private void Get_by_ttl__resolve_redirect(Xowd_page_itm dbpg, Xog_page hpg) { - int redirect_count = 0; - while (redirect_count < 5) { - int redirect_id = dbpg.Redirect_id(); - core_data_mgr.Tbl__page().Select_by_id(dbpg, redirect_id); - if (redirect_id == -1) break; - } - } - public static void Load_module_mgr(Xoh_head_mgr page_module_mgr, Xog_page hpg) { - Xopg_module_mgr dump_module_mgr = hpg.Head_mgr(); - page_module_mgr.Itm__mathjax().Enabled_ (dump_module_mgr.Math_exists()); - page_module_mgr.Itm__popups().Bind_hover_area_ (dump_module_mgr.Imap_exists()); - page_module_mgr.Itm__gallery().Enabled_ (dump_module_mgr.Gallery_packed_exists()); - page_module_mgr.Itm__hiero().Enabled_ (dump_module_mgr.Hiero_exists()); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java deleted file mode 100644 index 5adaa5cc9..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java +++ /dev/null @@ -1,63 +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.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.pages.*; -import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.dbs.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; -public class Xohd_hdump_wtr { - private final Bry_bfr_mkr bfr_mkr; private final Xoh_page_wtr_mgr page_wtr_mgr; - private final Xohd_page_html_mgr__save save_mgr; private Xowd_db_mgr core_data_mgr; - public Xohd_hdump_wtr(Xoa_app app, Xowe_wiki wiki) { - this.bfr_mkr = app.Utl__bfr_mkr(); this.page_wtr_mgr = wiki.Html_mgr().Page_wtr_mgr(); - save_mgr = new Xohd_page_html_mgr__save(); - } - public void Init_by_db(Xowd_db_mgr core_data_mgr) { - this.core_data_mgr = core_data_mgr; - } - public void Save(Xoae_page page) { - Bry_bfr tmp_bfr = bfr_mkr.Get_m001(); - Generate_hdump(tmp_bfr, page); - int html_db_id = page.Revision_data().Html_db_id(); - Xowd_db_file hdump_db = Xowd_db_file.Null; - if (html_db_id == -1) { - hdump_db = core_data_mgr.Db__html(); - if (hdump_db == null) { - hdump_db = core_data_mgr.Dbs__make_by_tid(Xowd_db_file_.Tid_html_data); - Xowd_html_tbl tbl = hdump_db.Tbl__html(); - tbl.Create_tbl(); - } - - html_db_id = hdump_db.Id(); - page.Revision_data().Html_db_id_(html_db_id); - core_data_mgr.Tbl__page().Update__html_db_id(page.Revision_data().Id(), html_db_id); - } - else { - hdump_db = core_data_mgr.Dbs__get_at(html_db_id); - html_db_id = hdump_db.Id(); - // return; // DELETE: don't remember why return was here; DATE:2015-06-06 - } - save_mgr.Update(tmp_bfr, hdump_db.Tbl__html(), page); - tmp_bfr.Mkr_rls(); - } - public void Generate_hdump(Bry_bfr tmp_bfr, Xoae_page page) { - page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last - page_wtr_mgr.Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); - if (!Env_.Mode_testing()) page.Wikie().Html_mgr().Hzip_mgr().Write(tmp_bfr, new Xodump_stats_itm(), page.Url().To_bry_full_wo_qargs(), tmp_bfr.To_bry_and_clear()); // hzip data; - page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); // write to body bry - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.java b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.java deleted file mode 100644 index 610363174..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.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.xowa.htmls.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.core.btries.*; -public class Xohd_abrv_ { - public static final byte - Tid_dir = 1, Tid_img = 2, Tid_img_style = 3, Tid_file_play = 4, Tid_file_info = 5, Tid_file_mgnf = 6 - , Tid_hiero_dir = 7, Tid_gallery_box_max = 8, Tid_gallery_box_w = 9, Tid_gallery_img_w = 10, Tid_gallery_img_pad = 11 - , Tid_redlink = 12, Tid_toc = 13, Tid_hdr_bgn = 14, Tid_hdr_end = 15 - ; - public static final byte[] - Key_dir = Bry_.new_a7("~{xowa_dir}") - , Key_img = Bry_.new_a7("xowa_img='") - , Key_img_style = Bry_.new_a7("xowa_img_style='") - , Key_file_play = Bry_.new_a7("") - ; - public static Btrie_slim_mgr new_trie() { - Btrie_slim_mgr rv = Btrie_slim_mgr.cs(); - trie_itm(rv, Tid_dir , Byte_ascii.Null , Key_dir); - trie_itm(rv, Tid_img , Byte_ascii.Apos , Key_img); - trie_itm(rv, Tid_img_style , Byte_ascii.Apos , Key_img_style); - trie_itm(rv, Tid_file_play , Byte_ascii.Apos , Key_file_play); - trie_itm(rv, Tid_file_info , Byte_ascii.Apos , Key_file_info); - trie_itm(rv, Tid_file_mgnf , Byte_ascii.Apos , Key_file_mgnf); - trie_itm(rv, Tid_hiero_dir , Byte_ascii.Null , Key_hiero_dir); - trie_itm(rv, Tid_gallery_box_max , Byte_ascii.Apos , Key_gallery_box_max); - trie_itm(rv, Tid_gallery_box_w , Byte_ascii.Apos , Key_gallery_box_w); - trie_itm(rv, Tid_gallery_img_w , Byte_ascii.Apos , Key_gallery_img_w); - trie_itm(rv, Tid_gallery_img_pad , Byte_ascii.Apos , Key_gallery_img_pad); - trie_itm(rv, Tid_redlink , Byte_ascii.Apos , Key_redlink); - trie_itm(rv, Tid_toc , Byte_ascii.Null , Key_toc); -// trie_itm(rv, Tid_hdr_bgn , Byte_ascii.Null , Key_hdr_bgn); -// trie_itm(rv, Tid_hdr_end , Byte_ascii.Null , Key_hdr_end); - return rv; - } - private static void trie_itm(Btrie_slim_mgr trie, byte tid, byte subst_end_byte, byte[] key_bry) { - boolean elem_is_xnde = key_bry[0] == Byte_ascii.Lt; - Hdump_html_fmtr_itm itm = new Hdump_html_fmtr_itm(tid, elem_is_xnde, subst_end_byte, key_bry); - trie.Add_obj(key_bry, itm); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java deleted file mode 100644 index 2fea47cfd..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java +++ /dev/null @@ -1,162 +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.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.lnkis.*; -import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.xtns.gallery.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.fsys.*; -import gplx.xowa.guis.*; -public class Xohd_abrv_mgr { - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private Bry_rdr bry_rdr = new Bry_rdr(); private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; - private Xoh_cfg_file cfg_file; private Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private Xoh_file_html_fmtr__base html_fmtr; - private byte[] root_dir, file_dir, file_dir_comm, file_dir_wiki, hiero_img_dir; - private byte[] wiki_domain; - private final Xohd_abrv_wkr__hdr wkr__hdr = new Xohd_abrv_wkr__hdr(); - public Xohd_abrv_mgr(Gfo_usr_dlg usr_dlg, Xoa_fsys_mgr fsys_mgr, 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(); - this.hiero_img_dir = gplx.xowa.xtns.hieros.Hiero_xtn_mgr.Hiero_root_dir(fsys_mgr).GenSubDir("img").To_http_file_bry(); - this.cfg_file = new Xoh_cfg_file(fsys_encoder, fsys_mgr.Bin_xowa_dir()); - this.html_fmtr = Xoh_file_html_fmtr__hdump.Base; - this.wiki_domain = wiki_domain; - } - private void Init() { - file_dir_comm = tmp_bfr.Add(file_dir).Add(Xow_domain_itm_.Bry__commons).Add_byte_slash().To_bry_and_clear(); - file_dir_wiki = tmp_bfr.Add(file_dir).Add(wiki_domain).Add_byte_slash().To_bry_and_clear(); - } - public byte[] Parse(Bry_bfr rv, Xog_page hpg) { - this.Init(); - byte[] src = hpg.Page_body(); int len = src.length; - Xohd_data_itm__base[] imgs = hpg.Img_itms(); int imgs_len = hpg.Img_itms().length; - bry_rdr.Init(src); - int pos = 0; int rng_bgn = -1; - while (pos < len) { - byte b = src[pos]; - Object o = trie.Match_bgn_w_byte(b, src, pos, len); - if (o == null) { // regular char; set bgn and move to next char - if (rng_bgn == -1) rng_bgn = pos; - ++pos; - } - else { // special tkn - if (rng_bgn != -1) { // pending rng exists; add it - rv.Add_mid(src, rng_bgn, pos); - rng_bgn = -1; - } - pos = trie.Match_pos(); // position after match; EX: "xowa_img='" positions after "'" - Hdump_html_fmtr_itm itm = (Hdump_html_fmtr_itm)o; - pos = Write_data(rv, html_fmtr, hpg, src, imgs, imgs_len, pos, itm); // note no +1; Write_data return pos after } - } - } - if (rng_bgn != -1) rv.Add_mid(src, rng_bgn, len); - return rv.To_bry_and_clear(); - } - private int Write_data(Bry_bfr bfr, Xoh_file_html_fmtr__base fmtr, Xog_page hpg, byte[] src, Xohd_data_itm__base[] imgs, int imgs_len, int uid_bgn, Hdump_html_fmtr_itm itm) { - bry_rdr.Pos_(uid_bgn); - int uid = itm.Subst_end_byte() == Byte_ascii.Null ? -1 : bry_rdr.Read_int_to(itm.Subst_end_byte()); - int uid_end = bry_rdr.Pos(); // set uid_end after subst_end - int rv = uid_end; - byte tid = itm.Tid(); - switch (tid) { - case Xohd_abrv_.Tid_dir: bfr.Add(root_dir); return rv; - case Xohd_abrv_.Tid_hiero_dir: bfr.Add(hiero_img_dir); return rv; - case Xohd_abrv_.Tid_redlink: return Write_redlink(bfr, hpg, uid, rv); - case Xohd_abrv_.Tid_hdr_bgn: return wkr__hdr.Write_bgn(bfr, hpg, uid, rv); - case Xohd_abrv_.Tid_hdr_end: return wkr__hdr.Write_end(bfr, hpg, uid, rv); - } - if (itm.Elem_is_xnde()) rv += 2; // if xnde, skip "/>" - if (uid == bry_rdr.Or_int()) {usr_dlg.Warn_many("", "", "index is not a valid int; hpg=~{0} text=~{1}", hpg.Url().To_str(), Bry_.Mid_safe(src, uid_bgn, uid_end)); return uid_end;} - if (!Int_.Between(uid, 0, imgs_len)) {usr_dlg.Warn_many("", "", "index is out of range; hpg=~{0} idx=~{1} len=~{2}", hpg.Url().To_str(), uid, imgs_len); return uid_end;} - if (uid >= imgs.length) return rv; - Xohd_data_itm__base img = imgs[uid]; - int img_view_w = img.Html_w(); - switch (tid) { - case Xohd_abrv_.Tid_img_style: - bfr.Add(Xohd_abrv_.Bry_img_style_bgn); - bfr.Add_int_variable(img_view_w); - bfr.Add(Xohd_abrv_.Bry_img_style_end); - return rv; - } - byte[] a_title = img.Lnki_ttl(); - byte[] a_href = Bry_.Add(Xohd_abrv_.A_href_bgn, a_title); - try { - switch (tid) { - case Xohd_abrv_.Tid_file_info: fmtr.Html_thumb_part_info (bfr, uid, a_href, cfg_file.Img_media_info_btn()); return rv; - case Xohd_abrv_.Tid_file_mgnf: fmtr.Html_thumb_part_magnify (bfr, uid, a_href, a_title, cfg_file.Img_thumb_magnify()); return rv; - case Xohd_abrv_.Tid_file_play: fmtr.Html_thumb_part_play (bfr, uid, img_view_w, Xoh_file_wtr__basic.Play_btn_max_width, a_href, a_title, cfg_file.Img_media_play_btn()); return rv; - case Xohd_abrv_.Tid_gallery_box_max: { - Xohd_data_itm__gallery_mgr gly = (Xohd_data_itm__gallery_mgr)hpg.Gallery_itms().Get_by(uid); - if (gly != null) { // -1 means no box_max - byte[] style = Gallery_mgr_base.box_style_max_width_fmtr.Bld_bry_many(tmp_bfr, gly.Box_max()); - Html_wtr.Write_atr_bry(bfr, Bool_.N, Byte_ascii.Quote, Html_atr_.Style_bry, style); - } - return rv; - } - case Xohd_abrv_.Tid_gallery_box_w: { - Xohd_data_itm__gallery_itm gly = (Xohd_data_itm__gallery_itm)img; - byte[] style = Gallery_mgr_base.hdump_box_w_fmtr.Bld_bry_many(tmp_bfr, gly.Box_w()); - Html_wtr.Write_atr_bry(bfr, Bool_.N, Byte_ascii.Quote, Html_atr_.Style_bry, style); - return rv; - } - case Xohd_abrv_.Tid_gallery_img_w: { - Xohd_data_itm__gallery_itm gly = (Xohd_data_itm__gallery_itm)img; - byte[] style = Gallery_mgr_base.hdump_box_w_fmtr.Bld_bry_many(tmp_bfr, gly.Img_w()); - Html_wtr.Write_atr_bry(bfr, Bool_.N, Byte_ascii.Quote, Html_atr_.Style_bry, style); - return rv; - } - case Xohd_abrv_.Tid_gallery_img_pad: { - Xohd_data_itm__gallery_itm gly = (Xohd_data_itm__gallery_itm)img; - byte[] style = Gallery_mgr_base.hdump_img_pad_fmtr.Bld_bry_many(tmp_bfr, gly.Img_pad()); - Html_wtr.Write_atr_bry(bfr, Bool_.N, Byte_ascii.Quote, Html_atr_.Style_bry, style); - return rv; - } - } - url_bldr.Init_by_root(img.Orig_repo_id() == Xof_repo_itm_.Repo_remote ? file_dir_comm : file_dir_wiki, Byte_ascii.Slash, false, false, 2); - url_bldr.Init_by_itm(img.File_is_orig() ? Xof_repo_itm_.Mode_orig : Xof_repo_itm_.Mode_thumb, img.Lnki_ttl(), Xof_file_wkr_.Md5(img.Lnki_ttl()), Xof_ext_.new_by_id_(img.Orig_ext()), img.File_w(), img.Lnki_time(), img.Lnki_page()); - byte[] img_src = url_bldr.Xto_bry(); - if (tid == Xohd_abrv_.Tid_img) { - fmtr_img.Bld_bfr_many(bfr, img_src, img_view_w, img.Html_h()); - } - } catch (Exception e) {Xoa_app_.Usr_dlg().Warn_many("", "", "abrv.read: page=~{0} itm=~{1} err=~{2}", hpg.Url_bry_safe(), img == null ? "" : img.Data_print(), Err_.Message_gplx_full(e));} - return rv; - } - private int Write_redlink(Bry_bfr bfr, Xog_page hpg, int uid, int rv) { - if (hpg.Redlink_uids().Has(redlink_key.Val_(uid))) - bfr.Add(Xoh_redlink_utl.Cls_bry); - else - bfr.Del_by_1(); - return rv; - } private final Int_obj_ref redlink_key = Int_obj_ref.neg1_(); - public static final Bry_fmtr fmtr_img = Bry_fmtr.new_("src='~{src}' width='~{w}' height='~{h}'", "src", "w", "h"); - private static final Btrie_slim_mgr trie = Xohd_abrv_.new_trie(); -} -class Hdump_html_fmtr_itm { - public Hdump_html_fmtr_itm(byte tid, boolean elem_is_xnde, byte subst_end_byte, byte[] key) {this.tid = tid; this.key = key; this.elem_is_xnde = elem_is_xnde; this.subst_end_byte = subst_end_byte;} - public byte Tid() {return tid;} private final byte tid; - public byte[] Key() {return key;} private final byte[] key; - public boolean Elem_is_xnde() {return elem_is_xnde;} private final boolean elem_is_xnde; - public byte Subst_end_byte() {return subst_end_byte;} private final byte subst_end_byte; -} -class Xohd_abrv_wkr__hdr { - public int Write_bgn(Bry_bfr bfr, Xog_page hpg, int uid, int rv) { - return rv; - } - public int Write_end(Bry_bfr bfr, Xog_page hpg, int uid, int rv) { - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java deleted file mode 100644 index 4e9754e7f..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java +++ /dev/null @@ -1,97 +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.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; -import gplx.xowa.wikis.nss.*; -import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -public class Xob_hdump_bldr { - private final Xowd_db_mgr wiki_db_mgr; private final Xob_ns_to_db_mgr ns_to_db_mgr; int prv_row_len = 0; - private final Xodump_stats_itm stats_itm = new Xodump_stats_itm(); private final Xodump_stats_tbl stats_tbl; - private final Xog_page tmp_hpg = new Xog_page(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_mb); - private final Xohd_page_html_mgr__save hdump_save_mgr = new Xohd_page_html_mgr__save(); - private final boolean hzip_enabled; - public Xob_hdump_bldr(Xow_ns_mgr ns_mgr, Xodb_mgr_sql db_mgr, Db_conn make_conn, long hdump_db_max, boolean hzip_enabled) { - this.wiki_db_mgr = db_mgr.Core_data_mgr(); - this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(wiki_db_mgr.Db__core()), wiki_db_mgr, hdump_db_max); - this.stats_tbl = new Xodump_stats_tbl(make_conn); - Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_html_data, ns_mgr, gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); - this.hzip_enabled = hzip_enabled; - } - public void Bld_term() { - this.Commit(); - Db_term(); - } - public void Insert_page(Xoae_page page) { - Hzip_data(page); - tmp_hpg.Ctor_from_page(tmp_bfr, page); - Xowd_db_file db_file = ns_to_db_mgr.Get_by_ns(page.Ttl().Ns().Bldr_data(), prv_row_len); - this.prv_row_len = hdump_save_mgr.Insert(tmp_bfr, db_file.Tbl__html(), tmp_hpg, page.Hdump_data()); - stats_tbl.Insert(tmp_hpg, stats_itm, page.Root().Root_src().length, tmp_hpg.Page_body().length, prv_row_len); - } - public void Commit() { - 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 Db_term() { - ns_to_db_mgr.Rls_all(); - } -// private static final String Cfg_grp_hdump_make = "hdump.make", Cfg_itm_hdump_size = "hdump.size"; - private void Hzip_data(Xoae_page page) { - Xowe_wiki wiki = page.Wikie(); - Xow_hzip_mgr hzip_mgr = wiki.Html_mgr().Hzip_mgr(); - 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 - if (hzip_enabled) hzip_mgr.Write(tmp_bfr, stats_itm, page.Url().To_bry_full_wo_qargs(), tmp_bfr.To_bry_and_clear()); // hzip data - page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); // write to body bry - } -} -class Xob_ns_to_db_wkr__html implements Xob_ns_to_db_wkr { - private final Xowd_db_file page_db; - public Xob_ns_to_db_wkr__html(Xowd_db_file page_db) {this.page_db = page_db;} - public byte Db_tid() {return Xowd_db_file_.Tid_html_data;} - public void Tbl_init(Xowd_db_file db) { - Xowd_html_tbl tbl = db.Tbl__html(); - tbl.Create_tbl(); - tbl.Insert_bgn(); - } - public void Tbl_term(Xowd_db_file db) { - db.Tbl__text().Insert_end(); - Db_conn db_conn = db.Conn(); - db.Tbl__html().Create_idx(); - Db_attach_cmd.new_(page_db.Conn(), "html_db", db.Url()) - .Add_fmt("hdump.update page.html_db_id", Sql_update_page_html_db_id, db.Id()) - .Exec(); - db_conn.Rls_conn(); - } - private static final String Sql_update_page_html_db_id = String_.Concat_lines_nl_skip_last - ( "REPLACE INTO page (page_id, page_namespace, page_title, page_is_redirect, page_touched, page_len, page_random_int, page_text_db_id, page_html_db_id, page_redirect_id)" - , "SELECT p.page_id" - , ", p.page_namespace" - , ", p.page_title" - , ", p.page_is_redirect" - , ", p.page_touched" - , ", p.page_len" - , ", p.page_random_int" - , ", p.page_text_db_id" - , ", {0}" - , ", p.page_redirect_id" - , "FROM page p" - , " JOIN html h ON p.page_id = h.page_id" - ); -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java deleted file mode 100644 index b716d2a30..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java +++ /dev/null @@ -1,87 +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.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.dbs.*; import gplx.ios.*; -import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.htmls.hdumps.data.srl.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; -public class Xohd_page_html_mgr__load { - private final Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.Instance; - private final Bry_rdr rdr = new Bry_rdr(); private final List_adp rows = List_adp_.new_(), imgs = List_adp_.new_(); - public void Load_page(Xow_wiki wiki, Xog_page hpg, Xowd_html_tbl tbl, int page_id, Xoa_ttl page_ttl) { - Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.text: ttl=~{0}", page_ttl.Full_db_as_str()); - tbl.Select_by_page(rows, page_id); - Parse_rows(wiki, hpg, page_id, Xoa_url.blank(), page_ttl, rows); - } - public void Parse_rows(Xow_wiki wiki, Xog_page hpg, int page_id, Xoa_url page_url, Xoa_ttl page_ttl, List_adp rows) { // TEST: - hpg.Init(wiki, page_id, page_url, page_ttl); - imgs.Clear(); - int len = rows.Count(); - for (int i = 0; i < len; ++i) { - Xowd_html_row row = (Xowd_html_row)rows.Get_at(i); - switch (row.Tid()) { - case Xowd_html_row.Tid_html: srl_mgr.Load(hpg, row.Data()); break; - case Xowd_html_row.Tid_img: - case Xowd_html_row.Tid_redlink: - Parse_data(hpg, row); break; - } - } - rows.Clear(); - } - private void Parse_data(Xog_page hpg, Xowd_html_row row) { - rdr.Init(row.Data()); - while (!rdr.Pos_is_eos()) { - int tid = rdr.Read_int_to_pipe(); - switch (tid) { - case Xohd_data_tid.Tid_img : Load_data_img(); break; // 1|0|A.png|0|220|110|... - case Xohd_data_tid.Tid_gallery : Load_data_gallery(hpg); break; // 3|0|800 - case Xohd_data_tid.Tid_redlink : Load_data_redlink(hpg); break; // 2|2|0|1 - } - } - if (imgs.Count() > 0) hpg.Img_itms_((Xohd_data_itm__base[])imgs.To_ary_and_clear(Xohd_data_itm__base.class)); - } - public static Xohd_data_itm__base Load_img(Bry_rdr rdr) { - int tid = rdr.Read_int_to_pipe(); - Xohd_data_itm__base img_itm = null; - switch (tid) { - case Xohd_data_itm__base.Tid_basic : img_itm = new Xohd_data_itm__img(); break; - case Xohd_data_itm__base.Tid_gallery : img_itm = new Xohd_data_itm__gallery_itm(); break; - default : throw Err_.new_unhandled(tid); - } - img_itm.Data_parse(rdr); - // Xoa_app_.Usr_dlg().Log_many("", "", "itm: ~{0}", img_itm.Data_print()); - rdr.Pos_add_one(); - return img_itm; - } - private void Load_data_img() { - Xohd_data_itm__base img = Load_img(rdr); - if (img == null) return; - imgs.Add(img); - } - private void Load_data_redlink(Xog_page hpg) { - Ordered_hash redlink_hash = hpg.Redlink_uids(); - while (!rdr.Pos_is_eos()) { - Int_obj_ref redlink_uid = Int_obj_ref.new_(rdr.Read_int_to_pipe()); - redlink_hash.Add(redlink_uid, redlink_uid); - } - } - private void Load_data_gallery(Xog_page hpg) { - int uid = rdr.Read_int_to_pipe(); - int box_max = rdr.Read_int_to_pipe(); - hpg.Gallery_itms().Add_if_dupe_use_nth(uid, new Xohd_data_itm__gallery_mgr(uid, box_max)); // TODO: temporarily added b/c last build did not add gallery uid correctly - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java deleted file mode 100644 index 8522b9c25..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java +++ /dev/null @@ -1,52 +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.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.srl.*; -import gplx.xowa.guis.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.parsers.lnkis.redlinks.*; -public class Xohd_page_html_mgr__save { - private Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.Instance; - public void Update(Bry_bfr tmp_bfr, Xowd_html_tbl tbl, Xoae_page page) { - Xog_page hpg = new Xog_page(); - hpg.Ctor_from_page(tmp_bfr, page); - tbl.Delete(page.Revision_data().Id()); - this.Insert(tmp_bfr, tbl, hpg, page.Hdump_data()); - } - public int Insert(Bry_bfr tmp_bfr, Xowd_html_tbl tbl, Xog_page hpg, Xopg_hdump_data hdump_data) { - int rv = 0; - int page_id = hpg.Page_id(); - rv += Insert_row(tbl, page_id, Xowd_html_row.Tid_html , srl_mgr.Save(hpg, tmp_bfr)); - rv += Insert_row(tbl, page_id, Xowd_html_row.Tid_img , Write_imgs(tmp_bfr, hdump_data.Imgs())); - rv += Insert_row(tbl, page_id, Xowd_html_row.Tid_redlink , Write_redlinks(tmp_bfr, hdump_data.Redlink_mgr())); - return rv; - } - private int Insert_row(Xowd_html_tbl tbl, int page_id, int row_tid, byte[] bry) {return bry == null ? 0 : tbl.Insert(page_id, row_tid, bry);} - public static byte[] Write_redlinks(Bry_bfr bfr, Xopg_redlink_idx_list redlink_mgr) { - int len = redlink_mgr.Len(); if (len == 0) return null; - for (int i = 0; i < len; ++i) - bfr.Add_int_variable(redlink_mgr.Get_at(i)).Add_byte_pipe(); - return bfr.To_bry_and_clear(); - } - public static byte[] Write_imgs(Bry_bfr bfr, List_adp imgs) { - int len = imgs.Count(); if (len == 0) return null; // no images; exit early, else will write blank String - for (int i = 0; i < len; ++i) { - Xohd_data_itm itm = (Xohd_data_itm)imgs.Get_at(i); - itm.Data_write(bfr); - } - return bfr.To_bry_and_clear(); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java deleted file mode 100644 index a52c8378c..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java +++ /dev/null @@ -1,46 +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.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; -import gplx.core.primitives.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.guis.*; -public interface Xohd_page_srl_itm { // INFO: serializes Xog_page to a byte[] before storing in the wiki_page_html table - byte Tid(); - void Save(Xog_page hpg, Bry_bfr bfr); - int Load(Xog_page hpg, byte[] bry, int bry_len, int itm_bgn, Int_obj_ref count_ref); -} -abstract class Xohd_page_srl_itm__base implements Xohd_page_srl_itm { - public abstract byte Tid(); - protected void Save_tid_n_() {save_tid = false;} private boolean save_tid = true; - public void Save(Xog_page hpg, Bry_bfr bfr) { - byte[] bry = Save_itm(hpg); if (bry == null) return; // subclasses return null if nothing to save - int len = bry.length; if (len == 0) return; // don't bother saving 0-len - if (save_tid) // body doesn't save tid - bfr.Add_byte(this.Tid()); - Xow_hzip_int_.Save_bin_int_abrv(bfr, len); - bfr.Add(bry); - } - public abstract byte[] Save_itm(Xog_page hpg); - public int Load(Xog_page hpg, byte[] bry, int bry_len, int itm_bgn, Int_obj_ref count_ref) { - int itm_len = Xow_hzip_int_.Load_bin_int_abrv(bry, bry_len, itm_bgn, count_ref); if (itm_len == -1) throw Err_.new_wo_type("bry_itm has invalid len", "page", hpg.Page_id(), "tid", this.Tid()); - int data_bgn = itm_bgn + count_ref.Val(); if (itm_len == 0) return data_bgn; - int data_end = data_bgn + itm_len; - byte[] itm_data = Bry_.Mid(bry, data_bgn, data_end); - this.Load_itm(hpg, itm_data); - return data_end - itm_bgn; - } - public abstract void Load_itm(Xog_page hpg, byte[] data); -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java deleted file mode 100644 index 18a9e94a1..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java +++ /dev/null @@ -1,34 +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.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; -public class Xohd_page_srl_itm_ { - public static final byte // SERIALIZED - Tid_body = 0 - , Tid_html_module = 1 - , Tid_display_ttl = 2 - , Tid_content_sub = 3 - , Tid_sidebar_div = 4 - ; - public static final Xohd_page_srl_itm[] Itms = new Xohd_page_srl_itm[] // NOTE: ary_idx must match tid above - { new Xohd_page_srl_itm__body() - , new Xohd_page_srl_itm__html_module() - , new Xohd_page_srl_itm__display_ttl() - , new Xohd_page_srl_itm__content_sub() - , new Xohd_page_srl_itm__sidebar_div() - }; -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java deleted file mode 100644 index 779a491d1..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java +++ /dev/null @@ -1,99 +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.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; -import org.junit.*; -import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.pages.*; -import gplx.xowa.guis.*; -public class Xohd_page_srl_itm_tst { - @Before public void init() {fxt.Clear();} private Xohd_page_srl_itm_fxt fxt = new Xohd_page_srl_itm_fxt(); - @Test public void Body() { - fxt.Test_page(fxt.Make_page().Body_("A"), fxt.Make_srl_body("A")); - } - @Test public void Html_modules() { - fxt.Test_page(fxt.Make_page().Body_("A").Html_modules_(Bool_.Y, Bool_.N, Bool_.Y, Bool_.N), fxt.Make_srl_body("A"), fxt.Make_srl_html_modules(Bool_.Y, Bool_.N, Bool_.Y, Bool_.N)); - } - @Test public void Body_all() { - fxt.Test_page(fxt.Make_page().Body_("A").Html_modules_(Bool_.Y, Bool_.N, Bool_.Y, Bool_.N).Display_ttl_("B").Content_sub_("C").Sidebar_div_("D") - , fxt.Make_srl_body("A") - , fxt.Make_srl_html_modules(Bool_.Y, Bool_.N, Bool_.Y, Bool_.N) - , fxt.Make_srl_display_ttl("B") - , fxt.Make_srl_content_sub("C") - , fxt.Make_srl_sidebar_div("D") - ); - } -} -class Xohd_page_srl_itm_fxt { - private final Bry_bfr bfr = Bry_bfr.reset_(8); - public void Clear() {bfr.Clear();} - public Xog_page_bldr Make_page() {return new Xog_page_bldr();} - public Xohd_page_srl_itm_mok Make_srl_body(String s) {return Make_srl(Xohd_page_srl_itm_.Tid_body, s);} - public Xohd_page_srl_itm_mok Make_srl_display_ttl(String s) {return Make_srl(Xohd_page_srl_itm_.Tid_display_ttl, s);} - public Xohd_page_srl_itm_mok Make_srl_content_sub(String s) {return Make_srl(Xohd_page_srl_itm_.Tid_content_sub, s);} - public Xohd_page_srl_itm_mok Make_srl_sidebar_div(String s) {return Make_srl(Xohd_page_srl_itm_.Tid_sidebar_div, s);} - public Xohd_page_srl_itm_mok Make_srl(byte tid, String s) {return new Xohd_page_srl_itm_mok(tid, Bry_.new_u8(s));} - public Xohd_page_srl_itm_mok Make_srl_html_modules(boolean... v) { - return new Xohd_page_srl_itm_mok(Xohd_page_srl_itm_.Tid_html_module, new byte[] {Xohd_page_srl_itm__html_module.Calc_flag(v[0], v[1], v[2], v[3])}); - } - public void Test_page(Xog_page_bldr hpg_bldr, Xohd_page_srl_itm_mok... expd_itms) { - Xog_page hpg = hpg_bldr.Bld(); - byte[] actl = Xohd_page_srl_mgr.Instance.Save(hpg, bfr); - Tfds.Eq_ary(Xohd_page_srl_itm_mok.Xto_bry(bfr, expd_itms), actl); - Xog_page actl_hpg = new Xog_page(); - Xohd_page_srl_mgr.Instance.Load(actl_hpg, actl); - Tfds.Eq_ary(actl, Xohd_page_srl_mgr.Instance.Save(hpg, bfr)); - } -} -class Xog_page_bldr { - public byte[] Body() {return body;} public Xog_page_bldr Body_(String v) {body = Bry_.new_u8(v); return this;} private byte[] body; - public boolean[] Html_modules() {return html_modules;} public Xog_page_bldr Html_modules_(boolean... v) {html_modules = v; return this;} private boolean[] html_modules; - public byte[] Display_ttl() {return display_ttl;} public Xog_page_bldr Display_ttl_(String v) {display_ttl = Bry_.new_u8(v); return this;} private byte[] display_ttl; - public byte[] Content_sub() {return content_sub;} public Xog_page_bldr Content_sub_(String v) {content_sub = Bry_.new_u8(v); return this;} private byte[] content_sub; - public byte[] Sidebar_div() {return sidebar_div;} public Xog_page_bldr Sidebar_div_(String v) {sidebar_div = Bry_.new_u8(v); return this;} private byte[] sidebar_div; - public Xog_page Bld() { - Xog_page rv = new Xog_page(); - rv.Page_body_(body); - Xopg_module_mgr mod_mgr = rv.Head_mgr(); - if (html_modules != null) { - mod_mgr.Math_exists_(html_modules[0]); - mod_mgr.Imap_exists_(html_modules[1]); - mod_mgr.Gallery_packed_exists_(html_modules[2]); - mod_mgr.Hiero_exists_(html_modules[3]); - } - rv.Display_ttl_(display_ttl); - rv.Content_sub_(content_sub); - rv.Sidebar_div_(sidebar_div); - return rv; - } -} -class Xohd_page_srl_itm_mok { - public Xohd_page_srl_itm_mok(byte tid, byte[] data) {this.tid = tid; this.data = data;} - public byte Tid() {return tid;} private final byte tid; - public int Len() {return data.length;} - public byte[] Data() {return data;} private final byte[] data; - public static byte[] Xto_bry(Bry_bfr bfr, Xohd_page_srl_itm_mok[] ary) { - int len = ary.length; - for (int i = 0; i < len; ++i) { - Xohd_page_srl_itm_mok itm = ary[i]; - if (itm.Tid() != Xohd_page_srl_itm_.Tid_body) - bfr.Add_byte(itm.Tid()); - Xow_hzip_int_.Save_bin_int_abrv(bfr, itm.Len()); - bfr.Add(itm.Data()); - } - return bfr.To_bry_and_clear(); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.java deleted file mode 100644 index 909c3ff92..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.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.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; -import gplx.core.primitives.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.pages.*; -import gplx.xowa.guis.*; -class Xohd_page_srl_itm__body extends Xohd_page_srl_itm__base { - public Xohd_page_srl_itm__body() {this.Save_tid_n_();} - @Override public byte Tid() {return Xohd_page_srl_itm_.Tid_body;} - @Override public byte[] Save_itm(Xog_page hpg) {return hpg.Page_body();} - @Override public void Load_itm(Xog_page hpg, byte[] data) {hpg.Page_body_(data);} -} -class Xohd_page_srl_itm__display_ttl extends Xohd_page_srl_itm__base { - @Override public byte Tid() {return Xohd_page_srl_itm_.Tid_display_ttl;} - @Override public byte[] Save_itm(Xog_page hpg) {return hpg.Display_ttl();} - @Override public void Load_itm(Xog_page hpg, byte[] data) {hpg.Display_ttl_(data);} -} -class Xohd_page_srl_itm__content_sub extends Xohd_page_srl_itm__base { - @Override public byte Tid() {return Xohd_page_srl_itm_.Tid_content_sub;} - @Override public byte[] Save_itm(Xog_page hpg) {return hpg.Content_sub();} - @Override public void Load_itm(Xog_page hpg, byte[] data) {hpg.Content_sub_(data);} -} -class Xohd_page_srl_itm__sidebar_div extends Xohd_page_srl_itm__base { - @Override public byte Tid() {return Xohd_page_srl_itm_.Tid_sidebar_div;} - @Override public byte[] Save_itm(Xog_page hpg) {return hpg.Sidebar_div();} - @Override public void Load_itm(Xog_page hpg, byte[] data) {hpg.Sidebar_div_(data);} -} -class Xohd_page_srl_itm__html_module implements Xohd_page_srl_itm { - public byte Tid() {return Xohd_page_srl_itm_.Tid_html_module;} - public int Load(Xog_page hpg, byte[] bry, int bry_len, int itm_bgn, Int_obj_ref count_ref) { - itm_bgn += 2; // skip bin_int_abrv of [1, 0] - byte flag = bry[itm_bgn]; - hpg.Head_mgr().Init(Bitmask_.Has_byte(flag, Tid_math), Bitmask_.Has_byte(flag, Tid_imap), Bitmask_.Has_byte(flag, Tid_packed), Bitmask_.Has_byte(flag, Tid_hiero)); - return 3; - } - public void Save(Xog_page hpg, Bry_bfr bfr) { - byte flag = Calc_flag(hpg); - if (flag == 0) return; - bfr.Add_byte(this.Tid()); - Xow_hzip_int_.Save_bin_int_abrv(bfr, 1); - bfr.Add_byte(flag); - } - private static byte Calc_flag(Xog_page hpg) { - Xopg_module_mgr module_mgr = hpg.Head_mgr(); - return Calc_flag(module_mgr.Math_exists(), module_mgr.Imap_exists(), module_mgr.Gallery_packed_exists(), module_mgr.Hiero_exists()); - } - public static byte Calc_flag(boolean math, boolean imap, boolean packed, boolean hiero) { - byte rv = 0; - if (math) rv = Bitmask_.Add_byte(rv, Tid_math); - if (imap) rv = Bitmask_.Add_byte(rv, Tid_imap); - if (packed) rv = Bitmask_.Add_byte(rv, Tid_packed); - if (hiero) rv = Bitmask_.Add_byte(rv, Tid_hiero); - return rv; - } - private static final byte // SERIALIZED; only supports 8 different types - Tid_math = 1 - , Tid_imap = 2 - , Tid_packed = 4 - , Tid_hiero = 8 - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java deleted file mode 100644 index 9526452a8..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java +++ /dev/null @@ -1,44 +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.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; -import gplx.core.primitives.*; import gplx.xowa.htmls.hdumps.core.*; -import gplx.xowa.guis.*; -public class Xohd_page_srl_mgr { - private final Xohd_page_srl_itm[] itm_ary; private final Xohd_page_srl_itm itm_body; - private final Int_obj_ref count_ref = Int_obj_ref.zero_(); - public Xohd_page_srl_mgr(Xohd_page_srl_itm[] itm_ary) { - this.itm_ary = itm_ary; - this.itm_body = itm_ary[0]; - } - public byte[] Save(Xog_page hpg, Bry_bfr bfr) { - for (Xohd_page_srl_itm itm : itm_ary) - itm.Save(hpg, bfr); - return bfr.To_bry_and_clear(); - } - public void Load(Xog_page hpg, byte[] bry) { - if (bry == null) return; - int bry_len = bry.length; if (bry_len == 0) return; - int pos = itm_body.Load(hpg, bry, bry_len, 0, count_ref); // assume every page has a body; saves 1 byte by not specifying tid for body - while (pos < bry_len) { - byte itm_tid = bry[pos]; // itm_tid is always 1-byte - Xohd_page_srl_itm itm = itm_ary[itm_tid]; // itm_tid always matches itm_ary's idx - pos += itm.Load(hpg, bry, bry_len, pos + 1, count_ref) + 1; // +1 to skip tid - } - } - public static final Xohd_page_srl_mgr Instance = new Xohd_page_srl_mgr(Xohd_page_srl_itm_.Itms); -} diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java index dfd9f445b..18a6007f9 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java @@ -21,7 +21,7 @@ public class Xoh_href_gui_utl { public static String Html_extract_text(String site, String page, String text_str) { byte[] text_bry = Bry_.new_u8(text_str); int text_len = text_bry.length; - int text_tid = Byte_ascii.Xto_digit(text_bry[0]); + int text_tid = Byte_ascii.To_a7_int(text_bry[0]); switch (text_tid) { case Text_tid_none: return ""; // "0" case Text_tid_text: return String_.new_u8(text_bry, 2, text_len); // 2 to skip "1|" diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java index 249515e31..db15dff50 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java @@ -61,7 +61,7 @@ public class Xoh_href_parser_tst { } @Test public void Site__xwiki_cases_correctly() { // PURPOSE: xwiki links should use case_match of xwiki (en.wiktionary.org) not cur_wiki (en.wikipedia.org); EX:w:Alphabet Xowe_wiki en_wiktionary_org = fxt.Prep_create_wiki("en.wiktionary.org"); - en_wiktionary_org.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Id_all); + en_wiktionary_org.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Tid__all); fxt.Prep_add_xwiki_to_user("en.wiktionary.org", "en.wiktionary.org"); fxt.Run_parse_by_href("/site/en.wiktionary.org/wiki/alphabet"); fxt.Chk_to_str("en.wiktionary.org/wiki/alphabet").Chk_page("alphabet"); 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 3aebbc5cb..9db47204a 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 @@ -72,11 +72,11 @@ public class Xoh_href_wtr { } private void Build_to_bfr_page(Xoa_ttl ttl, byte[] ttl_full, int page_bgn) { int anch_bgn = Bry_find_.Find_fwd(ttl_full, Byte_ascii.Hash); // NOTE: cannot use Anch_bgn b/c Anch_bgn has bug with whitespace - if (anch_bgn == Bry_.NotFound) // no anchor; just add page + if (anch_bgn == Bry_find_.Not_found) // no anchor; just add page encoder.Encode(encoder_bfr, ttl_full, page_bgn, ttl_full.length); else { // anchor exists; check if anchor is preceded by ws; EX: [[A #b]] -> "/wiki/A#b" int page_end = Bry_find_.Find_bwd_last_ws(ttl_full, anch_bgn); // first 1st ws before #; handles multiple ws - page_end = page_end == Bry_.NotFound ? anch_bgn : page_end; // if ws not found, use # pos; else use 1st ws pos + page_end = page_end == Bry_find_.Not_found ? anch_bgn : page_end; // if ws not found, use # pos; else use 1st ws pos encoder.Encode(encoder_bfr, ttl_full, page_bgn, page_end); // add page encoder.Encode(encoder_bfr, ttl_full, anch_bgn, ttl_full.length); // add anchor } diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java index cc1232b85..432e95fa3 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java @@ -47,7 +47,7 @@ class Xoh_href_wtr_fxt { public Xoae_app App() {return app;} private final Xoae_app app; public Xoh_href_wtr_fxt Prep_wiki_cs(String domain) { Xow_wiki wiki = app.Wiki_mgr().Get_by_key_or_make_init_n(Bry_.new_u8(domain)); - wiki.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Id_all); + wiki.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Tid__all); return this; } public Xoh_href_wtr_fxt Prep_xwiki_by_many(String raw) {wiki.Xwiki_mgr().Add_by_csv(Bry_.new_u8(raw)); return this;} // need to add to wiki's xwiki_mgr for ttl_parse diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java b/400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java deleted file mode 100644 index 3a57b0455..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java +++ /dev/null @@ -1,54 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -class Hzip_bfr_mgr { - private Gfo_usr_dlg usr_dlg; private Bry_bfr_mkr bfr_mkr; - private List_adp stack = List_adp_.new_(); - public Hzip_bfr_mgr(Gfo_usr_dlg usr_dlg, Bry_bfr_mkr bfr_mkr) {this.usr_dlg = usr_dlg; this.bfr_mkr = bfr_mkr;} - public Bry_bfr Add(Hzip_bfr_itm__base itm) { - stack.Add(itm); - return bfr_mkr.Get_k004(); - } - public Bry_bfr Pop(int expd_tid, Bry_bfr cur, byte[] src, int src_len, int pos) { - Hzip_bfr_itm__base itm = (Hzip_bfr_itm__base)List_adp_.Pop(stack); - if (expd_tid != itm.Tid()) {usr_dlg.Warn_many("", "", "bfr_mgr tid does not match; expd=~{0} actl=~{1}", expd_tid, itm.Tid());} - itm.Pop_exec(cur, src, src_len, pos); - cur.Mkr_rls(); - return itm.Bfr(); - } -} -abstract class Hzip_bfr_itm__base { - public Hzip_bfr_itm__base Init(Bry_bfr bfr) {this.bfr = bfr; return this;} - public Bry_bfr Bfr() {return bfr;} protected Bry_bfr bfr; - public abstract int Tid(); - public abstract void Pop_exec(Bry_bfr cur, byte[] src, int src_len, int pos); -} -class Hzip_bfr_itm__anchor extends Hzip_bfr_itm__base { // - @Override public int Tid() {return Tid_file;} public static final int Tid_file = 1; - @Override public void Pop_exec(Bry_bfr cur, byte[] src, int src_len, int pos) { - byte[] caption_bry = cur.To_bry(); // Calc_title(cur.Xto_bry()) - bfr.Add(caption_bry).Add_str("'>"); - bfr.Add_bfr_and_clear(cur); - bfr.Add_str_a7(""); - } - public static Hzip_bfr_itm__base new_(Bry_bfr cur, byte[] src, int src_len, int pos) { - Hzip_bfr_itm__anchor rv = new Hzip_bfr_itm__anchor(); - rv.Init(cur); - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.java deleted file mode 100644 index b4ab2c30d..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.java +++ /dev/null @@ -1,44 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -class Xow_hzip_dict {// SERIALIZED - public static final byte Escape = Byte_.By_int(255); - public static final byte[] Escape_bry = Bry_.new_ints(255); - public static final byte - Tid_a_rhs = 0 - , Tid_lnki_text_n = 1 - , Tid_lnki_text_y = 2 - , Tid_lnke_txt = 3 - , Tid_lnke_brk_text_n = 4 - , Tid_lnke_brk_text_y = 5 - , Tid_img_full = 6 - , Tid_hdr_lhs = 7 - , Tid_hdr_rhs = 8 - ; - public static final byte[] - Bry_a_rhs = Bry_.new_ints(Escape, Tid_a_rhs) - , Bry_lnki_text_n = Bry_.new_ints(Escape, Tid_lnki_text_n) - , Bry_lnki_text_y = Bry_.new_ints(Escape, Tid_lnki_text_y) - , Bry_lnke_txt = Bry_.new_ints(Escape, Tid_lnke_txt) - , Bry_lnke_brk_text_n = Bry_.new_ints(Escape, Tid_lnke_brk_text_n) - , Bry_lnke_brk_text_y = Bry_.new_ints(Escape, Tid_lnke_brk_text_y) - , Bry_img_full = Bry_.new_ints(Escape, Tid_img_full) - , Bry_hdr_lhs = Bry_.new_ints(Escape, Tid_hdr_lhs) - , Bry_hdr_rhs = Bry_.new_ints(Escape, Tid_hdr_rhs) - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java deleted file mode 100644 index d6447caa8..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java +++ /dev/null @@ -1,64 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.primitives.*; -public class Xow_hzip_int_ { - private static final int Base_255_int = 255; - private static final byte Base_255_byte = (byte)255; - public static byte[] Save_bin_int_abrv(int val_int) { - Bry_bfr bfr = Bry_bfr.reset_(10); - Save_bin_int_abrv(bfr, val_int); - return bfr.To_bry_and_clear(); - } - public static void Save_bin_int_abrv(Bry_bfr bfr, int val_int) { // save int in binary little endian form; range from -2,080,766,977 to 2,147,483,648; 255^4 or 4,228,250,625 - if (val_int == 0) {bfr.Add_byte(Byte_ascii.Null); return;} - long val = val_int; - if (val < 0) val = Int_.Max_value + -val; - int count = 0; - while (val > 0) { - byte mod = (byte)(val % Base_255_int); - int adj = 0; - if (mod == 0) {mod = Base_255_byte; adj = 1;} // if 0, then set byte to 255; also set adj to 1 to properly decrement value - bfr.Add_byte(mod); - ++count; - val = (val - adj) / Base_255_int; - } - if (count < 4) bfr.Add_byte(Byte_ascii.Null); - } - public static int Load_bin_int_abrv(byte[] bry, int bry_len, int bgn, Int_obj_ref count_ref) { - int end = bgn + 4; // read no more than 4 bytes - int count = 0; - long rv = 0; int mult = 1; - for (int i = bgn; i < end; ++i) { - if (i == bry_len) break; - else { - ++count; - int b = bry[i] & 0xFF; // PATCH.JAVA:need to convert to unsigned byte - if (b == 0) break; - rv += (b * mult); - mult *= Base_255_int; - } - } - if (rv > Int_.Max_value) { - rv -= Int_.Max_value; - rv *= -1; - } - count_ref.Val_(count); - return (int)rv; - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java deleted file mode 100644 index 8bcdaab03..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java +++ /dev/null @@ -1,52 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.core.primitives.*; -public class Xow_hzip_int__tst { - @Before public void init() {fxt.Clear();} private Xow_hzip_int__fxt fxt = new Xow_hzip_int__fxt(); - @Test public void Srl() { - fxt.Test_srl( 0, 0); - fxt.Test_srl( 1, 1, 0); - fxt.Test_srl( 255, 255, 0); - fxt.Test_srl( 256, 1, 1, 0); - fxt.Test_srl( 257, 2, 1, 0); - fxt.Test_srl( 510, 255, 1, 0); - fxt.Test_srl( 511, 1, 2, 0); - fxt.Test_srl( 512, 2, 2, 0); - fxt.Test_srl( 65280, 255, 255, 0); - fxt.Test_srl( 65281, 1, 1, 1, 0); - fxt.Test_srl( 16646655, 255, 255, 255, 0); - fxt.Test_srl( 16646656, 1, 1, 1, 1); - fxt.Test_srl( 16646657, 2, 1, 1, 1); - fxt.Test_srl(Int_.Max_value, 127, 129, 130, 129); - fxt.Test_srl( -1, 128, 129, 130, 129); - fxt.Test_srl( -2, 129, 129, 130, 129); - } -} -class Xow_hzip_int__fxt { - private final Bry_bfr bfr = Bry_bfr.reset_(8); private final Int_obj_ref read = Int_obj_ref.zero_(); - public void Clear() {bfr.Clear();} - public void Test_srl(int val, int... bytes) { - Xow_hzip_int_.Save_bin_int_abrv(bfr, val); - byte[] save = bfr.To_bry_and_clear(); - Tfds.Eq_ary(Bry_.new_ints(bytes), save, "save"); - int load = Xow_hzip_int_.Load_bin_int_abrv(save, save.length, 0, read); - Tfds.Eq(val, load, "load"); - Tfds.Eq(bytes.length, read.Val(), "load_read"); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java deleted file mode 100644 index 10f3fcbdb..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java +++ /dev/null @@ -1,243 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; -import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*; -import gplx.xowa.wikis.nss.*; -import gplx.xowa.parsers.lnkis.*; -public class Xow_hzip_itm__anchor { - private Xow_hzip_mgr hzip_mgr; private Xow_ttl_parser ttl_parser; private Byte_obj_ref xtid_ref = Byte_obj_ref.zero_(); - private Bry_rdr bry_rdr = new Bry_rdr(); - public Xow_hzip_itm__anchor(Xow_hzip_mgr hzip_mgr, Xow_ttl_parser ttl_parser) {this.hzip_mgr = hzip_mgr; this.ttl_parser = ttl_parser;} - public int Save_a_rhs(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos) { - bfr.Add(Xow_hzip_dict.Bry_a_rhs); - stats.A_rhs_add(); - return pos; - } - public int Save(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos) { - int xtid_end = Xow_hzip_xtid.Find_xtid(hzip_mgr, src, src_len, bgn, pos, xtid_ref); if (xtid_end == Xow_hzip_mgr.Unhandled) return Xow_hzip_mgr.Unhandled; - byte xtid_val = xtid_ref.Val(); - switch (xtid_val) { - case Xow_hzip_dict.Tid_lnki_text_n: - case Xow_hzip_dict.Tid_lnki_text_y: return Save_lnki(bfr, stats, src, src_len, bgn, xtid_end, xtid_val == Xow_hzip_dict.Tid_lnki_text_y); - case Xow_hzip_dict.Tid_lnke_txt: - case Xow_hzip_dict.Tid_lnke_brk_text_n: - case Xow_hzip_dict.Tid_lnke_brk_text_y: return Save_lnke(bfr, stats, src, src_len, bgn, xtid_end, xtid_val); - case Xow_hzip_dict.Tid_img_full: return Save_img_full(bfr, stats, src, src_len, bgn, xtid_end); - default: return hzip_mgr.Warn_by_pos("a.xtid_unknown", bgn, pos); - } - } - private static int[] Save_img_full_pow = new int[] {0, 1, 2}; - private int Save_img_full(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos) { - bfr.Add(Xow_hzip_dict.Bry_img_full); - int xatrs_bgn = Bry_find_.Move_fwd(src, Find_img_xatrs, pos, src_len); if (xatrs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.img_xatrs_missing", bgn, pos); - bry_rdr.Init(src, xatrs_bgn); - int a_cls = bry_rdr.Read_int_to_pipe(); - int a_rel = bry_rdr.Read_int_to_pipe(); - int img_rel = bry_rdr.Read_int_to_pipe(); - byte meta = (byte)Bit_.Shift_lhs_to_int(Save_img_full_pow, a_cls, a_rel, img_rel); - bfr.Add_byte(meta); // meta - Xow_hzip_int_.Save_bin_int_abrv(bfr, bry_rdr.Read_int_to_pipe()); // uid - bfr.Add(bry_rdr.Read_bry_to_pipe()).Add_byte_pipe(); // img_cls_other - bfr.Add(bry_rdr.Read_bry_to_apos()); // alt - bfr.Add_byte(Xow_hzip_dict.Escape); - return bry_rdr.Pos() + 2; // +2=/> - } - public int Save_lnki(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, boolean caption) { - // href - int ttl_bgn = Bry_find_.Find_fwd(src, Find_href_bry, pos, src_len); if (ttl_bgn == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled;//hzip_mgr.Warn_by_pos_add_dflt("a.ttl_bgn_missing", bgn, pos); - ttl_bgn += Find_href_bry.length; - // site or wiki; EX: "/site/" or "/wiki/" - byte[] site = null; - Object href_tid_obj = btrie_href.Match_bgn(src, ttl_bgn, src_len); - if (href_tid_obj == null) return Xow_hzip_mgr.Unhandled; // not "/wiki/" or "/site/" - if (((Byte_obj_val)href_tid_obj).Val() == Href_tid_site) { // site; EX:"/site/en.wiktionary.org/" - int site_bgn = ttl_bgn + Href_bry_len; int site_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, site_bgn); - byte[] site_domain = Bry_.Mid(src, site_bgn, site_end); - site = site_domain; - } - else // page; EX: "/wiki/Page" - ttl_bgn += Href_bry_len; - int ttl_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, ttl_bgn , src_len); if (ttl_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn); - Xoa_ttl ttl = ttl_parser.Ttl_parse(Bry_.Mid(src, ttl_bgn, ttl_end)); if (ttl == null) return hzip_mgr.Warn_by_pos("a.ttl_invalid", ttl_bgn, ttl_end); - int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, ttl_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, ttl_end); - ++a_lhs_end; // skip > - // id - int id_bgn = Bry_find_.Find_fwd(src, Find_id_bry, ttl_end, src_len); if (id_bgn == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled; - if (id_bgn > a_lhs_end) return Xow_hzip_mgr.Unhandled; - id_bgn += Find_id_bry.length + gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix_len; - int id_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, id_bgn, src_len); if (id_end == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled; - int id = Bry_.To_int_or(src, id_bgn, id_end, -1); if (id == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled; - int a_rhs_bgn = Bry_find_.Find_fwd(src, Find_a_rhs_bgn_bry, a_lhs_end, src_len); if (a_rhs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, ttl_end); - int ttl_len = ttl_end - ttl_bgn; - int html_text_len = a_rhs_bgn - a_lhs_end; - if ( !caption // lnki_text_n; EX: [[A]] not [[A|A1]] - && site == null // not xwiki; EX: [[wikt:A]] - && html_text_len != ttl_len) { // note that in 99% of lnki_text_n cases, html_text_len == text_len; however, tidy sometimes relocates html inside html_text; PAGE:en.w:Abyssal_plain; EX:[[A]]; DATE:2015-06-02 - caption = true; // change to lnki_text_y - } - // caption - if (caption) - bfr.Add(Xow_hzip_dict.Bry_lnki_text_y); - else - bfr.Add(Xow_hzip_dict.Bry_lnki_text_n); - bfr.Add_byte((byte)ttl.Ns().Ord()); // ASSUME:NS_MAX_255; no more than 255 ns in wiki; note that ids > 255 still supported - Xow_hzip_int_.Save_bin_int_abrv(bfr, id); - if (site != null) { - bfr.Add_byte_pipe().Add(site).Add_byte_pipe(); - } - if (caption) { - bfr.Add(ttl.Page_db()); - bfr.Add_byte(Xow_hzip_dict.Escape); - stats.Lnki_text_y_add(); - return a_lhs_end; - } - else { - if (!ttl.Ns().Id_main()) // 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.Page_db()); - else // main ns should write html_text; handles [[a]] which has a - bfr.Add_mid(src, a_lhs_end, a_rhs_bgn); - bfr.Add_byte(Xow_hzip_dict.Escape); - stats.Lnki_text_n_add(); - return a_rhs_bgn + Find_a_rhs_bgn_len; - } - } - public int Save_lnke(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, byte xtid) {// http://a.org - int href_bgn = Bry_find_.Find_fwd(src, Find_href_bry, pos, src_len); if (href_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, pos); - href_bgn += Find_href_len; - int href_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, href_bgn, src_len); if (href_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, href_bgn); - int bfr_bgn = bfr.Len(); - bfr.Add_byte(Xow_hzip_dict.Escape).Add_byte(xtid); - bfr.Add_mid(src, href_bgn, href_end); - bfr.Add_byte(Xow_hzip_dict.Escape); - switch (xtid) { - case Xow_hzip_dict.Tid_lnke_txt: { - int a_rhs_bgn = Bry_find_.Find_fwd(src, Find_a_rhs_bgn_bry, href_end, src_len); if (a_rhs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, href_end); - stats.Lnke_txt_add(); - return a_rhs_bgn + Find_a_rhs_bgn_len; - } - case Xow_hzip_dict.Tid_lnke_brk_text_n: { - int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end); - if (src[a_lhs_end + 1] != Byte_ascii.Brack_bgn) { // check if next char is [; DATE:2015-08-25 - bfr.Delete_rng_to_end(bfr_bgn); // delete from start and exit; - return Xow_hzip_mgr.Unhandled; - } - int num_bgn = a_lhs_end + 2; // skip >[ - int num_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_end, num_bgn, src_len); if (num_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.num_end_missing", bgn, href_end); - int num = Bry_.To_int_or(src, num_bgn, num_end, -1); if (num == -1) return hzip_mgr.Warn_by_pos_add_dflt("a.num_invalid", num_bgn, num_end); - Xow_hzip_int_.Save_bin_int_abrv(bfr, num); - int a_rhs_bgn = num_end + 1; - int a_rhs_end = a_rhs_bgn + Find_a_rhs_bgn_len; - if (!Bry_.Match(src, a_rhs_bgn, a_rhs_end, Find_a_rhs_bgn_bry)) return hzip_mgr.Warn_by_pos_add_dflt("a.rhs_missing", bgn, href_end); - stats.Lnke_brk_text_n_add(); - return a_rhs_end; - } - case Xow_hzip_dict.Tid_lnke_brk_text_y: { - int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end); - stats.Lnke_brk_text_y_add(); - return a_lhs_end + 1; - } - default: - return hzip_mgr.Warn_by_pos("a.xtid_unknown", bgn, href_end); - } - } - private Int_obj_ref count_ref = Int_obj_ref.zero_(); - public int Load_lnke(Bry_bfr bfr, byte[] src, int src_len, int href_bgn, byte xtid) { - int href_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, href_bgn, src_len); if (href_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", href_bgn, href_bgn); - switch (xtid) { - case Xow_hzip_dict.Tid_lnke_txt: - bfr.Add_str_a7("").Add_mid(src, href_bgn, href_end).Add_str_a7(""); - return href_end + 1; // +1 to skip escape - case Xow_hzip_dict.Tid_lnke_brk_text_n: - int num = Xow_hzip_int_.Load_bin_int_abrv(src, src_len, href_end + 1, count_ref); - bfr.Add_str_a7("[").Add_int_variable(num).Add_str_a7("]"); - return href_end + 1 + count_ref.Val(); // +1 to skip escape - case Xow_hzip_dict.Tid_lnke_brk_text_y: - bfr.Add_str_a7(""); - return href_end + 1; // +1 to skip escape - default: - return hzip_mgr.Warn_by_pos("a.xtid_unknown", href_bgn, href_end); - } - } - private final Int_obj_ref id_count_ref = Int_obj_ref.neg1_(); - public int Load_lnki(Bry_bfr bfr, byte[] src, int src_len, int bgn, byte tid, Ordered_hash redlink_uids) { - // ns; 255 max - byte ns_ord = src[bgn]; - Xow_ns ns = ttl_parser.Ns_mgr().Ords_get_at(ns_ord); - // id - int id = Xow_hzip_int_.Load_bin_int_abrv(src, src_len, bgn + 1, id_count_ref); - // site - byte[] site_bry = null; - int ttl_bgn = bgn + 1 + id_count_ref.Val(); - if (src[ttl_bgn] == Byte_ascii.Pipe) { // if "|" after ns, then site is present; EX: "0|enwiki" vs. "0page" - int site_bgn = ttl_bgn + 1; - int site_end = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, site_bgn, src_len); - site_bry = Bry_.Mid(src, site_bgn, site_end); - ttl_bgn = site_end + 1; - } - // page - int ttl_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, ttl_bgn, src_len); if (ttl_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn); - byte[] ttl_bry = Bry_.Mid(src, ttl_bgn, ttl_end); - Xoa_ttl ttl = ttl_parser.Ttl_parse(ns.Id(), ttl_bry); if (ttl == null) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_is_invalid", bgn, ttl_bgn); - byte[] ttl_full = ttl.Full_db(); - bfr.Add_str_a7("").Add(ttl_bry); - bfr.Add_str_a7(""); - } - else { - bfr.Add(ttl.Page_txt()).Add_str_a7("'>"); - } - return rv; - } - public void Html_plain(Bry_bfr bfr, Xop_lnki_tkn lnki) { - bfr.Add_str_a7 - ( lnki.Caption_exists() // caption exists; EX: [[A|b]] - || lnki.Tail_bgn() != -1 // trailing chars; EX: [[A]]b - ? "") - , Find_img_xatrs = Bry_.new_a7("xatrs='") - ; - private static final byte Href_tid_wiki = 1, Href_tid_site = 2; - private static final int Href_bry_len = 6; // "/wiki/".length - private static final Btrie_fast_mgr btrie_href = Btrie_fast_mgr.cs() - .Add_str_byte("/wiki/", Href_tid_wiki) - .Add_str_byte("/site/", Href_tid_site); - private static final int - Find_href_len = Find_href_bry.length - , Find_a_rhs_bgn_len = Find_a_rhs_bgn_bry.length - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java deleted file mode 100644 index 84a2c5243..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java +++ /dev/null @@ -1,125 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.xowa.htmls.*; -public class Xow_hzip_itm__anchor_tst { - @Before public void init() {fxt.Clear();} private Xow_hzip_mgr_fxt fxt = new Xow_hzip_mgr_fxt(); - @Test public void Srl_lnki_text_n() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); // 2=ns_ord for Main - fxt.Test_save(brys, "A"); - fxt.Test_load(brys, "A"); - } - @Test public void Srl_lnki_text_n_alt_case() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("a"), Xow_hzip_dict.Escape_bry); - fxt.Test_save(brys, "a"); - fxt.Test_load(brys, "a"); - } - @Test public void Srl_lnki_text_n_ns() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(12), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); - fxt.Test_save(brys, "Template:A"); - fxt.Test_load(brys, "Template:A"); - } - @Test public void Srl_lnki_text_n_apos() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(12), fxt.Make_int(3), Bry_.new_a7("A'b"), Xow_hzip_dict.Escape_bry); - fxt.Test_save(brys, "Template:A'b"); - fxt.Test_load(brys, "Template:A'b"); - } - @Test public void Srl_lnki_text_n_xwiki() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Byte_ascii.Pipe_bry, Bry_.new_a7("en.wiktionary.org"), Byte_ascii.Pipe_bry, Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); - fxt.Test_save(brys, "A"); - fxt.Test_load(brys, "A"); - } - @Test public void Srl_lnki_text_n_smoke() { - byte[][] brys = Bry_.Ary(Bry_.new_a7("a_1"), Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("a_2")); - fxt.Test_save(brys, "a_1Aa_2"); - fxt.Test_load(brys, "a_1Aa_2"); - } - @Test public void Srl_lnki_text_y() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("A1"), Xow_hzip_dict.Bry_a_rhs); - fxt.Test_save(brys, "A1"); - fxt.Test_load(brys, "A1"); - } - @Test public void Srl_lnki_text_y_nest() { - byte[][] brys = Bry_.Ary - ( Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry - , Bry_.new_a7("B"), Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("C"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("C1"), Xow_hzip_dict.Bry_a_rhs, Bry_.new_a7("D") - , Xow_hzip_dict.Bry_a_rhs - ); - fxt.Test_save(brys, "BC1D"); - fxt.Test_load(brys, "BC1D"); - } - @Test public void Srl_noop() { - byte[][] brys = Bry_.Ary(Bry_.new_a7("A"), Xow_hzip_dict.Bry_a_rhs); // NOTE: still converts "" to hzip - fxt.Test_save(brys, "A"); - fxt.Test_load(brys, "A"); - } - @Test public void Srl_lnki_text_y__multiple() { // PURPOSE: if id is missing from 1st anchor, do not get from second - byte[][] brys = Bry_.Ary(Bry_.new_a7("A") - , Xow_hzip_dict.Bry_a_rhs - , Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("B"), Xow_hzip_dict.Escape_bry - ); - fxt.Test_save(brys, "AB"); - fxt.Test_load(brys, "AB"); - } - @Test public void Srl_lnki_text_y__html() { // PURPOSE: PAGE:en.w:Abyssal_plain; DATE:2015-06-02 - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("A1"), Xow_hzip_dict.Bry_a_rhs); - fxt.Test_save(brys, "A1"); - } - @Test public void Srl_lnke_txt() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnke_txt, Bry_.new_a7("http://a.org"), Xow_hzip_dict.Escape_bry); - fxt.Test_save(brys, "http://a.org"); - fxt.Test_load(brys, "http://a.org"); - } - @Test public void Srl_lnke_brk_y() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnke_brk_text_y, Bry_.new_a7("http://a.org"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("A1"), Xow_hzip_dict.Bry_a_rhs); - fxt.Test_save(brys, "A1"); - fxt.Test_load(brys, "A1"); - } - @Test public void Srl_lnke_brk_n() { - byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnke_brk_text_n, Bry_.new_a7("http://a.org"), Xow_hzip_dict.Escape_bry, Xow_hzip_int_.Save_bin_int_abrv(123)); - fxt.Test_save(brys, "[123]"); - fxt.Test_load(brys, "[123]"); - } - @Test public void Srl_lnke_brk_n__tidy() { // PURPOSE:handle reparenting of html elements by HTML tidy EX:[http://a.org]; DATE:2015-08-25 - String raw_bgn = "[123]"; - byte[][] brys = Bry_.Ary(Bry_.new_u8(raw_bgn), Xow_hzip_dict.Bry_a_rhs); - fxt.Test_save(brys, raw_bgn + ""); - } - @Test public void Html_lnki_ttl() { - fxt.Test_html("[[A]]", "A"); - } - @Test public void Html_lnki_capt() { - fxt.Test_html("[[A|a]]", "a"); - } - @Test public void Html_lnki_trail() { - fxt.Test_html("[[A]]b", "Ab"); - } - @Test public void Html_lnki_xwiki() { - fxt.Init_xwiki("wikt", "en.wiktionary.org"); - fxt.Test_html("[[wikt:A]]", "wikt:A"); - } - @Test public void Html_lnke_txt() { - fxt.Test_html("http://a.org", "http://a.org"); - } - @Test public void Html_lnke_brk_n() { - fxt.Test_html("[http://a.org]", "[1]"); - } - @Test public void Html_lnke_brk_y() { - fxt.Test_html("[http://a.org A]", "A"); - } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java deleted file mode 100644 index f4ceef8f4..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java +++ /dev/null @@ -1,55 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*; -public class Xow_hzip_itm__header { - private Xow_hzip_mgr hzip_mgr; - public Xow_hzip_itm__header(Xow_hzip_mgr hzip_mgr) {this.hzip_mgr = hzip_mgr;} - public int Save(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos) {//

    A

    - if (pos >= src_len) return Xow_hzip_mgr.Unhandled; - byte hdr_num_byte = src[pos]; - switch (hdr_num_byte) { - case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: - case Byte_ascii.Num_4: case Byte_ascii.Num_5: case Byte_ascii.Num_6: - break; - default: - return Xow_hzip_mgr.Unhandled; - } - int span_lhs_bgn = pos + 2; // +2 to skip # and >; EX: "

    " - int span_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, span_lhs_bgn, src_len); if (span_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.span_end_missing", bgn, pos); - ++span_lhs_end; // +1 to skip > - bfr.Add(Xow_hzip_dict.Bry_hdr_lhs); - byte hdr_num = (byte)(hdr_num_byte - Byte_ascii.Num_0); - bfr.Add_byte(hdr_num); - int hdr_end = Bry_find_.Find_fwd(src, Hdr_end, span_lhs_end, src_len); if (hdr_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.capt_end_missing", bgn, span_lhs_end); - bfr.Add_mid(src, span_lhs_end, hdr_end); - hdr_end += Hdr_end.length; - bfr.Add(Xow_hzip_dict.Escape_bry); - stats.Hdr_add(hdr_num); - return hdr_end + 12; // +12 = "

    " - } - public int Load(Bry_bfr bfr, byte[] src, int src_len, int bgn) { - byte hdr_num = (byte)(src[bgn] + Byte_ascii.Num_0); - int capt_bgn = bgn + 1; - int capt_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, capt_bgn, src_len); if (capt_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("hdr.capt_end_missing", bgn, capt_bgn); - bfr.Add_str_a7("").Add_mid(src, capt_bgn, capt_end).Add_str(""); - return capt_end + 1; - } - public void Html(Bry_bfr bfr, boolean caption) {} - public static final byte[] Hdr_end = Bry_.new_a7(""); -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java deleted file mode 100644 index 6630b9df2..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java +++ /dev/null @@ -1,38 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.xowa.htmls.*; -public class Xow_hzip_itm__header_tst { - @Before public void init() {fxt.Clear();} private Xow_hzip_mgr_fxt fxt = new Xow_hzip_mgr_fxt(); - @Test public void Srl_basic() { -// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.new_ints(2), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); -// fxt.Test_save(brys, "

    A

    "); -// fxt.Test_load(brys, "

    A

    "); - } -// @Test public void Html_basic() { -// fxt.Test_html("==A==", "

    A

    \n"); -// } -// @Test public void Srl_anchor() { -// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.new_ints(2), Bry_.new_a7("A b c"), Xow_hzip_dict.Escape_bry); -// fxt.Test_save(brys, "

    A b c

    "); -//// fxt.Test_load(brys, "

    A b c

    "); -// } -// @Test public void Html_anchor() { -// fxt.Test_html("==A [[b]] c==", "

    A b c

    \n"); -// } -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java deleted file mode 100644 index bd027c2fc..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java +++ /dev/null @@ -1,98 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.btries.*; -class Xow_hzip_itm__href { - public void Save(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, byte bgn_quote) { -// // ignore anchors; EX: "#a" -// int proto_bgn = pos; -// int proto_end = Bry_find_.Find_fwd(src, Byte_ascii.Colon, proto_bgn, src_len); -// byte proto_tid = Tid_proto_other; -// if (proto_end != Bry_find_.Not_found) { -// Object proto_obj = proto_trie.Match_exact(src, pos, proto_bgn); -// if (proto_obj != null) -// proto_tid = ((Byte_obj_val)proto_obj).Val(); -// pos = Bry_find_.Find_fwd_while(src, proto_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after / -// } -// // stats.Lnke_proto_reg(proto_tid, src, proto_bgn, proto_end); -// -// int domain_bgn = pos; -// int domain_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, domain_bgn, src_len); -// if (domain_end == Bry_find_.Not_found) // href has no slash; assume entire String is domain EX: "www.a.org" -// domain_end = Bry_find_.Find_fwd(src, bgn_quote, pos, src_len); -// -// int tld_pos = Bry_find_.Find_bwd(src, Byte_ascii.Dot, domain_bgn, src_len); -// byte tld_tid = Tid_tld_other; -// if (tld_pos != Bry_.NotFound) { -// Object tld_obj = tld_trie.Match_exact(src, domain_bgn, domain_end); -// if (tld_obj != null) -// tld_tid = ((Byte_obj_val)tld_obj).Val(); -// pos = Bry_find_.Find_fwd_while(src, domain_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after / -// } -// // stats.Lnke_tld_reg(tld_tid, src, domain_bgn, domain_end); - } - public static final byte // 2 - Tid_proto_other = 0 - , Tid_proto_http = 1 - , Tid_proto_https = 2 - ; - public static final byte // 3 - Tid_tld_other = 0 - , Tid_tld_com = 1 - , Tid_tld_org = 2 - , Tid_tld_net = 3 - , Tid_tld_gov = 4 - ; - public static final byte // 3 - Tid_ext_other = 0 - , Tid_ext_none = 1 - , Tid_ext_htm = 2 - , Tid_ext_html = 3 - , Tid_ext_php = 4 - , Tid_ext_jsp = 5 - , Tid_ext_asp = 6 - , Tid_ext_aspx = 7 - ; -// private static final Btrie_slim_mgr proto_trie = Btrie_slim_mgr.ci_a7() -// .Add_str_byte("http", Tid_proto_http) -// .Add_str_byte("https", Tid_proto_http) -// ; -// private static final Btrie_slim_mgr tld_trie = Btrie_slim_mgr.ci_a7() -// .Add_str_byte("com", Tid_tld_com) -// .Add_str_byte("org", Tid_tld_org) -// .Add_str_byte("net", Tid_tld_net) -// .Add_str_byte("gov", Tid_tld_gov) -// ; -// private static final Btrie_slim_mgr ext_trie = Btrie_slim_mgr.ci_a7() -// .Add_str_byte("htm", Tid_ext_htm) -// .Add_str_byte("html", Tid_ext_html) -// .Add_str_byte("php", Tid_ext_php) -// .Add_str_byte("jsp", Tid_ext_jsp) -// .Add_str_byte("asp", Tid_ext_asp) -// .Add_str_byte("aspx", Tid_ext_aspx) -// ; - // e // xwiki [[simple:xx - // "Descriptor Terms (Feature Types)" - /* - 0: proto,tld,ext - 1-n: domain - n: 0: domain_end - n: url remainder - n: 0: url_end - */ -} diff --git a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java deleted file mode 100644 index c12777e52..000000000 --- a/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java +++ /dev/null @@ -1,109 +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.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.wikis.ttls.*; -public class Xow_hzip_mgr { - private final Gfo_usr_dlg usr_dlg; - private byte[] page_url; private byte[] src; private int src_len; - public Xow_hzip_mgr(Gfo_usr_dlg usr_dlg, Xow_ttl_parser ttl_parser) { - this.usr_dlg = usr_dlg; - itm__anchor = new Xow_hzip_itm__anchor(this, ttl_parser); - itm__header = new Xow_hzip_itm__header(this); - } - public Xow_hzip_itm__anchor Itm__anchor() {return itm__anchor;} private Xow_hzip_itm__anchor itm__anchor; - public Xow_hzip_itm__header Itm__header() {return itm__header;} private Xow_hzip_itm__header itm__header; - public void Write(Bry_bfr bfr, Xodump_stats_itm stats, byte[] page_url, byte[] src) { - this.page_url = page_url; this.src = src; this.src_len = src.length; - bfr.Clear(); stats.Clear(); - int pos = 0, add_bgn = -1; - while (pos < src_len) { - byte b = src[pos]; - Object o = btrie.Match_bgn_w_byte(b, src, pos, src_len); - if (o == null) { - if (add_bgn == -1) add_bgn = pos; - ++pos; - } - else { - if (add_bgn != -1) {bfr.Add_mid(src, add_bgn, pos); add_bgn = -1;} - byte tid = ((Byte_obj_val)o).Val(); - int match_bgn = pos; - int match_end = btrie.Match_pos(); - switch (tid) { - case Tid_a_lhs: pos = itm__anchor.Save(bfr, stats, src, src_len, match_bgn, match_end); break; - case Tid_a_rhs: pos = itm__anchor.Save_a_rhs(bfr, stats, src, src_len, match_bgn, match_end); break; - case Tid_h_lhs: pos = itm__header.Save(bfr, stats, src, src_len, match_bgn, match_end); break; - default: Warn_by_pos("save.tid.unknown", match_bgn, match_end); pos = match_end; continue; - } - if (pos == Unhandled) { - bfr.Add_mid(src, match_bgn, match_end); - pos = match_end; - } - } - } - if (add_bgn != -1) bfr.Add_mid(src, add_bgn, src_len); - } - public byte[] Parse(Bry_bfr rv, byte[] page_url, byte[] src, Ordered_hash redlink_uids) { - this.page_url = page_url; this.src = src; - this.src_len = src.length; - int pos = 0, add_bgn = -1; - rv.Clear(); - while (pos < src_len) { - byte b = src[pos]; - if (b == Xow_hzip_dict.Escape) { - if (add_bgn != -1) {rv.Add_mid(src, add_bgn, pos); add_bgn = -1;} - int itm_pos = pos + 2; - int tid_pos = pos + 1; if (tid_pos >= src_len) {Warn_by_pos("load.eos", pos, itm_pos); break;} - byte tid = src[tid_pos]; - switch (tid) { - case Xow_hzip_dict.Tid_lnki_text_n: - case Xow_hzip_dict.Tid_lnki_text_y: pos = itm__anchor.Load_lnki(rv, src, src_len, itm_pos, tid, redlink_uids); break; - case Xow_hzip_dict.Tid_lnke_txt: - case Xow_hzip_dict.Tid_lnke_brk_text_n: - case Xow_hzip_dict.Tid_lnke_brk_text_y: pos = itm__anchor.Load_lnke(rv, src, src_len, itm_pos, tid); break; - case Xow_hzip_dict.Tid_a_rhs: pos = itm_pos; rv.Add_str(""); break; - case Xow_hzip_dict.Tid_hdr_lhs: pos = itm__header.Load(rv, src, src_len, itm_pos); break; - default: pos = itm_pos; Warn_by_pos("hzip.load.unknown", pos, itm_pos); break; // NOTE: should not happen, but handle else infinite loop; DATE:2015-06-08 - } - } - else { - if (add_bgn == -1) add_bgn = pos; - ++pos; - } - } - if (add_bgn != -1) rv.Add_mid(src, add_bgn, src_len); - return rv.To_bry_and_clear(); - } - public int Warn_by_pos_add_dflt(String err, int bgn, int end) {return Warn_by_pos(err, bgn, end, 32);} - public int Warn_by_pos(String err, int bgn, int end) {return Warn_by_pos(err, bgn, end, 0);} - private int Warn_by_pos(String err, int bgn, int end, int end_adj) { - end += end_adj; if (end > src_len) end = src_len; - usr_dlg.Warn_many("", "", "hzip failed: page=~{0} err=~{1} mid=~{2}", String_.new_u8(page_url), err, String_.new_u8(src, bgn, end)); - return end + 1; - } - public static final int Unhandled = -1; - private static final byte - Tid_a_lhs = 0 - , Tid_a_rhs = 1 - , Tid_h_lhs = 2 - ; - private Btrie_slim_mgr btrie = Btrie_slim_mgr.cs() - .Add_str_byte("" , Tid_a_rhs) -// .Add_str_byte(". -*/ -package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.core.primitives.*; -class Xow_hzip_xtid { - public static int Find_xtid(Xow_hzip_mgr hzip_mgr, byte[] src, int src_len, int bgn, int pos, Byte_obj_ref xtid_ref) { - int xtid_bgn = pos + Len_xtid; if (!Bry_.Match(src, pos, xtid_bgn, Bry_xtid)) return Xow_hzip_mgr.Unhandled; // next atr should be "xtid='" - int xtid_end = Bry_find_.Find_fwd(src, Byte_ascii.Apos, xtid_bgn); if (xtid_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("xtid_end_missing", bgn, xtid_bgn); - Object xtid_obj = Xtids.Get_by_mid(src, xtid_bgn, xtid_end); if (xtid_obj == null) return hzip_mgr.Warn_by_pos("a.xtid_invalid", xtid_bgn, xtid_end); - xtid_ref.Val_(xtid_obj == null ? Byte_.Min_value : ((Byte_obj_val)xtid_obj).Val()); - return xtid_end; - } - private static final byte[] - Bry_xtid = Bry_.new_a7("xtid='") - ; - private static final int - Len_xtid = Bry_xtid.length - ; - public static final byte[] - Bry_lnki_text_n = Bry_.new_a7("a_lnki_text_n") - , Bry_lnki_text_y = Bry_.new_a7("a_lnki_text_y") - , Bry_lnke_txt = Bry_.new_a7("a_lnke_txt") - , Bry_lnke_brk_n = Bry_.new_a7("a_lnke_brk_n") - , Bry_lnke_brk_y = Bry_.new_a7("a_lnke_brk_y") - , Bry_img_full = Bry_.new_a7("a_img_full") - , Bry_hdr = Bry_.new_a7("hdr") - ; - private static final Hash_adp_bry Xtids = Hash_adp_bry.cs() - .Add_bry_byte(Bry_lnki_text_n , Xow_hzip_dict.Tid_lnki_text_n) - .Add_bry_byte(Bry_lnki_text_y , Xow_hzip_dict.Tid_lnki_text_y) - .Add_bry_byte(Bry_lnke_txt , Xow_hzip_dict.Tid_lnke_txt) - .Add_bry_byte(Bry_lnke_brk_n , Xow_hzip_dict.Tid_lnke_brk_text_n) - .Add_bry_byte(Bry_lnke_brk_y , Xow_hzip_dict.Tid_lnke_brk_text_y) - .Add_bry_byte(Bry_img_full , Xow_hzip_dict.Tid_img_full) - .Add_bry_byte(Bry_hdr , Xow_hzip_dict.Tid_hdr_lhs) - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java index aebf7115d..403061b3b 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java @@ -29,10 +29,10 @@ public class Xoh_js_cbk implements GfoInvkAble { public Xoh_js_cbk(Xog_html_itm html_itm) {this.html_itm = html_itm; this.app = html_itm.Owner_tab().Tab_mgr().Win().App();} private String Xowa_exec_test(GfoMsg m) { // concat args with pipe; EX: xowa_exec('proc', 'arg0', 'arg1'); -> proc|arg0|arg1 bfr.Clear(); - bfr.Add_str(m.Key()); + bfr.Add_str_u8(m.Key()); int len = m.Args_count(); for (int i = 0; i < len; i++) - bfr.Add_str_a7("|").Add_str(m.Args_getAt(i).Val_to_str_or_empty()); + bfr.Add_str_a7("|").Add_str_u8(m.Args_getAt(i).Val_to_str_or_empty()); return bfr.To_str_and_clear(); } private String[] Xowa_exec_test_as_array(GfoMsg m) {// return args as array; EX: xowa_exec('proc', 'arg0', 'arg1'); -> proc,arg0,arg1 diff --git a/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner.java similarity index 95% rename from 400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.java rename to 400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner.java index e5d7f3dfa..5738477e5 100644 --- a/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner.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.xowa.htmls.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +package gplx.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.btries.*; public class Xoh_js_cleaner { private Xoae_app app; private boolean ctor = true; diff --git a/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_tst.java rename to 400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner_tst.java index 259a7f927..6bfd88c46 100644 --- a/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cleaner_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.xowa.htmls.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +package gplx.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_js_cleaner_tst { @Before public void init() {fxt.Init();} private Xoh_js_cleaner_fxt fxt = new Xoh_js_cleaner_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java index 8fa54c43f..ab9531185 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java @@ -26,7 +26,7 @@ class Xow_popup_anchor_finder { int lhs_bgn = bgn; while (true) { lhs_bgn = Bry_find_.Find_fwd(src, Hdr_bgn, nl_lhs, src_len); - if (lhs_bgn == Bry_.NotFound) break; // "\n=" not found; exit; + if (lhs_bgn == Bry_find_.Not_found) break; // "\n=" not found; exit; if (Find_hdr(lhs_bgn)) return lhs_bgn; } return Find_id(bgn); 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 f37148e28..6669f9fd1 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 @@ -45,7 +45,7 @@ public class Xow_popup_html_mkr { , String_.new_u8(page.Ttl().Full_txt()) , popup_itm.Popup_id() , Xow_popup_html_bldr_.Bld_fmtr_wiki(fmtr_wiki, wrdx_bfr, cur_wiki.Domain_bry(), page.Wiki().Domain_bry()) // NOTE: use cur_wiki, not page_wiki; DATE:2014-06-28 - , gplx.ios.Io_size_.To_str(page.Data_raw().length) + , gplx.core.ios.Io_size_.To_str(page.Data_raw().length) , page.Revision_data().Modified_on().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() , Xow_popup_html_bldr_.Bld_fmtr_viewed(fmtr_viewed, app, wiki, wrdx_bfr, page.Ttl()) , app.Fsys_mgr().Root_dir().To_http_file_bry() 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 e331c56c3..22799b966 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 @@ -18,7 +18,7 @@ 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.btries.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.apps.apis.xowa.html.modules.*; import gplx.xowa.htmls.modules.popups.keeplists.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; import gplx.xowa.htmls.modules.popups.keeplists.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.guis.views.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; public class Xow_popup_parser { @@ -220,7 +220,7 @@ class Xow_popup_parser_ { Xop_tkn_itm tkn = Get_expensive_dangling_tkn(ctx); if (tkn == null) return rv_default; // no expensive tkns found; return rv_default; EX: headers are not considered expensive int tkn_end = Calc_tkn_end(tkn, src, end); - if (tkn_end == Bry_.NotFound) return rv_default; // no end found; return rv_default; might want to return src.length at future date + if (tkn_end == Bry_find_.Not_found) return rv_default; // no end found; return rv_default; might want to return src.length at future date return tkn_end - bgn; } private static Xop_tkn_itm Get_expensive_dangling_tkn(Xop_ctx ctx) { @@ -242,7 +242,7 @@ class Xow_popup_parser_ { end_bry = Xop_tblw_lxr.Hook_te; break; } - if (end_bry == null) return Bry_.NotFound; // no end defined for tkn; return null which should revert to dflt + if (end_bry == null) return Bry_find_.Not_found; // no end defined for tkn; return null which should revert to dflt int end_pos = Bry_find_.Find_fwd(src, end_bry, pos); return end_pos == Bry_find_.Not_found ? Bry_find_.Not_found : end_pos + end_bry.length; } diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java index ab3c567b7..625f5e2c9 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java @@ -68,7 +68,7 @@ public class Xow_popup_parser_tst { @Test public void Lnke_text() { // PURPOSE: count entire lnke as one word fxt.Init_tmpl_read_len_(32).Init_word_needed_(5).Test_parse ( "a http://b.org c d e f g", String_.Concat_lines_nl_skip_last - ( "

    a http://b.org c d e" + ( "

    a http://b.org c d e" , "

    " )); } @@ -507,7 +507,7 @@ class Xop_popup_parser_fxt { } public void Test_Assert_at_end(String raw, String expd) { if (test_bfr == null) test_bfr = Bry_bfr.new_(); - test_bfr.Clear().Add_str(raw); + test_bfr.Clear().Add_str_u8(raw); Bry_bfr_.Assert_at_end(test_bfr, Byte_ascii.Nl); Tfds.Eq(expd, test_bfr.To_str_and_clear()); } private Bry_bfr test_bfr; diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java index 2e0afffe9..54854b7ac 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java @@ -175,7 +175,7 @@ public class Xow_popup_wrdx_mkr { int atrs_len = atrs_ary.length; for (int i = 0; i < atrs_len; i++) { Mwh_atr_itm atr = atrs_ary[i]; - if ( Bry_.Eq(atr.Key_bry(), Html_atr_.Id_bry) + if ( Bry_.Eq(atr.Key_bry(), Html_atr_.Bry__id) && xnde_id_ignore_list.Get_by_bry(atr.Val_as_bry()) != null ) { return true; 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 59bfc40e8..f42b3825f 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 @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.xfers.*; import gplx.xowa.files.origs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg { @@ -42,7 +42,7 @@ public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg { if (xfer_itm.File_exists()) { // file exists long file_size = Io_mgr.Instance.QueryFil(xfer_itm.Html_orig_url()).Size(); if (file_size == -1) file_size = 0; // QueryFil returns -1 if file doesn't exist - this.file_size_bry = Bry_.new_a7(gplx.ios.Io_size_.To_str(file_size)); + this.file_size_bry = Bry_.new_a7(gplx.core.ios.Io_size_.To_str(file_size)); } String commons_notice = page.Commons_mgr().Xowa_mockup() ? String_.Format(Str_commons_notice, gplx.langs.htmls.Html_utl.Escape_for_atr_val_as_bry(tmp_bfr, Byte_ascii.Apos, page.Ttl().Full_db_as_str())) 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 5c28c1fcc..bad2e5f57 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 @@ -24,7 +24,7 @@ public class Xoh_subpages_bldr implements Bry_fmtr_arg { public byte[] Bld(Xow_ns_mgr ns_mgr, Xoa_ttl ttl) { Xow_ns ns = ttl.Ns(); if (! ( ns.Subpages_enabled() // ns has subpages - && ttl.Leaf_bgn() != Bry_.NotFound // ttl has leaf text; EX: Help:A/B + && ttl.Leaf_bgn() != Bry_find_.Not_found // ttl has leaf text; EX: Help:A/B && ns.Id() != ns_mgr.Ns_page_id() // ns is not [[Page:]]; PAGE:en.s:Notes_on_Osteology_of_Baptanodon._With_a_Description_of_a_New_Species DATE:2014-09-06 ) ) return Bry_.Empty; // doesn't match above; return empty; diff --git a/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_itm.java b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_itm.java new file mode 100644 index 000000000..cad82f215 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_itm.java @@ -0,0 +1,37 @@ +/* +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.sections; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +public class Xoh_section_itm { + public Xoh_section_itm(int uid, int level, byte[] anchor, byte[] header) { + this.uid = uid; this.level = level; this.anchor = anchor; this.header = header; + } + public int Uid() {return uid;} private final int uid; + public int Level() {return level;} private final int level; + public byte[] Anchor() {return anchor;} private final byte[] anchor; + public byte[] Header() {return header;} private final byte[] header; + public byte[] Content() {return content;} private byte[] content; + public Xoh_section_itm Content_(byte[] v) {this.content = v; return this;} + public int Content_bgn() {return content_bgn;} public Xoh_section_itm Content_bgn_(int v) {content_bgn = v; return this;} private int content_bgn; + public void To_bfr(Bry_bfr bfr) { + bfr.Add_int_variable(uid).Add_byte_pipe(); + bfr.Add_int_variable(level).Add_byte_pipe(); + bfr.Add(anchor).Add_byte_pipe(); + bfr.Add(header).Add_byte_pipe(); + bfr.Add_safe(content).Add_byte_nl(); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java new file mode 100644 index 000000000..b67da255a --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java @@ -0,0 +1,39 @@ +/* +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.sections; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +public class Xoh_section_mgr { + private final List_adp list = List_adp_.new_(); + public int Len() {return list.Count();} + public Xoh_section_itm Get_at(int i) {return (Xoh_section_itm)list.Get_at(i);} + public Xoh_section_itm Add(int uid, int level, byte[] anchor, byte[] display) { + Xoh_section_itm rv = new Xoh_section_itm(uid, level, anchor, display); + list.Add(rv); + return rv; + } + public void Set_content(int section_idx, byte[] src, int pos) { + Xoh_section_itm itm = this.Get_at(section_idx); + itm.Content_(Bry_.Mid(src, itm.Content_bgn(), pos)); + } + public void To_bfr(Bry_bfr bfr) { + int len = this.Len(); + for (int i = 0; i < len; ++i) { + Xoh_section_itm itm = this.Get_at(i); + itm.To_bfr(bfr); + } + } +} 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 f6dde761b..f47046995 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 @@ -77,7 +77,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { grps.Add(cur_grp); } else { - if (pipe_pos == Bry_.NotFound) { // not of format of "href|main"; (EX: "href_only") + if (pipe_pos == Bry_find_.Not_found) { // not of format of "href|main"; (EX: "href_only") if (!Ignore(wiki.Domain_bry(), bry)) // suppress warning if ignored; DATE:2014-02-11 wiki.Appe().Usr_dlg().Warn_many(GRP_KEY, "parse.line.missing_text", "sidebar item is missing pipe; only href is available; item will be hidden: item=~{0}", String_.new_u8(bry)); continue; diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java index 31c87be78..4b3e42d6d 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; public class Xow_toc_mgr implements Bry_fmtr_arg { private static final int Toc_levels = 32; // assume 6 max levels * 5 max heading (9999.); add 2 for good measure @@ -38,7 +39,7 @@ public class Xow_toc_mgr implements Bry_fmtr_arg { int hdrs_len = hdr_mgr.Len(); for (int i = 0; i < hdrs_len; i++) { Xop_hdr_tkn hdr = hdr_mgr.Get_at(i); - int eq_cur = hdr.Hdr_len(); + int eq_cur = hdr.Hdr_level(); switch (CompareAble_.Compare(eq_cur, eq_prv)) { case CompareAble_.More: // always increase slot if (eq_prv != 0) { // add to path_bfr, unless 1st diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java index d4934e16d..97ee36bec 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_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.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.xowa.parsers.*; +import org.junit.*; import gplx.xowa.parsers.*; import gplx.xowa.htmls.core.htmls.*; public class Xow_toc_mgr_tst { private Xow_toc_mgr_fxt fxt = new Xow_toc_mgr_fxt(); @Before public void init() {fxt.Clear();} diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java index ac49cefae..8aa6feb71 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.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.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.core.log_msgs.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.*; public class Xobc_utl_make_lang implements GfoInvkAble { diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java index 06a5003ce..66f607612 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_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.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.consoles.*; import gplx.core.intls.*; import gplx.langs.phps.*; +import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.consoles.*; import gplx.core.intls.*; import gplx.langs.phps.*; import gplx.core.log_msgs.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.parsers.*; import gplx.xowa.langs.specials.*; @@ -227,7 +227,7 @@ public class Xol_mw_lang_parser { Bry_.Replace_all_direct(kv_val, Byte_ascii.Underline, Byte_ascii.Space); // NOTE: siteInfo.xml names have " " not "_" (EX: "User talk"). for now, follow that convention int ns_id = Id_by_mw_name(kv_key); // if (ns_id == Xow_ns_.Id_null) throw Err_mgr.Instance.fmt_auto_(GRP_KEY, "namespace_names", String_.new_u8(kv_key)); - rv[i / 2] = new Xow_ns(ns_id, Xow_ns_case_.Id_1st, kv_val, false); // note that Xow_ns is being used as glorified id-name struct; case_match and alias values do not matter + rv[i / 2] = new Xow_ns(ns_id, Xow_ns_case_.Tid__1st, kv_val, false); // note that Xow_ns is being used as glorified id-name struct; case_match and alias values do not matter } return rv; } diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java index b0f3fa996..1ec718549 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; -import gplx.core.intls.*; import gplx.xowa.parsers.lnkis.*; +import gplx.core.intls.*; import gplx.core.log_msgs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.specials.*; public class Xol_mw_lang_parser_tst { diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java index 549b3f0a9..75fed188c 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java @@ -83,8 +83,8 @@ public class Xol_case_itm_ { private static int parse_mw_grp(Ordered_hash hash, byte[] raw, boolean section_is_upper, int find_bgn) { byte[] find = section_is_upper ? parse_mw_upper : parse_mw_lower; int raw_len = raw.length; - int pos = Bry_find_.Find_fwd(raw, find, find_bgn); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find section name", "name", String_.new_u8(find)); - pos = Bry_find_.Find_fwd(raw, Byte_ascii.Curly_bgn, pos, raw_len); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find '{' after section name", "name", String_.new_u8(find)); + int pos = Bry_find_.Find_fwd(raw, find, find_bgn); if (pos == Bry_find_.Not_found) throw Err_.new_wo_type("could not find section name", "name", String_.new_u8(find)); + pos = Bry_find_.Find_fwd(raw, Byte_ascii.Curly_bgn, pos, raw_len); if (pos == Bry_find_.Not_found) throw Err_.new_wo_type("could not find '{' after section name", "name", String_.new_u8(find)); int itm_bgn = 0; boolean quote_off = true, itm_is_first = true; byte[] cur_lhs = Bry_.Empty; diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java index e1f266e6e..718364a89 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java @@ -40,6 +40,7 @@ public class Xol_grammar_ { switch (lang_id) { case Xol_lang_stub_.Id_fi: return new Xol_grammar_fi(); case Xol_lang_stub_.Id_ru: return new Xol_grammar_ru(); + case Xol_lang_stub_.Id_he: return new Xol_grammar_he(); case Xol_lang_stub_.Id_pl: return Xol_grammar__noop.Instance; default: return Xol_grammar__unimplemented.Instance; } diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java new file mode 100644 index 000000000..7b560a61b --- /dev/null +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java @@ -0,0 +1,53 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.langs.grammars; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.core.btries.*; +public class Xol_grammar_he implements Xol_grammar { + public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) { + // if ( isset( $wgGrammarForms['he'][$case][$word] ) ) return $wgGrammarForms['he'][$case][$word]; // TODO: implement global $wgGrammarForms; WHEN: need to find he.w entries for DefaultSettings.php + if (hash.Get_as_int_or(type, -1) == Tid__prefixed) { + // Duplicate the "Waw" if prefixed, but not if it is already double. + if ( Bry_.Match(word, 0, 2, Bry__waw__0) // "ו" + && !Bry_.Match(word, 0, 4, Bry__waw__1) // "וו" + ) + word = Bry_.Add(Bry__waw__0, word); + + // Remove the "He" article if prefixed + if ( Bry_.Match(word, 0, 2, Bry__he__0)) // "ה" + word = Bry_.Mid(word, 2); + + // Add a hyphen (maqaf) before non-Hebrew letters. + if ( Bry_.Match(word, 0, 2, Bry__maqaf__0) // "א" + || Bry_.Compare(word, 0, 2, Bry__maqaf__1, 0, 2) == CompareAble_.More // "ת" + ) + word = Bry_.Add(Bry__maqaf__2, word); + } + bfr.Add(word); + return true; + } + private static final int Tid__prefixed = 1; + private static final Hash_adp_bry hash = Hash_adp_bry.ci_u8(gplx.xowa.langs.cases.Xol_case_mgr_.U8()) + .Add_str_int("prefixed" , Tid__prefixed) + .Add_str_int("תחילית" , Tid__prefixed) + ; + private static final byte[] + Bry__waw__0 = Bry_.new_u8("ו"), Bry__waw__1 = Bry_.new_u8("וו") + , Bry__he__0 = Bry_.new_u8("ה") + , Bry__maqaf__0 = Bry_.new_u8("א"), Bry__maqaf__1 = Bry_.new_u8("ת"), Bry__maqaf__2 = Bry_.new_u8("־") + ; +} diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java index 589ae29f0..b0fa1562a 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java @@ -66,7 +66,7 @@ public class Xol_msg_mgr_ { public static Xol_msg_itm Get_msg_itm(Bry_bfr tmp_bfr, Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key) { byte[] msg_key_sub_root = msg_key; int slash_pos = Bry_find_.Find_bwd(msg_key, Byte_ascii.Slash); - if (slash_pos != Bry_.NotFound) { // key is of format "key/lang"; EX: "January/en" + if (slash_pos != Bry_find_.Not_found) { // key is of format "key/lang"; EX: "January/en" int msg_key_len = msg_key.length; if (slash_pos != msg_key_len) { // get text after slash; EX: "en" Object o = Xol_lang_stub_.Regy().Get_by_mid(msg_key, slash_pos + 1, msg_key_len); diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java index 3c544ce3f..339a5ce3e 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java @@ -36,7 +36,7 @@ public class Xol_lang_srl { break; case Byte_ascii.Nl: byte[] cur_name = csv_parser.Load(src, fld_bgn, pos); - Xow_ns ns = new Xow_ns(cur_id, Xow_ns_case_.Id_1st, cur_name, false); + Xow_ns ns = new Xow_ns(cur_id, Xow_ns_case_.Tid__1st, cur_name, false); rv.Add(ns); fld_bgn = pos + 1; cur_id = -1; diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java index 3592b230a..4446d4ae5 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java @@ -208,7 +208,7 @@ class Xol_lang_srl_fxt { } GfsCtx ctx = GfsCtx.new_(); Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); //Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public Xoae_app App() {return app;} private Xoae_app app; public Xol_lang_itm Lang() {return lang;} private Xol_lang_itm lang; - public Xow_ns ns_(int id, String s) {return new Xow_ns(id, Xow_ns_case_.Id_1st, Bry_.new_u8(s), false);} + public Xow_ns ns_(int id, String s) {return new Xow_ns(id, Xow_ns_case_.Tid__1st, Bry_.new_u8(s), false);} public Xol_specials_itm special_(String key, String... words) {return new Xol_specials_itm(Bry_.new_u8(key), Bry_.Ary(words));} public Xol_kwd_grp kwd_(String key, boolean case_match, String... words) { Xol_kwd_grp rv = new Xol_kwd_grp(Bry_.new_u8(key)); diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java index c8a1b5197..e11dcca4b 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.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.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; -import org.junit.*; -import gplx.langs.phps.*; +import org.junit.*; import gplx.core.log_msgs.*; import gplx.langs.phps.*; public class Xol_mw_parse_tst { private final Xol_mw_parse_fxt fxt = new Xol_mw_parse_fxt(); // @Test public void Basic() { @@ -54,13 +53,13 @@ class Xol_mw_parse_grp { Write_end(bfr); } private void Write_bgn(Bry_bfr bfr) { - bfr.Add_str_a7("// ").Add(lng).Add_str("_").Add(vnt).Add_byte_nl(); + bfr.Add_str_a7("// ").Add(lng).Add_str_a7("_").Add(vnt).Add_byte_nl(); bfr.Add_str_a7("app.langs.get('"); bfr.Add(lng); bfr.Add_str_a7("').converts.get('"); bfr.Add(vnt); bfr.Add_str_a7("').add_bulk("); - bfr.Add_byte_nl().Add_str("<:['").Add_byte_nl(); + bfr.Add_byte_nl().Add_str_a7("<:['").Add_byte_nl(); } private void Write_itm(Bry_bfr bfr, Xol_mw_parse_itm itm) { bfr.Add(itm.Src()); diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java index acb2b6681..fd84f0bba 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.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.core.btries.*; +import gplx.core.btries.*; import gplx.core.log_msgs.*; import gplx.xowa.langs.*; import gplx.xowa.guis.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*; diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java index ea1834201..29a0dd8af 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java @@ -22,6 +22,6 @@ public class Xop_lxr_ { , Tid_list = 10, Tid_hdr = 11, Tid_hr = 12, Tid_xnde = 13, Tid_lnke_bgn = 14, Tid_lnke_end = 15, Tid_tblw = 16, Tid_pre = 17, Tid_under = 18, Tid_comment = 19 , Tid_eq = 20, Tid_curly_bgn = 21, Tid_curly_end = 22, Tid_brack_bgn = 23, Tid_brack_end = 24, Tid_poem = 25 , Tid_tvar = 26, Tid_vnt_bgn = 27, Tid_vnt_end = 28, Tid_vnt_eqgt = 29, Tid_vnt_tmpl_bgn = 30, Tid_word = 31, Tid_nl_poem = 32, Tid_cr = 33 - , Tid_brack_end_lnki = 34, Tid_nl_tab = 35, Tid_macro = 36 + , Tid_brack_end_lnki = 34, Tid_nl_tab = 35, Tid_escape = 36 ; } diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java index 97a83d3c2..000a85041 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java @@ -64,7 +64,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ tmpl_props.OnlyInclude_exists = false; int subs_len = root.Subs_len(); for (int i = 0; i < subs_len; i++) root.Subs_get(i).Tmpl_compile(ctx, src, tmpl_props); - boolean only_include_chk = Bry_find_.Find_fwd(src, Xop_xnde_tag_.Name_onlyinclude, 0, src.length) != Bry_.NotFound; + boolean only_include_chk = Bry_find_.Find_fwd(src, Xop_xnde_tag_.Name_onlyinclude, 0, src.length) != Bry_find_.Not_found; if (only_include_chk) tmpl_props.OnlyInclude_exists = true; tmpl.Init_by_new(ns, name, src, root, tmpl_props.OnlyInclude_exists); } private Xot_compile_data tmpl_props = new Xot_compile_data(); diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm.java index 9e2208441..fbf9e16a4 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; public interface Xop_tkn_itm extends Xop_tkn_grp { byte Tkn_tid(); Xop_tkn_itm Tkn_ini_pos(boolean immutable, int bgn, int end); @@ -38,6 +39,7 @@ public interface Xop_tkn_itm extends Xop_tkn_grp { void Tmpl_fmt(Xop_ctx ctx, byte[] src, Xot_fmtr fmtr); void Tmpl_compile(Xop_ctx ctx, byte[] src, Xot_compile_data prep_data); // SEE:NOTE_1:Tmpl_compile boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr); + void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src); } /* NOTE_1: Tmpl_compile diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_.java index 60fcbd746..02c990e66 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_.java @@ -70,6 +70,7 @@ public class Xop_tkn_itm_ { , Tid_vnt_rule = 48 , Tid_vnt_eqgt = 49 , Tid_cr = 50 +, Tid_escape = 51 ; public static final String[] Tid__names = new String[] @@ -124,5 +125,6 @@ public static final String[] Tid__names , "vnt_rule" , "vnt_eqgt" , "cr" +, "escape" }; } diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_base.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_base.java index ebd186d59..608ae309c 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_base.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_itm_base.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; public abstract class Xop_tkn_itm_base implements Xop_tkn_itm { public abstract byte Tkn_tid(); public Xop_tkn_grp Tkn_grp() {return grp == null ? this : grp;} private Xop_tkn_grp grp; // NOTE: not sure about this; need to handle null refs when tkns are manipulated but not yet added to a group @@ -146,6 +147,7 @@ public abstract class Xop_tkn_itm_base implements Xop_tkn_itm { } subs_len = 0; } + @gplx.Virtual public void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src) {throw Err_.new_unimplemented();} public void Clear() { src_bgn = src_end = tkn_sub_idx = -1; ignore = false; tmpl_static = false; Subs_clear(); diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java index c8f60cba0..ef5413cc3 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.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.parsers; import gplx.*; import gplx.xowa.*; -import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.vnts.*; +import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; +import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.vnts.*; import gplx.xowa.xtns.cite.*; public class Xop_tkn_mkr { public Xop_root_tkn Root(byte[] raw) {return new Xop_root_tkn().Root_src_(raw);} public Xop_txt_tkn Txt(int bgn, int end) {return new Xop_txt_tkn(bgn, end);} diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_null.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_null.java index 4f8320d4b..a73323d24 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_null.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_null.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; public class Xop_tkn_null implements Xop_tkn_itm { public byte Tkn_tid() {return Xop_tkn_itm_.Tid_null;} public boolean Tkn_immutable() {return true;} @@ -49,5 +50,6 @@ public class Xop_tkn_null implements Xop_tkn_itm { public void Tmpl_fmt(Xop_ctx ctx, byte[] src, Xot_fmtr fmtr) {} public void Tmpl_compile(Xop_ctx ctx, byte[] src, Xot_compile_data prep_data) {} public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) {return true;} + public void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src) {} public static final Xop_tkn_null Null_tkn = new Xop_tkn_null(); } diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java index e79f5b242..c2b5c819d 100644 --- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_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.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.lnkis.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; public class Xop_amp_trie_itm { public Xop_amp_trie_itm(byte tid, int char_int, byte[] xml_name_bry) { this.tid = tid; diff --git a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_log.java b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_log.java index a002bf92c..3eba0ebb7 100644 --- a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_log.java +++ b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_log.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.apos; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_apos_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "apos"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_log.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_log.java index 4ff3c17af..22dea95b5 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_log.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_log.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.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_hdr_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "hdr"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java index 21186f945..83b02ef01 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java @@ -16,18 +16,19 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -public class Xop_hdr_tkn extends Xop_tkn_itm_base { - public Xop_hdr_tkn(int bgn, int end, int hdr_len) {this.Tkn_ini_pos(false, bgn, end); this.hdr_len = hdr_len;} +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.hzips.*; +public class Xop_hdr_tkn extends Xop_tkn_itm_base { + public Xop_hdr_tkn(int bgn, int end, int hdr_level) {this.Tkn_ini_pos(false, bgn, end); this.hdr_level = hdr_level;} @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_hdr;} - public int Hdr_len() {return hdr_len;} public Xop_hdr_tkn Hdr_len_(int v) {hdr_len = v; return this;} private int hdr_len = -1; + public int Hdr_level() {return hdr_level;} public Xop_hdr_tkn Hdr_level_(int v) {hdr_level = v; return this;} private int hdr_level = -1; public int Hdr_bgn_manual() {return hdr_bgn_manual;} public Xop_hdr_tkn Hdr_bgn_manual_(int v) {hdr_bgn_manual = v; return this;} private int hdr_bgn_manual; public int Hdr_end_manual() {return hdr_end_manual;} public Xop_hdr_tkn Hdr_end_manual_(int v) {hdr_end_manual = v; return this;} private int hdr_end_manual; public boolean Hdr_html_first() {return hdr_html_first;} public Xop_hdr_tkn Hdr_html_first_y_() {hdr_html_first = true; return this;} private boolean hdr_html_first; public int Hdr_html_dupe_idx() {return hdr_html_dupe_idx;} private int hdr_html_dupe_idx; + public byte[] Hdr_html_id() {return hdr_html_id;} public Xop_hdr_tkn Hdr_html_id_(byte[] v) {hdr_html_id = v; return this;} private byte[] hdr_html_id = Bry_.Empty; public byte[] Hdr_toc_text() {return hdr_toc_text;} public Xop_hdr_tkn Hdr_toc_text_(byte[] v) {hdr_toc_text = v; return this;} private byte[] hdr_toc_text; public int Hdr_html_dupe_idx_next() { hdr_html_dupe_idx = hdr_html_dupe_idx == 0 ? 2 : hdr_html_dupe_idx + 1; return hdr_html_dupe_idx; } - public byte[] Hdr_html_id() {return hdr_html_id;} public Xop_hdr_tkn Hdr_html_id_(byte[] v) {hdr_html_id = v; return this;} private byte[] hdr_html_id = Bry_.Empty; } diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java index b569a27af..1c6c7326a 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java @@ -20,14 +20,14 @@ import gplx.core.tests.*; public class Xop_hdr_tkn_chkr extends Xop_tkn_chkr_base { @Override public Class TypeOf() {return Xop_hdr_tkn.class;} @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_hdr;} - public int Hdr_len() {return hdr_len;} public Xop_hdr_tkn_chkr Hdr_len_(int v) {hdr_len = v; return this;} private int hdr_len = -1; + public int Hdr_len() {return hdr_len;} public Xop_hdr_tkn_chkr Hdr_level_(int v) {hdr_len = v; return this;} private int hdr_len = -1; public int Hdr_ws_bgn() {return hdr_ws_bgn;} public Xop_hdr_tkn_chkr Hdr_ws_bgn_(int v) {hdr_ws_bgn = v; return this;} private int hdr_ws_bgn = -1; public int Hdr_ws_end() {return hdr_ws_end;} public Xop_hdr_tkn_chkr Hdr_ws_end_(int v) {hdr_ws_end = v; return this;} private int hdr_ws_end = -1; public int Hdr_ws_trailing() {return hdr_ws_trailing;} public Xop_hdr_tkn_chkr Hdr_ws_trailing_(int v) {hdr_ws_trailing = v; return this;} private int hdr_ws_trailing = -1; public Xop_hdr_tkn_chkr Hdr_html_id_(String v) {hdr_html_id = Bry_.new_a7(v); return this;} private byte[] hdr_html_id = Bry_.Empty; @Override public int Chk_hook(Tst_mgr mgr, String path, Object actl_obj, int err) { Xop_hdr_tkn actl = (Xop_hdr_tkn)actl_obj; - err += mgr.Tst_val(hdr_len == -1, path, "hdr_len", hdr_len, actl.Hdr_len()); + err += mgr.Tst_val(hdr_len == -1, path, "hdr_len", hdr_len, actl.Hdr_level()); err += mgr.Tst_val(hdr_html_id == Bry_.Empty, path, "hdr_html_id", String_.new_a7(hdr_html_id), String_.new_a7(actl.Hdr_html_id())); return err; } diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java index e4e19e1ac..5e0ea1b01 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java @@ -24,9 +24,9 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr { public void AutoClose(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, Xop_tkn_itm tkn) { // bgn never closed; mark inert; EX: "==a" Xop_hdr_tkn bgn = (Xop_hdr_tkn)tkn; - int bgn_hdr_len = bgn.Hdr_len(); + int bgn_hdr_len = bgn.Hdr_level(); bgn.Hdr_bgn_manual_(bgn_hdr_len); - bgn.Hdr_len_(0); + bgn.Hdr_level_(0); if (bgn_hdr_len > 1 && ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki) // NOTE: \n= is not uncommon for templates; ignore them; ctx.Msg_log().Add_itm_none(Xop_hdr_log.Dangling_hdr, src, bgn.Src_bgn(), bgn_pos); } @@ -51,7 +51,7 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr { if (ctx.Cur_tkn_tid() == Xop_tkn_itm_.Tid_tmpl_curly_bgn) return ctx.Lxr_make_txt_(cur_pos); Xop_hdr_tkn hdr = (Xop_hdr_tkn)ctx.Stack_pop_til(root, src, stackPos, false, bgn_pos, cur_pos, Xop_tkn_itm_.Tid_hdr); ctx.Apos().EndFrame(ctx, root, src, bgn_pos, false); // end any apos; EX: ==''a== - int hdr_len = hdr.Hdr_len(), bgn_manual = 0, end_manual = 0; + int hdr_len = hdr.Hdr_level(), bgn_manual = 0, end_manual = 0; boolean dirty = false; if (end_hdr_len < hdr_len) { // mismatch: end has more; adjust hdr bgn_manual = hdr_len - end_hdr_len; @@ -71,7 +71,7 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr { dirty = true; } if (dirty) - hdr.Hdr_bgn_manual_(bgn_manual).Hdr_end_manual_(end_manual).Hdr_len_(hdr_len); + hdr.Hdr_bgn_manual_(bgn_manual).Hdr_end_manual_(end_manual).Hdr_level_(hdr_len); cur_pos = Find_fwd_while_ws_hdr_version(src, cur_pos, src_len); // NOTE: hdr gobbles up trailing ws; EX: "==a== \n\t \n \nb" gobbles up all 3 "\n"s; otherwise para_wkr will process
    ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag_h2); hdr.Subs_move(root); diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java deleted file mode 100644 index 869f399d9..000000000 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr__div_wrapper_tst.java +++ /dev/null @@ -1,56 +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.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; -public class Xop_hdr_wkr__div_wrapper_tst { - @Before public void init() {fxt.Reset(); fxt.Init_para_y_();} private Xop_fxt fxt = new Xop_fxt(); - @After public void term() {fxt.Init_para_n_();} - @Test public void Basic() { // PURPOSE: basic div_wrapper test; DATE:2015-06-24 - fxt.Wtr_cfg().Hdr__div_wrapper_(Bool_.Y); - fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last - ( "==a==" - , "b" - , "==c==" - , "d" - , "==e==" - , "f" - ), String_.Concat_lines_nl_skip_last - ( "

    a

    " - , "
    " - , "" - , "

    b" - , "

    " - , "" - , "
    " - , "

    c

    " - , "
    " - , "" - , "

    d" - , "

    " - , "" - , "
    " - , "

    e

    " - , "
    " - , "" - , "

    f" - , "

    " - , "
    " - )); - fxt.Wtr_cfg().Hdr__div_wrapper_(Bool_.N); - } -} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java index 1c7c51017..ee135bbf7 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java @@ -30,7 +30,7 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT private int nde_uid, nde_tid; public Bry_obj_ref Bry_obj() {return bry_ref;} private final Bry_obj_ref bry_ref = Bry_obj_ref.null_(); public int Nde_end_tid() {return nde_end_tid;} private int nde_end_tid; - public int Parse(Mwh_doc_wkr wkr, int nde_uid, int nde_tid, byte[] src, int src_bgn, int src_end) { + public int Parse(Mwh_atr_wkr wkr, int nde_uid, int nde_tid, byte[] src, int src_bgn, int src_end) { this.nde_uid = nde_uid; this.nde_tid = nde_tid; this.nde_end_tid = Mwh_doc_parser.Nde_end_tid__invalid; this.atr_bgn = -1; @@ -440,7 +440,7 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT ++pos; b = src[pos]; } - int gt_pos = Bry_find_.Find_fwd(src, Byte_ascii.Gt, pos, end); if (gt_pos == Bry_.NotFound) return Bry_find_.Not_found; + int gt_pos = Bry_find_.Find_fwd(src, Byte_ascii.Gt, pos, end); if (gt_pos == Bry_find_.Not_found) return Bry_find_.Not_found; byte[] bry = (byte[])xnde_hash.Get_by_mid(src, pos, gt_pos); bry_ref.Val_(bry); return bry == null ? Bry_find_.Not_found : bry.length + pos; diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_wkr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_wkr.java new file mode 100644 index 000000000..a59e51d4e --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_wkr.java @@ -0,0 +1,21 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +public interface Mwh_atr_wkr { + void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx); +} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java index 649893b88..47dffb65f 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java @@ -16,9 +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.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -public interface Mwh_doc_wkr { +public interface Mwh_doc_wkr extends Mwh_atr_wkr { Hash_adp_bry Nde_regy(); - void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx); void On_txt_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end); void On_nde_head_bgn(Mwh_doc_parser mgr, byte[] src, int nde_tid, int key_bgn, int key_end); void On_nde_head_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end, boolean inline); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_log.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_log.java index d85dd6eb6..6a049a100 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_log.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_log.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.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_lnke_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "lnke"); public static final Gfo_msg_itm Dangling = Gfo_msg_itm_.new_note_(owner, "dangling"); // NOTE: WP.BOT:YOBOT;PAGE:en.w:Pan_flute diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java index a55e67504..73ddb2d80 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java @@ -27,14 +27,13 @@ public class Xop_lnke_tkn extends Xop_tkn_itm_base {//20111222 public byte[] Lnke_xwiki_page() {return lnke_xwiki_page;} private byte[] lnke_xwiki_page; public Gfo_qarg_itm[] Lnke_xwiki_qargs() {return lnke_xwiki_qargs;} Gfo_qarg_itm[] lnke_xwiki_qargs; public void Lnke_xwiki_(byte[] wiki, byte[] page, Gfo_qarg_itm[] args) {this.lnke_xwiki_wiki = wiki; this.lnke_xwiki_page = page; this.lnke_xwiki_qargs = args;} - public int Lnke_bgn() {return lnke_bgn;} private int lnke_bgn; - public int Lnke_end() {return lnke_end;} private int lnke_end; - public Xop_lnke_tkn Lnke_rng_(int bgn, int end) {lnke_bgn = bgn; lnke_end = end; return this;} + public int Lnke_href_bgn() {return lnke_href_bgn;} private int lnke_href_bgn; + public int Lnke_href_end() {return lnke_href_end;} private int lnke_href_end; public byte[] Protocol() {return protocol;} private byte[] protocol; public byte Proto_tid() {return proto_tid;} private byte proto_tid; public Xop_lnke_tkn Subs_add_ary(Xop_tkn_itm... ary) {for (Xop_tkn_itm itm : ary) super.Subs_add(itm); return this;} - public Xop_lnke_tkn(int bgn, int end, byte[] protocol, byte proto_tid, byte lnke_typ, int lnke_bgn, int lnke_end) { - this.Tkn_ini_pos(false, bgn, end); this.protocol = protocol; this.proto_tid = proto_tid; this.lnke_typ = lnke_typ; this.lnke_bgn = lnke_bgn; this.lnke_end = lnke_end; + public Xop_lnke_tkn(int bgn, int end, byte[] protocol, byte proto_tid, byte lnke_typ, int lnke_href_bgn, int lnke_href_end) { + this.Tkn_ini_pos(false, bgn, end); this.protocol = protocol; this.proto_tid = proto_tid; this.lnke_typ = lnke_typ; this.lnke_href_bgn = lnke_href_bgn; this.lnke_href_end = lnke_href_end; } Xop_lnke_tkn() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java index ab3dcc1e5..e4b521cd4 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java @@ -28,7 +28,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { // "[" but no "]"; EX: "[irc://a"; NOTE: lnkes that start with protocol will be ac'd in MakeTkn_bgn; EX: "http://a" Xop_lnke_tkn bgn_tkn = (Xop_lnke_tkn)tkn; bgn_tkn.Lnke_typ_(Xop_lnke_tkn.Lnke_typ_brack_dangling); - bgn_tkn.Src_end_(bgn_tkn.Lnke_end()); // NOTE: endPos is lnke_end, not cur_pos or src_len; EX: "[irc://a b", lnk ends at a, not b; NOTE: still bgns at [ + bgn_tkn.Src_end_(bgn_tkn.Lnke_href_end()); // NOTE: endPos is lnke_end, not cur_pos or src_len; EX: "[irc://a b", lnk ends at a, not b; NOTE: still bgns at [ ctx.Msg_log().Add_itm_none(Xop_lnke_log.Dangling, src, tkn.Src_bgn(), cur_pos); } public static final String Str_xowa_protocol = "xowa-cmd:"; @@ -283,7 +283,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { // NOTE: fmt is [xowa-cmd:^"app.setup_mgr.import_wiki('');"^ ] if (lnke_type != Xop_lnke_tkn.Lnke_typ_brack) return ctx.Lxr_make_txt_(cur_pos); // NOTE: must check for [ or else C:\xowa\ will cause it to evaluate as lnke int proto_end_pos = cur_pos + 1; // +1 to skip past : - int lhs_dlm_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, proto_end_pos, src_len); if (lhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); + int lhs_dlm_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, proto_end_pos, src_len); if (lhs_dlm_pos == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); int lnke_bgn_pos = lhs_dlm_pos + 1; byte[] rhs_dlm_bry = Bry_quote; if (lhs_dlm_pos - proto_end_pos > 0) { @@ -291,9 +291,9 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { rhs_dlm_bry = bfr.Add(Bry_quote).Add_mid(src, proto_end_pos, lhs_dlm_pos).To_bry_and_clear(); bfr.Mkr_rls(); } - int rhs_dlm_pos = Bry_find_.Find_fwd(src, rhs_dlm_bry, lnke_bgn_pos, src_len); if (rhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); - int txt_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, rhs_dlm_pos + rhs_dlm_bry.length, src_len); if (txt_bgn == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); - int txt_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_end, txt_bgn, src_len); if (txt_end == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); + int rhs_dlm_pos = Bry_find_.Find_fwd(src, rhs_dlm_bry, lnke_bgn_pos, src_len); if (rhs_dlm_pos == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); + int txt_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, rhs_dlm_pos + rhs_dlm_bry.length, src_len); if (txt_bgn == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); + int txt_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_end, txt_bgn, src_len); if (txt_end == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); int end_pos = txt_end + 1; // +1 to place after ] Xop_lnke_tkn tkn = tkn_mkr.Lnke(bgn_pos, end_pos, protocol, proto_tid, lnke_type, lnke_bgn_pos, rhs_dlm_pos); // +1 to ignore [ 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 9f94e197e..387d0e95b 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 @@ -34,18 +34,18 @@ public class Xop_lnke_wkr_brack_tst { @Test public void Brace_xnde_bgn() {// PURPOSE: occurred at ref of UK; a {{cite web|url=http://www.abc.gov/{{dead link|date=December 2011}}|title=UK}} b fxt.Test_parse_page_wiki_str ( "[http://b.orgc]" - , "c" + , "c" ); } @Test public void Brace_newLine() { fxt.Test_parse_page_wiki("[irc://a\n]", fxt.tkn_txt_(0, 8), fxt.tkn_nl_char_len1_(8), fxt.tkn_txt_(9, 10)); } @Test public void Html_brack() { - fxt.Test_parse_page_wiki_str("[irc://a]", "[1]"); + fxt.Test_parse_page_wiki_str("[irc://a]", "[1]"); } @Test public void Apos() { - fxt.Test_parse_page_wiki_str("[http://www.a.org''b'']", "b"); - fxt.Test_parse_page_wiki_str("[http://www.a.org'b]", "[1]"); + fxt.Test_parse_page_wiki_str("[http://www.a.org''b'']", "b"); + fxt.Test_parse_page_wiki_str("[http://www.a.org'b]", "[1]"); } @Test public void Nowiki() { fxt.Test_parse_page_all_str @@ -57,7 +57,7 @@ public class Xop_lnke_wkr_brack_tst { fxt.Test_parse_page_wiki_str ( "[http://a.org b [[C]] d]" ,String_.Concat_lines_nl_skip_last - ( "b C d" + ( "b C d" )); } @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 @@ -74,21 +74,21 @@ public class Xop_lnke_wkr_brack_tst { @Test public void Encode_basic() { // PURPOSE: counterpart to Encode_xwiki; DATE:2014-07-15 fxt.Test_parse_page_wiki_str // encode page ( "[http://a.org/%22%3E_A B]" - , "B" // '%22%3E' not '">' + , "B" // '%22%3E' not '">' ); fxt.Test_parse_page_wiki_str // encode args ( "[http://a.org/A?b=%22%3E_C D]" - , "D" // '%22%3E' not '">' + , "D" // '%22%3E' not '">' ); } @Test public void Encode_relative() { // PURPOSE: counterpart to Encode_xwiki; DATE:2014-07-15 fxt.Test_parse_page_wiki_str // encode page ( "[//a.org/%22%3E_A B]" - , "B" // '%22%3E' not '">' + , "B" // '%22%3E' not '">' ); fxt.Test_parse_page_wiki_str // encode args ( "[//a.org/A?b=%22%3E_C D]" - , "D" // '%22%3E' not '">' + , "D" // '%22%3E' not '">' ); } } 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 1516c1772..d961e008a 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,7 +25,7 @@ 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_page_wiki_str("[//www.a.org a]", "a"); } @Test public void Relative_internal() { fxt.Init_xwiki_add_user_("en.wikipedia.org"); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_text_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_text_tst.java index 288139471..a0c9f89b1 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_text_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_text_tst.java @@ -23,14 +23,14 @@ public class Xop_lnke_wkr_text_tst { fxt.Test_parse_page_wiki("irc://a", fxt.tkn_lnke_(0, 7).Lnke_typ_(Xop_lnke_tkn.Lnke_typ_text).Lnke_rng_(0, 7)); } @Test public void Text_html() { - fxt.Test_parse_page_wiki_str("irc://a", "irc://a"); + fxt.Test_parse_page_wiki_str("irc://a", "irc://a"); } @Test public void Text_after() { fxt.Test_parse_page_wiki("irc://a b c", fxt.tkn_lnke_(0, 7).Lnke_rng_(0, 7), fxt.tkn_space_(7, 8), fxt.tkn_txt_(8, 9), fxt.tkn_space_(9, 10), fxt.tkn_txt_(10, 11)); } @Test public void Text_before_ascii() { // PURPOSE: free form external urls should not match if preceded by letters; EX:de.w:Sylvie_und_Bruno; DATE:2014-05-11 fxt.Ctx().Lang().Case_mgr_u8_(); - String expd_lnke_html = "tel:a"; + String expd_lnke_html = "tel:a"; fxt.Test_parse_page_wiki_str("titel:a" , "titel:a"); fxt.Test_parse_page_wiki_str(" tel:a" , " " + expd_lnke_html); fxt.Test_parse_page_wiki_str("!tel:a" , "!" + expd_lnke_html); @@ -60,21 +60,21 @@ public class Xop_lnke_wkr_text_tst { , "*irc://b" ),String_.Concat_lines_nl_skip_last ( "" )); } @Test public void Defect_reverse_caption_link() { // PURPOSE: bad lnke formatting (caption before link); ] should show up at end, but only [ shows up; PAGE:en.w:Paul Philippoteaux; [caption http://www.americanheritage.com] - fxt.Test_parse_page_wiki_str("[caption irc://a]", "[caption irc://a]"); + fxt.Test_parse_page_wiki_str("[caption irc://a]", "[caption irc://a]"); } @Test public void Lnki() { // PURPOSE: trailing lnki should not get absorbed into lnke; DATE:2014-07-11 fxt.Test_parse_page_wiki_str ( "http://a.org[[B]]" // NOTE: [[ should create another lnki ,String_.Concat_lines_nl_skip_last - ( "http://a.orgB" + ( "http://a.orgB" )); } @Test public void Protocol_only() { // PURPOSE: protocol only should return text; DATE:2014-10-09 @@ -84,16 +84,16 @@ public class Xop_lnke_wkr_text_tst { fxt.Test_parse_page_wiki_str("[http:]" , "[http:]"); } @Test public void Ignore_punctuation_at_end() { // PURPOSE: ignore "," and related punctuation at end; DATE:2014-10-09 - fxt.Test_parse_page_wiki_str("http://a.org," , "http://a.org,"); // basic - fxt.Test_parse_page_wiki_str("http://a.org,," , "http://a.org,,"); // many - fxt.Test_parse_page_wiki_str("http://a.org/b,c" , "http://a.org/b,c"); // do not ignore if in middle - fxt.Test_parse_page_wiki_str("http://a.org:" , "http://a.org:"); // colon at end; compare to "http:" + fxt.Test_parse_page_wiki_str("http://a.org," , "http://a.org,"); // basic + fxt.Test_parse_page_wiki_str("http://a.org,," , "http://a.org,,"); // many + fxt.Test_parse_page_wiki_str("http://a.org/b,c" , "http://a.org/b,c"); // do not ignore if in middle + fxt.Test_parse_page_wiki_str("http://a.org:" , "http://a.org:"); // colon at end; compare to "http:" } @Test public void Ignore_punctuation_at_end__paren_end() { // PURPOSE: end parent has special rules; DATE:2014-10-10 - fxt.Test_parse_page_wiki_str("(http://a.org)" , "(http://a.org)"); // trim=y - fxt.Test_parse_page_wiki_str("http://a.org/b(c)", "http://a.org/b(c)"); // trim=n + fxt.Test_parse_page_wiki_str("(http://a.org)" , "(http://a.org)"); // trim=y + fxt.Test_parse_page_wiki_str("http://a.org/b(c)", "http://a.org/b(c)"); // trim=n } @Test public void Sym_quote() { // PURPOSE: quote should interrupt lnke; DATE:2014-10-10 - fxt.Test_parse_page_wiki_str("http://a.org/b\"c", "http://a.org/b"c"); + fxt.Test_parse_page_wiki_str("http://a.org/b\"c", "http://a.org/b"c"); } } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_uncommon_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_uncommon_tst.java index 7d5e8078a..f296706e8 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_uncommon_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_uncommon_tst.java @@ -43,7 +43,7 @@ public class Xop_lnke_wkr_uncommon_tst { fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last ( "[[http://a.org a]] [[http://b.org b]]" ), String_.Concat_lines_nl_skip_last - ( "[a] [b]" + ( "[a] [b]" )); } } 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 1a6ca5d3e..5322739de 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 @@ -41,11 +41,11 @@ public class Xop_lnke_wkr_xwiki_tst { fxt.Test_parse_page_wiki_str("[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_page_wiki_str("[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_page_wiki_str("[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"); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java index 2fdefb656..043bee878 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java @@ -26,8 +26,8 @@ public class Xop_tkn_chkr_lnke extends Xop_tkn_chkr_base { @Override public int Chk_hook(Tst_mgr mgr, String path, Object actl_obj, int err) { Xop_lnke_tkn actl = (Xop_lnke_tkn)actl_obj; err += mgr.Tst_val(lnke_typ == Xop_lnke_tkn.Lnke_typ_null, path, "lnke_typ", lnke_typ, actl.Lnke_typ()); - err += mgr.Tst_val(lnke_bgn == -1, path, "lnke_bgn", lnke_bgn, actl.Lnke_bgn()); - err += mgr.Tst_val(lnke_end == -1, path, "lnke_end", lnke_end, actl.Lnke_end()); + err += mgr.Tst_val(lnke_bgn == -1, path, "lnke_bgn", lnke_bgn, actl.Lnke_href_bgn()); + err += mgr.Tst_val(lnke_end == -1, path, "lnke_end", lnke_end, actl.Lnke_href_end()); return err; } } 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 36aaecf9a..435ca2170 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 @@ -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.*; import gplx.core.net.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.htmls.hrefs.*; 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; @@ -52,7 +52,7 @@ public class Xop_link_parser { int proto_len = tmp_url.Protocol_bry().length; if (proto_len + 1 < raw_len && raw[proto_len + 1] == Byte_ascii.Slash) { // next char is slash, assume xfer_itm refers to protocol; EX: file:///C/A.png int slash_pos = Bry_find_.Find_bwd(raw, Byte_ascii.Slash); - if (slash_pos != Bry_.NotFound) // set xowa_title to file_name; TODO: call Xoa_url.build; note that this will fail sometimes when (a) xfer_itm is very long (File:ReallyLongName will be shortened to 128 chars) or (b) xfer_itm has invalid windows characters (EX:File:a"b"c.jpg) + if (slash_pos != Bry_find_.Not_found) // set xowa_title to file_name; TODO: call Xoa_url.build; note that this will fail sometimes when (a) xfer_itm is very long (File:ReallyLongName will be shortened to 128 chars) or (b) xfer_itm has invalid windows characters (EX:File:a"b"c.jpg) html_xowa_ttl = Bry_.Mid(raw, slash_pos + Int_.Const_dlm_len, raw.length); } else // next char is not slash; assume xfer_itm refers to ns; EX:File:A.png diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_log.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_log.java index eb9cc653d..3b5e857bf 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_log.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_log.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.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_lnki_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "lnki"); public static final Gfo_msg_itm 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 01c5c510a..3dab31ebe 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 @@ -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.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.xtns.pfuncs.ttls.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.tmpls.*; public class Xop_lnki_tkn extends Xop_tkn_itm_base { @@ -24,7 +24,7 @@ public class Xop_lnki_tkn extends Xop_tkn_itm_base { public void Tkn_tid_to_txt() {tkn_tid = Xop_tkn_itm_.Tid_txt;} public int Ns_id() {return ns_id;} public Xop_lnki_tkn Ns_id_(int v) {ns_id = v; return this;} private int ns_id; public Xoa_ttl Ttl() {return ttl;} public Xop_lnki_tkn Ttl_(Xoa_ttl v) {ttl = v; return this;} private Xoa_ttl ttl; - public byte Lnki_type() {return lnki_type;} public Xop_lnki_tkn Lnki_type_(byte v) {lnki_type = (byte)Bitmask_.Add_int(lnki_type, v); return this;} private byte lnki_type = Xop_lnki_type.Id_null; + public byte Lnki_type() {return lnki_type;} private byte lnki_type = Xop_lnki_type.Id_null; 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; @@ -61,6 +61,11 @@ public class Xop_lnki_tkn extends Xop_tkn_itm_base { || (ns_id == Xow_ns_.Id_category // a Category only has a target; any caption is ignored; EX: [[Category:a|b], b is ignored && !ttl.ForceLiteralLink())); } + public Xop_lnki_tkn Lnki_type_(byte v) { + if (lnki_type == Xop_lnki_type.Id_null) // NOTE:per MW:1.25.2, only use 1st argument of thumb|frame|frameless;/includes/parser/Parser.php; // use first appearing option, discard others.; DATE:2015-11-01 + lnki_type = v; + return this; + } public static final double Upright_null = -1; public static final int Width_null = -1, Height_null = -1; } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java index 3342cad20..c63c45fce 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java @@ -29,27 +29,27 @@ public class Xop_lnki_type { ) return true; else if ( Bitmask_.Has_int(id, Id_frame) // [[File:A.png|frame]] -> 400,200 (frame is always default size) - || id == Id_null // [[File:A.png]] -> 400,200 (default to original size) + || id == Id_null // [[File:A.png]] -> 400,200 (default to original size) || Bitmask_.Has_int(id, Id_none) // TODO: deprecate; NOTE: still used by one test; DATE:2015-08-03 ) return false; - else // should not happen + else // should not happen throw Err_.new_unhandled(id); } - public static boolean Id_limits_large_size(byte id) {// Linker.php|makeThumbLink2|Do not present an image bigger than the source, for bitmap-style images; assuming original of 400,200 + public static boolean Id_limits_large_size(byte id) { // Linker.php|makeThumbLink2|Do not present an image bigger than the source, for bitmap-style images; assuming original of 400,200 if ( Bitmask_.Has_int(id, Id_thumb) // [[File:A.png|600px|thumb]] -> 400,200 || Bitmask_.Has_int(id, Id_frameless) // [[File:A.png|600px|frameless]] -> 400,200 || Bitmask_.Has_int(id, Id_frame) // [[File:A.png|600px|frame]] -> 400,200 (frame is always default size) ) return true; - else if ( id == Id_null // [[File:A.png|600px]] -> 600,400; uses orig file of 400,200, but tag src_width / src_height set to 600,400 + else if ( id == Id_null // [[File:A.png|600px]] -> 600,400; uses orig file of 400,200, but tag src_width / src_height set to 600,400 || Bitmask_.Has_int(id, Id_none) // TODO: deprecate; NOTE: leaving in b/c of above failed-deprecate; DATE:2015-08-03 ) return false; - else // should not happen; + else // should not happen; throw Err_.new_unhandled(id); } - public static boolean Id_supports_upright(byte id) {// REF:Linker.php|makeImageLink;if ( isset( $fp['thumbnail'] ) || isset( $fp['manualthumb'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) DATE:2014-05-22 + public static boolean Id_supports_upright(byte id) { // REF:Linker.php|makeImageLink;if ( isset( $fp['thumbnail'] ) || isset( $fp['manualthumb'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) DATE:2014-05-22 if ( Bitmask_.Has_int(id, Id_thumb) || Bitmask_.Has_int(id, Id_frameless) || Bitmask_.Has_int(id, Id_frame) @@ -59,7 +59,7 @@ public class Xop_lnki_type { || Bitmask_.Has_int(id, Id_none) ) return false; - else // should not happen; + else // should not happen; throw Err_.new_unhandled(id); } } 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 c91eeddac..34ab34f4e 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 @@ -53,7 +53,7 @@ public class Xop_lnki_wkr__basic_tst { @Test public void Image() { fxt.Test_parse_page_wiki("[[Image:a]]" , fxt.tkn_lnki_().Ns_id_(Xow_ns_.Id_file).Trg_tkn_(fxt.tkn_arg_val_(fxt.tkn_txt_(2, 7), fxt.tkn_colon_(7), fxt.tkn_txt_(8, 9)))); fxt.Test_parse_page_wiki("[[Image:a|border]]" , fxt.tkn_lnki_().Border_(Bool_.Y_byte)); - fxt.Test_parse_page_wiki("[[Image:a|thumb]]" , fxt.tkn_lnki_().ImgType_(Xop_lnki_type.Id_thumb)); + fxt.Test_parse_page_wiki("[[Image:a|thumb]]" , fxt.tkn_lnki_().ImgType_(Xop_lnki_type.Id_thumb)); fxt.Test_parse_page_wiki("[[Image:a|left]]" , fxt.tkn_lnki_().HAlign_(Xop_lnki_align_h.Left)); fxt.Test_parse_page_wiki("[[Image:a|top]]" , fxt.tkn_lnki_().VAlign_(Xop_lnki_align_v.Top)); fxt.Test_parse_page_wiki("[[Image:a|10px]]" , fxt.tkn_lnki_().Width_(10).Height_(-1)); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__ctg_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__ctg_tst.java index fbbf96c67..2232e07af 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__ctg_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__ctg_tst.java @@ -69,7 +69,7 @@ public class Xop_lnki_wkr__ctg_tst { , "[[Category:B]]" // category should not show below ), String_.Concat_lines_nl_skip_last ( "" , "" diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__frame_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__frame_tst.java new file mode 100644 index 000000000..280e8658b --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__frame_tst.java @@ -0,0 +1,25 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import org.junit.*; +public class Xop_lnki_wkr__frame_tst { + @Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private final Xop_fxt fxt = new Xop_fxt(); + // PURPOSE:use 1st imgtype param; changed between mw1.22.2 and mw1.25.2 PAGE:he.w:מספן_המודיעין EX: [[File:Osa-I class Project205 DN-SN-84-01770.jpg|thumb|frame|abcde]] + @Test public void Use_1st__thumb() {fxt.Test_parse_page_wiki("[[File:A.png|thumb|frame]]", fxt.tkn_lnki_().ImgType_(Xop_lnki_type.Id_thumb));} + @Test public void Use_1st__frame() {fxt.Test_parse_page_wiki("[[File:A.png|frame|thumb]]", fxt.tkn_lnki_().ImgType_(Xop_lnki_type.Id_frame));} +} diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java index 7bf750ad9..ed5cb9a52 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java @@ -32,7 +32,7 @@ public class Xop_lnki_wkr__uncommon_tst { } @Test public void Triple_bracket_with_lnke_lnki() { // PURPOSE: handle [http://a.org [[File:A.png|123px]]]; PAGE:ar.w:محمد DATE:2014-08-20 fxt.Test_parse_page_all_str("[http://a.org [[File:A.png|123px]]]" - , "\"\"" + , "\"\"" ); } @Test public void Multiple_captions() { // PURPOSE: multiple captions should be concatenated (used to only take first); EX:zh.d:维基词典:Unicode字符索引/0000–0FFF; DATE:2014-05-05 diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java index 620638670..bb43b62ea 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.lnkis.redlinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.core.primitives.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.langs.vnts.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.langs.vnts.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.parsers.tmpls.*; public class Xog_redlink_mgr implements GfoInvkAble { private Xog_win_itm win; private Xog_html_itm html_itm; private Xowe_wiki wiki; private Xoae_page page; 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 3d3d6e652..633bcf643 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 @@ -19,7 +19,7 @@ package gplx.xowa.parsers.lnkis.redlinks; import gplx.*; import gplx.xowa.*; imp import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.users.*; public class Xopg_redlink_lnki_list { - private int lnki_idx = gplx.xowa.htmls.lnkis.Xoh_lnki_wtr.Lnki_id_min; // NOTE: default to 1, not 0, b/c 0 is ignored by wtr; DATE:2014-10-09 + private int lnki_idx = gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_lnki_wtr.Lnki_id_min; // NOTE: default to 1, not 0, b/c 0 is ignored by wtr; DATE:2014-10-09 public Xopg_redlink_lnki_list(boolean ttl_is_module) { // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]] this.disabled = ttl_is_module; } @@ -28,7 +28,7 @@ public class Xopg_redlink_lnki_list { public int Thread_id() {return thread_id;} private int thread_id = 1; public void Clear() { if (disabled) return; - lnki_idx = 0; // NOTE: must start at 0, so that ++lnki_idx is > 0; html_wtr checks for > 0 + lnki_idx = gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_lnki_wtr.Lnki_id_min; // NOTE: must start at 0, so that ++lnki_idx is > 0; html_wtr checks for > 0 lnki_list.Clear(); thread_id++; } diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_log.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_log.java index 2377eff52..4ca078ad4 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_log.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_log.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.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_comm_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "comment"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java index a0a3d5006..d0be9f182 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java @@ -61,9 +61,9 @@ public class Xop_eq_lxr implements Xop_lxr { hdr_like = ws_end == src_len || src[ws_end] == Byte_ascii.Nl; // hdr_like if next char \n or eos if (!hdr_like) { int ctg_end = Xop_nl_lxr.Scan_fwd_for_ctg(ctx, src, cur_pos, src_len); // check if ==[[Category:A]]; DATE:2014-04-17 - if ( ctg_end != Bry_.NotFound) { // [[Category: found + if ( ctg_end != Bry_find_.Not_found) { // [[Category: found ctg_end = Bry_find_.Find_fwd(src, Xop_tkn_.Lnki_end, ctg_end, src_len); - if (ctg_end != Bry_.NotFound) { // ]] found; note that this should do more validation; EX: [[Category:]] should not be valid; DATE:2014-04-17 + if (ctg_end != Bry_find_.Not_found) { // ]] found; note that this should do more validation; EX: [[Category:]] should not be valid; DATE:2014-04-17 ctg_end += Xop_tkn_.Lnki_end_len; ctg_end = Bry_find_.Find_fwd_while_space_or_tab(src, ctg_end, src_len); if (ctg_end == src_len || src[ctg_end] == Byte_ascii.Nl) // hdr_like if ]]\n after [[Category:A]] diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java deleted file mode 100644 index 012967b32..000000000 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java +++ /dev/null @@ -1,35 +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.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.btries.*; import gplx.xowa.langs.*; -public class Xop_macro_lxr implements Xop_lxr { - public Xop_macro_lxr() {} - public int Lxr_tid() {return Xop_lxr_.Tid_macro;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Tab, this); core_trie.Add(Xop_tab_tkn.Bry_tab_ent, this);} - public void Init_by_lang(Xol_lang_itm lang, Btrie_fast_mgr core_trie) {} - public void Term(Btrie_fast_mgr core_trie) {} - public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { - cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Tab); - src[bgn_pos] = Byte_ascii.Tab; // HACK: SEE:NOTE_1:tabs - for (int i = bgn_pos + 1; i < cur_pos; i++) - src[i] = Byte_ascii.Space; - ctx.Subs_add(root, tkn_mkr.Tab(bgn_pos, cur_pos)); - return cur_pos; - } - public static final Xop_tab_lxr Instance = new Xop_tab_lxr(); -} diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_misc_log.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_misc_log.java index 2390f536b..bda6f6849 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_misc_log.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_misc_log.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.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_misc_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "super"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_tkn.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_tkn.java index de1f62abe..9755df3c5 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_tkn.java @@ -17,12 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.btries.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; public class Xop_space_tkn extends Xop_tkn_itm_base { - public Xop_space_tkn(boolean immutable, int bgn, int end) {this.Tkn_ini_pos(immutable, bgn, end);} - @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_space;} - @Override public Xop_tkn_itm Tkn_clone(Xop_ctx ctx, int bgn, int end) { - return ctx.Tkn_mkr().Space_mutable(bgn, end); - } + public Xop_space_tkn(boolean immutable, int bgn, int end) {this.Tkn_ini_pos(immutable, bgn, end);} + @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_space;} + @Override public Xop_tkn_itm Tkn_clone(Xop_ctx ctx, int bgn, int end) {return ctx.Tkn_mkr().Space_mutable(bgn, end);} @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) { if (this.Tkn_immutable()) { bfr.Add_byte(Byte_ascii.Space); @@ -31,5 +30,7 @@ public class Xop_space_tkn extends Xop_tkn_itm_base { else return super.Tmpl_evaluate(ctx, src, caller, bfr); } - Xop_space_tkn() {} + @Override public void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src) { + bfr.Add_byte_repeat(Byte_ascii.Space, this.Src_end_grp(grp, sub_idx) - this.Src_bgn_grp(grp, sub_idx)); // NOTE: lnki.caption will convert \n to \s; see Xop_nl_lxr; PAGE:en.w:Schwarzschild radius + } } diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java index eb632a61a..e31b67df1 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java @@ -26,7 +26,7 @@ public class Xop_nl_lxr implements Xop_lxr { public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { if (bgn_pos == Xop_parser_.Doc_bgn_bos) return ctx.Lxr_make_txt_(cur_pos); // simulated nl at beginning of every parse int trim_category_pos = Scan_fwd_for_ctg(ctx, src, cur_pos, src_len); - if (trim_category_pos != Bry_.NotFound) { // [[Category]] found after ws + if (trim_category_pos != Bry_find_.Not_found) { // [[Category]] found after ws int root_subs_len = root.Subs_len(); if (root_subs_len > 0) { Xop_tkn_itm tkn = root.Subs_get(root_subs_len - 1); @@ -104,14 +104,14 @@ public class Xop_nl_lxr implements Xop_lxr { && Bry_.Has_at(src, src_len, ctg_trie.Match_pos(), Byte_ascii.Colon)) { // check that next char is : return i;// return pos of 1st [ } - return Bry_.NotFound; + return Bry_find_.Not_found; } break; default: // non-ws; return not found - return Bry_.NotFound; + return Bry_find_.Not_found; } } - return Bry_.NotFound; + return Bry_find_.Not_found; } public static final Xop_nl_lxr Instance = new Xop_nl_lxr(); Xop_nl_lxr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn.java index e16826741..05d9df29f 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_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.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; public class Xop_para_tkn extends Xop_tkn_itm_base { public Xop_para_tkn(int pos) {this.Tkn_ini_pos(false, pos, pos);} @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_para;} @@ -28,4 +29,26 @@ public class Xop_para_tkn extends Xop_tkn_itm_base { , Tid_para = 1 //

    , Tid_pre = 2 // ; + @Override public void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src) { + if (nl_bgn && bfr.Len() > 0) { + if (hctx.Mode_is_alt()) // write called during alt='' + bfr.Add_byte_space(); // write '\s', not '\n' + else + bfr.Add_byte_if_not_last(Byte_ascii.Nl); // write '\n' + } + switch (para_end) { + case Xop_para_tkn.Tid_none: break; + case Xop_para_tkn.Tid_para: bfr.Add(Html_tag_.P_rhs).Add_byte_nl(); break; // '

    ' + case Xop_para_tkn.Tid_pre: bfr.Add(Html_tag_.Pre_rhs).Add_byte_nl(); break; // '

    '
    +			default:						throw Err_.new_unhandled(para_end);
    +		}
    +		switch (para_bgn) {
    +			case Xop_para_tkn.Tid_none:		break;
    +			case Xop_para_tkn.Tid_para:		Xoh_html_wtr_.Para__assert_tag_starts_on_nl(bfr, this.Src_bgn()); bfr.Add(Html_tag_.P_lhs); break;		// '

    ' + case Xop_para_tkn.Tid_pre: Xoh_html_wtr_.Para__assert_tag_starts_on_nl(bfr, this.Src_bgn()); bfr.Add(Html_tag_.Pre_lhs); break; // '
    ' + default: throw Err_.new_unhandled(para_bgn); + } + if (space_bgn > 0) + bfr.Add_byte_repeat(Byte_ascii.Space, space_bgn); + } } diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_tkn.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_tkn.java index b6cc73ebe..3cb68ad8e 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_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.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; public class Xop_pre_tkn extends Xop_tkn_itm_base { public Xop_pre_tkn(int bgn, int end, byte pre_tid, Xop_tkn_itm pre_bgn_tkn) { this.Tkn_ini_pos(false, bgn, end); @@ -23,5 +24,12 @@ public class Xop_pre_tkn extends Xop_tkn_itm_base { } @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_pre;} public byte Pre_tid() {return pre_tid;} private byte pre_tid = Pre_tid_null; + @Override public void Html__write(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src) { + switch (pre_tid) { + case Xop_pre_tkn.Pre_tid_bgn: bfr.Add(Html_tag_.Pre_lhs); break; // '
    '
    +			case Xop_pre_tkn.Pre_tid_end: bfr.Add(Bry__pre__rhs); break;			// '\n
    \n\n' + } + } public static final byte Pre_tid_null = 0, Pre_tid_bgn = 1, Pre_tid_end = 2; + private static final byte[] Bry__pre__rhs = Bry_.new_a7("\n\n\n"); } diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_log.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_log.java index 68c4b6901..4ff14e688 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_log.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_log.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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_tblw_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "tblw"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_itm_tkn_null.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_itm_tkn_null.java index 48dbd813a..a58b39ccc 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_itm_tkn_null.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_itm_tkn_null.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.xowa.htmls.*; public class Arg_itm_tkn_null extends Xop_tkn_null implements Arg_itm_tkn { public int Dat_bgn() {return -1;} public int Dat_end() {return -1;} public Arg_itm_tkn Dat_end_(int v) {return this;} public Arg_itm_tkn Dat_rng_(int bgn, int end) {return this;} diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_nde_tkn_mock.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_nde_tkn_mock.java index 8b634b0f5..ad3787cea 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_nde_tkn_mock.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_nde_tkn_mock.java @@ -38,5 +38,5 @@ class Arg_itm_tkn_mock extends Arg_itm_tkn_base { this.Dat_ary_(dat_ary); this.val = v; } String val; - @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) {bfr.Add_str(val); return true;} + @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) {bfr.Add_str_u8(val); return true;} } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_log.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_log.java index 496a491cb..117aba711 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_log.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_log.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.log_msgs.*; public class Xop_curly_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "curly"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tmpl_log.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tmpl_log.java index 4fea4fb22..7ddcdca77 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tmpl_log.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tmpl_log.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.log_msgs.*; public class Xop_tmpl_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "tmpl"); public static final Gfo_msg_itm 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 7839c6254..e1542c892 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 @@ -41,12 +41,12 @@ public class Xot_defn_tmpl implements Xot_defn { int src_len = src.length; while (true) { int find_bgn = Bry_find_.Find_fwd(src, Bry_onlyinclude_bgn, pos, src_len); - if (find_bgn == Bry_.NotFound) { + if (find_bgn == Bry_find_.Not_found) { break; } int find_bgn_lhs = find_bgn + Bry_onlyinclude_bgn_len; int find_end = Bry_find_.Find_fwd(src, Bry_onlyinclude_end, find_bgn_lhs, src_len); - if (find_end == Bry_.NotFound) { + if (find_end == Bry_find_.Not_found) { break; } bfr.Add_mid(src, find_bgn_lhs, find_end); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java index 86bfe4d2e..eb15961d9 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java @@ -94,9 +94,9 @@ public class Xot_defn_trace_dbg implements Xot_defn_trace { String s = (String)argKeys.Get_at(i); String key = String_.GetStrBefore(s, "="); String val = String_.GetStrAfter(s, "="); - bfr.Add_byte_repeat(Byte_ascii.Space, indent + 2).Add_str(key) + bfr.Add_byte_repeat(Byte_ascii.Space, indent + 2).Add_str_u8(key) .Add_byte_repeat(Byte_ascii.Space, key_max - String_.Len(key)) - .Add_byte(Byte_ascii.Colon).Add_byte(Byte_ascii.Space).Add_str(val).Add_byte_nl(); + .Add_byte(Byte_ascii.Colon).Add_byte(Byte_ascii.Space).Add_str_u8(val).Add_byte_nl(); } } 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 74e9e9ab1..ec640ba3d 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 @@ -82,7 +82,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { // ignore "{{Template:"; EX: {{Template:a}} is the same thing as {{a}} boolean template_prefix_found = false; int tmpl_ns_len = wiki.Ns_mgr().Tmpls_get_w_colon(name_ary, name_bgn, name_ary_len); - if (tmpl_ns_len != Bry_.NotFound) { + if (tmpl_ns_len != Bry_find_.Not_found) { name_ary = Bry_.Mid(name_ary, name_bgn + tmpl_ns_len, name_ary_len); name_ary_len = name_ary.length; name_bgn = 0; @@ -124,7 +124,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { case Xot_defn_.Tid_func: if (defn.Defn_require_colon_arg()) { colon_pos = Bry_find_.Find_fwd(name_ary, Byte_ascii.Colon); - if (colon_pos == Bry_.NotFound) + if (colon_pos == Bry_find_.Not_found) defn = Xot_defn_.Null; } else { @@ -134,7 +134,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { case Xot_defn_.Tid_raw: case Xot_defn_.Tid_msg: int raw_colon_pos = Bry_find_.Find_fwd(name_ary, Byte_ascii.Colon); - if (raw_colon_pos == Bry_.NotFound) {} // colon missing; EX: {{raw}}; noop and assume template name; DATE:2014-02-11 + if (raw_colon_pos == Bry_find_.Not_found) {} // colon missing; EX: {{raw}}; noop and assume template name; DATE:2014-02-11 else { // colon present; name_ary = Bry_.Mid(name_ary, finder.Subst_end() + 1, name_ary_len); // chop off "raw"; +1 is for ":"; note that +1 is in bounds b/c raw_colon was found name_ary_len = name_ary.length; 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 0affcf1d4..326ddce5b 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 @@ -435,7 +435,7 @@ public class Xot_invk_wkr_basic_tst { } @Test public void Tmpl_case_match() { // PURPOSE: template name should match by case; EX:es.d:eclipse; DATE:2014-02-12 fxt.Init_defn_clear(); - fxt.Init_defn_add("CASE_MATCH", "found", Xow_ns_case_.Id_all); + fxt.Init_defn_add("CASE_MATCH", "found", Xow_ns_case_.Tid__all); fxt.Test_parse_tmpl_str("{{case_match}}", "[[:Template:case_match]]"); // Xot_invk_tkn will do 2 searches: "test" and "Test" fxt.Test_parse_tmpl_str("{{cASE_MATCH}}", "found"); // Xot_invk_tkn will do 2 searches: "tEST" and "TEST" fxt.Init_defn_clear(); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_log.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_log.java index 61f0a29b6..c0b9a49b7 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_log.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_log.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.log_msgs.*; public class Xot_prm_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "tmpl_defn_arg"); public static final Gfo_msg_itm 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 3b3cae4cc..0c016dfce 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 @@ -43,10 +43,10 @@ public class Xop_redirect_mgr { Object redirect_itm = redirect_hash.Get_by_mid(src, bgn, kwd_end); if (redirect_itm == null) return Redirect_null_ttl; // not a redirect kwd int ttl_bgn = Xop_redirect_mgr_.Get_ttl_bgn_or_neg1(src, kwd_end, src_len); - if (ttl_bgn == Bry_.NotFound) return Redirect_null_ttl; + if (ttl_bgn == Bry_find_.Not_found) return Redirect_null_ttl; ttl_bgn += Xop_tkn_.Lnki_bgn.length; int ttl_end = Bry_find_.Find_fwd(src, Xop_tkn_.Lnki_end, ttl_bgn); - if (ttl_end == Bry_.NotFound) return Redirect_null_ttl; + if (ttl_end == Bry_find_.Not_found) return Redirect_null_ttl; byte[] redirect_bry = Bry_.Mid(src, ttl_bgn, ttl_end); redirect_bry = url_decoder.Decode(redirect_bry); // NOTE: url-decode links; PAGE: en.w:Watcher_(Buffy_the_Vampire_Slayer); DATE:2014-08-18 return Xoa_ttl.parse(wiki, redirect_bry); @@ -112,16 +112,16 @@ class Xop_redirect_mgr_ { if (colon_null) colon_null = false; else - return Bry_.NotFound; + return Bry_find_.Not_found; break; default: break; case Byte_ascii.Brack_bgn: int nxt_pos = i + 1; - if (nxt_pos >= end) return Bry_.NotFound; // [ at eos - return src[nxt_pos] == Byte_ascii.Brack_bgn ? i : Bry_.NotFound; + if (nxt_pos >= end) return Bry_find_.Not_found; // [ at eos + return src[nxt_pos] == Byte_ascii.Brack_bgn ? i : Bry_find_.Not_found; } } - return Bry_.NotFound; + return Bry_find_.Not_found; } } diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java index c7babcc45..521940c36 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.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 gplx.core.btries.*; import gplx.xowa.parsers.amps.*; +import gplx.core.btries.*; import gplx.xowa.parsers.amps.*; import gplx.core.log_msgs.*; public class Xop_sanitizer { private Btrie_slim_mgr trie = Btrie_slim_mgr.cs(), amp_trie; private Xop_amp_mgr amp_mgr; diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java index dff232802..1ad9e16d1 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_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.xowa.parsers.amps.*; +import org.junit.*; import gplx.core.log_msgs.*; import gplx.xowa.parsers.amps.*; public class Xop_sanitizer_tst { Xop_sanitizer_fxt fxt = new Xop_sanitizer_fxt(); @Before public void init() {fxt.Clear();} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java index cca05b464..bd4c111f5 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java @@ -114,9 +114,9 @@ public class Vnt_convert_lang { pos += 2; // skip "-{" frame_bfr.Add(Bry__curly_bgn); if (!warning_done) { - frame_bfr.Add_str("max depth"); + frame_bfr.Add_str_a7("max depth"); // wfMessage('language-converter-depth-warning')->numParams($this->mMaxDepth)->inContentLanguage()->text() - frame_bfr.Add_str(""); + frame_bfr.Add_str_a7(""); warning_done = true; } continue; diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_log.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_log.java index 28396fbc5..2a8c1b4e4 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_log.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_log.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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.log_msgs.*; public class Xop_xnde_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "xnde"); public static final Gfo_msg_itm 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 d0fd0a29c..81f05abd2 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 @@ -536,7 +536,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { break; } } - return found ? rv : Bry_.NotFound; + return found ? rv : Bry_find_.Not_found; } private int Find_xtn_end_lhs(Xop_ctx ctx, Xop_xnde_tag tag, byte[] src, int src_len, int open_bgn, int open_end, byte[] close_bry) { int tag_bgn = open_bgn - Pfunc_tag.Xtag_len; @@ -552,7 +552,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { return i; } } - return Bry_.NotFound; + return Bry_find_.Not_found; } } private int Find_xtn_end_tag(Xop_ctx ctx, byte[] src, int src_len, int open_end, byte[] close_bry, int tag_bgn) { @@ -590,14 +590,14 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { close_bry[i] = src[src_offset + i]; boolean auto_close = false; int close_bgn = Find_xtn_end_lhs(ctx, tag, src, src_len, open_bgn, open_end, close_bry); - if (close_bgn == Bry_.NotFound) auto_close = true; // auto-close if end not found; verified with , , , , DATE:2014-08-23 + if (close_bgn == Bry_find_.Not_found) auto_close = true; // auto-close if end not found; verified with , , , , DATE:2014-08-23 int close_end = -1; if (auto_close) { xnde_end = close_bgn = close_end = src_len; } else { close_end = Find_end_tag_pos(src, src_len, close_bgn + close_bry.length); - if (close_end == Bry_.NotFound) return ctx.Lxr_make_log_(Xop_xnde_log.Xtn_end_not_found, src, open_bgn, open_end); + if (close_end == Bry_find_.Not_found) return ctx.Lxr_make_log_(Xop_xnde_log.Xtn_end_not_found, src, open_bgn, open_end); xnde_end = close_end; } diff --git a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java index c5ae0e408..1056a2a1c 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java @@ -73,7 +73,7 @@ public class Xows_mgr { } public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { int slash_pos = Bry_find_.Find_fwd(ttl.Page_txt_wo_qargs(), Xoa_ttl.Subpage_spr); // check for slash - byte[] special_name = slash_pos == Bry_.NotFound + byte[] special_name = slash_pos == Bry_find_.Not_found ? ttl.Base_txt_wo_qarg() // no slash found; use base_txt; ignore qry args and just get page_names; EX: Search/Earth?fulltext=y; Allpages?from=Earth... : Bry_.Mid(ttl.Page_txt_wo_qargs(), 0, slash_pos); // slash found; use root page; EX: Special:ItemByTitle/enwiki/Earth Object o = hash.Get_by_bry(special_name); 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 ceb7d22c4..d3f14ab4a 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 @@ -19,7 +19,7 @@ package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import g import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.apps.urls.*; public class Xows_page_allpages implements GfoInvkAble, Bry_fmtr_arg, Xows_page { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java index 821534428..801c44f63 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_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.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.core.encoders.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xosrh_page_mgr_tst { @Before public void init() {fxt.Clear();} private Xosrh_page_mgr_fxt fxt = new Xosrh_page_mgr_fxt(); @@ -46,7 +46,7 @@ class Xosrh_page_mgr_fxt { Xowd_page_itm tmp_itm = new Xowd_page_itm(); for (int i = bgn; i < end; i++) { byte[] id_bry = new byte[5]; // NOTE: do not reuse; will break hive_mgr - Base85_utl.XtoStrByAry(i, id_bry, 0, 5); + Base85_.Set_bry(i, id_bry, 0, 5); tmp_itm.Ns_id_(Xow_ns_.Id_main).Init(i, Bry_.To_a7_bry(i, 0), false, 10, 0, i - bgn); Xotdb_page_itm_.Txt_id_save(tmp_bfr, tmp_itm); hive_mgr.Create(id_bry, tmp_bfr.To_bry_and_clear(), null); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java index b8e11befc..7d0504f12 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java @@ -99,7 +99,7 @@ class Xosrh_qry_itm { byte[] itm_ttl = itm.Ttl_page_db(); itm_ttl = wiki.Lang().Case_mgr().Case_build_lower(itm_ttl, 0, itm_ttl.length); // lowercase ttl (since all search words are lower-cased) itm_ttl = Bry_.Replace(itm_ttl, Byte_ascii.Underline, Byte_ascii.Space); // replace _ with " " (assume user will use spaces in search term) - if (Bry_find_.Find_fwd(itm_ttl, word) != Bry_.NotFound) + if (Bry_find_.Find_fwd(itm_ttl, word) != Bry_find_.Not_found) ids.Add(itm); } break; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java index eb136c3c2..d43d00205 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java @@ -44,7 +44,7 @@ class Xosrh_scanner { case Xosrh_qry_tkn.Tid_quote: // find end quote and add as word int quote_bgn = pos + 1; int quote_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, quote_bgn, src_len); - if (quote_end == Bry_.NotFound) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src)); + if (quote_end == Bry_find_.Not_found) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src)); Tkns_add_word(Xosrh_qry_tkn.Tid_word_quoted, quote_bgn, quote_end); pos = quote_end + 1; // +1 to place after quote break; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java index 559f24e5c..cca6c5a18 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_html_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.langs.numbers.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.langs.numbers.*; class Xows_html_wkr { private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); private Xows_ui_qry qry; private Xow_wiki wiki; private Xol_num_mgr num_mgr; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java index b3694dbae..e72cf5841 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.wikis.tdbs.*; +import org.junit.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; public class Xows_html_wkr_tst { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java index bedf35818..0e5fbfad9 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.files.gui.*; +import org.junit.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.files.gui.*; public class Xows_ui_async_tst { @Before public void init() {fxt.Clear();} private Xows_ui_async_fxt fxt = new Xows_ui_async_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java index ee98f0658..f82402065 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java @@ -45,7 +45,7 @@ class Xows_ui_cmd implements GfoInvkAble, Cancelable, Xog_tab_close_lnr { if (!cache.Done() && (qry.Itms_end() > cache.Itms_end())) { if (async) { fill_from_cache = false; // NOTE: do not retrieve cached results to page, else ui_async cmd will add out of order; DATE:2015-04-24 - if (async_wkr == null) async_wkr = new Xows_ui_async(this, new Xows_html_row(new gplx.xowa.htmls.wtrs.Xoh_lnki_bldr(wiki.App(), wiki.App().Html__href_wtr())), js_wkr, qry.Page_len(), wiki.Domain_bry()); + if (async_wkr == null) async_wkr = new Xows_ui_async(this, new Xows_html_row(new gplx.xowa.htmls.core.htmls.utls.Xoh_lnki_bldr(wiki.App(), wiki.App().Html__href_wtr())), js_wkr, qry.Page_len(), wiki.Domain_bry()); Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_special_search_db, this, Invk_search_db).Start(); } else diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java index 65ff574ae..128982d36 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java @@ -45,7 +45,7 @@ class Xow_search_scanner { case Xow_search_tkn.Tid_quote: // find end quote and add as word int quote_bgn = pos + 1; int quote_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, quote_bgn, src_len); - if (quote_end == Bry_.NotFound) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src)); + if (quote_end == Bry_find_.Not_found) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src)); Tkns_add_word(Xow_search_tkn.Tid_word_quoted, quote_bgn, quote_end); pos = quote_end + 1; // +1 to place after quote break; diff --git a/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java deleted file mode 100644 index 8ab811f3a..000000000 --- a/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java +++ /dev/null @@ -1,63 +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 . -*/ -//namespace gplx.xowa.specials.search.quicks { -// using gplx.dbs; -// public class Xoa_search_tbl : RlsAble { -// private final String tbl_name = "quick_search"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); -// private final String fld_page_id, fld_page_title, fld_page_title_lower, fld_page_ns, fld_page_score, fld_page_len, fld_page_links, fld_page_descrip, fld_page_file_title; -// private final Db_conn conn; // private Db_stmt stmt_insert, stmt_update, stmt_select; -// public Db_conn Conn() {return conn;} -// public Xoa_search_tbl(Db_conn conn) { -// this.conn = conn; -// fld_page_id = flds.Add_int ("page_id"); -// fld_page_title = flds.Add_str ("page_title", 255); -// fld_page_title_lower = flds.Add_str ("page_title_lower", 255); -// fld_page_ns = flds.Add_int ("page_ns"); -// fld_page_score = flds.Add_byte ("page_score"); -// fld_page_len = flds.Add_byte ("page_len"); -// fld_page_links = flds.Add_byte ("page_links"); -// fld_page_descrip = flds.Add_str ("page_descrip", 1024); -// fld_page_file_title = flds.Add_str ("page_file_title", 255); -// conn.Rls_reg(this); -// } -// public void Insert(int page_id, byte[] page_title, int page_ns, int page_score, int page_len, int page_links, byte[] page_descrip, byte[] page_file_title) { -// Db_stmt stmt_insert = conn.Stmt_insert(tbl_name, flds); -// stmt_insert.Clear() -// .Val_int(fld_page_id, page_id).Val_bry_as_str(fld_page_title, page_title) -// .Val_int(fld_page_ns, page_ns).Val_int(fld_page_len, page_len) -// .Val_int(fld_page_links, page_links).Val_bry_as_str(fld_page_descrip, page_descrip) -// .Val_bry_as_str(fld_page_file_title, page_file_title) -// .Exec_insert(); -// } -// public void Rls() { -// } -// } -///* -//quick_search -//. page_id 123 -//. page_title Earth -//. page_title_lower earth -//. page_ns 0 -//. page_score 0 -//. page_len 140 -//. page_pagelinks 20 -//. page_descrip planet earth -//. page_file Earth.png -// -//*/ -//} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java index 828d0bfa1..8bcde10ac 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java @@ -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.ios.*; import gplx.core.net.*; +import gplx.core.ios.*; import gplx.core.net.*; import gplx.fsdb.meta.*; import gplx.xowa.apps.urls.*; class Xows_cmd__fs_check { diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java index 6f2077255..4050150ed 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java @@ -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.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.dbs.*; import gplx.fsdb.meta.*; 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 ff5baea6a..aa4462765 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 @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials.xowa.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.langs.htmls.encoders.*; -import gplx.ios.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.*; +import gplx.core.ios.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.*; interface Xosp_fbrow_cmd { Xosp_fbrow_cmd Make_new(); Xosp_fbrow_rslt Write_html(Xoa_url_arg_mgr arg_mgr, GfoInvkAble select_invkable); diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java index 895da499a..872934d5b 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.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.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.ios.*; +import gplx.core.ios.*; class Xosp_fbrow_data_dir { private final Ordered_hash hash = Ordered_hash_.New(); public Xosp_fbrow_data_dir(Io_url url) {this.url = url;} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java index c1434999d..91e5fe547 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.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.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.xowa.specials.*; import gplx.ios.*; import gplx.core.net.*; +import gplx.xowa.specials.*; import gplx.core.ios.*; import gplx.core.net.*; public class Xosp_fbrow_special implements Xows_page { private static final Xoa_url_arg_mgr url_args = new Xoa_url_arg_mgr(null); public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__file_browser;} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special_tst.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special_tst.java index b53a0ae63..5778aa0d5 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special_tst.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special_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.specials.xowa.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import org.junit.*; import gplx.core.net.*; import gplx.ios.*; +import org.junit.*; import gplx.core.net.*; import gplx.core.ios.*; public class Xosp_fbrow_special_tst { @Before public void init() {fxt.Clear();} private Xosp_fbrow_special_fxt fxt = new Xosp_fbrow_special_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java index 5e36bc94c..409e09fee 100644 --- a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java @@ -46,7 +46,7 @@ public class Xous_window_mgr implements GfoInvkAble { for (int i = 0; i < len; ++i) { if (i != 0) bfr.Add_byte_nl(); Xog_tab_itm tab = tab_mgr.Tabs_get_at(i); - bfr.Add_str(tab.Page().Url().To_str()); + bfr.Add_str_u8(tab.Page().Url().To_str()); } return bfr.To_str_and_clear(); } 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 bd7b65336..2e3f950a1 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 @@ -37,7 +37,7 @@ public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm { } public void Select(Bry_bfr bfr, int owner) { Xoud_bmk_itm_row[] db_rows = tbl.Select_grp(owner); - byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/Bookmarks"))).Img_16x16(gplx.xowa.htmls.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); + byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/Bookmarks"))).Img_16x16(gplx.xowa.htmls.core.htmls.utls.Xoh_img_path.Img_option).Bld_to_bry(); byte[] delete_confirm_msg = app.Api_root().Usr().Bookmarks().Delete_confirm() ? Msg__delete_confirm : Bry_.Empty; tbl_fmtr.Write(bfr, this, option_link, delete_confirm_msg, To_ui_rows(db_rows)); } private static final byte[] Msg__delete_confirm = Bry_.new_a7(" data-dbui-delete_confirm_msg='Are you sure you want to delete this bookmark?'"); 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 3e0f23ee1..68c1ef2a7 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 @@ -38,7 +38,7 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm { public void Select(Bry_bfr bfr, int top) { tbl.Select_by_top(select_list, 100); Xoud_history_row[] db_rows = (Xoud_history_row[])select_list.To_ary_and_clear(Xoud_history_row.class); - byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/PageHistory"))).Img_16x16(gplx.xowa.htmls.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); + byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/PageHistory"))).Img_16x16(gplx.xowa.htmls.core.htmls.utls.Xoh_img_path.Img_option).Bld_to_bry(); byte[] delete_confirm_msg = app.Api_root().Usr().Bookmarks().Delete_confirm() ? Msg__delete_confirm : Bry_.Empty; tbl_fmtr.Write(bfr, this, option_link, delete_confirm_msg, To_ui_rows(db_rows)); } private static final byte[] Msg__delete_confirm = Bry_.new_a7(" data-dbui-delete_confirm_msg='Are you sure you want to delete this row?'"); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java index 39c405a5f..2a04cc8c8 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java @@ -89,7 +89,7 @@ public class Prefs_converter { else { if (depth != 0) bfr.Add_byte(Byte_ascii.Dot); if (String_.Eq(m.Key(), "scripts")) {bfr.Clear(); return;} - bfr.Add_str(m.Key()); + bfr.Add_str_u8(m.Key()); int args_count = m.Args_count(); if (args_count > 0) { bfr.Add_byte(Byte_ascii.Paren_bgn); @@ -97,7 +97,7 @@ public class Prefs_converter { if (i != 0) bfr.Add_byte(Byte_ascii.Comma); KeyVal kv = m.Args_getAt(i); bfr.Add_byte(Byte_ascii.Quote); - bfr.Add_str(kv.Val_to_str_or_empty()); + bfr.Add_str_u8(kv.Val_to_str_or_empty()); bfr.Add_byte(Byte_ascii.Quote); } bfr.Add_byte(Byte_ascii.Paren_end); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java index e79acd8ba..5d99700d9 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java @@ -42,9 +42,9 @@ class Prefs_converter_fxt { public void Parse(String raw_str) { byte[] raw_bry = Bry_.new_u8(raw_str); int bgn_pos = Bry_find_.Find_fwd(raw_bry, Byte_ascii.Paren_bgn); - if (bgn_pos == Bry_.NotFound) throw Err_.new_wo_type("unable to find paren_bgn", "raw", raw_str); + if (bgn_pos == Bry_find_.Not_found) throw Err_.new_wo_type("unable to find paren_bgn", "raw", raw_str); int end_pos = Bry_find_.Find_fwd(raw_bry, Byte_ascii.Paren_end, bgn_pos); - if (end_pos == Bry_.NotFound) throw Err_.new_wo_type("unable to find paren_end", "raw", raw_str); + if (end_pos == Bry_find_.Not_found) throw Err_.new_wo_type("unable to find paren_end", "raw", raw_str); raw_bry = Bry_.Mid(raw_bry, bgn_pos, end_pos); int len = raw_bry.length; for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java index 090ea4cf9..7021a6a54 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java @@ -59,12 +59,12 @@ class Prefs_html_wtr { for (int i = 0; i < len; i++) { KeyVal option = options_list[i]; bfr.Add(Nde_stub_option_bgn); // " \n" } } @@ -76,12 +76,12 @@ class Prefs_html_wtr { Write_io_btn(bfr, hnde, prop_idx); } private void Write_io_btn(Bry_bfr bfr, Html_nde hnde, int prop_idx) { - bfr.Add_str_a7("").Add_byte_nl(); } private static final byte[] Atr_key_xowa_prop_list = Bry_.new_a7("xowa_prop_list") diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java index b83a9664d..a4853ff46 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java @@ -23,7 +23,7 @@ import gplx.xowa.guis.*; import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.specials.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.apps.urls.*; @@ -38,8 +38,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { this.domain_tid = domain_itm.Domain_type_id(); this.domain_abrv = Xow_abrv_wm_.To_abrv(Xow_domain_itm_.parse(domain_bry)); this.ns_mgr = Xow_ns_mgr_.default_(app.Utl_case_mgr()); - this.html__hzip_mgr = new Xow_hzip_mgr(app.Usr_dlg(), this); - this.html__hdump_rdr = new Xohd_hdump_rdr(app, this); + this.html__hdump_mgr = new Xow_hdump_mgr(this); this.special_mgr = new Xosp_special_mgr(this); this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str)); this.fsdb_mgr = new Xof_fsdb_mgr__sql(); @@ -63,9 +62,8 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { public Xof_bin_mgr File__bin_mgr() {return fsdb_mgr.Bin_mgr();} public Fsm_mnt_mgr File__mnt_mgr() {return fsdb_mgr.Mnt_mgr();} public boolean Html__hdump_enabled() {return Bool_.Y;} + public Xow_hdump_mgr Html__hdump_mgr() {return html__hdump_mgr;} private final Xow_hdump_mgr html__hdump_mgr; public boolean Html__css_installing() {return html__css_installing;} public void Html__css_installing_(boolean v) {html__css_installing = v;} private boolean html__css_installing; - public Xow_hzip_mgr Html__hzip_mgr() {return html__hzip_mgr;} private final Xow_hzip_mgr html__hzip_mgr; - public Xohd_hdump_rdr Html__hdump_rdr() {return html__hdump_rdr;} private final Xohd_hdump_rdr html__hdump_rdr; public Xoh_page_wtr_mgr Html__wtr_mgr() {return html__wtr_mgr;} private final Xoh_page_wtr_mgr html__wtr_mgr = new Xoh_page_wtr_mgr(Bool_.Y); public Xow_mw_parser_mgr Mw_parser_mgr() {return mw_parser_mgr;} private final Xow_mw_parser_mgr mw_parser_mgr = new Xow_mw_parser_mgr(); public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props(); @@ -91,17 +89,23 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { orig_mgr.Init_by_wiki(this, file_mgr__fsdb_mode, db_core_mgr.File__orig_tbl_ary(), Xof_url_bldr.new_v2()); fsdb_mgr.Init_by_wiki(this); data_mgr__core_mgr.Db__core().Tbl__ns().Select_all(ns_mgr); - html__hdump_rdr.Init_by_db(data_mgr__core_mgr); + html__hdump_mgr.Init_by_db(this); } - public void Pages_get(Xog_page rv, Gfo_url url, Xoa_ttl ttl) { + public void Init_by_make(Xowd_core_db_props props, gplx.xowa.bldrs.infos.Xob_info_session info_session) { + data_mgr__core_mgr = new Xowd_db_mgr(this, fsys_mgr.Root_dir(), domain_itm); + data_mgr__core_mgr.Init_by_make(props, info_session); + html__hdump_mgr.Init_by_db(this); + } + public void Pages_get(Xoh_page rv, Gfo_url url, Xoa_ttl ttl) { if (init_needed) Init_by_wiki(); if (ttl.Ns().Id_special()) special_mgr.Get_by_ttl(rv, url, ttl); else - html__hdump_rdr.Get_by_ttl(rv, ttl); + html__hdump_mgr.Load_mgr().Load(rv, ttl); } - public Xoa_ttl Ttl_parse(byte[] ttl) {return Xoa_ttl.parse(app.Utl__bfr_mkr(), app.Utl_amp_mgr(), app.Utl_case_mgr(), xwiki_mgr, ns_mgr, app.Utl_msg_log(), ttl, 0, ttl.length);} - public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) { + public Xoa_ttl Ttl_parse(byte[] ttl) {return Ttl_parse(ttl, 0, ttl.length);} + public Xoa_ttl Ttl_parse(byte[] src, int src_bgn, int src_end) {return Xoa_ttl.parse(app.Utl__bfr_mkr(), app.Utl_amp_mgr(), app.Utl_case_mgr(), xwiki_mgr, ns_mgr, app.Utl_msg_log(), src, src_bgn, src_end);} + public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) { Xow_ns ns = ns_mgr.Ids_get_or_null(ns_id); byte[] raw = Bry_.Add(ns.Name_db_w_colon(), ttl); return Xoa_ttl.parse(app.Utl__bfr_mkr(), app.Utl_amp_mgr(), app.Utl_case_mgr(), xwiki_mgr, ns_mgr, app.Utl_msg_log(), raw, 0, raw.length); diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java index 95ff94da8..dd341f279 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java @@ -32,7 +32,7 @@ public class Xow_defn_cache { // stores compiled Xot_defn byte[] name = defn.Name(); int cache_size = defn.Cache_size(); // OBSOLETE: * 2 b/c it has src and root; cache.Add_replace(name, defn, cache_size); - if (case_match == Xow_ns_case_.Id_1st) { + if (case_match == Xow_ns_case_.Tid__1st) { name = lang.Case_mgr().Case_build_1st_upper(upper_1st_bfr, name, 0, name.length); cache.Add_replace(name, defn, 0); } 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 e38228ad6..c441f2991 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 @@ -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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.users.history.*; abstract class Xoctg_fmtr_itm_base implements Xoctg_fmtr_itm { 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 ea66e97a0..6e111d081 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 @@ -33,17 +33,17 @@ public class Xoctg_idx_mgr implements GfoInvkAble { int pipe_pos_cur = -1, pipe_pos_prv = -1; for (int i = block_len; i < len; i += block_len) { usr_dlg.Prog_many("", "", "indexing ~{0} ~{1}", i, len); - pipe_pos_cur = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, i, len); if (pipe_pos_cur == Bry_.NotFound) throw Err_.new_wo_type("ctg_idx_mgr could not find pipe.next", "ctg", String_.new_a7(ctg), "pos", i); + pipe_pos_cur = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, i, len); if (pipe_pos_cur == Bry_find_.Not_found) throw Err_.new_wo_type("ctg_idx_mgr could not find pipe.next", "ctg", String_.new_a7(ctg), "pos", i); if (pipe_pos_cur == len - 1) break; Index_itm(ctg, src, pipe_pos_cur + 1, len); // +1 to skip pipe pipe_pos_prv = pipe_pos_cur; } - pipe_pos_cur = Bry_find_.Find_bwd(src, Byte_ascii.Pipe, len - 1, 0); if (pipe_pos_cur == Bry_.NotFound) pipe_pos_cur = 0; // 1 entry only; will not have preceding pipe + pipe_pos_cur = Bry_find_.Find_bwd(src, Byte_ascii.Pipe, len - 1, 0); if (pipe_pos_cur == Bry_find_.Not_found) pipe_pos_cur = 0; // 1 entry only; will not have preceding pipe if (pipe_pos_cur != pipe_pos_prv) // if last itm was not indexed, index it Index_itm(ctg, src, pipe_pos_cur + 1, len); } private void Index_itm(byte[] ctg, byte[] src, int bgn, int len) { - int end = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, bgn, len); if (end == Bry_.NotFound) throw Err_.new_wo_type("Ctg_idx_mgr could not find pipe.end", "ctg", String_.new_a7(ctg), "pos", bgn); + int end = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, bgn, len); if (end == Bry_find_.Not_found) throw Err_.new_wo_type("Ctg_idx_mgr could not find pipe.end", "ctg", String_.new_a7(ctg), "pos", bgn); fld_rdr.Pos_(bgn); Xoctg_idx_itm itm = new Xoctg_idx_itm().Parse(fld_rdr, bgn); itms.Add(itm); @@ -84,7 +84,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { tmp_prv_itm.Parse(fld_rdr.Pos_(pos_cur), pos_cur); // fill prv_itm to whatever binary search found while (true) { int itm_bgn = dir_fwd ? Bry_find_.Find_fwd(src, Byte_ascii.Pipe, pos_cur, src_len) : Bry_find_.Find_bwd(src, Byte_ascii.Pipe, pos_cur); - if (itm_bgn == Bry_.NotFound) { // stop: at first && searched bwd; note that at last && searched fwd will never return Bry_.NotFound b/c all srcs are terminated with | + if (itm_bgn == Bry_find_.Not_found) { // stop: at first && searched bwd; note that at last && searched fwd will never return Bry_find_.Not_found b/c all srcs are terminated with | if (!arg_is_from) return null; // arg is until and nothing found; return null: EX: range of B-Y and find of until=A; no results else break; // arg is from; stop loop; (will use first item) } @@ -115,7 +115,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { tmp_pos = itm_0.Pos(); if (!arg_is_from && Bry_.Compare(find, itm_0.Sortkey()) != CompareAble_.More) { // "until" means do *not* include last; go back one more; note: only do this logic if find is either < or == to slot; EX: find=AM && slot=AL; do not go back one more tmp_pos = Bry_find_.Find_bwd(src, Byte_ascii.Pipe, tmp_pos - 1); // -1 to position before pipe - if (tmp_pos == Bry_.NotFound) return; // already 1st and nothing found + if (tmp_pos == Bry_find_.Not_found) return; // already 1st and nothing found else tmp_pos++; } } @@ -126,7 +126,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { rv.Add(itm); if (!arg_is_from && tmp_pos == 0) break; // 1st item and moving bwd; stop; note that 1st item does not have preceding | tmp_pos = arg_is_from ? Bry_find_.Find_fwd(src, Byte_ascii.Pipe, tmp_pos, src_len) : Bry_find_.Find_bwd(src, Byte_ascii.Pipe, tmp_pos - 1); // -1 to position before pipe - if (tmp_pos == Bry_.NotFound) { + if (tmp_pos == Bry_find_.Not_found) { if (arg_is_from) // moving fwd and no pipe found; exit; break; else // moving bwd and no pipe found; position at 1st item (which doesn't have a pipe); note that -1 will become 0 @@ -142,7 +142,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { Xoctg_view_itm last_itm = (Xoctg_view_itm)rv.Get_at(rv_count - 1); int last_itm_pos = last_itm.Pos(); tmp_pos = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, last_itm_pos); - if (tmp_pos != Bry_.NotFound && tmp_pos < src_len - 1) { + if (tmp_pos != Bry_find_.Not_found && tmp_pos < src_len - 1) { ++tmp_pos; // position after pipe last_plus_one.Parse(fld_rdr.Pos_(tmp_pos), tmp_pos); } 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 7ef26205c..a8557c7b3 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 @@ -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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.wikis.data.tbls.*; +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.wikis.nss.*; import gplx.xowa.users.history.*; public class Xoctg_pagelist_itms implements Bry_fmtr_arg { diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java index 3408521cf..1d6a0061b 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java @@ -62,7 +62,7 @@ public class Xow_data_mgr_tst { ; } @Test public void Update_zip() { -// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Id_main].Ext_tid_(gplx.ios.Io_stream_.Tid_zip); +// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Id_main].Ext_tid_(gplx.core.ios.Io_stream_.Tid_zip); // fxt.Wiki().Data_mgr().Zip_mgr_(new Io_zip_mgr_mok()); // fxt .Create("A1", "A1 data") // .Create("B12", "B12 data") diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java index f278cd16a..69f5573fc 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java @@ -16,13 +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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.metas.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.wikis.dbs.*; public class Xowd_core_db_props { - public Xowd_core_db_props(int schema, Xowd_db_layout layout_text, Xowd_db_layout layout_html, Xowd_db_layout layout_file, byte zip_tid_text, byte zip_tid_html) { + public Xowd_core_db_props(int schema, Xowd_db_layout layout_text, Xowd_db_layout layout_html, Xowd_db_layout layout_file, byte zip_tid_text, byte zip_tid_html, boolean hzip_enabled) { this.schema = schema; this.layout_text = layout_text; this.layout_html = layout_html; this.layout_file = layout_file; this.zip_tid_text = zip_tid_text; this.zip_tid_html = zip_tid_html; + this.hzip_enabled = hzip_enabled; } public int Schema() {return schema;} private final int schema; public boolean Schema_is_1() {return schema == 1;} @@ -31,6 +32,7 @@ public class Xowd_core_db_props { public Xowd_db_layout Layout_file() {return layout_file;} private final Xowd_db_layout layout_file; public byte Zip_tid_text() {return zip_tid_text;} private final byte zip_tid_text; public byte Zip_tid_html() {return zip_tid_html;} private final byte zip_tid_html; + public boolean Hzip_enabled() {return hzip_enabled;} private final boolean hzip_enabled; public void Cfg_save(Db_cfg_tbl tbl) { tbl.Conn().Txn_bgn("make__core__cfg__save"); tbl.Insert_int (Cfg_grp, Cfg_key__schema_version , schema); @@ -39,12 +41,13 @@ public class Xowd_core_db_props { tbl.Insert_str (Cfg_grp, Cfg_key__layout_file , layout_file.Name()); tbl.Insert_byte (Cfg_grp, Cfg_key__zip_tid_text , zip_tid_text); tbl.Insert_byte (Cfg_grp, Cfg_key__zip_tid_html , zip_tid_html); + tbl.Insert_yn (Cfg_grp, Cfg_key__hzip_enabled , hzip_enabled); tbl.Conn().Txn_end(); } public static Xowd_core_db_props Cfg_load(Io_url url, Db_conn conn) { Db_cfg_tbl cfg_tbl = new Db_cfg_tbl(conn, "xowa_cfg"); return cfg_tbl.Select_int_or(Cfg_grp, Cfg_key__schema_version, 1) == 1 - ? new Xowd_core_db_props(1, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, cfg_tbl.Select_byte_or(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_data_storage_format, Io_stream_.Tid_gzip), Io_stream_.Tid_gzip) + ? new Xowd_core_db_props(1, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, cfg_tbl.Select_byte_or(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_data_storage_format, Io_stream_.Tid_gzip), Io_stream_.Tid_gzip, Bool_.Y) : Cfg_load(cfg_tbl); } private static Xowd_core_db_props Cfg_load(Db_cfg_tbl tbl) { @@ -56,6 +59,7 @@ public class Xowd_core_db_props { , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_file).To_str()) , cfg_hash.Get_by(Cfg_key__zip_tid_text).To_byte() , cfg_hash.Get_by(Cfg_key__zip_tid_html).To_byte() + , cfg_hash.Get_by(Cfg_key__hzip_enabled).To_yn_or(Bool_.N) ); } private static final String Cfg_grp = Xow_cfg_consts.Grp__wiki_core @@ -65,6 +69,7 @@ public class Xowd_core_db_props { , Cfg_key__layout_file = "layout_file" , Cfg_key__zip_tid_text = "zip_tid_text" , Cfg_key__zip_tid_html = "zip_tid_html" + , Cfg_key__hzip_enabled = "hzip_enabled" ; - public static final Xowd_core_db_props Test = new Xowd_core_db_props(2, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Io_stream_.Tid_raw, Io_stream_.Tid_raw); + public static final Xowd_core_db_props Test = new Xowd_core_db_props(2, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Io_stream_.Tid_raw, Io_stream_.Tid_raw, Bool_.Y); } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java index b749b7956..80cde635e 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.infos.*; +import gplx.xowa.htmls.core.dbs.*; public class Xowd_db_file { Xowd_db_file(Db_cfg_tbl cfg_tbl, Xob_info_session info_session, Xob_info_file info_file, Xowd_core_db_props props, Xowd_db_file_schema_props schema_props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid, Db_conn conn, byte cmd_mode) { this.id = id; this.tid = tid; this.url = url; this.ns_ids = ns_ids; this.part_id = part_id; this.guid = guid; @@ -29,7 +30,8 @@ public class Xowd_db_file { this.tbl__site_stats = new Xowd_site_stats_tbl(conn, schema_is_1); this.tbl__page = new Xowd_page_tbl(conn, schema_is_1); this.tbl__text = new Xowd_text_tbl(conn, schema_is_1, props.Zip_tid_text()); - this.tbl__html = new Xowd_html_tbl(conn, props.Zip_tid_html()); + this.tbl__html_page = new Xoh_page_tbl(conn); + this.tbl__html_redlink = new Xoh_redlink_tbl(conn); this.tbl__css_core = new Xowd_css_core_tbl(conn); this.tbl__css_file = new Xowd_css_file_tbl(conn); this.tbl__cat_core = new Xowd_cat_core_tbl(conn, schema_is_1); @@ -59,7 +61,8 @@ public class Xowd_db_file { public Xowd_site_ns_tbl Tbl__ns() {return tbl__ns;} private final Xowd_site_ns_tbl tbl__ns; public Xowd_page_tbl Tbl__page() {return tbl__page;} private final Xowd_page_tbl tbl__page; public Xowd_text_tbl Tbl__text() {return tbl__text;} private final Xowd_text_tbl tbl__text; - public Xowd_html_tbl Tbl__html() {return tbl__html;} private final Xowd_html_tbl tbl__html; + public Xoh_page_tbl Tbl__html_page() {return tbl__html_page;} private final Xoh_page_tbl tbl__html_page; + public Xoh_redlink_tbl Tbl__html_redlink() {return tbl__html_redlink;} private final Xoh_redlink_tbl tbl__html_redlink; public Xowd_css_core_tbl Tbl__css_core() {return tbl__css_core;} private final Xowd_css_core_tbl tbl__css_core; public Xowd_css_file_tbl Tbl__css_file() {return tbl__css_file;} private final Xowd_css_file_tbl tbl__css_file; public Xowd_cat_core_tbl Tbl__cat_core() {return tbl__cat_core;} private final Xowd_cat_core_tbl tbl__cat_core; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_row.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_row.java index a1a75a8e9..e9d656584 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_row.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_row.java @@ -22,8 +22,8 @@ public class Xowd_html_row { public int Tid() {return tid;} private final int tid; public byte[] Data() {return data;} private final byte[] data; public static final int // SERIALIZED - Tid_html = 0 - , Tid_img = 1 - , Tid_redlink = 2 + Tid__html = 0 + , Tid__img = 1 + , Tid__redlink = 2 ; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java deleted file mode 100644 index 8914f8b11..000000000 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java +++ /dev/null @@ -1,71 +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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; -public class Xowd_html_tbl implements RlsAble { - private final String tbl_name = "html"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); - private final String fld_page_id, fld_html_tid, fld_html_data; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; - private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr(); private final byte zip_tid; - public Xowd_html_tbl(Db_conn conn, byte zip_tid) { - this.conn = conn; this.zip_tid = zip_tid; - fld_page_id = flds.Add_int("page_id"); - fld_html_tid = flds.Add_int("html_tid"); - fld_html_data = flds.Add_bry("html_data"); - conn.Rls_reg(this); - } - public Db_conn Conn() {return conn;} - public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} - public void Create_idx() {conn.Ddl_create_idx(Gfo_usr_dlg_.Instance, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_page_id, fld_html_tid));} - public void Insert_bgn() {conn.Txn_bgn("schema__html__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} - public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} - public int Insert(int page_id, int tid, byte[] data) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - data = zip_mgr.Zip(zip_tid, data); - stmt_insert.Clear().Val_int(fld_page_id, page_id).Val_int(fld_html_tid, tid).Val_bry(fld_html_data, data).Exec_insert(); - return data.length; - } - public void Delete(int page_id) { - if (stmt_delete == null) stmt_delete = conn.Stmt_delete(tbl_name, String_.Ary(fld_page_id)); - stmt_delete.Clear().Crt_int(fld_page_id, page_id).Exec_delete(); - } - public void Select_by_page(List_adp rv, int page_id) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, String_.Ary(fld_page_id)); - Db_rdr rdr = stmt_select.Clear().Crt_int(fld_page_id, page_id).Exec_select__rls_manual(); - try { - while (rdr.Move_next()) { - Xowd_html_row row = new Xowd_html_row(rdr.Read_int(fld_page_id), rdr.Read_int(fld_html_tid), zip_mgr.Unzip(zip_tid, rdr.Read_bry(fld_html_data))); - rv.Add(row); - } - } - finally {rdr.Rls();} - } - public void Rls() { - stmt_insert = Db_stmt_.Rls(stmt_insert); - stmt_delete = Db_stmt_.Rls(stmt_delete); - stmt_select = Db_stmt_.Rls(stmt_select); - } - public static void Assert_col__page_html_db_id(Xowd_db_mgr db_mgr) { - Xowd_page_tbl page_tbl = db_mgr.Tbl__page(); Db_conn page_conn = page_tbl.Conn(); - boolean html_flds_exists = page_conn.Meta_fld_exists(page_tbl.Tbl_name(), page_tbl.Fld_html_db_id()); - if (html_flds_exists) return; - page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_html_db_id()).Default_(-1)); - page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_redirect_id()).Default_(-1)); - page_tbl.Hdump_enabled_(Bool_.Y); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java index c542d8c36..6eb1eb7d8 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java @@ -90,7 +90,7 @@ public class Xowd_page_itm { ns_id = ns.Id(); return this; } - public void Clear() { + public Xowd_page_itm Clear() { id = Id_null; text_len = 0; // text_len should be 0 b/c text defaults to 0; text_db_id = tdb_row_idx = 0; // default to 0, b/c some tests do not set and will fail at -1 ns_id = Int_.Min_value; @@ -101,6 +101,7 @@ public class Xowd_page_itm { id_val = null; html_db_id = -1; redirect_id = -1; + return this; } public void Copy(Xowd_page_itm orig) { this.id = orig.id; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java index cf01fb0fa..6610ebaad 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java @@ -54,6 +54,11 @@ public class Xowd_page_tbl implements RlsAble { conn.Rls_reg(this); } public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds.To_fld_ary()));} + public void Insert(int page_id, int ns_id, byte[] ttl_wo_ns, boolean page_is_redirect, DateAdp modified_on, int page_len, int random_int, int text_db_id, int html_db_id) { + this.Insert_bgn(); + this.Insert_cmd_by_batch(page_id, ns_id, ttl_wo_ns, page_is_redirect, modified_on, page_len, random_int, text_db_id, html_db_id); + this.Insert_end(); + } public void Insert_bgn() {conn.Txn_bgn("schema__page__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} public void Insert_cmd_by_batch(int page_id, int ns_id, byte[] ttl_wo_ns, boolean page_is_redirect, DateAdp modified_on, int page_len, int random_int, int text_db_id, int html_db_id) { @@ -321,4 +326,12 @@ public class Xowd_page_tbl implements RlsAble { stmt_insert = Db_stmt_.Rls(stmt_insert); } private static final String Page_touched_fmt = "yyyyMMddHHmmss"; + public static void Assert_col__page_html_db_id(Xowd_db_mgr db_mgr) { + Xowd_page_tbl page_tbl = db_mgr.Tbl__page(); Db_conn page_conn = page_tbl.Conn(); + boolean html_flds_exists = page_conn.Meta_fld_exists(page_tbl.Tbl_name(), page_tbl.Fld_html_db_id()); + if (html_flds_exists) return; + page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_html_db_id()).Default_(-1)); + page_conn.Ddl_append_fld(page_tbl.Tbl_name(), Db_meta_fld.new_int(page_tbl.Fld_redirect_id()).Default_(-1)); + page_tbl.Hdump_enabled_(Bool_.Y); + } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java index 595e28bd9..391b409c4 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_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.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_pagelinks_tbl implements RlsAble { private final String tbl_name = "pagelink"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_src_id, fld_trg_id; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java index 5515b6d8d..a75e4f1d0 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_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.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_pagelinks_temp_tbl implements RlsAble { private final String tbl_name = "pagelinks_temp"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_src_id, fld_trg_ns, fld_trg_ttl; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java index 692100e42..1fb14ae26 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_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.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; public class Xowd_text_tbl implements RlsAble { private final String tbl_name = "text"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_page_id, fld_text_data; 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 874c2d60b..20a4a9047 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,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.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.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.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.*; @@ -34,7 +34,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { public void Load_page(Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled) {Load_page(rv, rv.Text_db_id(), rv.Tdb_row_idx(), ns, timestamp_enabled, tmp_xdat_file, tmp_xdat_itm);} public void Load_page(Xowd_page_itm rv, int txt_fil_idx, int txt_row_idx, Xow_ns ns, boolean timestamp_enabled, Xob_xdat_file xdat_file, Xob_xdat_itm xdat_itm) { Io_url file = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ns.Id(), txt_fil_idx); - byte[] bry = gplx.ios.Io_stream_rdr_.Load_all(file); int bry_len = bry.length; + byte[] bry = gplx.core.ios.Io_stream_rdr_.Load_all(file); int bry_len = bry.length; xdat_file.Clear().Parse(bry, bry_len, file).GetAt(xdat_itm, txt_row_idx); Load_page_parse(rv, bry, bry_len, xdat_itm.Itm_bgn(), xdat_itm.Itm_end(), timestamp_enabled); } @@ -60,7 +60,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { for (int i = 0; i < len; i++) { if (cancelable.Canceled()) return; Xowd_page_itm itm = (Xowd_page_itm)list.Get_at(i + bgn); - Base85_utl.XtoStrByAry(itm.Id(), id_bry, 0, 5); + Base85_.Set_bry(itm.Id(), id_bry, 0, 5); int cur_fil_idx = this.Find_file_idx_by_site(Xotdb_dir_info_.Tid_id, id_bry); if (cur_fil_idx != prv_fil_idx) { if (!this.Load_xdat_file(cancelable, tmp_xdat_file, Xotdb_dir_info_.Tid_id, cur_fil_idx)) continue; // file not found; ignore @@ -115,13 +115,13 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { byte[] raw = rdr.Src(); int itm_bgn = xdat_itm.Itm_bgn(), itm_end = xdat_itm.Itm_end(); int pos = Bry_find_.Find_fwd(raw, Byte_ascii.Pipe, itm_bgn, raw.length); - if (pos == Bry_.NotFound) throw wiki.Appe().Usr_dlg().Fail_many(GRP_KEY, "invalid_search_file", "search file is invalid"); + if (pos == Bry_find_.Not_found) throw wiki.Appe().Usr_dlg().Fail_many(GRP_KEY, "invalid_search_file", "search file is invalid"); pos += Int_.Const_dlm_len; // pipe while (pos < itm_end) { - int page_id = Base85_utl.XtoIntByAry(raw, pos, pos + 4); + int page_id = Base85_.To_int_by_bry(raw, pos, pos + 4); pos += 6; // 5 + 1 for semic; - int page_len = Base85_utl.XtoIntByAry(raw, pos, pos + 4); + int page_len = Base85_.To_int_by_bry(raw, pos, pos + 4); rv.Add(Xowd_page_itm.new_srch(page_id, page_len)); pos += 6; // 5 + 1 for pipe // if (match.Itms_len() == max_results) break; @@ -161,9 +161,9 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { byte[] bry = tmp_xdat_itm.Itm_bry(); int bgn = name.length + 1; boolean hidden = bry[bgn] == Byte_ascii.Ltr_y; - int count_subcs = Base85_utl.XtoIntByAry(bry, bgn + 2, bgn + 6); - int count_files = Base85_utl.XtoIntByAry(bry, bgn + 8, bgn + 12); - int count_pages = Base85_utl.XtoIntByAry(bry, bgn + 14, bgn + 18); + int count_subcs = Base85_.To_int_by_bry(bry, bgn + 2, bgn + 6); + int count_files = Base85_.To_int_by_bry(bry, bgn + 8, bgn + 12); + int count_pages = Base85_.To_int_by_bry(bry, bgn + 14, bgn + 18); rv.Hidden_(hidden); for (byte i = 0; i < Xoa_ctg_mgr.Tid__max; i++) { Xoctg_idx_mgr idx_mgr = rv.Grp_by_tid(i); @@ -178,7 +178,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { idx_mgr.Total_(count); } } - public boolean Load_by_id(Xowd_page_itm page, int id) {Base85_utl.XtoStrByAry(id, tmp_id_bry, 0, 5); return Load_by_id(page, tmp_id_bry);} private byte[] tmp_id_bry = new byte[5]; + public boolean Load_by_id(Xowd_page_itm page, int id) {Base85_.Set_bry(id, tmp_id_bry, 0, 5); return Load_by_id(page, tmp_id_bry);} private byte[] tmp_id_bry = new byte[5]; boolean Load_by_id(Xowd_page_itm page, byte[] id_bry) { if (!Load_xdat_itm(tmp_xdat_itm, Xotdb_dir_info_.Tid_id, id_bry, true)) return false;; Xotdb_page_itm_.Txt_id_load(page, tmp_xdat_itm.Itm_bry()); @@ -321,16 +321,16 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { private static void Load_ctg_v1_parse(List_adp rv, Gfo_usr_dlg usr_dlg, byte[] ary) { int aryLen = ary.length; int pos = Bry_find_.Find_fwd(ary, Byte_ascii.Pipe, 0, aryLen); - int rowCount = (aryLen - pos + 1) / (Base85_utl.Len_int + gplx.xowa.apps.progs.Xoa_prog_mgr.Len_dlm_fld); + int rowCount = (aryLen - pos + 1) / (Base85_.Len_int + gplx.xowa.apps.progs.Xoa_prog_mgr.Len_dlm_fld); rv.Clear(); boolean garbage = false; for (int i = 0; i < rowCount; i++) { Xowd_page_itm row = new Xowd_page_itm(); rv.Add(row); if (garbage) continue; - int bgn = pos + 1 + (i * (Base85_utl.Len_int + gplx.xowa.apps.progs.Xoa_prog_mgr.Len_dlm_fld)); + int bgn = pos + 1 + (i * (Base85_.Len_int + gplx.xowa.apps.progs.Xoa_prog_mgr.Len_dlm_fld)); try { - int id = Base85_utl.XtoIntByAry(ary, bgn, bgn + Base85_utl.Len_int - 1); + int id = Base85_.To_int_by_bry(ary, bgn, bgn + Base85_.Len_int - 1); if (id < 0) throw Err_.new_wo_type("invalid id", "id", id); row.Id_(id); } @@ -357,7 +357,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { 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(); - int timestamp = Base85_utl.XtoIntByAry(src, bgn + 6 , bgn + 10); + int timestamp = Base85_.To_int_by_bry(src, bgn + 6 , bgn + 10); int ttl_end = Bry_find_.Find_fwd(src, Xotdb_page_itm_.Txt_page_dlm, bgn + 12, itm_end); if (ttl_end == -1) return false; byte[] ttl = Bry_.Mid (src, bgn + 12 , ttl_end); @@ -371,7 +371,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { int timestamp_bgn = row_bgn + 5 + 1; int timestamp_end = timestamp_bgn + 5; if (timestamp_enabled) { - int timestamp = Base85_utl.XtoIntByAry(src, timestamp_bgn, timestamp_end - 1); + int timestamp = Base85_.To_int_by_bry(src, timestamp_bgn, timestamp_end - 1); page.Modified_on_(Bit_.Xto_date_short(timestamp)); } int name_bgn = timestamp_end + 1; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java index 3a134817f..c877a6561 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_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.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.hdumps.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.core.*; public interface Xodb_mgr extends GfoInvkAble { byte Tid(); String Tid_name(); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java index 4a1f5d804..f535c178e 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.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.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; -import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.hdumps.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.core.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble { public Xodb_mgr_sql(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java index 7a1a39177..976f3281d 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.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.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.core.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; public class Xodb_mgr_txt implements Xodb_mgr { public Xodb_mgr_txt(Xowe_wiki wiki, Xow_data_mgr data_mgr) { this.wiki = wiki; @@ -25,7 +25,7 @@ public class Xodb_mgr_txt implements Xodb_mgr { } private Xowe_wiki wiki; public byte Tid() {return Tid_txt;} public static final byte Tid_txt = 0; public String Tid_name() {return "xdat";} - public byte Data_storage_format() {return data_storage_format;} public void Data_storage_format_(byte v) {data_storage_format = v;} private byte data_storage_format = gplx.ios.Io_stream_.Tid_raw; + public byte Data_storage_format() {return data_storage_format;} public void Data_storage_format_(byte v) {data_storage_format = v;} private byte data_storage_format = gplx.core.ios.Io_stream_.Tid_raw; public Xodb_load_mgr Load_mgr() {return load_mgr;} private Xodb_load_mgr_txt load_mgr; public Xodb_save_mgr Save_mgr() {return save_mgr;} private Xodb_save_mgr_txt save_mgr; public DateAdp Dump_date_query() { diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java index 59d3d46fb..614486966 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.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.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java index 71f2b8141..6a6528a5c 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_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.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.dbs.qrys.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.*; public class Xodb_save_mgr_sql implements Xodb_save_mgr { private final Xodb_mgr_sql db_mgr; 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 5ad630f92..71c76c29c 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 @@ -43,7 +43,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { int ns_id = ttl.Ns().Id(); Xotdb_page_itm_.Txt_page_save(tmp, page_id, DateAdp_.Now(), ttl_bry, text, true); Io_url page_rdr_url = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ns_id, fil_idx); - byte[] page_rdr_bry = gplx.ios.Io_stream_rdr_.Load_all(page_rdr_url); + byte[] page_rdr_bry = gplx.core.ios.Io_stream_rdr_.Load_all(page_rdr_url); Xob_xdat_file page_rdr = new Xob_xdat_file(); if (Bry_.Len_gt_0(page_rdr_bry)) page_rdr.Parse(page_rdr_bry, page_rdr_bry.length, page_rdr_url); int row_idx = page_rdr.Count(); @@ -114,8 +114,8 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { class Bry_comparer_fld_last implements gplx.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_.NotFound) lhs_bgn = -1; - int rhs_bgn = Bry_find_.Find_bwd(rhs, Byte_ascii.Pipe); if (rhs_bgn == Bry_.NotFound) rhs_bgn = -1; + int lhs_bgn = Bry_find_.Find_bwd(lhs, Byte_ascii.Pipe); if (lhs_bgn == Bry_find_.Not_found) lhs_bgn = -1; + int rhs_bgn = Bry_find_.Find_bwd(rhs, Byte_ascii.Pipe); if (rhs_bgn == Bry_find_.Not_found) rhs_bgn = -1; return Bry_.Compare(lhs, lhs_bgn + 1, lhs.length, rhs, rhs_bgn + 1, rhs.length); } public static final Bry_comparer_fld_last Instance = new Bry_comparer_fld_last(); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java index eb3be29ac..5d4124095 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java @@ -28,13 +28,13 @@ public class Xow_domain_itm_ { */ int raw_len = raw.length; int dot_0 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, 0, raw_len); - if (dot_0 == Bry_.NotFound) { // 0 dots; check for "home" + if (dot_0 == Bry_find_.Not_found) { // 0 dots; check for "home" return Bry_.Eq(raw, Xow_domain_tid_.Bry__home) ? Xow_domain_uid_.To_domain(Xow_domain_uid_.Tid_xowa) : new_other(raw); } int dot_1 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, dot_0 + 1, raw_len); - if (dot_1 == Bry_.NotFound) { // 1 dot; check for "wikimediafoundation.org" + if (dot_1 == Bry_find_.Not_found) { // 1 dot; check for "wikimediafoundation.org" return Bry_.Match(raw, 0, dot_0, Xow_domain_tid_.Bry__wmforg) ? Xow_domain_itm.new_(raw, Xow_domain_tid_.Int__wmfblog, Xol_lang_stub_.Key__unknown) : new_other(raw); diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java index 1b38d1678..701c7bf1d 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java @@ -46,7 +46,7 @@ public class Xow_wiki_props implements GfoInvkAble { public Xow_wiki_props Siteinfo_misc_(byte[] v) { siteinfo_misc = v; int pipe_0 = Bry_find_.Find_fwd(v, Byte_ascii.Pipe); - if (pipe_0 != Bry_.NotFound) + if (pipe_0 != Bry_find_.Not_found) site_name = Bry_.Mid(siteinfo_misc, 0, pipe_0); return this; } private byte[] siteinfo_misc = Bry_.Empty; 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 01d0a932f..89fabcbd6 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java @@ -85,5 +85,5 @@ public class Xow_ns_ { public static final String Ns_name_wikipedia = "Wikipedia"; public static final byte[] Ns_name_main_bry = Bry_.new_a7(Key_main); public static final byte[] Ns_prefix_main = Bry_.new_a7("Main:"); - private static Xow_ns Canonical_new_(int id, String name) {return new Xow_ns(id, Xow_ns_case_.Id_1st, Bry_.new_a7(name), false);} // NOTE: for id/name reference only; case_match and alias does not matter; + private static Xow_ns Canonical_new_(int id, String name) {return new Xow_ns(id, Xow_ns_case_.Tid__1st, Bry_.new_a7(name), false);} // NOTE: for id/name reference only; case_match and alias does not matter; } diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java index c3342a702..d168df8d0 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java @@ -17,19 +17,19 @@ along with this program. If not, see . */ package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xow_ns_case_ { - public static final byte Id_all = 0, Id_1st = 1; - public static final String Key_all = "case-sensitive", Key_1st = "first-letter"; - public static final byte[] Bry__all = Bry_.new_a7(Key_all), Bry__1st = Bry_.new_a7(Key_1st); - public static byte parse(String s) { - if (String_.Eq(s, Key_1st)) return Id_1st; - else if (String_.Eq(s, Key_all)) return Id_all; + public static final byte Tid__all = 0, Tid__1st = 1; + public static final String Key__all = "case-sensitive", Key__1st = "first-letter"; + public static final byte[] Bry__all = Bry_.new_a7(Key__all), Bry__1st = Bry_.new_a7(Key__1st); + public static byte To_tid(String s) { + if (String_.Eq(s, Key__1st)) return Tid__1st; + else if (String_.Eq(s, Key__all)) return Tid__all; else throw Err_.new_unhandled(s); } - public static String To_str(byte uid) { - switch (uid) { - case Id_all: return Key_all; - case Id_1st: return Key_1st; - default: throw Err_.new_unhandled(uid); + public static String To_str(byte tid) { + switch (tid) { + case Tid__all: return Key__all; + case Tid__1st: return Key__1st; + default: throw Err_.new_unhandled(tid); } } } 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 39e60f8b8..6fa2fbb7b 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 @@ -71,15 +71,15 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { } public Object Names_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get ns for a name with a ":"; EX: "Template:A" should return "Template" ns int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end); - if (colon_pos == Bry_.NotFound) return null; // name does not have ":"; return; + if (colon_pos == Bry_find_.Not_found) return null; // name does not have ":"; return; Object rv = name_hash.Get_by_mid(src, bgn, colon_pos); return rv == null ? null : ((Xow_ns_mgr_name_itm)rv).Ns(); } public int Tmpls_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get length of template name with a ":"; EX: "Template:A" returns 10; PERF int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end); - if (colon_pos == Bry_.NotFound) return Bry_.NotFound; + if (colon_pos == Bry_find_.Not_found) return Bry_find_.Not_found; Object o = tmpl_hash.Get_by_mid(src, bgn, colon_pos + 1); // +1 to include colon_pos - return o == null ? Bry_.NotFound : ((byte[])o).length; + return o == null ? Bry_find_.Not_found : ((byte[])o).length; } public void Aliases_clear() {aliases.Clear();} public Xow_ns_mgr Aliases_add(int ns_id, String name) { @@ -122,7 +122,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { } private void Fix_project_talk(Xow_ns ns) { byte[] ns_name = ns.Name_bry(); - if (Bry_find_.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_.NotFound) return; // no $1 found; exit + if (Bry_find_.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_find_.Not_found) return; // no $1 found; exit Xow_ns project_ns = ords[ns.Ord_subj_id()]; if (project_ns == null) return; // should warn or throw error; for now just exit ns.Name_bry_(Bry_.Replace(ns_name, Project_talk_fmt_arg, project_ns.Name_bry())); @@ -130,7 +130,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { private void Rebuild_hashes__add(Hash_adp_bry hash, Xow_ns ns, byte[] key) { Xow_ns_mgr_name_itm ns_itm = new Xow_ns_mgr_name_itm(key, ns); hash.Add_if_dupe_use_nth(key, ns_itm); - if (Bry_find_.Find_fwd(key, Byte_ascii.Underline) != Bry_.NotFound) // ns has _; add another entry for space; EX: Help_talk -> Help talk + if (Bry_find_.Find_fwd(key, Byte_ascii.Underline) != Bry_find_.Not_found) // ns has _; add another entry for space; EX: Help_talk -> Help talk hash.Add_if_dupe_use_nth(Bry_.Replace(key, Byte_ascii.Underline, Byte_ascii.Space), ns_itm); } public Xow_ns_mgr Add_defaults() { // NOTE: needs to happen after File ns is added; i.e.: cannot be put in Xow_ns_mgr() {} ctor @@ -140,7 +140,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { Aliases_add(gplx.xowa.xtns.scribunto.Scrib_xtn_mgr.Ns_id_module, "Module"); // always add "Module" ns; de.wikipedia.org has "Modul" defined in siteinfo.xml, but also uses Module return this; } - public Xow_ns_mgr Add_new(int nsId, String name) {return Add_new(nsId, Bry_.new_u8(name), Xow_ns_case_.Id_1st, false);} // for tst_ constructor + public Xow_ns_mgr Add_new(int nsId, String name) {return Add_new(nsId, Bry_.new_u8(name), Xow_ns_case_.Tid__1st, false);} // for tst_ constructor public Xow_ns_mgr Add_new(int ns_id, byte[] name, byte caseMatchId, boolean alias) { Bry_.Replace_all_direct(name, Byte_ascii.Space, Byte_ascii.Underline); // standardize on _; EX: User talk -> User_talk; DATE:2013-04-21 Xow_ns ns = new Xow_ns(ns_id, caseMatchId, name, alias); @@ -155,7 +155,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { case Xow_ns_.Id_category: ns_category = ns; if (category_trie == null) - category_trie = Btrie_slim_mgr.new_(ns.Case_match() == Xow_ns_case_.Id_all); + category_trie = Btrie_slim_mgr.new_(ns.Case_match() == Xow_ns_case_.Tid__all); category_trie.Add_obj(ns.Name_bry(), this); break; } @@ -223,7 +223,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { } } private void Ords_sort_add(int ns_id) { - this.Add_new(ns_id, Bry_.new_by_int(ns_id), Xow_ns_case_.Id_1st, false); // NOTE: name and case_match are mostly useless defaults; note that in theory this proc should not be called (all siteInfos should be well-formed) but just in case, create items now so that Get_by_ord() does not fail + this.Add_new(ns_id, Int_.To_bry(ns_id), Xow_ns_case_.Tid__1st, false); // NOTE: name and case_match are mostly useless defaults; note that in theory this proc should not be called (all siteInfos should be well-formed) but just in case, create items now so that Get_by_ord() does not fail } public byte[] Bld_ttl_w_ns(Bry_bfr bfr, boolean text_form, boolean literalize, int ns_id, byte[] ttl) { if (ns_id == Xow_ns_.Id_main) return ttl; diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java index 83f0290f2..89988a26e 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java @@ -54,7 +54,7 @@ class Xow_ns_fxt { public Xow_ns_fxt Expd_id_subj_(boolean v) {expd_id_subj = v; return this;} private boolean expd_id_subj; public Xow_ns_fxt Expd_id_talk_(boolean v) {expd_id_talk = v; return this;} private boolean expd_id_talk; public void Test(int nsId) { - Xow_ns actl = new Xow_ns(nsId, Xow_ns_case_.Id_1st, Bry_.Empty, false); + Xow_ns actl = new Xow_ns(nsId, Xow_ns_case_.Tid__1st, Bry_.Empty, false); Tfds.Eq(expd_id_subjId, actl.Id_subj_id()); Tfds.Eq(expd_id_talkId, actl.Id_talk_id()); Tfds.Eq(expd_id_subj, actl.Id_subj()); diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java similarity index 80% rename from 400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java index 9d99b8066..f421dabca 100644 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java @@ -15,15 +15,15 @@ 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.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; -import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.files.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xopg_hdump_data { public byte[] Body() {return body;} public void Body_(byte[] v) {body = v;} private byte[] body; public Xopg_redlink_idx_list Redlink_mgr() {return redlink_mgr;} private final Xopg_redlink_idx_list redlink_mgr = new Xopg_redlink_idx_list(); public List_adp Imgs() {return imgs;} private final List_adp imgs = List_adp_.new_(); - public void Imgs_add(Xohd_data_itm itm) {imgs.Add(itm);} - public void Imgs_add_img(Xohd_data_itm__base img, Xof_file_itm xfer, int tid) { + public void Imgs_add(Xohd_img_itm itm) {imgs.Add(itm);} + public void Imgs_add_img(Xohd_img_itm__base img, Xof_file_itm xfer, int tid) { img.Data_init_base ( xfer.Lnki_ttl(), xfer.Lnki_type(), xfer.Lnki_upright(), xfer.Lnki_w(), xfer.Lnki_h(), xfer.Lnki_time(), xfer.Lnki_page() , xfer.Orig_repo_id(), xfer.Orig_ext().Id(), xfer.File_is_orig(), xfer.File_w() diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java index 41c561922..de9590a37 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java @@ -39,6 +39,7 @@ public class Xopg_html_data { public Bry_bfr Portal_div_xtn() {return portal_div_xtn;} private Bry_bfr portal_div_xtn = Bry_bfr.reset_(255); public byte[] Edit_preview_w_dbg() {return Bry_.Add(xtn_scribunto_dbg, edit_preview);} public void Edit_preview_(byte[] v) {edit_preview = v;} private byte[] edit_preview = Bry_.Empty; public int Lnke_autonumber_next() {return lnke_autonumber++;} private int lnke_autonumber = 1; + public int Sect_uid() {return sect_uid;} private int sect_uid = -1; public int Sect_uid_next() {return ++sect_uid;} public boolean Lang_convert_content() {return lang_convert_content;} public void Lang_convert_content_(boolean v) {lang_convert_content = v;} private boolean lang_convert_content = true; public boolean Lang_convert_title() {return lang_convert_title;} public void Lang_convert_title_(boolean v) {lang_convert_title = v;} private boolean lang_convert_title = true; public Xopg_xtn_skin_mgr Xtn_skin_mgr() {return xtn_skin_mgr;} private Xopg_xtn_skin_mgr xtn_skin_mgr = new Xopg_xtn_skin_mgr(); @@ -71,6 +72,7 @@ public class Xopg_html_data { display_ttl = content_sub = display_ttl_vnt = null; lang_convert_content = lang_convert_title = true; lnke_autonumber = 1; + sect_uid = -1; xtn_skin_mgr.Clear(); xtn_gallery_packed_exists = false; xtn_imap_next_id = 0; xtn_gallery_next_id = -1; diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_module_mgr.java similarity index 63% rename from 400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_module_mgr.java index a1fd60da5..814c08b16 100644 --- a/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_module_mgr.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.xowa.htmls.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xopg_module_mgr { public boolean Math_exists() {return math_exists;} public void Math_exists_(boolean v) {math_exists = v;} private boolean math_exists; public boolean Imap_exists() {return imap_exists;} public void Imap_exists_(boolean v) {imap_exists = v;} private boolean imap_exists; @@ -27,7 +27,28 @@ public class Xopg_module_mgr { this.gallery_packed_exists = packed; this.hiero_exists = hiero; } + public int Flag() {return Calc_flag(math_exists, imap_exists, gallery_packed_exists, hiero_exists);} + public void Flag_(int v) { + this.math_exists = Bitmask_.Has_int(v, Tid_math); + this.imap_exists = Bitmask_.Has_int(v, Tid_imap); + this.gallery_packed_exists = Bitmask_.Has_int(v, Tid_packed); + this.hiero_exists = Bitmask_.Has_int(v, Tid_hiero); + } public void Clear() { math_exists = imap_exists = gallery_packed_exists = hiero_exists = false; } + private static int Calc_flag(boolean math, boolean imap, boolean packed, boolean hiero) { + int rv = 0; + if (math) rv = Bitmask_.Add_int(rv, Tid_math); + if (imap) rv = Bitmask_.Add_int(rv, Tid_imap); + if (packed) rv = Bitmask_.Add_int(rv, Tid_packed); + if (hiero) rv = Bitmask_.Add_int(rv, Tid_hiero); + return rv; + } + private static final int // SERIALIZED; only supports 8 different types + Tid_math = 1 + , Tid_imap = 2 + , Tid_packed = 4 + , Tid_hiero = 8 + ; } diff --git a/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java b/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java index 1f1d1ecc5..43b0f0b21 100644 --- a/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.specials; import gplx.*; import gplx.xowa.*; import gplx import gplx.core.net.*; import gplx.xowa.langs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.file_browsers.*; -import gplx.xowa.guis.*; +import gplx.xowa.htmls.*; public class Xosp_special_mgr { private final Xowv_wiki wiki; private final Hash_adp_bry hash; @@ -28,15 +28,15 @@ public class Xosp_special_mgr { // hash.Add_str_obj(Xows_special_meta_.Key__statistics , page_statistics); this.hash = Hash_adp_bry.cs(); } - public void Get_by_ttl(Xog_page rv, Gfo_url url, Xoa_ttl ttl) { + public void Get_by_ttl(Xoh_page rv, Gfo_url url, Xoa_ttl ttl) { Xosp_fbrow_rslt rslt = Xosp_fbrow_special.Gen(url.Qargs(), wiki.Appv().Wiki_mgr()); - rv.Init(wiki, -1, null, ttl); - rv.Page_body_(rslt.Html_body()); + rv.Init(wiki, null, ttl, -1); + rv.Body_(rslt.Html_body()); rv.Html_head_xtn_(rslt.Html_head()); } public void Get_by_url(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { int slash_pos = Bry_find_.Find_fwd(ttl.Page_txt_wo_qargs(), Xoa_ttl.Subpage_spr); // check for slash - byte[] special_name = slash_pos == Bry_.NotFound + byte[] special_name = slash_pos == Bry_find_.Not_found ? ttl.Base_txt_wo_qarg() // no slash found; use base_txt; ignore qry args and just get page_names; EX: Search/Earth?fulltext=y; Allpages?from=Earth... : Bry_.Mid(ttl.Page_txt_wo_qargs(), 0, slash_pos); // slash found; use root page; EX: Special:ItemByTitle/enwiki/Earth Object o = hash.Get_by_bry(special_name); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java index 9ae0baea5..3469a3a5e 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.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; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xotdb_dir_info { public Xotdb_dir_info(boolean ns_root, byte id, String name) {this.ns_root = ns_root; this.id = id; this.name = name;} public byte Id() {return id;} private byte id; @@ -30,25 +30,25 @@ public class Xotdb_dir_info { ext_bry = Wtr_ext(v); ext_str = String_.new_a7(ext_bry); return this; - } byte ext_tid = gplx.ios.Io_stream_.Tid_raw; + } byte ext_tid = gplx.core.ios.Io_stream_.Tid_raw; public static final String Wtr_xdat_str = ".xdat", Wtr_zip_str = ".zip", Wtr_gz_str = ".gz", Wtr_bz2_str = ".bz2"; public static final byte[] Wtr_xdat_bry = Bry_.new_a7(Wtr_xdat_str), Wtr_zip_bry = Bry_.new_a7(Wtr_zip_str), Wtr_gz_bry = Bry_.new_a7(Wtr_gz_str), Wtr_bz2_bry = Bry_.new_a7(Wtr_bz2_str); public static String Wtr_dir(byte v) { switch (v) { - case gplx.ios.Io_stream_.Tid_raw : return ""; - case gplx.ios.Io_stream_.Tid_zip : return "_zip"; - case gplx.ios.Io_stream_.Tid_gzip : return "_gz"; - case gplx.ios.Io_stream_.Tid_bzip2 : return "_bz2"; + case gplx.core.ios.Io_stream_.Tid_raw : return ""; + case gplx.core.ios.Io_stream_.Tid_zip : return "_zip"; + case gplx.core.ios.Io_stream_.Tid_gzip : return "_gz"; + case gplx.core.ios.Io_stream_.Tid_bzip2 : return "_bz2"; default : throw Err_.new_unhandled(v); } } public static byte[] Wtr_ext(byte v) { switch (v) { - case gplx.ios.Io_stream_.Tid_raw : return Wtr_xdat_bry; - case gplx.ios.Io_stream_.Tid_zip : return Wtr_zip_bry; - case gplx.ios.Io_stream_.Tid_gzip : return Wtr_gz_bry; - case gplx.ios.Io_stream_.Tid_bzip2 : return Wtr_bz2_bry; + case gplx.core.ios.Io_stream_.Tid_raw : return Wtr_xdat_bry; + case gplx.core.ios.Io_stream_.Tid_zip : return Wtr_zip_bry; + case gplx.core.ios.Io_stream_.Tid_gzip : return Wtr_gz_bry; + case gplx.core.ios.Io_stream_.Tid_bzip2 : return Wtr_bz2_bry; default : throw Err_.new_unhandled(v); } } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java index 05b081f5e..f2fe13f71 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java @@ -56,14 +56,14 @@ public class Xotdb_fsys_mgr { private static void Scan_dirs_zip(Xotdb_fsys_mgr fsys_mgr, byte id) { Io_url[] dirs = Io_mgr.Instance.QueryDir_args(fsys_mgr.Ns_dir().GenSubDir_nest("000")).FilPath_("*page*").DirOnly_().Recur_(false).ExecAsUrlAry(); int len = dirs.length; - byte tid = gplx.ios.Io_stream_.Tid_raw; // needed for Xoa_xowa_exec_tst + byte tid = gplx.core.ios.Io_stream_.Tid_raw; // needed for Xoa_xowa_exec_tst for (int i = 0; i < len; i++) { Io_url dir = dirs[i]; String dir_name = dir.NameOnly(); - if (String_.Eq(dir_name, "page")) {tid = gplx.ios.Io_stream_.Tid_raw; break;} - else if (String_.Eq(dir_name, "page_zip")) tid = gplx.ios.Io_stream_.Tid_zip; - else if (String_.Eq(dir_name, "page_gz")) tid = gplx.ios.Io_stream_.Tid_gzip; - else if (String_.Eq(dir_name, "page_bz2")) tid = gplx.ios.Io_stream_.Tid_bzip2; + if (String_.Eq(dir_name, "page")) {tid = gplx.core.ios.Io_stream_.Tid_raw; break;} + else if (String_.Eq(dir_name, "page_zip")) tid = gplx.core.ios.Io_stream_.Tid_zip; + else if (String_.Eq(dir_name, "page_gz")) tid = gplx.core.ios.Io_stream_.Tid_gzip; + else if (String_.Eq(dir_name, "page_bz2")) tid = gplx.core.ios.Io_stream_.Tid_bzip2; } fsys_mgr.Tdb_dir_regy()[id].Ext_tid_(tid); } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java index 632200744..cc154ad0a 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java @@ -31,7 +31,7 @@ class Xow_fsys_mgr_fxt { wiki = Xoa_app_fxt.wiki_tst_(app); } Xoae_app app; Xowe_wiki wiki; - public Xow_fsys_mgr_fxt Zip_(byte tid, boolean v) {wiki.Tdb_fsys_mgr().Tdb_dir_regy()[tid].Ext_tid_(v ? gplx.ios.Io_stream_.Tid_zip : gplx.ios.Io_stream_.Tid_raw); return this;} + public Xow_fsys_mgr_fxt Zip_(byte tid, boolean v) {wiki.Tdb_fsys_mgr().Tdb_dir_regy()[tid].Ext_tid_(v ? gplx.core.ios.Io_stream_.Tid_zip : gplx.core.ios.Io_stream_.Tid_raw); return this;} public void Url_ns_fil(byte tid, int ns_id, int fil_idx, String expd) { Tfds.Eq(expd, wiki.Tdb_fsys_mgr().Url_ns_fil(tid, ns_id, fil_idx).Raw()); } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java index 8cf9329c4..08be05da2 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_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.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.brys.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.brys.*; import gplx.core.encoders.*; import gplx.xowa.wikis.data.tbls.*; public class Xotdb_page_itm_ { static final int Txt_len_id = 5, Txt_len_fil_idx = 5, Txt_len_row_idx = 5, Txt_len_type = 1, Txt_len_text_len = 5; public static final int Txt_ttl_pos = Txt_len_id + Txt_len_fil_idx + Txt_len_row_idx + Txt_len_type + Txt_len_text_len + 5; @@ -30,11 +30,11 @@ public class Xotdb_page_itm_ { private static void Txt_ttl_load(Xowd_page_itm page, byte[] bry, int bgn, int end) { try { page.Init_by_tdb - ( Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4) - , Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10) - , Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16) + ( Base85_.To_int_by_bry (bry, bgn + 0, bgn + 4) + , Base85_.To_int_by_bry (bry, bgn + 6, bgn + 10) + , Base85_.To_int_by_bry (bry, bgn + 12, bgn + 16) , bry[18] == Byte_ascii.Num_1 - , Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24) + , Base85_.To_int_by_bry (bry, bgn + 20, bgn + 24) , page.Ns_id() , Bry_.Mid (bry, bgn + 26, end) ); @@ -55,12 +55,12 @@ public class Xotdb_page_itm_ { try { page.Clear(); page.Init_by_tdb - ( Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4) - , Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10) - , Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16) + ( Base85_.To_int_by_bry (bry, bgn + 0, bgn + 4) + , Base85_.To_int_by_bry (bry, bgn + 6, bgn + 10) + , Base85_.To_int_by_bry (bry, bgn + 12, bgn + 16) , bry[18] == Byte_ascii.Num_1 - , Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24) - , Base85_utl.XtoIntByAry (bry, bgn + 26, bgn + 30) + , Base85_.To_int_by_bry (bry, bgn + 20, bgn + 24) + , Base85_.To_int_by_bry (bry, bgn + 26, bgn + 30) , Bry_.Mid (bry, bgn + 32, end) ); } catch (Exception e) {throw Err_.new_exc(e, "xo", "parse_by_id failed", "id", String_.new_u8(bry, bgn, end));} @@ -76,8 +76,8 @@ public class Xotdb_page_itm_ { } public static void Txt_page_save(Bry_bfr bfr, int id, DateAdp modified_on, byte[] title, byte[] text, boolean add_nl) { int ts = Bit_.Xto_int_date_short(modified_on.XtoSegAry()); - bfr .Add_base85(id , Base85_utl.Len_int) .Add_byte(Txt_page_dlm) // needed for mass template load - .Add_base85(ts , Base85_utl.Len_int) .Add_byte(Txt_page_dlm) + bfr .Add_base85(id , Base85_.Len_int) .Add_byte(Txt_page_dlm) // needed for mass template load + .Add_base85(ts , Base85_.Len_int) .Add_byte(Txt_page_dlm) .Add(title) .Add_byte(Txt_page_dlm) // needed for rebuilding ttl files .Add(text) .Add_byte(Txt_page_dlm); if (add_nl) diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java index d7479d963..12f9610c8 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_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.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.brys.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.encoders.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.bldrs.*; public class Xotdb_page_raw_parser { @@ -43,10 +43,10 @@ public class Xotdb_page_raw_parser { public boolean Read(Xowd_page_itm page) { boolean read = false; read = rdr.Read_next(); if (!read) return false; - int id = Base85_utl.XtoIntByAry(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 2); + int id = Base85_.To_int_by_bry(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 2); page.Id_(id); read = rdr.Read_next(); if (!read) throw Err_.new_wo_type("could not read timestamp"); - int timestamp = Base85_utl.XtoIntByAry(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 1); + int timestamp = Base85_.To_int_by_bry(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 1); page.Modified_on_(Bit_.Xto_date_short(timestamp)); read = rdr.Read_next(); if (!read) throw Err_.new_wo_type("could not read ttl"); byte[] ttl = Bry_.Mid(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 1); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.java b/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.java index da4c5a6d5..e8a762bec 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.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.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Io_line_rdr_key_gen_all implements Io_line_rdr_key_gen { public void Gen(Io_line_rdr bfr) { bfr.Key_pos_bgn_(bfr.Itm_pos_bgn()).Key_pos_end_(bfr.Itm_pos_end()); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java index 96ac24891..28adcdd03 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_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.ios.*; +import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.nss.*; @@ -37,7 +37,7 @@ public class Xob_hive_mgr { } Xob_xdat_file xdat_load_(Xob_xdat_file xdat, byte dir_tid, Xow_ns ns, int fil_idx) { Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] xdat_bry = gplx.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); return xdat; } @@ -115,7 +115,7 @@ public class Xob_hive_mgr { byte dir_tid = Xotdb_dir_info_.Tid_ttl; int xdat_idx = Regy__find_file_ns(key, dir_tid, ns.Num_str()); Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), xdat_idx); - byte[] xdat_bry = gplx.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); xdat.Find(xdat_itm, key, Xotdb_page_itm_.Txt_ttl_pos, Byte_ascii.Tab, false); Find_nearby_add_fwd(list, dir_tid, ns, include_redirects, count, xdat_idx, xdat_itm.Itm_idx()); @@ -132,7 +132,7 @@ public class Xob_hive_mgr { // while (loop) { // if (fil_idx == -1) break; // Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); -// byte[] xdat_bry = gplx.ios.Io_stream_rdr_.Load_all(xdat_url); +// byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); // xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); // int row_idx = first && row_bgn != -1 ? row_bgn : xdat.Count() - 1; // first = false; @@ -155,7 +155,7 @@ public class Xob_hive_mgr { while (loop) { if (fil_idx == regy_len) break; Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] xdat_bry = gplx.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); int row_idx = first ? row_bgn : 0; int rows_len = xdat.Count(); @@ -186,7 +186,7 @@ public class Xob_hive_mgr { int Regy__find_file_by_url(byte[] key, Io_url regy_url) {regy.Init(regy_url); return regy.Files_find(key);} private Xowd_regy_mgr regy = new Xowd_regy_mgr(); private void Xdat__create_row(byte dir_tid, byte[] key, byte[] row, int xdat_idx) { Io_url xdat_url = fsys_mgr.Url_site_fil(dir_tid, xdat_idx); - byte[] xdat_bry = gplx.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); Xob_xdat_file xdat_fil = new Xob_xdat_file(); if (xdat_bry.length > 0) // if file is not empty, load it and parse it xdat_fil.Parse(xdat_bry, xdat_bry.length, xdat_url); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java index dd7ef5763..b16cf017f 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java @@ -16,9 +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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.xowa.wikis.nss.*; -import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.wikis.tdbs.xdats.*; +import gplx.core.encoders.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xow_hive_mgr_fxt { public void Clear() { if (hive_mgr == null) { @@ -80,14 +79,14 @@ public class Xow_hive_mgr_fxt { public Xow_hive_mgr_fxt Create_id(int id, int fil_idx, int row_idx, boolean type_redirect, int itm_len, int ns_id, String ttl) {Create_id(app, hive_mgr, id, fil_idx, row_idx, type_redirect, itm_len, ns_id, ttl); return this;} public static void Create_id(Xoae_app app, Xob_hive_mgr hive_mgr, int id, int fil_idx, int row_idx, boolean type_redirect, int itm_len, int ns_id, String ttl) { Bry_bfr bfr = app.Utl__bfr_mkr().Get_b512(); - byte[] key_bry = Base85_utl.XtoStrByAry(id, 5); + byte[] key_bry = Base85_.To_bry(id, 5); bfr .Add(key_bry) .Add_byte_pipe() .Add_base85_len_5(fil_idx) .Add_byte_pipe() .Add_base85_len_5(row_idx) .Add_byte_pipe() .Add_byte(type_redirect ? Byte_ascii.Num_1 : Byte_ascii.Num_0).Add_byte_pipe() .Add_base85_len_5(itm_len) .Add_byte_pipe() .Add_base85_len_5(ns_id) .Add_byte_pipe() - .Add_str(ttl) .Add_byte_nl(); + .Add_str_u8(ttl) .Add_byte_nl(); byte[] row = bfr.To_bry_and_clear(); bfr.Mkr_rls(); hive_mgr.Create(Xotdb_dir_info_.Tid_id, key_bry, row); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java index 90f852b4b..e40380364 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xos_url_gen implements Io_url_gen { public Xos_url_gen(Io_url root) {this.root = root;} Io_url root; int idx = 0; public byte[] Ext() {return ext;} public Xos_url_gen Ext_(byte[] v) {ext = v; return this;} private byte[] ext = Bry_.new_a7(".csv"); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java index ced4f58af..a688b1fe7 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Xos_url_gen_tst { @Test public void Url_gen() { tst_url_gen("mem/root/", 0, "mem/root/00/00/00/00/0000000000.csv"); 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 022c8abe9..10fe2e4e6 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 @@ -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.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.core.encoders.*; public class Xob_xdat_file { public byte[] Src() {return src;} private byte[] src; public int Src_len() {return src_len;} public Xob_xdat_file Src_len_(int v) {src_len = v; return this;} private int src_len; // NOTE: src_len can be different than src.length (occurs when reusing brys) @@ -154,7 +154,7 @@ public class Xob_xdat_file { slot_bgn = itm_count * Len_idx_itm; if (slot_bgn >= src_len) break; if (src[slot_bgn] == Byte_ascii.Nl) break; - int tmp_val = Base85_utl.XtoIntByAry(src, slot_bgn, slot_bgn + Offset_base85); + int tmp_val = Base85_.To_int_by_bry(src, slot_bgn, slot_bgn + Offset_base85); slot_new = slot_old + tmp_val; int new_idx = itm_count + 1; if (tmp_len < new_idx) { 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 ef1cbed9d..25e35aaad 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 @@ -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.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.ios.*; import gplx.core.encoders.*; import gplx.xowa.wikis.tdbs.*; public class Xob_xdat_file_wtr { public static Xob_xdat_file_wtr new_file_(int fil_max, Io_url root_dir) {return new Xob_xdat_file_wtr(fil_max, root_dir, Io_stream_.Tid_raw);} public static Xob_xdat_file_wtr new_by_tid_(int fil_max, Io_url root_dir, byte dir_tid, byte tid) {return new Xob_xdat_file_wtr(fil_max, root_dir.GenSubDir(Xotdb_dir_info_.Tid_name(dir_tid) + Xotdb_dir_info.Wtr_dir(tid)), tid);} @@ -69,7 +69,7 @@ public class Xob_xdat_file_wtr { for (int i = 0; i < idx_pos; i++) { int idx_bry_pos = i * Len_idx_itm; int cur_pos = idx[i]; - Base85_utl.XtoStrByAry(cur_pos - prv_pos, idx_bry, idx_bry_pos, Len_base85); + Base85_.Set_bry(cur_pos - prv_pos, idx_bry, idx_bry_pos, Len_base85); idx_bry[idx_bry_pos + Len_base85] = Dlm_fld; prv_pos = cur_pos; } @@ -98,7 +98,7 @@ public class Xob_xdat_file_wtr { // for (int i = 0; i < idx_pos; i++) { // int idx_bry_pos = i * Len_idx_itm; // int cur_pos = idx[i]; -// Base85_utl.XtoStrByAry(cur_pos - prv_pos, idx_bry, idx_bry_pos, Len_base85); +// Base85_.Set_bry(cur_pos - prv_pos, idx_bry, idx_bry_pos, Len_base85); // idx_bry[idx_bry_pos + Len_base85] = Dlm_idx; // prv_pos = cur_pos; // } diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xop_ttl_log.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xop_ttl_log.java index ac96ff464..3e6860baf 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xop_ttl_log.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xop_ttl_log.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.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.core.log_msgs.*; public class Xop_ttl_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "ttl"); public static final Gfo_msg_itm diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java index b54df4eeb..30be5f440 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_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.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.core.log_msgs.*; class Xow_ttl_fxt { private Xop_fxt fxt = new Xop_fxt(); public Xow_ttl_fxt Init_ttl(String raw) {test_raw = raw; return this;} private String test_raw = ""; diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java index e5c7b1aa3..09d318c9e 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java @@ -19,6 +19,7 @@ package gplx.xowa.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.xowa.wikis.nss.*; public interface Xow_ttl_parser { Xoa_ttl Ttl_parse(byte[] ttl); + Xoa_ttl Ttl_parse(byte[] src, int src_bgn, int src_end); Xoa_ttl Ttl_parse(int ns_id, byte[] ttl); Xow_ns_mgr Ns_mgr(); } diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java index fdab4dd4c..33f4b9651 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_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.xtns; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.bldrs.*; import gplx.xowa.htmls.*; +import gplx.xowa.langs.bldrs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public abstract class Xox_mgr_base implements Xox_mgr { public Xox_mgr_base() { diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java b/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java index 3e82f75a2..6674788fa 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_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; import gplx.*; import gplx.xowa.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public interface Xox_xnde { void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde); diff --git a/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java b/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java index 8a727ab32..d19e817cc 100644 --- a/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_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.categoryList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xtn_categorylist_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} diff --git a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java index b9d07a4c7..a729e0c4b 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.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.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Ref_html_wtr { public Ref_html_wtr(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java b/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java index 058457726..9b5780d4f 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Name() {return name;} public Ref_nde Name_(byte[] v) {name = v; return this;} private byte[] name = Bry_.Empty; diff --git a/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java b/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java index 896509725..4ebe18313 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class References_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Group() {return group;} public References_nde Group_(byte[] v) {group = v; return this;} private byte[] group = Bry_.Empty; diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java index d0399edf8..b9458f137 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java @@ -67,7 +67,7 @@ class Dpl_itm { if (key_id == Dpl_itm_keys.Key_null) { // unknown key; warn and set pos to end of line; EX: "unknown="; Parse_missing_key(usr_dlg, page_ttl, src, fld_bgn, fld_end); fld_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Nl, pos); - if (fld_bgn == Bry_.NotFound) loop = false; + if (fld_bgn == Bry_find_.Not_found) loop = false; } else { // known key; set pos to val_bgn fld_bgn = pos + Int_.Const_dlm_len; 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 b1b2138dc..698733514 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Dpl_xnde implements Xox_xnde { 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 e14cf9689..b469e299a 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 @@ -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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.hdumps.abrvs.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.makes.*; public interface Gallery_box_w_fmtr_arg extends Bry_fmtr_arg { Gallery_box_w_fmtr_arg Init(int uid, int width); } @@ -34,7 +34,7 @@ class Gallery_box_w_fmtr_arg__hdump 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;} public void Fmt__do(Bry_bfr bfr) { - bfr.Add(Xohd_abrv_.Key_gallery_box_w); + bfr.Add(Xoh_make_trie_.Bry__gallery_box_w); bfr.Add_int_variable(uid); bfr.Add_byte_apos(); } @@ -56,7 +56,7 @@ class Gallery_img_pad_fmtr_arg__hdump 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;} public void Fmt__do(Bry_bfr bfr) { - bfr.Add(Xohd_abrv_.Key_gallery_img_pad); + 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_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.java index cde39ac5f..af5b07c1c 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; public class Gallery_html_wtr { private final Xoh_arg_img_core img_core_fmtr_basic = new Xoh_arg_img_core__basic(), img_core_fmtr_hdump = new Xoh_arg_img_core__hdump(); @@ -87,12 +88,12 @@ public class Gallery_html_wtr { } byte[] lnki_ttl = lnki.Ttl().Page_txt(); Xoa_ttl lnki_link_ttl = itm_ttl; // default href to ttl - if ( itm.Link_bgn() != Bry_.NotFound // link is not -1; EX: "A.png" has no link specified + if ( itm.Link_bgn() != Bry_find_.Not_found // link is not -1; EX: "A.png" has no link specified && (itm.Link_end() - itm.Link_bgn()) > 0 // and link_end - link_bgn > 0; EX: "A.png|link="; DATE:2014-06-15 ) lnki_link_ttl = Xoa_ttl.parse(wiki, Bry_.Mid(src, itm.Link_bgn(), itm.Link_end())); byte[] lnki_href = app.Html__href_wtr().Build_to_bry(wiki, lnki_link_ttl); - byte[] lnki_alt = itm.Alt_bgn() == Bry_.NotFound ? lnki_ttl : Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, Bry_.Mid(src, itm.Alt_bgn(), itm.Alt_end())); + byte[] lnki_alt = itm.Alt_bgn() == Bry_find_.Not_found ? lnki_ttl : Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, Bry_.Mid(src, itm.Alt_bgn(), itm.Alt_end())); img_core_fmtr.Init(itm_elem_id, html_src, html_w, html_h); int itm_margin = Gallery_html_wtr_utl.Calc_vpad(mgr.Itm_h(), html_h); Gallery_html_wtr_.Itm_img_fmtr.Bld_bfr_many(itm_bfr @@ -105,7 +106,7 @@ public class Gallery_html_wtr { , lnki_alt ); if (hctx_is_hdump) - hdump_imgs.Imgs_add_img(new Xohd_data_itm__gallery_itm().Data_init_gallery(itm_div_w, itm_box_w, itm_margin), xfer_itm, Xohd_data_itm__gallery_itm.Tid_gallery); + hdump_imgs.Imgs_add_img(new Xohd_img_itm__gallery_itm().Data_init_gallery(itm_div_w, itm_box_w, itm_margin), xfer_itm, Xohd_img_itm__gallery_itm.Tid_gallery); } else { Gallery_html_wtr_.Itm_txt_fmtr.Bld_bfr_many(itm_bfr diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java index d46bd5dd1..e591ae148 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.*; +import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Gallery_itm implements Js_img_wkr { private Gallery_xnde xnde; private Xof_file_itm xfer_itm; private Xowe_wiki wiki; private Xop_ctx ctx; private byte[] src; private byte[] gallery_li_id_bry; private int gallery_itm_idx; @@ -35,7 +35,7 @@ public class Gallery_itm implements Js_img_wkr { public Xop_lnki_tkn Lnki_tkn() {return lnki_tkn;} public Gallery_itm Lnki_tkn_(Xop_lnki_tkn v) {lnki_tkn = v; return this;} private Xop_lnki_tkn lnki_tkn; public Gallery_itm Reset() { ttl = null; - ttl_bgn = ttl_end = alt_bgn = alt_end = link_bgn = link_end = page_bgn = page_end = Bry_.NotFound; + ttl_bgn = ttl_end = alt_bgn = alt_end = link_bgn = link_end = page_bgn = page_end = Bry_find_.Not_found; caption_bry = null; // NOTE: use null instead of ""; more legible tests caption_tkn = null; ext = null; 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 523017457..a022ddb1d 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 @@ -165,7 +165,7 @@ public class Gallery_itm_parser { int fld_end = cur_pos; if (cur_fld != Fld_caption) { int non_ws_pos = Bry_find_.Find_bwd_non_ws_or_not_found(src, cur_pos - 1, itm_bgn) + 1; // SEE:non_ws_pos - if (non_ws_pos != Bry_.NotFound + 1) + if (non_ws_pos != Bry_find_.Not_found + 1) fld_end = non_ws_pos; } switch (cur_fld) { diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java index 9bfd1e76c..d74214429 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java @@ -107,6 +107,6 @@ class Gallery_itm_parser_fxt { return rv; } private String Xto_str_ary_itm(byte[] src, int bgn, int end) { - return bgn == Bry_.NotFound && end == Bry_.NotFound ? null : String_.new_u8(src, bgn, end); + return bgn == Bry_find_.Not_found && end == Bry_find_.Not_found ? null : String_.new_u8(src, bgn, end); } } 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 3a441d6b9..e81b85740 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 @@ -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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.core.*; +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(); @@ -60,7 +60,7 @@ public abstract class Gallery_mgr_base { if (itms_per_row > 0) { int max_width = itms_per_row * (itm_default_w + this.Get_all_padding()); box_style = Fmt_and_add(tmp_bfr, box_style_max_width_fmtr, box_style, max_width); - page.Hdump_data().Imgs_add(new Xohd_data_itm__gallery_mgr(gallery_uid, max_width)); + page.Hdump_data().Imgs_add(new Xohd_img_itm__gallery_mgr(gallery_uid, max_width)); } byte[] box_cls = Fmt_and_add(tmp_bfr, box_cls_fmtr, xnde.Atr_cls(), this.Tid_bry()); byte[] gallery_ul_id = tmp_bfr.Add(box_id_prefix_bry).Add_int_variable(gallery_uid).To_bry_and_clear(); @@ -111,11 +111,11 @@ public abstract class Gallery_mgr_base { html_w_expand = lnki_w_orig; html_h_expand = lnki_h_orig; // reset lnki_w_orig / lnki_h_orig else large captions } else { - byte[] alt = itm.Alt_bgn() == Bry_.NotFound && Bry_.Len_eq_0(itm_caption) // if ( $alt == '' && $text == '' ) $imageParameters['alt'] = $nt->getText(); + byte[] alt = itm.Alt_bgn() == Bry_find_.Not_found && Bry_.Len_eq_0(itm_caption) // if ( $alt == '' && $text == '' ) $imageParameters['alt'] = $nt->getText(); ? itm.Ttl().Page_txt() : Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, Bry_.Mid(src, itm.Alt_bgn(), itm.Alt_end())) ; - Xoa_ttl href_ttl = itm.Link_bgn() == Bry_.NotFound + Xoa_ttl href_ttl = itm.Link_bgn() == Bry_find_.Not_found ? ttl : Xoa_ttl.parse(wiki, Bry_.Mid(src, itm.Link_bgn(), itm.Link_end())) ; @@ -151,7 +151,7 @@ public abstract class Gallery_mgr_base { Wrap_gallery_text(bfr, itm_caption, html_w_expand, html_h_expand); bfr.Add(itm_li_end_bry); if (hctx_is_hdump) - page.Hdump_data().Imgs_add_img(new Xohd_data_itm__gallery_itm().Data_init_gallery(itm_div_width, img_div_w, vpad), xfer_itm, Xohd_data_itm__gallery_itm.Tid_gallery); + page.Hdump_data().Imgs_add_img(new Xohd_img_itm__gallery_itm().Data_init_gallery(itm_div_width, img_div_w, vpad), xfer_itm, Xohd_img_itm__gallery_itm.Tid_gallery); } private static final byte[] Wrap_gallery_text_bgn = Bry_.new_a7("\n
    ") // NOTE: The newline after
    is needed to accommodate htmltidy @@ -191,16 +191,16 @@ public abstract class Gallery_mgr_base { } private static void Box_hdr_write(Bry_bfr bfr, Xop_xatr_whitelist_mgr whitelist_mgr, byte[] src, byte[] gallery_ul_uid, byte[] cls, byte[] style, List_adp xatr_list, boolean hctx_is_hdump, int uid) { bfr.Add_byte(Byte_ascii.Lt).Add(Html_tag_.Ul_name_bry); - Html_wtr.Write_atr_bry(bfr, Html_atr_.Id_bry, gallery_ul_uid); - Html_wtr.Write_atr_bry(bfr, Html_atr_.Cls_bry, cls); + 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(Xohd_abrv_.Key_gallery_box_max); + 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_.Style_bry, style); + Html_wtr.Write_atr_bry(bfr, Html_atr_.Bry__style, style); if (xatr_list != null) { int len = xatr_list.Count(); for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java index 4063ff3aa..4830f4167 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java @@ -19,7 +19,7 @@ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.primitives.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*; import gplx.xowa.parsers.logs.*; -import gplx.xowa.htmls.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner { private Gallery_xtn_mgr xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java index d5f9e1101..90ff62679 100644 --- a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_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.graphs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Graph_xnde implements Xox_xnde { private Graph_xtn xtn; diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java index db133e5dd..6d6ba7fca 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java @@ -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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; class Hiero_html_mgr { private Bry_bfr html_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), content_bfr = Bry_bfr.reset_(255), tbl_content_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), temp_bfr = Bry_bfr.reset_(255); private Xoh_wtr_ctx hctx; diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java index 3e002c9ba..47dfe872f 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; class Hiero_html_wtr { private Hiero_phoneme_mgr phoneme_mgr; private Bry_bfr temp_bfr = Bry_bfr.reset_(255); public Hiero_html_wtr(Hiero_html_mgr mgr, Hiero_phoneme_mgr phoneme_mgr) {this.phoneme_mgr = phoneme_mgr;} - public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Key_hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null; + public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.htmls.core.makes.Xoh_make_trie_.Bry__hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null; public void Hr(Bry_bfr bfr) {bfr.Add(Html_tag_.Hr_inl).Add_byte_nl();} public void Tbl_eol(Bry_bfr bfr) {bfr.Add(Tbl_eol_bry);} public byte[] Td_height(int height) { diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java index 7230ae84d..7cd9f9c26 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.log_msgs.*; import gplx.langs.phps.*; import gplx.langs.dsvs.*; import gplx.xowa.apps.gfs.*; public class Hiero_mw_tables_parser { diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java index bfb8b020a..12fb4857f 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Hiero_xnde implements Xox_xnde { private Hiero_xtn_mgr xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java index 3ac3f1c89..239efa1cb 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.parsers.*; class Imap_img_fmtr_arg implements Bry_fmtr_arg { private Xoh_wtr_ctx hctx; private Imap_map map; private Imap_xtn_mgr xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java index ec5896b88..f7b15cd8e 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java @@ -17,7 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.core.net.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.xowa.htmls.core.wkrs.lnkes.*; interface Imap_link_owner { void Link_tid_(int v); void Link_href_(byte[] v); @@ -40,8 +41,8 @@ class Imap_link_owner_ { case Xop_tkn_itm_.Tid_lnke: { Xop_lnke_tkn lnke = (Xop_lnke_tkn)tkn; Xop_ctx ctx = wiki.Parser_mgr().Ctx(); - int lnke_bgn = lnke.Lnke_bgn(), lnke_end = lnke.Lnke_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; - Xoh_lnke_wtr lnke_wtr = wiki.Html_mgr().Html_wtr().Lnke_wtr(); + int lnke_bgn = lnke.Lnke_href_bgn(), lnke_end = lnke.Lnke_href_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; + Xoh_lnke_html lnke_wtr = wiki.Html_mgr().Html_wtr().Wkr__lnke(); lnke_wtr.Write_href(bfr, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa); link_owner.Link_href_(bfr.To_bry_and_clear()); lnke_wtr.Write_caption(bfr, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java index 736d98f81..b72d98d0e 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.lnkis.*; -import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; +import gplx.xowa.htmls.core.makes.imgs.*; public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr { private static final Imap_map_fmtr map_fmtr_arg = new Imap_map_fmtr(); public Imap_map(int id) {this.id = id;} @@ -44,7 +44,7 @@ public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr { this.a_href = a_href; this.img_alt = img_alt; this.img_cls_tid = img_cls; this.img_cls_other = img_cls_other; Write_imap_div(tmp_bfr, hctx, uid, img_w, img_h, img_src, xfer_itm.Orig_w(), xfer_itm.Orig_h()); if (hctx.Mode_is_hdump()) - page.Hdump_data().Imgs_add_img(new Xohd_data_itm__img(), xfer_itm, Xohd_data_itm__gallery_itm.Tid_basic); + page.Hdump_data().Imgs_add_img(new Xohd_img_itm__img(), xfer_itm, Xohd_img_itm__gallery_itm.Tid_basic); } public void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl) { Xowe_wiki wiki = xtn_mgr.Wiki(); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java index c3d8f78de..c947489f1 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_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.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; public class Imap_xnde implements Xox_xnde { private Imap_xtn_mgr xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java index 18b7c251b..1dd591ff1 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; +import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; public class Imap_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { private boolean init; @Override public boolean Enabled_default() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java index a6d6e684a..bbadadc30 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_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.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner { public String Name() {return name;} private String name; diff --git a/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java b/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java index 09e0fff6d..92670e7d3 100644 --- a/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_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.inputBox; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xtn_inputbox_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless) diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java index d0b1ae8b3..e130465a4 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.langs.htmls.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner { @@ -111,8 +111,8 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner { if (xatr_url != null) wtr.Nde_full_atrs(Tag_a, wtr.To_bry_and_clear(), false , Atr_a_href , xatr_url - , Atr_a_class , Atr_a_class_external_text , Atr_a_rel , Atr_a_rel_nofollow + , Atr_a_class , Atr_a_class_external_text , Atr_a_title , xatr_name ); if (xatr_alt != null) { diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java index 456ec2ac3..5067f542d 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java @@ -30,7 +30,7 @@ public class Listing_xnde_basic_tst { @Test public void Url() { fxt.Test_parse_page_all_str ( "" - , "name_0. " + , "name_0. " ); } @Test public void Alt() { diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java index ed34100d8..6b76c92d8 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java @@ -50,7 +50,7 @@ public class Lst_pfunc_wkr { if (!page.Tmpl_stack_add(src_ttl.Full_db())) return; // put template back on stack; Xop_root_tkn root = wiki.Parser_mgr().Main().Parse_text_to_wdom(sub_ctx, src, true); // NOTE: pass sub_ctx as old_ctx b/c entire document will be parsed, and references outside the section should be ignored; src = root.Data_mid(); // NOTE: must set src to root.Data_mid() which is result of parse; else will break text; DATE:2013-07-11 - wiki.Cache_mgr().Lst_cache().Add(defn_tmpl, Xow_ns_case_.Id_all); + wiki.Cache_mgr().Lst_cache().Add(defn_tmpl, Xow_ns_case_.Tid__all); page.Tmpl_stack_del(); defn_tmpl.Data_mid_(src); defn_tmpl.Ctx_(sub_ctx); diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java index a0f041fa1..b55d102c6 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.langs.*; import gplx.xowa.htmls.*; +import gplx.xowa.langs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Lst_section_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Section_name() {return section_name;} private byte[] section_name; diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java index 76cc451aa..15676413f 100644 --- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java +++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java @@ -181,7 +181,7 @@ class Map_math {// REF.MW:MapSources_math.php if (word_idx >= Input_units_len) return; byte unit_dlm = Input_units[word_idx]; int pos = Bry_find_.Find_fwd(input, unit_dlm, word_bgn, word_end); - if (pos != Bry_.NotFound) // remove dlms from end of bry; EX: "123'" -> "123" + if (pos != Bry_find_.Not_found) // remove dlms from end of bry; EX: "123'" -> "123" word_end = pos; if (!Parse_input_word_is_compass(input[word_bgn])) { // if ( is_numeric( $v ) ) { double word_val = Bry_.To_double_or(input, word_bgn, word_end, Double_.NaN); diff --git a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java b/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java index f8bff79fd..561eda7bc 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Math_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.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Math_nde implements Xox_xnde { public Xop_xnde_tkn Xnde() {throw Err_.new_unimplemented();} diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java index 76024a122..ed91a28b7 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.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.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.vnts.*; public class Xof_math_html_wtr { private Xof_math_itm tmp_math_itm = new Xof_math_itm(); @@ -33,7 +33,7 @@ public class Xof_math_html_wtr { boolean enabled = app.File_mgr().Math_mgr().Enabled(); if (renderer_is_latex && app.File_mgr().Math_mgr().Find_itm(tmp_math_itm, page.Wiki().Domain_str(), math_bry)) { bfr.Add(Xoh_consts.Img_bgn); - bfr.Add_str(tmp_math_itm.Png_url().To_http_file_str()); + bfr.Add_str_u8(tmp_math_itm.Png_url().To_http_file_str()); bfr.Add(Xoh_consts.__inline_quote); } else 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 7ff82cdc7..cd0f6c408 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 @@ -32,7 +32,7 @@ public class Xof_math_mgr implements GfoInvkAble { public void Make_itm(Xof_math_itm rv, String wiki_key, byte[] math_bry) { Io_url math_dir = Make_math_dir(wiki_key); math_bry = app.Math_subst_regy().Subst(math_bry); - String md5 = gplx.security.HashAlgo_.Md5.CalcHash(Console_adp_.Noop, gplx.ios.IoStream_.ary_(math_bry)); + String md5 = gplx.core.security.HashAlgo_.Md5.CalcHash(Console_adp_.Noop, gplx.core.ios.IoStream_.ary_(math_bry)); Io_url png_fil = Make_png_fil(math_dir, md5); rv.Ctor(math_bry, md5, png_fil); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java index 43cae2656..7f2161200 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java @@ -50,7 +50,7 @@ public abstract class Pf_func_base implements Pf_func { if (subs_len == 0) { // no subs; either {{#func}} or {{#func:}} int src_bgn = name_tkn.Src_bgn(); int colon_pos = Bry_find_.Find_bwd(src, Byte_ascii.Colon, self.Src_end(), src_bgn); // look for ":"; NOTE: used to be src_bgn - 1, but this would always search one character too many; DATE:2014-02-11 - if (colon_pos == Bry_.NotFound) // no colon; EX: {{#func}} + if (colon_pos == Bry_find_.Not_found) // no colon; EX: {{#func}} return Eval_arg_or_null_is_null; else { // colon found; EX: {{#func:}} if (Bry_.Match_bwd_any(src, colon_pos - 1, src_bgn - 1, func_name)) // #func == func_name; EX: {{NAMESPACE:}} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java index 2da6b00ff..203ae69e7 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.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.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.core.log_msgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_expr extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} @@ -32,7 +32,7 @@ public class Pfunc_expr extends Pf_func_base { return false; } else { - bfr.Add_str(rslt.To_str()); + bfr.Add_str_u8(rslt.To_str()); return true; } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java index 3e9efc0e1..3fb9d0a1d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java @@ -18,40 +18,48 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; import gplx.xowa.langs.*; public class Pfunc_grammar_tst { - private Xop_fxt fxt = new Xop_fxt(); + private final Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} @Test public void English() {// for now, mark unimplemented langs by returning not_found; [[Template:grammar]]; wait for users to report - fxt.Test_parse_tmpl_str_test("{{grammar:a|b}}" , "{{test}}" , "[[:Template:grammar]]"); + fxt .Test_parse_tmpl_str_test ("{{grammar:a|b}}" , "{{test}}", "[[:Template:grammar]]"); } @Test public void Finnish() { fxt.Lang_by_id_(Xol_lang_stub_.Id_fi); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:elative|Wikiuutiset}}" , "{{test}}" , "Wikiuutisista"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:talo}}" , "{{test}}" , ""); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|talo}}" , "{{test}}" , "talon"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:elative|talo}}" , "{{test}}" , "talosta"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:inessive|talo}}" , "{{test}}" , "talossa"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:partitive|talo}}" , "{{test}}" , "taloa"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:illative|talo}}" , "{{test}}" , "taloon"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|sängy}}" , "{{test}}" , "sängyn"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:elative|sängy}}" , "{{test}}" , "sängystä"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:inessive|sängy}}" , "{{test}}" , "sängyssä"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:partitive|sängy}}" , "{{test}}" , "sängyä"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:illative|sängy}}" , "{{test}}" , "sängyyn"); + fxt.Reset().Test_html_full_str("{{grammar:elative|Wikiuutiset}}" , "Wikiuutisista"); + fxt.Reset().Test_html_full_str("{{grammar:talo}}" , ""); + fxt.Reset().Test_html_full_str("{{grammar:genitive|talo}}" , "talon"); + fxt.Reset().Test_html_full_str("{{grammar:elative|talo}}" , "talosta"); + fxt.Reset().Test_html_full_str("{{grammar:inessive|talo}}" , "talossa"); + fxt.Reset().Test_html_full_str("{{grammar:partitive|talo}}" , "taloa"); + fxt.Reset().Test_html_full_str("{{grammar:illative|talo}}" , "taloon"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|sängy}}" , "sängyn"); + fxt.Reset().Test_html_full_str("{{grammar:elative|sängy}}" , "sängystä"); + fxt.Reset().Test_html_full_str("{{grammar:inessive|sängy}}" , "sängyssä"); + fxt.Reset().Test_html_full_str("{{grammar:partitive|sängy}}" , "sängyä"); + fxt.Reset().Test_html_full_str("{{grammar:illative|sängy}}" , "sängyyn"); } @Test public void Russian() { fxt.Lang_by_id_(Xol_lang_stub_.Id_ru); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:unknown}}" , "{{test}}" , ""); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aвики}}" , "{{test}}" , "aвики"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aВики}}" , "{{test}}" , "aВики"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aь}}" , "{{test}}" , "aя"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aия}}" , "{{test}}" , "aии"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aка}}" , "{{test}}" , "aки"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aти}}" , "{{test}}" , "aтей"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aды}}" , "{{test}}" , "aдов"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aник}}" , "{{test}}" , "aника"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:dative|a}}" , "{{test}}" , "a"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:accusative|a}}" , "{{test}}" , "a"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:instrumental|a}}" , "{{test}}" , "a"); - fxt.Reset().Test_parse_tmpl_str_test("{{grammar:prepositional|a}}" , "{{test}}" , "a"); + fxt.Reset().Test_html_full_str("{{grammar:unknown}}" , ""); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aвики}}" , "aвики"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aВики}}" , "aВики"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aь}}" , "aя"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aия}}" , "aии"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aка}}" , "aки"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aти}}" , "aтей"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aды}}" , "aдов"); + fxt.Reset().Test_html_full_str("{{grammar:genitive|aник}}" , "aника"); + fxt.Reset().Test_html_full_str("{{grammar:dative|a}}" , "a"); + fxt.Reset().Test_html_full_str("{{grammar:accusative|a}}" , "a"); + fxt.Reset().Test_html_full_str("{{grammar:instrumental|a}}" , "a"); + fxt.Reset().Test_html_full_str("{{grammar:prepositional|a}}" , "a"); + } + @Test public void Hebrew() { + fxt.Lang_by_id_(Xol_lang_stub_.Id_he); + fxt.Reset().Test_html_full_str("{{grammar:unknown|abc}}" , "abc"); + fxt.Reset().Test_html_full_str("{{grammar:prefixed|וabc}}" , "ווabc"); // waw: add ו + fxt.Reset().Test_html_full_str("{{grammar:prefixed|ווabc}}" , "ווabc"); // waw: do not add ו if וו + fxt.Reset().Test_html_full_str("{{grammar:prefixed|הabc}}" , "abc"); // he: remove ה + fxt.Reset().Test_html_full_str("{{grammar:prefixed|אabc}}" , "־אabc"); // maqaf: add ־ } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java index 2395278c4..27b88b231 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.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.pfuncs.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.cases.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_displaytitle extends Pf_func_base { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java index 7d1fae2b6..c89963135 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java @@ -90,7 +90,9 @@ class Pft_fmt_itm_hebrew_month_name_gen implements Pft_fmt_itm { class Pft_fmt_itm_hebrew_numeral implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_numeral;} public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { - bfr.Add_str(Pft_fmt_itm_hebrew_.Calc_hebrew_numeral(date.Year())); + int num_int = bfr.To_int_and_clear(-1); + byte[] num_bry = Pft_fmt_itm_hebrew_.Calc_hebrew_numeral(num_int); + bfr.Add(num_bry); } } class Pft_fmt_itm_iranian_year_idx implements Pft_fmt_itm { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java index 5da1a2649..92404932a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java @@ -206,53 +206,53 @@ class Pft_fmt_itm_hebrew_ { , Rslt_month_days_count = 3 ; - private static final String[][] Numeral_tbls = new String[][] - { new String[] {"", "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י"} - , new String[] {"", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק"} - , new String[] {"", "ק", "ר", "ש", "ת", "תק", "תר", "תש", "תת", "תתק", "תתר"} - , new String[] {"", "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י"} + private static final byte[][][] Numeral_tbls = new byte[][][] + { new byte[][] {Bry_.Empty, Bry_.new_u8("א"), Bry_.new_u8("ב"), Bry_.new_u8("ג"), Bry_.new_u8("ד"), Bry_.new_u8("ה") , Bry_.new_u8("ו") , Bry_.new_u8("ז") , Bry_.new_u8("ח") , Bry_.new_u8("ט") , Bry_.new_u8("י")} + , new byte[][] {Bry_.Empty, Bry_.new_u8("י"), Bry_.new_u8("כ"), Bry_.new_u8("ל"), Bry_.new_u8("מ"), Bry_.new_u8("נ") , Bry_.new_u8("ס") , Bry_.new_u8("ע") , Bry_.new_u8("פ") , Bry_.new_u8("צ") , Bry_.new_u8("ק")} + , new byte[][] {Bry_.Empty, Bry_.new_u8("ק"), Bry_.new_u8("ר"), Bry_.new_u8("ש"), Bry_.new_u8("ת"), Bry_.new_u8("תק") , Bry_.new_u8("תר") , Bry_.new_u8("תש") , Bry_.new_u8("תת") , Bry_.new_u8("תתק"), Bry_.new_u8("תתר")} + , new byte[][] {Bry_.Empty, Bry_.new_u8("א"), Bry_.new_u8("ב"), Bry_.new_u8("ג"), Bry_.new_u8("ד"), Bry_.new_u8("ה") , Bry_.new_u8("ו") , Bry_.new_u8("ז") , Bry_.new_u8("ח") , Bry_.new_u8("ט") , Bry_.new_u8("י")} }; - public static String Calc_hebrew_numeral(int num) { - if (num > 9999 || num <= 0) - return Int_.To_str(num); + public static byte[] Calc_hebrew_numeral(int num) { + if (num > 9999 || num <= 0) return Int_.To_bry(num); - String tmp = ""; + byte[] tmp = Bry_.Empty; int pow10 = 1000; for (int i = 3; i >= 0; pow10 /= 10, i--) { if (num >= pow10) { if (num == 15 || num == 16) { - tmp += Numeral_tbls[0][9] + Numeral_tbls[0][num - 9]; + tmp = Bry_.Add(tmp, Numeral_tbls[0][9], Numeral_tbls[0][num - 9]); num = 0; } else { - tmp += Numeral_tbls[i][(int)(num / pow10)]; + tmp = Bry_.Add(tmp, Numeral_tbls[i][(int)(num / pow10)]); if (pow10 == 1000) - tmp += "'"; + tmp = Bry_.Add(tmp, Byte_ascii.Apos_bry); } } num = num % pow10; } - String rv = ""; - int tmp_len = String_.Len(tmp); + byte[] rv = Bry_.Empty; + int tmp_len = tmp.length; if (tmp_len == 2) { - rv = tmp + "'"; + rv = Bry_.Add(tmp, Byte_ascii.Apos_bry); } else { - rv = String_.Mid(tmp, 0, tmp_len - 1) + "\""; - rv += String_.Mid(tmp, tmp_len - 1); + rv = Bry_.Add(Bry_.Mid(tmp, 0, tmp_len - 2), Byte_ascii.Quote_bry); + rv = Bry_.Add(rv, Bry_.Mid(tmp, tmp_len - 2, tmp_len)); + } + int rv_len = rv.length; + Object end_obj = end_trie.Match_bgn(rv, rv_len - 2, rv_len); + if (end_obj != null) { + byte[] end = (byte[])end_obj; + byte[] start = Bry_.Mid(rv, 0, rv_len - 2); + rv = Bry_.Add(start, end); } - int rv_len = String_.Len(rv); - String start = String_.Mid(rv, 0, rv_len - 1); - String end = String_.Mid(rv, rv_len - 1); - if (String_.Eq(end, "כ")) - rv = start + "ך"; - else if (String_.Eq(end, "מ")) - rv = start + "ם"; - else if (String_.Eq(end, "נ")) - rv = start + "ן"; - else if (String_.Eq(end, "פ")) - rv = start + "ף"; - else if (String_.Eq(end, "צ")) - rv = start + "ץ"; return rv; } + private static final gplx.core.btries.Btrie_slim_mgr end_trie = gplx.core.btries.Btrie_slim_mgr.cs() + .Add_str_str("כ", "ך") + .Add_str_str("מ", "ם") + .Add_str_str("נ", "ן") + .Add_str_str("פ", "ף") + .Add_str_str("צ", "ץ") + ; } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java index 5e5dcd030..3a6091799 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java @@ -105,10 +105,10 @@ class Pft_fmt_itm_iso_fmt implements Pft_fmt_itm { public Pft_fmt_itm_iso_fmt() {} public int TypeId() {return Pft_fmt_itm_.Tid_iso_fmt;} public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { - bfr.Add_str(date.XtoStr_fmt("yyyy-MM-dd")); + bfr.Add_str_a7(date.XtoStr_fmt("yyyy-MM-dd")); bfr.Add_byte(Byte_ascii.Ltr_T); - bfr.Add_str(date.XtoStr_fmt("HH:mm:ss")); - bfr.Add_str(date.XtoStr_tz()); + bfr.Add_str_a7(date.XtoStr_fmt("HH:mm:ss")); + bfr.Add_str_a7(date.XtoStr_tz()); } } class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm { @@ -118,8 +118,8 @@ class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm { int dow = date.DayOfWeek(); DateAdpTranslator_xapp.Translate(wiki, lang, DateAdp_.SegIdx_dayOfWeek, dow, bfr); bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); - bfr.Add_str(date.XtoStr_fmt("dd MMM yyyy HH:mm:ss")); // NOTE: always UTC time - bfr.Add(CONST_timezone); // NOTE: always UTC time zone + bfr.Add_str_a7(date.XtoStr_fmt("dd MMM yyyy HH:mm:ss")); // NOTE: always UTC time + bfr.Add(CONST_timezone); // NOTE: always UTC time zone } static final byte[] CONST_timezone = Bry_.new_a7(" +0000"); } class Pft_fmt_itm_timezone_offset implements Pft_fmt_itm { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java index 622b3708f..d14409099 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java @@ -28,13 +28,23 @@ public class Pft_func_formatdate_bldr { this.fmt_itms = fmt_itms; int len = fmt_itms.length; idx_cur = 0; idx_nxt = -1; - Pft_fmt_itm last = null; + Pft_fmt_itm chained_fmt = null; while (idx_cur < len) { Pft_fmt_itm fmt_itm = fmt_itms[idx_cur]; if (fmt_itm.TypeId() == Pft_fmt_itm_.Tid_hebrew_numeral) - last = fmt_itm; + chained_fmt = fmt_itm; else { - fmt_itm.Fmt(bfr, wiki, lang, date, this); + if (chained_fmt != null) { + Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); + synchronized (tmp_bfr) { + fmt_itm.Fmt(tmp_bfr, wiki, lang, date, this); + chained_fmt.Fmt(tmp_bfr, wiki, lang, date, this); + bfr.Add(tmp_bfr.To_bry_and_rls()); + chained_fmt = null; + } + } + else + fmt_itm.Fmt(bfr, wiki, lang, date, this); } if (idx_nxt == -1) ++idx_cur; @@ -43,11 +53,11 @@ public class Pft_func_formatdate_bldr { idx_nxt = -1; } } - if (last != null) { + if (chained_fmt != null) { int year_int = bfr.To_int_and_clear(-1); if (year_int != -1) { // handle no format; EX:{{#time:xh}} DATE:2014-07-20 date = DateAdp_.seg_(new int[] {year_int, date.Month(), date.Day(), date.Hour(), date.Minute(), date.Second(), date.Frac()}); - last.Fmt(bfr, wiki, lang, date, this); + chained_fmt.Fmt(bfr, wiki, lang, date, this); } } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java index 01ab64e6e..5e9102ee2 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java @@ -31,7 +31,7 @@ public class Pft_func_time extends Pf_func_base { Bry_bfr error_bfr = Bry_bfr.new_(); DateAdp date = ParseDate(arg_date, utc, error_bfr); if (date == null || error_bfr.Len() > 0) - bfr.Add_str_a7("").Add_bfr_and_clear(error_bfr).Add_str(""); + bfr.Add_str_a7("").Add_bfr_and_clear(error_bfr).Add_str_a7(""); else { Xol_lang_itm lang = ctx.Lang(); if (Bry_.Len_gt_0(arg_lang)) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java rename to 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java index de07aaa2c..cdb329cf0 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -public class Pft_func_time_basic_tst { +public class Pft_func_time__basic__tst { @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private Xop_fxt fxt = new Xop_fxt(); @After public void term() {Tfds.Now_enabled_n_();} @Test public void Utc_date() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");} @@ -34,7 +34,7 @@ public class Pft_func_time_basic_tst { @Test public void Lcl_date() {fxt.Test_parse_tmpl_str("{{#timel:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");} @Test public void Utc_dow_abrv() {fxt.Test_parse_tmpl_str("{{#time:D|20120301}}" , "Thu");} @Test public void Utc_ymd() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|20120102}}" , "2012-01-02");} - @Test public void Utc_ym() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|201201}}" , "2012-01-01");} + @Test public void Utc_ym() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|201201}}" , "2012-01-02");} // PURPOSE: default to today's date @Test public void Utc_md() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2-13}}" , "2012-02-13");} // PURPOSE.fix: m-d failed @Test public void Slashes() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2/13/12}}" , "2012-02-13");} // PURPOSE: assert slashes work @Test public void Utc_day() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|March 27}}" , "2012-03-27");} @@ -95,7 +95,7 @@ public class Pft_func_time_basic_tst { @Test public void Multiple_dates_lt_12() {fxt.Test_parse_tmpl_str("{{#time:c|January 2, 2001-06-11}}" , "2001-01-02T06:00:00-05:00");} // PURPOSE.fix: w:Vim_(text_editor) @Test public void Raw_H() {fxt.Test_parse_tmpl_str("{{#time:xnH}}" , "08");} // PURPOSE: ignore "xn" for now; chk 0-padded number is generated; DATE:2013-12-31 @Test public void Raw_h() {fxt.Test_parse_tmpl_str("{{#time:xnh}}" , "08");} // PURPOSE: ignore "xn" for now; chk 0-padded number is generated; DATE:2013-12-31 - @Test public void Iso8601_T() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|T1:23}}" , "2012-01-01 01:23:00 AM");} // handle "T" flag; PAGE:pl.w:StarCraft_II:_Wings_of_Liberty - @Test public void Iso8601_T_ws() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|T 1:23}}" , "2012-01-01 01:23:00 AM");} // handle "T" flag and ws + @Test public void Iso8601_T() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|T1:23}}" , "2012-01-02 01:23:00 AM");} // handle "T" flag; PAGE:pl.w:StarCraft_II:_Wings_of_Liberty + @Test public void Iso8601_T_ws() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|T 1:23}}" , "2012-01-02 01:23:00 AM");} // handle "T" flag and ws @Test public void Iso8601_T_fail() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|T2012-01-02}}" , "Invalid hour: T");} // handle "T" flag and ws } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__hebrew__tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__hebrew__tst.java new file mode 100644 index 000000000..e6798f7c8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__hebrew__tst.java @@ -0,0 +1,35 @@ +/* +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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import org.junit.*; +public class Pft_func_time__hebrew__tst { + @Before public void init() {fxt.Clear();} private Pft_func_time_foreign_fxt fxt = new Pft_func_time_foreign_fxt(); + @After public void term() {fxt.Term();} + @Test public void Year_num() {fxt.Test_parse("{{#time:xjY|2012-01-02}}" , "5772");} + @Test public void Month_num() {fxt.Test_parse("{{#time:xjn|2012-01-02}}" , "4");} + @Test public void Day_num() {fxt.Test_parse("{{#time:xjj|2012-01-02}}" , "7");} + @Test public void Month_days_count() {fxt.Test_parse("{{#time:xjt|2012-01-02}}" , "29");} + @Test public void Month_name_full() {fxt.Init_msg("hebrew-calendar-m4" , "Tevet").Test_parse("{{#time:xjF|2012-01-02}}" , "Tevet");} + @Test public void Month_name_gen() {fxt.Init_msg("hebrew-calendar-m4-gen" , "Tevet").Test_parse("{{#time:xjx|2012-01-02}}" , "Tevet");} + @Test public void Numeral__empty() {fxt.Test_parse("{{#time:xh}}" , "");} + @Test public void Numeral_many() {fxt.Test_parse("{{#time:xhxjj xjx xhxjY|28-08-1608 + 341 days}}" , "ד' ה'שס\"ט");} + @Test public void Numeral__year() { + String s = String_.new_u8(Bry_.new_ints(215, 148, 39, 215, 170, 215, 169, 215, 153, 34, 215, 152)); // ה'תש"ך + fxt.Test_parse("{{#time:xhxjY|1959}}", s); // NOTE: 1959 chosen b/c it will choose the first char from the end_trie; .Add_str_str("כ", "ך") + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_int_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_int_tst.java rename to 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java index 9ff225298..b5f01b8f1 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_int_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; -public class Pft_func_time_int_tst { +public class Pft_func_time__int__tst { @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private Xop_fxt fxt = new Xop_fxt(); @Test public void Time_before_date__dmy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.4.2005}}" , "2005-04-03 01:02");} // PAGE:sk.w:Dr._House; DATE:2014-09-23 @Test public void Time_before_date__mdy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.14.2005}}" , "Invalid month: 14");} // mdy is invalid; DATE:2014-09-23 diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__other__tst.java similarity index 60% rename from 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java rename to 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__other__tst.java index 5ad81ddb9..4f8b42a74 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__other__tst.java @@ -16,20 +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.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -public class Pft_func_time_foreign_tst { +import org.junit.*; +public class Pft_func_time__other__tst { @Before public void init() {fxt.Clear();} private Pft_func_time_foreign_fxt fxt = new Pft_func_time_foreign_fxt(); @After public void term() {fxt.Term();} @Test public void Thai() {fxt.Test_parse("{{#time:xkY|2012}}" , "2555");} @Test public void Minguo() {fxt.Test_parse("{{#time:xoY|2012}}" , "101");} - @Test public void Hebrew__year_num() {fxt.Test_parse("{{#time:xjY|2012-01-02}}" , "5772");} - @Test public void Hebrew__month_num() {fxt.Test_parse("{{#time:xjn|2012-01-02}}" , "4");} - @Test public void Hebrew__day_num() {fxt.Test_parse("{{#time:xjj|2012-01-02}}" , "7");} - @Test public void Hebrew__month_days_count() {fxt.Test_parse("{{#time:xjt|2012-01-02}}" , "29");} - @Test public void Hebrew__month_name_full() {fxt.Init_msg("hebrew-calendar-m4" , "Tevet").Test_parse("{{#time:xjF|2012-01-02}}" , "Tevet");} - @Test public void Hebrew__month_name_gen() {fxt.Init_msg("hebrew-calendar-m4-gen" , "Tevet").Test_parse("{{#time:xjx|2012-01-02}}" , "Tevet");} - @Test public void Hebrew__numeral() {fxt.Test_parse("{{#time:xh}}" , "");} - @Test public void Hebrew__numeral_2() {fxt.Test_parse("{{#time:xhxjY|2014}}" , "ה'תשע\"ד");} @Test public void Iranian__year_idx() {fxt.Test_parse("{{#time:xiY|2012-01-02}}" , "1390");} @Test public void Iranian__month_idx() {fxt.Test_parse("{{#time:xin|2012-01-02}}" , "10");} @Test public void Iranian__day_idx() {fxt.Test_parse("{{#time:xij|2012-01-02}}" , "12");} @@ -59,27 +51,3 @@ public class Pft_func_time_foreign_tst { fxt.Test_Roman(4000, "4000"); } } -class Pft_func_time_foreign_fxt { - private Xop_fxt fxt = new Xop_fxt(); - public void Clear() { - fxt.Reset(); - Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6)); - } - public void Term() { - Tfds.Now_enabled_n_(); - } - public Pft_func_time_foreign_fxt Init_msg(String key, String val) { - Xol_msg_itm msg = fxt.Wiki().Msg_mgr().Get_or_make(Bry_.new_u8(key)); - msg.Atrs_set(Bry_.new_u8(val), false, false); - return this; - } - public void Test_parse(String raw, String expd) { - fxt.Test_parse_tmpl_str_test(raw, "{{test}}", expd); - } - public void Test_Roman(int v, String expd) { - Bry_bfr bfr = Bry_bfr.new_(16); - Pfxtp_roman.ToRoman(v, bfr); - String actl = bfr.To_str_and_clear(); - Tfds.Eq(expd, actl); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_uncommon_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_uncommon_tst.java rename to 400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java index 80cae91fe..55f8ce7e5 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_uncommon_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; -public class Pft_func_time_uncommon_tst { +public class Pft_func_time__uncommon__tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} @After public void term() {Tfds.Now_enabled_n_();} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java new file mode 100644 index 000000000..1be1e5a6d --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java @@ -0,0 +1,43 @@ +/* +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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +class Pft_func_time_foreign_fxt { + private Xop_fxt fxt = new Xop_fxt(); + public void Clear() { + fxt.Reset(); + Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6)); + } + public void Term() { + Tfds.Now_enabled_n_(); + } + public Pft_func_time_foreign_fxt Init_msg(String key, String val) { + Xol_msg_itm msg = fxt.Wiki().Msg_mgr().Get_or_make(Bry_.new_u8(key)); + msg.Atrs_set(Bry_.new_u8(val), false, false); + return this; + } + public void Test_parse(String raw, String expd) { + fxt.Test_parse_tmpl_str_test(raw, "{{test}}", expd); + } + public void Test_Roman(int v, String expd) { + Bry_bfr bfr = Bry_bfr.new_(16); + Pfxtp_roman.ToRoman(v, bfr); + String actl = bfr.To_str_and_clear(); + Tfds.Eq(expd, actl); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_eval_seg.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_eval_seg.java index 3ea8a37bd..c845c430c 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_eval_seg.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_eval_seg.java @@ -88,14 +88,10 @@ class Pxd_eval_seg { switch (itm.Digits()) { case 1: case 2: - if (val > 0 && val < 13) { + if (val > -1 && val < 13) { tctx.Seg_idxs_(itm, DateAdp_.SegIdx_month); return true; } - else if (val == 0) {// 0 day means subtract 1; EX:w:Mariyinsky_Palace; DATE:2014-03-25 - Pxd_itm_int_.Convert_to_rel(tctx, itm, Pxd_parser_.Unit_name_month, DateAdp_.SegIdx_month, -1); - return true; - } break; } tctx.Err_set(Pft_func_time_log.Invalid_month, Bry_fmtr_arg_.int_(val)); @@ -106,14 +102,10 @@ class Pxd_eval_seg { switch (itm.Digits()) { case 1: case 2: - if (val > 0 && val < 32) { + if (val > -1 && val < 32) { tctx.Seg_idxs_(itm, DateAdp_.SegIdx_day); return true; } - else if (val == 0) { // 0 day means subtract 1; EX:w:Mariyinsky_Palace; DATE:2014-03-25 - Pxd_itm_int_.Convert_to_rel(tctx, itm, Pxd_parser_.Unit_name_day, DateAdp_.SegIdx_day, -1); - return true; - } break; } tctx.Err_set(Pft_func_time_log.Invalid_day, Bry_fmtr_arg_.int_(val)); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java index 590aec035..8ee3ab2dc 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.core.log_msgs.*; interface Pxd_itm { byte Tkn_tid(); int Ary_idx(); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_int.java index 2d0435600..9e1d142d7 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_int.java @@ -55,8 +55,18 @@ class Pxd_itm_int extends Pxd_itm_base implements Pxd_itm_int_interface { } bldr.Date_(date); } - else - bldr.Seg_set(seg_idx, val); + else { + if (val == 0) { // 0 means subtract 1; EX:w:Mariyinsky_Palace; DATE:2014-03-25 + DateAdp date = bldr.Date(); + switch (seg_idx) { + case DateAdp_.SegIdx_month: date = DateAdp_.seg_(new int[] {date.Year(), 1, date.Day(), date.Hour(), date.Minute(), date.Second(), date.Frac()}).Add_month(-1); bldr.Date_(date); break; + case DateAdp_.SegIdx_day: date = DateAdp_.seg_(new int[] {date.Year(), date.Month(), 1, date.Hour(), date.Minute(), date.Second(), date.Frac()}).Add_day(-1); bldr.Date_(date); break; + default: return; + } + } + else + bldr.Seg_set(seg_idx, val); + } } @Override public void Eval(Pxd_parser tctx) { int data_idx = this.Data_idx(); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java index 6b6d0d627..9de488e72 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java @@ -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.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.core.btries.*; +import gplx.core.btries.*; import gplx.core.log_msgs.*; class Pxd_parser { byte[] src; int cur_pos, tkn_bgn_pos, src_len, tkn_type; public Pxd_itm[] Tkns() {return tkns;} Pxd_itm[] tkns; @@ -140,7 +140,8 @@ class Pxd_parser { return DateAdp_.MinValue; } } - DateAdpBldr bldr = new DateAdpBldr(DateAdp_.Now().Year(), 1, 1, 0, 0, 0, 0); + DateAdp now = DateAdp_.Now(); + DateAdpBldr bldr = new DateAdpBldr(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0); for (int i = 0; i < tkns_len; i++) { Pxd_itm itm = (Pxd_itm)tkns[i]; itm.Time_ini(bldr); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java index 809fc3e5d..82a11d80a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java @@ -25,20 +25,20 @@ public class Pxd_parser_tst { @Test public void Month_name_0__day__year__bad_day() {tst_date_("Mar 32 2001" , "Invalid day: 32");} @Test public void Month_name_0__day__year__bad_year() {tst_date_("Mar 3 999" , "0999-03-03");} @Test public void Month_name_0__day__year__bad_day_year() {tst_date_("Mar 32 999" , "Invalid day: 32");} - @Test public void Month_name_0__year() {tst_date_("Mar 2001" , "2001-03-01");} + @Test public void Month_name_0__year() {tst_date_("Mar 2001" , "2001-03-27");} @Test public void Month_name_0__day() {tst_date_("Mar 02" , "2012-03-02");} @Test public void Month_name_0__day_fail() {tst_date_("Mar 32" , "Invalid day: 32");} - @Test public void Month_name_0() {tst_date_("Mar" , "2012-03-01");} // y: ,.,.. Feb; n: / Feb, - Feb + @Test public void Month_name_0() {tst_date_("Mar" , "2012-03-27");} // y: ,.,.. Feb; n: / Feb, - Feb @Test public void Month_name_1__day__year() {tst_date_("2 Mar 2001" , "2001-03-02");} // y: 3-Feb-2012; 3 Feb 2012; @Test public void Month_name_1__year__day() {tst_date_("2001 Mar 02" , "2001-03-02");} // y: 2012-Feb-3 n:2012.Feb.3;2012 Feb 3; 2012,Feb,3;2012/Feb/3 @Test public void Month_name_1__day__year__guess() {tst_date_("02 Mar 01" , "2001-03-02");} @Test public void Month_name_1__day() {tst_date_("02 Mar" , "2012-03-02");} - @Test public void Month_name_1__year() {tst_date_("2003 Mar" , "2003-03-01");} + @Test public void Month_name_1__year() {tst_date_("2003 Mar" , "2003-03-27");} @Test public void Month_name_2__day__year() {tst_date_("2001.02.Mar" , "2001-03-02");} // y: 2012.5.Feb; 2012 5 Feb n: 2012-5-Feb; 2012/5/Feb @Test public void Year_0__month__day() {tst_date_("2001-03-31" , "2001-03-31");} @Test public void Year_0__day__month__fail() {tst_date_("2001-31-03" , "Invalid month: 31");} // n:2012.31.03; 2012/31/03 - @Test public void Year_0__month() {tst_date_("2001-03" , "2001-03-01");} - @Test public void Year_0() {tst_date_("2001" , "2001-01-01");} + @Test public void Year_0__month() {tst_date_("2001-03" , "2001-03-27");} + @Test public void Year_0() {tst_date_("2001" , "2001-02-27");} @Test public void Year_1() {tst_date_("31-2001" , "Invalid date: 4 digit year must be either yyyy-##-## or ##-##-yyyy");} // n:31-2012; 31.2012; 31/2012; 03-2012; 03.2012; 03/2012 @Test public void Year_2__month__day() {tst_date_("03/31/2001" , "2001-03-31");} // n: 03.31.2012;03-31-2012 @Test public void Year_2__day__month() {tst_date_("31-03-2001" , "2001-03-31");} // y: 31.03.2012; n:31/03/2012 @@ -58,7 +58,7 @@ public class Pxd_parser_tst { @Test public void Time_len_6() {tst_time_("041526" , "04:15:26.000");} @Test public void Time_len_12() {tst_both_("201601020304" , "2016-01-02 03:04:00.000");} // PURPOSE: handle 12 digit datetime; PAGE:en.w:Boron; DATE:2015-07-29 @Test public void Err_one_num() {tst_time_("2" , "Invalid year: 2");} // occurs on some templates; PAGE:en.w:Voyager 1 and {{date}} - @Test public void Dmy_at_y_dot() {tst_date_("1.2.70" , "1970-02-01");} // PURPOSE: dmy when delimiter is dot + @Test public void Dmy_at_y_dot() {tst_date_("1.2.70" , "1970-02-27");} // PURPOSE: dmy when delimiter is dot @Test public void Mdy_at_y_slash() {tst_date_("1/2/70" , "1970-01-02");} // PURPOSE: mdy when delimiter is slash @Test public void Ago() {tst_date_("1 month ago" , "2012-01-27");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java index 66fab468b..2126ecf45 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java @@ -49,7 +49,7 @@ public class Pfunc_filepath_tst { } @Test public void Wiki_is_commons() { fxt.Init_page_create(commons_wiki, "File:A.png", ""); - commons_wiki.Tdb_fsys_mgr().Tdb_dir_regy()[Xotdb_dir_info_.Tid_page].Ext_tid_(gplx.ios.Io_stream_.Tid_raw); + commons_wiki.Tdb_fsys_mgr().Tdb_dir_regy()[Xotdb_dir_info_.Tid_page].Ext_tid_(gplx.core.ios.Io_stream_.Tid_raw); mock_wkr.Redirect_("A.png", "A.png").Repo_idx_(1); fxt.Test_parse_tmpl_str_test("{{filepath:A.png}}", "{{test}}", "file:///mem/xowa/file/commons/trg/orig/7/0/1/c/A.png"); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java index 2c4d3f1a9..be068cceb 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java @@ -54,7 +54,7 @@ public class Pfunc_ns extends Pf_func_base { // EX: {{ns:6}} -> File canonical_add(ns.Id(), ns.Name_bry()); } private static void canonical_add(int ns_id, byte[] ns_name) { - Xow_ns ns = new Xow_ns(ns_id, Xow_ns_case_.Id_all, ns_name, false); + Xow_ns ns = new Xow_ns(ns_id, Xow_ns_case_.Tid__all, ns_name, false); canonical.Add(ns_name, ns); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts_log.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts_log.java index 2efee41e7..763ada371 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts_log.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts_log.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.log_msgs.*; public class Pfunc_titleparts_log { private static final Gfo_msg_grp owner = Gfo_msg_grp_.new_(Xoa_app_.Nde, "tmpl_func_titleparts"); public static final Gfo_msg_itm 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 ac203b665..cf3b2fbcc 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.*; +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/proofreadPage/Pp_pagelist_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java index af245aedf..41c278bad 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_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.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Pp_pagelist_nde implements Xox_xnde { // TODO: public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java index 9333e8caa..4dc2a07dc 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_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.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Pp_pagequality_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless) diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java index 33872c594..b26b76dba 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.xowa.apps.cfgs.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; diff --git a/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java b/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java index ff089d217..6c6f05a59 100644 --- a/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_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.quiz; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*; public class Quiz_xnde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} diff --git a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java b/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java index 6fd16cf44..fe067d47e 100644 --- a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/rss/Rss_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.rss; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*; public class Rss_xnde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} diff --git a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde_tst.java b/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde_tst.java index 03dca69d9..4a18635fc 100644 --- a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde_tst.java @@ -21,7 +21,7 @@ public class Rss_xnde_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} @Test public void Basic() { - fxt.Test_parse_page_all_str("http://blog.wikimedia.org/feed/", "XOWA does not support this extension: <rss max='6'>http://blog.wikimedia.org/feed/</rss>"); + fxt.Test_parse_page_all_str("http://blog.wikimedia.org/feed/", "XOWA does not support this extension: <rss max='6'>http://blog.wikimedia.org/feed/</rss>"); fxt.Test_parse_page_all_str("", "XOWA does not support this extension: <rss />"); } } 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 f1cd20e7c..ac3c258fd 100644 --- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java @@ -17,7 +17,7 @@ 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.xowa.htmls.*; import gplx.xowa.files.*; +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.*; public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { @@ -68,7 +68,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { if (ly_process.Exe_exists() == Bool_.N_byte) {Html_write_code_as_pre(bfr, app); return;} Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); tmp_bfr.Add(code).Add_byte_pipe().Add_int_bool(lang_is_abc).Add_byte_pipe().Add_int_bool(code_is_raw); - sha1 = gplx.security.HashAlgo_.Sha1.Calc_hash_bry(tmp_bfr.To_bry_and_rls()); // NOTE: MW transforms to base32; for now, keep sha1 as raw + sha1 = gplx.core.security.HashAlgo_.Sha1.Calc_hash_bry(tmp_bfr.To_bry_and_rls()); // NOTE: MW transforms to base32; for now, keep sha1 as raw sha1_prefix = String_.new_a7(sha1, 0, 8); output_dir = app.Fsys_mgr().File_dir().GenSubDir_nest(wiki.Domain_str(), "lilypond", Char_.To_str(sha1[0]), Char_.To_str(sha1[1]), String_.new_a7(sha1)); // NOTE: MW also adds an extra level for 8-len; EX: /.../sha1_32_len/sha1_8_len/ png_file = output_dir.GenSubFil(sha1_prefix + ".png"); @@ -180,9 +180,9 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { } public static byte[] Get_lilypond_version(String rslt_str) { byte[] rslt = Bry_.new_u8(rslt_str); // expect 1st line to be of form "GNU LilyPond 2.16.2" - int bgn_pos = Bry_find_.Find_fwd(rslt, Version_find_bgn); if (bgn_pos == Bry_.NotFound) return Version_unknown; + int bgn_pos = Bry_find_.Find_fwd(rslt, Version_find_bgn); if (bgn_pos == Bry_find_.Not_found) return Version_unknown; bgn_pos += Version_find_bgn.length + 1; // +1 for trailing space - int end_pos = Bry_find_.Find_fwd(rslt, Byte_ascii.Nl, bgn_pos); if (bgn_pos == Bry_.NotFound) return Version_unknown; + int end_pos = Bry_find_.Find_fwd(rslt, Byte_ascii.Nl, bgn_pos); if (bgn_pos == Bry_find_.Not_found) return Version_unknown; if (rslt[end_pos - 1] == Byte_ascii.Cr) end_pos = end_pos - 1; return Bry_.Mid(rslt, bgn_pos, end_pos); } 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 209b54c54..06a011a42 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java @@ -169,7 +169,7 @@ public class Scrib_core { func_args = Scrib_kv_utl_.base1_many_(proc); func_rslt = engine.CallFunction(lib_mw.Mod().Fncs_get_id("executeFunction"), func_args); // call function now String rslt = Scrib_kv_utl_.Val_to_str(func_rslt, 0); // rslt expects an array with 1 scalar value - bfr.Add_str(rslt); + bfr.Add_str_u8(rslt); // byte[] rslt_bry = Bry_.new_u8(rslt); // CHART // gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx = ctx; // bfr.Add(rslt_bry); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java index eea651d27..875f7f3d9 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java @@ -31,7 +31,7 @@ public class Scrib_fsys_mgr { public String Get_or_null(String name) { if (libs == null) libs = libs_init(script_dir); Object lib_fil_obj = libs.Get_by(name); if (lib_fil_obj == null) return null; - gplx.ios.Io_fil lib_fil = (gplx.ios.Io_fil)lib_fil_obj; + gplx.core.ios.Io_fil lib_fil = (gplx.core.ios.Io_fil)lib_fil_obj; String lib_data = lib_fil.Data(); if (lib_data == null) { lib_data = Io_mgr.Instance.LoadFilStr(lib_fil.Url()); @@ -46,7 +46,7 @@ public class Scrib_fsys_mgr { for (int i = 0; i < fils_len; i++) { Io_url fil = fils[i]; if (!String_.Eq(fil.Ext(), ".lua")) continue; // ignore readme.txt, readme - gplx.ios.Io_fil fil_itm = new gplx.ios.Io_fil(fil, null); + gplx.core.ios.Io_fil fil_itm = new gplx.core.ios.Io_fil(fil, null); rv.Add_if_dupe_use_1st(fil.NameOnly(), fil_itm); rv.Add_if_dupe_use_1st(String_.Replace(String_.DelEndIf(fil.GenRelUrl_orEmpty(script_dir), ".lua"), "\\", "/"), fil_itm); } @@ -55,7 +55,7 @@ public class Scrib_fsys_mgr { public void Shrink() { int len = libs.Count(); for (int i = 0; i < len; i++) { - gplx.ios.Io_fil fil = (gplx.ios.Io_fil)libs.Get_at(i); + gplx.core.ios.Io_fil fil = (gplx.core.ios.Io_fil)libs.Get_at(i); fil.Url_(null).Data_(null); } } 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 9e78bfc4a..03c36d159 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 @@ -58,10 +58,10 @@ public class Scrib_invoke_func extends Pf_func_base { if (invoke_wkr != null) invoke_wkr.Eval_end(ctx.Cur_page(), mod_name, fnc_name, log_time_bgn); } - catch (Exception e) { - Error(bfr, wiki.Msg_mgr(), e); + catch (Throwable e) { Err err = Err_.cast_or_make(e); - bfr.Add(Html_tag_.Comm_bgn).Add_str(err.To_str__full()).Add(Html_tag_.Comm_end); + Error(bfr, wiki.Msg_mgr(), err); + bfr.Add(Html_tag_.Comm_bgn).Add_str_u8(err.To_str__full()).Add(Html_tag_.Comm_end); Scrib_err_filter_mgr err_filter_mgr = invoke_wkr == null ? null : invoke_wkr.Err_filter_mgr(); if ( err_filter_mgr == null // no err_filter_mgr defined; || err_filter_mgr.Count_eq_0( ) // err_filter_mgr exists, but no definitions @@ -70,7 +70,7 @@ public class Scrib_invoke_func extends Pf_func_base { Scrib_core.Core_invalidate_when_page_changes(); // NOTE: invalidate core when page changes, not for rest of page, else page with many errors will be very slow due to multiple invalidations; PAGE:th.d:all; DATE:2014-10-03 } } - public static void Error(Bry_bfr bfr, Xow_msg_mgr msg_mgr, Exception e) {Error(bfr, msg_mgr, Err_.cast_or_make(e).To_str__top_wo_args());}// NOTE: must use "short" error message to show in wikitext; DATE:2015-07-27 + public static void Error(Bry_bfr bfr, Xow_msg_mgr msg_mgr, Err err) {Error(bfr, msg_mgr, Err_.cast_or_make(err).To_str__top_wo_args());}// NOTE: must use "short" error message to show in wikitext; DATE:2015-07-27 public static void Error(Bry_bfr bfr, Xow_msg_mgr msg_mgr, String error) { byte[] script_error_msg = msg_mgr.Val_by_id(Xol_msg_itm_.Id_scribunto_parser_error); error_fmtr.Bld_bfr_many(bfr, script_error_msg, error); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java index 2639d51be..7bceeb3af 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java @@ -88,7 +88,7 @@ public class Scrib_invoke_func_fxt { fxt.Test_parse_page_tmpl_str(raw, tmp_bfr.To_str_and_clear()); } public void Test_error(Exception e, String expd) { - Scrib_invoke_func.Error(tmp_bfr, fxt.Wiki().Msg_mgr(), e); + Scrib_invoke_func.Error(tmp_bfr, fxt.Wiki().Msg_mgr(), Err_.cast_or_make(e)); Tfds.Eq_str(expd, tmp_bfr.To_str_and_clear(), "error"); } public void Test_lib_proc(Scrib_lib lib, String func_name, Object[] args, String expd) {Test_lib_proc_kv(lib, func_name, Scrib_kv_utl_.base1_many_(args), expd);} @@ -138,7 +138,7 @@ public class Scrib_invoke_func_fxt { for (int i = 0; i < len; ++i) { if (i != 0) bfr.Add_byte(Byte_ascii.Semic); KeyVal kv = ary[i]; - bfr.Add_str(Object_.Xto_str_strict_or_null_mark(kv.Val())); + bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(kv.Val())); } return bfr.To_str_and_clear(); } @@ -201,11 +201,11 @@ class Scrib_lua_rsp_bldr { private void Bld_bool(Bry_bfr bfr, boolean v) {bfr.Add_str_a7("b:").Add_int_fixed(v ? 1 : 0, 1).Add_byte(Byte_ascii.Semic);} private void Bld_int(Bry_bfr bfr, int v) {bfr.Add_str_a7("i:").Add_int_variable(v).Add_byte(Byte_ascii.Semic);} private void Bld_double(Bry_bfr bfr, double v) {bfr.Add_str_a7("d:").Add_double(v).Add_byte(Byte_ascii.Semic);} - private void Bld_str(Bry_bfr bfr, String v) {bfr.Add_str_a7("s:").Add_int_variable(Bry_.new_u8(v).length).Add_str(":\"").Add_str(v).Add_str("\";");} // NOTE: must use Bry_.new_u8(v).length to calculate full bry len + private void Bld_str(Bry_bfr bfr, String v) {bfr.Add_str_a7("s:").Add_int_variable(Bry_.new_u8(v).length).Add_str_a7(":\"").Add_str_a7(v).Add_str_a7("\";");} // NOTE: must use Bry_.new_u8(v).length to calculate full bry len private void Bld_fnc(Bry_bfr bfr, Scrib_lua_proc v) {bfr.Add_str_a7("O:42:\"Scribunto_LuaStandaloneInterpreterFunction\":1:{s:2:\"id\";i:").Add_int_variable(v.Id()).Add_byte(Byte_ascii.Semic).Add_byte(Byte_ascii.Curly_end);} private void Bld_kv_ary(Bry_bfr bfr, KeyVal[] ary) { int len = ary.length; - bfr.Add_str_a7("a:").Add_int_variable(len).Add_str(":{"); + bfr.Add_str_a7("a:").Add_int_variable(len).Add_str_a7(":{"); for (int i = 0; i < len; i++) { KeyVal kv = ary[i]; Bld_obj(bfr, kv.Key_as_obj()); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_args.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_args.java index 9a2d6649b..0c9287efa 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_args.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_args.java @@ -92,9 +92,9 @@ public class Scrib_proc_args { for (int i = 0; i < len; i++) { KeyVal kv = kvs[i]; if (i != 0) bfr.Add_byte(Byte_ascii.Amp); - bfr.Add_str(kv.Key()); + bfr.Add_str_u8(kv.Key()); bfr.Add_byte(Byte_ascii.Eq); - bfr.Add_str(kv.Val_to_str_or_empty()); + bfr.Add_str_u8(kv.Val_to_str_or_empty()); } return bfr.To_bry_and_rls(); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java index ee24518ba..f275819ca 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java @@ -27,12 +27,12 @@ public class Luaj_server_func_dbg extends VarArgFunction { public Varargs invoke(Varargs args) { int len = args.narg(); Bry_bfr bfr = Bry_bfr.new_(); - bfr.Add_str(""); + bfr.Add_str_a7(""); for (int i = 1; i <= len; ++i) { String s = args.arg(i).toString(); - bfr.Add_str(gplx.langs.htmls.Html_utl.Escape_html_as_str(s) + " "); + bfr.Add_str_u8(gplx.langs.htmls.Html_utl.Escape_html_as_str(s) + " "); } - bfr.Add_str("
    "); + bfr.Add_str_a7("

    "); core.Page().Html_data().Xtn_scribunto_dbg_(bfr.To_bry_and_clear()); return NONE; } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java index 2b7a102a1..3b79aa6e3 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_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.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; -import gplx.texts.*; +import gplx.core.texts.*; import gplx.xowa.xtns.scribunto.libs.*; public class Process_engine implements Scrib_engine { private Scrib_core core; private Xoae_app app; private Scrib_xtn_mgr scrib_opts; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server.java index 5e0ce0ec0..722337ce9 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server.java @@ -17,10 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; import gplx.core.threads.*; -import gplx.texts.HexDecUtl; +import gplx.core.texts.HexDecUtl; import gplx.xowa.xtns.scribunto.*; import gplx.core.threads.Thread_adp_; -import gplx.ios.*; import java.io.*; public class Process_server implements Scrib_server { private Process process; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java index 3fb74dfd4..0199850ea 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java @@ -73,7 +73,7 @@ class Process_server_mock_rcvd_val implements Process_server_mock_rcvd { Class kv_val_type = kv_val.getClass(); boolean kv_val_is_array = Type_adp_.Eq(kv_val_type, KeyVal[].class); if (print_key && !kv_val_is_array) - bfr.Add_str(kv.Key()).Add_byte(Byte_ascii.Colon); + bfr.Add_str_u8(kv.Key()).Add_byte(Byte_ascii.Colon); if (Type_adp_.Eq(kv_val_type, Bool_.Cls_ref_type)) bfr.Add(Bool_.cast(kv_val) ? gplx.langs.jsons.Json_itm_.Bry__true : gplx.langs.jsons.Json_itm_.Bry__false); else if (kv_val_is_array) { @@ -86,7 +86,7 @@ class Process_server_mock_rcvd_val implements Process_server_mock_rcvd { } } else - bfr.Add_str(kv.Val_to_str_or_empty()); + bfr.Add_str_u8(kv.Val_to_str_or_empty()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java index 069a86519..ff1639f39 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr.java @@ -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.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; -import gplx.ios.*; import gplx.texts.*; +import gplx.core.ios.*; import gplx.core.texts.*; public class Process_stream_rdr { public Process_stream_rdr(byte[] bry_header, byte[] bry_body) {this.bry_header = bry_header; this.bry_body = bry_body;} private byte[] bry_header, bry_body; public IoStream_stream_rdr Rdr() {return rdr;} IoStream_stream_rdr rdr = new IoStream_stream_rdr(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java index 193684958..6794ceff7 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; import org.junit.*; -import gplx.ios.*; +import gplx.core.ios.*; public class Process_stream_rdr_tst { @Before public void init() {fxt.Clear();} Scrib_lua_srl_fxt fxt = new Scrib_lua_srl_fxt(); @Test public void Body_basic() { 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 e5ed5c84b..3a642bee9 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 @@ -142,17 +142,17 @@ public class Scrib_lib_mw implements Scrib_lib { return invk.Args_get_by_key(src, Bry_.To_a7_bry(idx + 1, 1)); } private static boolean Verify_arg_key(byte[] src, int idx, Arg_nde_tkn nde) { - int key_int = Bry_.NotFound; + int key_int = Bry_find_.Not_found; byte[] key_dat_ary = nde.Key_tkn().Dat_ary(); if (Env_.Mode_testing() && src == null) // some tests will always pass a null src; - key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_.NotFound); + key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found); else { if (Bry_.Len_eq_0(key_dat_ary)) // should be called by current context; - key_int = Bry_.To_int_or(src, nde.Key_tkn().Src_bgn(), nde.Key_tkn().Src_end(), Bry_.NotFound); + key_int = Bry_.To_int_or(src, nde.Key_tkn().Src_bgn(), nde.Key_tkn().Src_end(), Bry_find_.Not_found); else // will be called by parent context; note that this calls Xot_defn_tmpl_.Make_itm which sets a key_dat_ary; DATE:2013-09-23 - key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_.NotFound); + key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found); } - if (key_int == Bry_.NotFound) // key is not-numeric + if (key_int == Bry_find_.Not_found) // key is not-numeric return false; else // key is numeric return idx == key_int; @@ -286,7 +286,7 @@ public class Scrib_lib_mw implements Scrib_lib { byte[] fnc_name = fnc_name_ref.Val(); int fnc_name_len = fnc_name.length; int fnc_name_colon_pos = Bry_find_.Find_fwd(fnc_name, Byte_ascii.Colon, 0, fnc_name_len); - if (fnc_name_colon_pos == Bry_.NotFound) { + if (fnc_name_colon_pos == Bry_find_.Not_found) { KeyVal arg_argx = (KeyVal)rv.Get_at(0); argx_ref.Val_(arg_argx.Val_to_bry()); rv.Del_at(0); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java index cdef7eccb..82a67c716 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java @@ -119,11 +119,11 @@ public class Scrib_lib_title implements Scrib_lib { String anchor_str = args.Cast_str_or_null(2); String xwiki_str = args.Cast_str_or_null(3); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_k004(); - if (xwiki_str != null) tmp_bfr.Add_str(xwiki_str).Add_byte(Byte_ascii.Colon); + if (xwiki_str != null) tmp_bfr.Add_str_u8(xwiki_str).Add_byte(Byte_ascii.Colon); if (Bry_.Len_gt_0(ns_bry)) // only prefix ns if available; EX:"Template:Title"; else will get ":Title"; DATE:2014-10-30 tmp_bfr.Add(ns_bry).Add_byte(Byte_ascii.Colon); - tmp_bfr.Add_str(ttl_str); - if (anchor_str != null) tmp_bfr.Add_byte(Byte_ascii.Hash).Add_str(anchor_str); + tmp_bfr.Add_str_u8(ttl_str); + if (anchor_str != null) tmp_bfr.Add_byte(Byte_ascii.Hash).Add_str_u8(anchor_str); Xoa_ttl ttl = Xoa_ttl.parse(wiki, tmp_bfr.To_bry_and_rls()); if (ttl == null) return rslt.Init_obj(null); // invalid title; exit; return rslt.Init_obj(GetInexpensiveTitleData(ttl)); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java index 516126e54..62640d466 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java @@ -63,7 +63,7 @@ public class Scrib_lib_ustring implements Scrib_lib { return rslt.Init_many_objs(bgn_codepoint_idx + Scrib_lib_ustring.Base1, bgn_codepoint_idx + Scrib_lib_ustring.Base1 - 1); if (plain) { int pos = String_.FindFwd(text_str, regx, bgn_codepoint_idx); - boolean found = pos != Bry_.NotFound; + boolean found = pos != Bry_find_.Not_found; return found ? rslt.Init_many_objs(pos + Scrib_lib_ustring.Base1, pos + Scrib_lib_ustring.Base1 + String_.Len(regx) - Scrib_lib_ustring.End_adj) : rslt.Init_ary_empty() @@ -224,14 +224,14 @@ class Scrib_lib_ustring_gsub_mgr { for (int i = 0; i < len; i++) { if (limit > -1 && repl_count == limit) break; Regx_match rslt = rslts[i]; - tmp_bfr.Add_str(String_.Mid(text, pos, rslt.Find_bgn())); // NOTE: regx returns char pos (not bry); must add as String, not bry; DATE:2013-07-17 + tmp_bfr.Add_str_u8(String_.Mid(text, pos, rslt.Find_bgn())); // NOTE: regx returns char pos (not bry); must add as String, not bry; DATE:2013-07-17 Exec_repl_itm(tmp_bfr, repl_tid, repl_bry, text, rslt); pos = rslt.Find_end(); ++repl_count; } int text_len = String_.Len(text); if (pos < text_len) - tmp_bfr.Add_str(String_.Mid(text, pos, text_len)); // NOTE: regx returns char pos (not bry); must add as String, not bry; DATE:2013-07-17 + tmp_bfr.Add_str_u8(String_.Mid(text, pos, text_len)); // NOTE: regx returns char pos (not bry); must add as String, not bry; DATE:2013-07-17 return tmp_bfr.To_str_and_clear(); } private void Exec_repl_itm(Bry_bfr tmp_bfr, byte repl_tid, byte[] repl_bry, String text, Regx_match match) { @@ -257,7 +257,7 @@ class Scrib_lib_ustring_gsub_mgr { idx -= List_adp_.Base1; if (idx < match.Groups().length) { // retrieve numbered capture; TODO: support more than 9 captures Regx_group grp = match.Groups()[idx]; - tmp_bfr.Add_str(String_.Mid(text, grp.Bgn(), grp.End())); // NOTE: grp.Bgn() / .End() is for String pos (bry pos will fail for utf8 strings) + tmp_bfr.Add_str_u8(String_.Mid(text, grp.Bgn(), grp.End())); // NOTE: grp.Bgn() / .End() is for String pos (bry pos will fail for utf8 strings) } else { tmp_bfr.Add_byte(Byte_ascii.Percent); @@ -297,7 +297,7 @@ class Scrib_lib_ustring_gsub_mgr { String find_str = String_.Mid(text, match_bgn, match_end); // NOTE: rslt.Bgn() / .End() is for String pos (bry pos will fail for utf8 strings) Object actl_repl_obj = repl_hash.Get_by(find_str); if (actl_repl_obj == null) // match found, but no replacement specified; EX:"abc", "[ab]", "a:A"; "b" in regex but not in tbl; EX:d:DVD; DATE:2014-03-31 - tmp_bfr.Add_str(find_str); + tmp_bfr.Add_str_u8(find_str); else tmp_bfr.Add((byte[])actl_repl_obj); break; @@ -319,7 +319,7 @@ class Scrib_lib_ustring_gsub_mgr { } } KeyVal[] rslts = core.Interpreter().CallFunction(repl_func.Id(), luacbk_args); - tmp_bfr.Add_str(Scrib_kv_utl_.Val_to_str(rslts, 0)); + tmp_bfr.Add_str_u8(Scrib_kv_utl_.Val_to_str(rslts, 0)); break; } default: throw Err_.new_unhandled(repl_tid); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java index 75992706d..0f4a0c663 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java @@ -79,7 +79,7 @@ public class Scrib_lib_wikibase implements Scrib_lib { } public boolean ResolvePropertyId(Scrib_proc_args args, Scrib_proc_rslt rslt) { byte[] prop = args.Pull_bry(0); if (Bry_.Len_eq_0(prop)) return rslt.Init_ary_empty(); - Wdata_doc wdoc = Get_wdoc(Bry_.Add(Byte_ascii.Ltr_p, prop)); if (wdoc == null) return rslt.Init_ary_empty(); + Wdata_doc wdoc = Get_wdoc(prop); if (wdoc == null) return rslt.Init_ary_empty(); // prop should be of form "P123"; do not add "P"; PAGE:no.w:Anne_Enger; DATE:2015-10-27 return rslt.Init_obj(wdoc.Label_list__get_or_fallback(core.Lang())); } public boolean GetSiteLinkPageName(Scrib_proc_args args, Scrib_proc_rslt rslt) { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java index fe8f3f5f0..6f43b1ee1 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java @@ -406,12 +406,12 @@ class Scrib_lib_wikibase_srl_fxt { } private void Xto_str(Bry_bfr bfr, KeyVal kv, int depth) { bfr.Add_byte_repeat(Byte_ascii.Space, depth * 2); - bfr.Add_str(kv.Key()).Add_byte(Byte_ascii.Colon); + bfr.Add_str_u8(kv.Key()).Add_byte(Byte_ascii.Colon); Object kv_val = kv.Val(); if (kv_val == null) {bfr.Add_str_a7("null").Add_byte_nl(); return;} Class kv_val_cls = kv_val.getClass(); if (Type_adp_.Eq(kv_val_cls, KeyVal[].class)) {bfr.Add_byte_nl(); Xto_str(bfr, (KeyVal[])kv_val, depth + 1);} else if (Type_adp_.Eq(kv_val_cls, KeyVal[].class)) {bfr.Add_byte_nl(); Xto_str(bfr, (KeyVal)kv_val, depth + 1);} - else bfr.Add_byte(Byte_ascii.Apos).Add_str(Object_.Xto_str_strict_or_empty(kv_val)).Add_byte(Byte_ascii.Apos).Add_byte_nl(); + else bfr.Add_byte(Byte_ascii.Apos).Add_str_u8(Object_.Xto_str_strict_or_empty(kv_val)).Add_byte(Byte_ascii.Apos).Add_byte_nl(); } } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java index e82b1f4d0..460b20b2a 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java @@ -87,6 +87,6 @@ public class Scrib_lib_wikibase_tst { } @Test public void ResolvePropertyId() { wdata_fxt.Init_pages_add(wdata_fxt.Wdoc_bldr("Property:p2").Add_label("zh-hans", "prop_a").Xto_wdoc()); - fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_resolvePropertyId, Object_.Ary("2"), "prop_a"); + fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_resolvePropertyId, Object_.Ary("p2"), "prop_a"); } } diff --git a/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java index 0797abd2d..40d4213bc 100644 --- a/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; public class Synh_xtn_nde implements Xox_xnde, Mwh_atr_itm_owner { private byte[] lang = Bry_.Empty; private byte[] style = null; private byte[] enclose = Bry_.Empty; private boolean line_enabled = false; private int start = 1; private Int_rng_mgr highlight_idxs = Int_rng_mgr_null.Instance; diff --git a/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java b/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java index d28ce832f..3ea675367 100644 --- a/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_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.templateData; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xtn_templateData_nde implements Xox_xnde { public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java index 8ec72cc71..43b59473a 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.translates; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xop_languages_xnde implements Xox_xnde { public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; @@ -31,7 +31,7 @@ public class Xop_languages_xnde implements Xox_xnde { private Xoa_ttl Root_ttl_of(Xowe_wiki wiki, Xoa_ttl ttl) { byte[] page_bry = ttl.Page_db(); int slash_pos = Bry_find_.Find_bwd(page_bry, Xoa_ttl.Subpage_spr); - if (slash_pos == Bry_.NotFound) return ttl; + if (slash_pos == Bry_find_.Not_found) return ttl; byte[] root_bry = Bry_.Mid(page_bry, 0, slash_pos); return Xoa_ttl.parse(wiki, ttl.Ns().Id(), root_bry); } diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java index c3253e41b..2a9747e9d 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_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.translates; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_translate_xnde implements Xox_xnde { public Xop_root_tkn Xtn_root() {return xtn_root;} private Xop_root_tkn xtn_root; diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java index 509dfe55b..2f084a229 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java @@ -25,8 +25,8 @@ public class Xop_tvar_lxr implements Xop_lxr { public void Term(Btrie_fast_mgr core_trie) {} private static final byte[] Hook_bgn = Bry_.new_a7(""); public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { - int rhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, cur_pos); if (rhs_end == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); - int lhs_bgn = Bry_find_.Find_fwd(src, Close_nde , rhs_end); if (lhs_bgn == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos); + int rhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, cur_pos); if (rhs_end == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); + int lhs_bgn = Bry_find_.Find_fwd(src, Close_nde , rhs_end); if (lhs_bgn == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos); byte[] body = Bry_.Mid(src, rhs_end + Int_.Const_position_after_char, lhs_bgn); Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx.Wiki()); Xop_root_tkn sub_root = tkn_mkr.Root(body); 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 d6ff47f32..5df2436f0 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 @@ -116,7 +116,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { public static byte[] Get_low_qid(byte[] bry) { // HACK: wdata currently does not differentiate between "Vandalism" and "Wikipedia:Vandalism", combining both into "Vandalism:q4664011|q6160"; get lowest qid int bry_len = bry.length; int pipe_pos = Bry_find_.Find_fwd(bry, Byte_ascii.Pipe, 0, bry_len); - if (pipe_pos == Bry_.NotFound) return bry; + if (pipe_pos == Bry_find_.Not_found) return bry; byte[][] qids = Bry_split_.Split(bry, Byte_ascii.Pipe); int qids_len = qids.length; int qid_min = Int_.Max_value; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java index bece79364..6f426f152 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java @@ -52,14 +52,14 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { tmp_bfr.Add(itm.Amount()).Add_byte_space(); if (hi_diff.Eq(lo_diff)) { // delta is same in both directions; EX: val=50 hi=60 lo=40 -> hi_diff == lo_diff == 10 if (hi_diff_val != 0) // skip if 0 - tmp_bfr.Add(msgs.Sym_plusminus()).Add_str(hi_diff.To_str()); + tmp_bfr.Add(msgs.Sym_plusminus()).Add_str_a7(hi_diff.To_str()); } else { // delta is diff in both directions; EX: val=50 hi=60 lo=30 -> hi_diff == 10, lo_diff == 20 if (hi_diff_val != 0) // skip if 0 - tmp_bfr.Add(msgs.Sym_plus()).Add_str(hi_diff.To_str()); + tmp_bfr.Add(msgs.Sym_plus()).Add_str_a7(hi_diff.To_str()); if (lo_diff_val != 0) { // skip if 0 if (hi_diff_val != 0) tmp_bfr.Add(Time_plus_minus_spr); - tmp_bfr.Add(msgs.Sym_minus()).Add_str(lo_diff.To_str()); + tmp_bfr.Add(msgs.Sym_minus()).Add_str_a7(lo_diff.To_str()); } } byte[] unit = itm.Unit(); 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 36d883486..cdd411b56 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,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.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.core.criterias.*; 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) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java index 3f706a76c..ea5c18313 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.ios.*; +import gplx.langs.jsons.*; import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*; import gplx.xowa.xtns.wdatas.imports.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java index d1e3ad7bd..1d4426e89 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.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.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; class Wdata_idx_wtr { public Wdata_idx_wtr(Io_url dump_dir, int dump_fil_max, Io_url make_dir) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java index d2a919970..7fbbd14b9 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.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.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.langs.jsons.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.wikis.nss.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java index 499594a68..e82f4779a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java @@ -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.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.ios.*; +import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.tbls.*; class Xob_wbase_json_dump_parser { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java index 04eb5b5db..438266466 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java @@ -58,14 +58,14 @@ public class Xob_wdata_pid_base_tst { } public static String json_(String entity_id, String grp_key, String[] grp_vals) { Bry_bfr bfr = Bry_bfr.new_(); - bfr.Add_str_a7("{ 'entity':'").Add_str(entity_id).Add_byte(Byte_ascii.Apos).Add_byte_nl(); - bfr.Add_str_a7(", '").Add_str(grp_key).Add_str("':").Add_byte_nl(); + bfr.Add_str_a7("{ 'entity':'").Add_str_u8(entity_id).Add_byte(Byte_ascii.Apos).Add_byte_nl(); + bfr.Add_str_a7(", '").Add_str_u8(grp_key).Add_str_a7("':").Add_byte_nl(); int len = grp_vals.length; for (int i = 0; i < len; i += 2) { bfr.Add_byte_repeat(Byte_ascii.Space, 2); bfr.Add_byte(i == 0 ? Byte_ascii.Curly_bgn : Byte_ascii.Comma).Add_byte(Byte_ascii.Space); - bfr.Add_byte(Byte_ascii.Apos).Add_str(grp_vals[i ]).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Colon); - bfr.Add_byte(Byte_ascii.Apos).Add_str(grp_vals[i + 1]).Add_byte(Byte_ascii.Apos).Add_byte_nl(); + bfr.Add_byte(Byte_ascii.Apos).Add_str_u8(grp_vals[i ]).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Colon); + bfr.Add_byte(Byte_ascii.Apos).Add_str_u8(grp_vals[i + 1]).Add_byte(Byte_ascii.Apos).Add_byte_nl(); } bfr.Add_str_a7(" }").Add_byte_nl(); bfr.Add_str_a7("}").Add_byte_nl(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java index 5c8b7e60d..46b1b8ea6 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java @@ -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.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.ios.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.langs.jsons.*; import gplx.core.ios.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.sites.*; 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 43de8ad92..96b737f7f 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 @@ -39,10 +39,10 @@ public class Wdata_itemByTitle_page implements Xows_page { page_bry = arg_hash.Get_val_bry_or(Arg_page, Bry_.Empty); } int site_bgn = Bry_find_.Find_fwd(raw_bry, Xoa_ttl.Subpage_spr); - if (site_bgn != Bry_.NotFound) { // leaf arg is available + if (site_bgn != Bry_find_.Not_found) { // leaf arg is available int page_bgn = Bry_find_.Find_fwd(raw_bry, Xoa_ttl.Subpage_spr, site_bgn + 1); int raw_bry_len = raw_bry.length; - if (page_bgn != Bry_.NotFound && page_bgn < raw_bry_len) { // pipe is found and not last char (EX: "enwiki/" is invalid + if (page_bgn != Bry_find_.Not_found && page_bgn < raw_bry_len) { // pipe is found and not last char (EX: "enwiki/" is invalid site_bry = Bry_.Mid(raw_bry, site_bgn + 1, page_bgn); page_bry = Bry_.Mid(raw_bry, page_bgn + 1, raw_bry_len); } diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java index 8828e1df6..e24a565a6 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java @@ -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.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xop_xowa_cmd implements Xox_xnde { public Xop_root_tkn Xtn_root() {throw Err_.new_unimplemented_w_msg("xowa_cmd.xtn_root should not be called");} diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java index 461ef6e9c..59f716330 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java @@ -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.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; import gplx.xowa.htmls.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xox_xowa_html_cmd implements Xox_xnde, Mwh_atr_itm_owner { private byte pos_val = Pos_head_end; 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 b8230e9c7bf0e371ce41e38894c3bc3a706d35e3..fe8257d3e79e9998e7cd1d16b66faa33c815a770 100644 GIT binary patch delta 416 zcmZozz|^pSX#LuqFrDjxR z7R0CKB_`#hrc_S8FY`>r($vVpG|e(m*UUKCNY})`G*vgrJjF~m(K6N8EX6RGMqe1 zJ`3ocRg>8jWchej@e1%7^M>(O@|@v$2XtEn&*U>YB77)r5uN-_M`rR1oeRV{=#K7Q zu!H94UDGDUL99}&s?z+7lNZQ~Y~HA^EkKknHaV=-2l~>`(9+1l(3p$)zY-HS1EV;H jCL<#U2P26*Tgb8RW~Ww z%s@9K#l$eh#Kb5i(a>n}OWB>w271Pmm&#pKF)%bUF*7qy0%}Mx(KP|8(oHfnGuKTu zGD}M_GO#o&7Dfg}X2#}R%>R{`xEUD5IW!p=IXD>k doJ-Q