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);
+ }
+ }
}