diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4a08ec3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# v1.0.0 +## 02/24/2018 + +1. [](#new) + * ChangeLog started... diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..848910b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 Tim Robertson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d58d780 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Grav Markdown Task Lists Plugin + +The **markdown-tasklists plugin** for [Grav](http://github.com/getgrav/grav) allows generation of task lists via markdown: + +![](assets/screenshot.png) + +# Installation + +This plugin is easy to install with GPM. + +``` +$ bin/gpm install markdown-tasklists +``` + +# Configuration + +Simply copy the `user/plugins/markdown-tasklists/markdown-tasklists.yaml` into `user/config/plugins/markdown-tasklists.yaml` and make your modifications. + +``` +enabled: true +``` + +# Examples + +To create a task list, preface list items with `[ ]`. To mark a task as complete, use `[x]`. + +``` +- [x] Finish my changes +- [ ] Push my commits to GitHub +- [ ] Open a pull request +``` + +![](https://help.github.com/assets/images/help/writing/task-list-rendered.png) diff --git a/assets/screenshot.png b/assets/screenshot.png new file mode 100644 index 0000000..6b372a3 Binary files /dev/null and b/assets/screenshot.png differ diff --git a/assets/tasklists.css b/assets/tasklists.css new file mode 100644 index 0000000..30f0823 --- /dev/null +++ b/assets/tasklists.css @@ -0,0 +1,9 @@ + +.task-list-item { + list-style-type: none; +} + +.task-list-item-checkbox { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} diff --git a/blueprints.yaml b/blueprints.yaml new file mode 100644 index 0000000..7a5c9d9 --- /dev/null +++ b/blueprints.yaml @@ -0,0 +1,25 @@ +name: Markdown Task Lists +version: 1.0.0 +description: "Adds the ability to render task lists in Markdown" +icon: asterisk +author: + name: Tim Robertson + url: https://funkjedi.com +homepage: https://github.com/funkjedi/grav-plugin-markdown-tasklists +keywords: markdown +bugs: https://github.com/funkjedi/grav-plugin-markdown-tasklists/issues +license: MIT + +form: + validation: strict + fields: + enabled: + type: toggle + label: Plugin status + highlight: 1 + default: 0 + options: + 1: Enabled + 0: Disabled + validate: + type: bool diff --git a/markdown-tasklists.php b/markdown-tasklists.php new file mode 100644 index 0000000..d84bced --- /dev/null +++ b/markdown-tasklists.php @@ -0,0 +1,56 @@ + ['onMarkdownInitialized', 0], + 'onTwigSiteVariables' => ['onTwigSiteVariables', 0] + ]; + } + + public function onMarkdownInitialized(Event $event) + { + $markdown = $event['markdown']; + + $markdown->addBlockType('-', 'List', false, true); + + $markdown->blockListComplete = function(array $Block) { + if ($Block['pattern'] === '[*+-]') { + $containsTaskList = false; + foreach ($Block['element']['text'] as &$Item) { + foreach ($Item['text'] as &$Text) { + $prefix = substr(trim($Text), 0, 4); + if ($prefix === '[ ] ' || $prefix === '[x] ') { + $containsTaskList = true; + $Item['attributes'] = ['class' => 'task-list-item']; + $Text = sprintf( + ' %s', + $prefix === '[x] ' ? 'checked disabled' : 'disabled', + substr(trim($Text), 4) + ); + } + } + } + if ($containsTaskList) { + $Block['element']['attributes'] = ['class' => 'contains-task-list']; + } + } + return $Block; + }; + } + + public function onTwigSiteVariables() + { + $this->grav['assets']->add('plugin://markdown-tasklists/assets/tasklists.css'); + } +} diff --git a/markdown-tasklists.yaml b/markdown-tasklists.yaml new file mode 100644 index 0000000..7fe3622 --- /dev/null +++ b/markdown-tasklists.yaml @@ -0,0 +1 @@ +enabled: true \ No newline at end of file