From f3e332eb00e05a9c92401df83d141402ad090106 Mon Sep 17 00:00:00 2001
From: "Travis C. LaGrone" <22419287+travis-c-lagrone@users.noreply.github.com>
Date: Sat, 6 Jul 2019 04:24:25 -0500
Subject: [PATCH] Strike through deprecated rule headings
Changes:
- Formats the headings of deprecated rules using strikethrough in the 'Rules /
Aliases' section of the 'README.md' file and in the 'doc/Rules.md' file.
- Updates the 'readme' and 'doc' tests in the 'test/markdownlint-test.js' file
to permit their respective rule headings to be formatted using strikethrough.
Benefits:
- Indicates rule deprecation status 'at a glance'.
(fixes #203)
---
README.md | 4 +++-
doc/Rules.md | 5 +++--
test/markdownlint-test.js | 14 ++++++++++++--
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 53e9a800..d25e93f9 100644
--- a/README.md
+++ b/README.md
@@ -47,7 +47,7 @@ playground for learning and exploring.
## Rules / Aliases
* **[MD001](doc/Rules.md#md001)** *heading-increment/header-increment* - Heading levels should only increment by one level at a time
-* **[MD002](doc/Rules.md#md002)** *first-heading-h1/first-header-h1* - First heading should be a top level heading
+* ~~**[MD002](doc/Rules.md#md002)** *first-heading-h1/first-header-h1* - First heading should be a top level heading~~
* **[MD003](doc/Rules.md#md003)** *heading-style/header-style* - Heading style
* **[MD004](doc/Rules.md#md004)** *ul-style* - Unordered list style
* **[MD005](doc/Rules.md#md005)** *list-indent* - Inconsistent indentation for list items at the same level
@@ -92,6 +92,8 @@ playground for learning and exploring.
See [Rules.md](doc/Rules.md) for more details.
+~~Struck through~~ rules are deprecated, and provided for backward-compatibility.
+
> All rules with `heading` as part of their name are also available as `header`
> aliases (e.g. `heading-increment` is also available as `header-increment`).
> The use of `header` is deprecated and provided for backward-compatibility.
diff --git a/doc/Rules.md b/doc/Rules.md
index 53bb3a9d..01fd7452 100644
--- a/doc/Rules.md
+++ b/doc/Rules.md
@@ -3,7 +3,8 @@
This document contains a description of all rules, what they are checking for,
as well as an examples of documents that break the rule and corrected
-versions of the examples.
+versions of the examples. Any rule whose heading is ~~struck through~~ is
+deprecated, but still provided for backward-compatibility.
@@ -43,7 +44,7 @@ level at a time:
-## MD002 - First heading should be a top level heading
+## ~~MD002 - First heading should be a top level heading~~
Tags: headings, headers
diff --git a/test/markdownlint-test.js b/test/markdownlint-test.js
index d3ccf997..aaa66043 100644
--- a/test/markdownlint-test.js
+++ b/test/markdownlint-test.js
@@ -19,6 +19,8 @@ const configSchema = require("../schema/markdownlint-config-schema.json");
const homepage = packageJson.homepage;
const version = packageJson.version;
+const deprecatedRuleNames = [ "MD002" ];
+
function promisify(func, ...args) {
return new Promise((resolve, reject) => {
func(...args, (error, result) => {
@@ -1138,9 +1140,12 @@ module.exports.readme = function readme(test) {
if (rule) {
const ruleName = rule.names[0];
const ruleAliases = rule.names.slice(1);
- const expected = "**[" + ruleName + "](doc/Rules.md#" +
+ let expected = "**[" + ruleName + "](doc/Rules.md#" +
ruleName.toLowerCase() + ")** *" +
ruleAliases.join("/") + "* - " + rule.description;
+ if (deprecatedRuleNames.includes(ruleName)) {
+ expected = "~~" + expected + "~~";
+ }
test.equal(token.content, expected, "Rule mismatch.");
}
} else if (inTags) {
@@ -1197,8 +1202,13 @@ module.exports.doc = function doc(test) {
ruleHasAliases = false;
test.ok(rule,
"Missing rule implementation for " + token.content + ".");
+ const ruleName = rule.names[0];
+ let headingContent = ruleName + " - " + rule.description;
+ if (deprecatedRuleNames.includes(ruleName)) {
+ headingContent = "~~" + headingContent + "~~";
+ }
test.equal(token.content,
- rule.names[0] + " - " + rule.description,
+ headingContent,
"Rule mismatch.");
ruleUsesParams = rule.function.toString()
.match(/params\.config\.[_a-z]*/gi);