diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java index 53a08a745..bf16595e1 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java @@ -102,15 +102,26 @@ public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr { arg_tid = Xop_lnki_arg_parser.Tid_target; } - // if just "class" or "alt", treat as caption; EX:[[A|alt]] -> caption=alt x> caption=A ISSUE#:303 DATE:2018-12-16 - switch (arg_tid) { - case Xop_lnki_arg_parser.Tid_class: - case Xop_lnki_arg_parser.Tid_alt: - if (!arg.KeyTkn_exists()){ - arg_tid = Xop_lnki_arg_parser.Tid_caption; - } - break; + // if not File / Media ns, then treat as caption; ISSUE#:303; DATE:2019-03-24 + if (lnki.Ttl() != null && !lnki.Ttl().Ns().Id_is_file_or_media()) { + arg_tid = Xop_lnki_arg_parser.Tid_caption; } + // if key-less keyword, treat as caption; EX:[[File:A.png|alt]] -> caption=alt x> caption=A.png ISSUE#:303 DATE:2018-12-16 + else { + switch (arg_tid) { + case Xop_lnki_arg_parser.Tid_class: + case Xop_lnki_arg_parser.Tid_alt: + case Xop_lnki_arg_parser.Tid_link: + case Xop_lnki_arg_parser.Tid_page: + case Xop_lnki_arg_parser.Tid_thumbtime: + // case Xop_lnki_arg_parser.Tid_noicon: TODO: uncomment b/c keyword is deprecated; WHEN: when integrating TimedMediaHandler; REF.MW:https://www.mediawiki.org/wiki/Extension:TimedMediaHandler; DATE:2019-03-24 + if (!arg.KeyTkn_exists()){ + arg_tid = Xop_lnki_arg_parser.Tid_caption; + } + break; + } + } + switch (arg_tid) { case Xop_lnki_arg_parser.Tid_none: lnki.Align_h_(Xop_lnki_type.Id_none); break; case Xop_lnki_arg_parser.Tid_border: lnki.Border_(Bool_.Y_byte); break; 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 f2e914d2b..c50fde3ab 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 @@ -312,9 +312,25 @@ public class Xop_lnki_wkr__basic_tst { fxt.Test_parse_page_all_str("[[Src]]" , "Src"); // show [[Src]] as visited since it exists in history fxt.Test_parse_page_all_str("[[Other]]" , "Other"); // show other pages as not visited } - @Test public void Caption__outlier() { + @Test public void File_keywords__ignore_if_not_file_ns() { // ISSUE#:303 DATE:2019-03-24 fxt.Test_parse_page_all_str("[[A|class]]", "class"); fxt.Test_parse_page_all_str("[[A|alt]]", "alt"); + fxt.Test_parse_page_all_str("[[A|sub]]", "sub"); + fxt.Test_parse_page_all_str("[[A|sup]]", "sup"); fxt.Test_parse_page_all_str("[[A|alt|a|b]]", "alt|a|b"); } + @Test public void File_keywords__ignore_if_no_key() { // ISSUE#:303; DATE:2019-03-24 + // assert treated as captions if no key + Test__File_keywords__ignore_if_no_key("class", "alt", "link", "page", "thumbtime"); + + // assert not treated as captions if no key + fxt.Test_parse_page_all_str("[[File:A.png|top]]", "\"\""); + } + private void Test__File_keywords__ignore_if_no_key(String... keywords) { + for (String keyword : keywords) { + String wtxt = "[[File:A.png|" + keyword + "]]"; + String html = "\"""; + fxt.Test_parse_page_all_str(wtxt, html); + } + } }