From 6a74746113c724e750620d10b58ad6bac94060c9 Mon Sep 17 00:00:00 2001 From: Stephen Kraus <8003332+stephenmk@users.noreply.github.com> Date: Sat, 14 May 2022 08:59:38 -0500 Subject: Add new structured content features: lists and the HTML `lang` attribute (#2129) * Add support for structured content lists and `list-style-type` style A full list of supported style types is documented here: https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type There's nothing in this code preventing a term bank from assigning, for example, a `list-style-type` style to a `div` element, but it doesn't seem like browsers will complain about things like that. * Add support for `lang` attribute in structured content Support added for the following node types: "ruby", "rt", "rp", "table", "thead", "tbody", "tfoot", "tr", "td", "th", "span", "div", "ol", "ul", "li", "a" I couldn't get it to work for the alt-hover text on "img" tags. Tests are included in the file "test/data/dictionaries/valid-dictionary/term_bank_1.json" * Add styles for structured content lists * Add override rules for new structured-content list styles see: https://github.com/FooSoft/yomichan/pull/2129 Co-authored-by: stephenmk --- .../valid-dictionary1/term_bank_1.json | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) (limited to 'test') diff --git a/test/data/dictionaries/valid-dictionary1/term_bank_1.json b/test/data/dictionaries/valid-dictionary1/term_bank_1.json index e7506255..cdff4028 100644 --- a/test/data/dictionaries/valid-dictionary1/term_bank_1.json +++ b/test/data/dictionaries/valid-dictionary1/term_bank_1.json @@ -204,6 +204,105 @@ "external link" ] } + ]}, + {"type": "structured-content", "content": [ + {"tag": "ul", "content": [ + {"tag": "li", "content": "Unordered list item 1"}, + {"tag": "li", "content": "Unordered list item 2"}, + {"tag": "li", "content": "Unordered list item 3"} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "ol", "content": [ + {"tag": "li", "content": "Ordered list item 1"}, + {"tag": "li", "content": "Ordered list item 2"}, + {"tag": "li", "content": "Ordered list item 3"} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "ol", "style": {"listStyleType": "hiragana-iroha"}, "content": [ + {"tag": "li", "content": "List item i"}, + {"tag": "li", "content": "List item ro"}, + {"tag": "li", "content": "List item ha"} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "ul", "content": [ + {"tag": "li", "style": {"listStyleType": "'⇄'"}, "content": ["【", {"tag": "a", "href": "?query=よみ&wildcards=off", "content": ["Antonym"]}, "】"]}, + {"tag": "li", "style": {"listStyleType": "'🔄'"}, "content": ["【", {"tag": "a", "href": "?query=よみ&wildcards=off", "content": ["References and is referenced by"]}, "】"]}, + {"tag": "li", "style": {"listStyleType": "'➡'"}, "content": ["【", {"tag": "a", "href": "?query=よみ&wildcards=off", "content": ["References"]}, "】"]}, + {"tag": "li", "style": {"listStyleType": "'⬅'"}, "content": ["【", {"tag": "a", "href": "?query=よみ&wildcards=off", "content": ["Referenced by"]}, "】"]} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "ol", "content": [ + {"tag": "li", "style": {"listStyleType": "'①'"}, "content": "まるいち"}, + {"tag": "li", "style": {"listStyleType": "'②'"}, "content": "まるに"}, + {"tag": "li", "style": {"listStyleType": "'③'"}, "content": "まるさん"}, + {"tag": "li", "style": {"listStyleType": "'④'"}, "content": "まるよん"} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "div", "lang": "?????", "style": {"fontSize": "xxx-large"}, "content": "直次茶冷 (invalid lang)"}, + {"tag": "div", "lang": "ja-JP", "style": {"fontSize": "xxx-large"}, "content": "直次茶冷 (lang=ja-JP)"}, + {"tag": "div", "lang": "zh-CN", "style": {"fontSize": "xxx-large"}, "content": "直次茶冷 (lang=zh-CN)"}, + {"tag": "div", "lang": "zh-TW", "style": {"fontSize": "xxx-large"}, "content": "直次茶冷 (lang=zh-TW)"} + ]}, + {"type": "structured-content", "content": [ + {"tag": "ul", "style": {"listStyleType": "japanese-formal"}, "content": [ + {"tag": "li", "content": ["【", {"tag": "a", "href": "?query=直次茶冷&wildcards=off", "content": "直次茶冷"}, "】(default)"]}, + {"tag": "li", "content": ["【", {"tag": "a", "href": "?query=直次茶冷&wildcards=off", "content": "直次茶冷", "lang": "ja"}, "】(lang=ja)"]}, + {"tag": "li", "content": ["【", {"tag": "a", "href": "?query=直次茶冷&wildcards=off", "content": "直次茶冷", "lang": "zh-CN"}, "】(lang=zh-CN)"]}, + {"tag": "li", "content": ["【", {"tag": "a", "href": "?query=直次茶冷&wildcards=off", "content": "直次茶冷", "lang": "zh-TW"}, "】(lang=zh-TW)"]} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "table", "lang": "", "content": [ + {"tag": "thead", "content": [ + {"tag": "tr", "content": [ + {"tag": "th", "content": "JP"}, + {"tag": "th", "content": "SC"}, + {"tag": "th", "content": "TC"}, + {"tag": "th", "content": "??"} + ]} + ]}, + {"tag": "tbody", "content": [ + {"tag": "tr", "content": [ + {"tag": "td", "lang": "ja-JP", "content": "直次茶冷"}, + {"tag": "td", "lang": "zh-CN", "content": "直次茶冷"}, + {"tag": "td", "lang": "zh-TW", "content": "直次茶冷"}, + {"tag": "td", "content": "直次茶冷"} + ]} + ]} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "table", "lang": "ja", "content": [ + {"tag": "thead", "content": [ + {"tag": "tr", "content": [ + {"tag": "th", "content": "lang=ja applied to whole table"} + ]} + ]}, + {"tag": "tbody", "content": [ + {"tag": "tr", "content": [ + {"tag": "td", "content": "直次茶冷"} + ]} + ]} + ]} + ]}, + {"type": "structured-content", "content": [ + {"tag": "table", "lang": "zh-CN", "content": [ + {"tag": "thead", "content": [ + {"tag": "tr", "content": [ + {"tag": "th", "content": "lang=zh-CN applied to whole table"} + ]} + ]}, + {"tag": "tbody", "content": [ + {"tag": "tr", "content": [ + {"tag": "td", "content": "直次茶冷"} + ]} + ]} + ]} ]} ], 100, "P E1" -- cgit v1.2.3