From 94fca8874c720ebdd5d18494094cf3048d575394 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Tue, 15 Aug 2023 15:59:52 +0100 Subject: Add ability to enable or disable html checkbox checkability --- src/configuration.rs | 32 ++++++++++++++++++++++++++++++++ src/to_html.rs | 5 ++++- tests/gfm_task_list_item.rs | 17 ++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/configuration.rs b/src/configuration.rs index fe5698b..e995c09 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -831,6 +831,38 @@ pub struct CompileOptions { /// ``` pub gfm_footnote_clobber_prefix: Option, + /// Whether or not GFM task list html `` items are enabled. + /// + /// This determines whether or not the user of the browser is able + /// to click and toggle generated checkbox items. The default is false. + /// + /// ## Examples + /// + /// ``` + /// use markdown::{to_html_with_options, CompileOptions, Options, ParseOptions}; + /// # fn main() -> Result<(), String> { + /// + /// // With `gfm_task_list_item_checkable`, generated `` + /// // tags do not contain the attribute `disabled=""` and are thus toggleable by + /// // browser users. + /// assert_eq!( + /// to_html_with_options( + /// "* [x] y.", + /// &Options { + /// parse: ParseOptions::gfm(), + /// compile: CompileOptions { + /// gfm_task_list_item_checkable: true, + /// ..CompileOptions::gfm() + /// } + /// } + /// )?, + /// "" + /// ); + /// # Ok(()) + /// # } + /// ``` + pub gfm_task_list_item_checkable: bool, + /// Whether to support the GFM tagfilter. /// /// This option does nothing if `allow_dangerous_html` is not turned on. diff --git a/src/to_html.rs b/src/to_html.rs index 1892ba1..edd397d 100644 --- a/src/to_html.rs +++ b/src/to_html.rs @@ -601,7 +601,10 @@ fn on_enter_gfm_table_row(context: &mut CompileContext) { /// Handle [`Enter`][Kind::Enter]:[`GfmTaskListItemCheck`][Name::GfmTaskListItemCheck]. fn on_enter_gfm_task_list_item_check(context: &mut CompileContext) { if !context.image_alt_inside { - context.push(" Result<(), String> { "should support unchecked task list item checks" ); + assert_eq!( + to_html_with_options( + "* [x] y.", + &Options { + parse: ParseOptions::gfm(), + compile: CompileOptions { + gfm_task_list_item_checkable: true, + ..CompileOptions::gfm() + } + } + )?, + "", + "should support option for enabled (checkable) task list item checks" + ); + assert_eq!( to_html_with_options("*\n [x]", &Options::gfm())?, "", -- cgit