From fcd782b0d33150bba97cd1727228783a03d20eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Br=C3=A9ant?= Date: Tue, 24 Sep 2024 00:55:28 +0200 Subject: [PATCH] feat: create a lua shortcut --- _extensions/i18n/18n_select.lua | 41 +++++++++++++++++++++++++++++++++ _extensions/i18n/_extension.yml | 2 ++ example.qmd | 9 ++------ 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 _extensions/i18n/18n_select.lua diff --git a/_extensions/i18n/18n_select.lua b/_extensions/i18n/18n_select.lua new file mode 100644 index 0000000..7a96d1f --- /dev/null +++ b/_extensions/i18n/18n_select.lua @@ -0,0 +1,41 @@ + +local function isEmpty(o) + return o == nil or o == '' +end + +local function split(inputstr, sep) + sep = sep or "%s" + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t +end + +local function generateI18nSelect(choices, selected) + local selectTag = '\n' + return selectTag +end + +return { + ['i18n-select'] = function(args, kwargs) + if not quarto.doc.isFormat("html:js") then + return pandoc.Null() + end + + local choices = split(kwargs["choices"] or "", ",%s*") + local selected = kwargs["selected"] or choices[1] or "" + local text = generateI18nSelect(choices, selected) + + return pandoc.RawBlock('html', text) + end +} diff --git a/_extensions/i18n/_extension.yml b/_extensions/i18n/_extension.yml index 4fc6f7a..57cad08 100644 --- a/_extensions/i18n/_extension.yml +++ b/_extensions/i18n/_extension.yml @@ -3,6 +3,8 @@ author: Arthur Bréant version: 1.0.0 quarto-required: ">=1.5.0" contributes: + shortcodes: + - 18n_select.lua revealjs-plugins: - name: RevealI18n stylesheet: diff --git a/example.qmd b/example.qmd index 54647e6..6c86581 100644 --- a/example.qmd +++ b/example.qmd @@ -3,14 +3,9 @@ title: Revealjs i18n format: revealjs: footer: | - + {{< i18n-select choices="fr:Français, en:English, de:Deutsch, it:Italiano" selected="fr" >}} i18n: - defaultLocale: "en" + defaultLocale: "fr" fr: morning: "Le matin" getting-up: "Se lever"