diff --git a/styles/Canonical/017-Avoid-long-code-blocks.yml b/styles/Canonical/017-Avoid-long-code-blocks.yml deleted file mode 100644 index c2e02a8..0000000 --- a/styles/Canonical/017-Avoid-long-code-blocks.yml +++ /dev/null @@ -1,11 +0,0 @@ -extends: existence -message: "Use 40 or fewer lines in code blocks" -link: https://docs.ubuntu.com/styleguide/en/#code-examples-in-documentation -level: warning -scope: raw -nonword: true -tokens: - - '``` {0,1}({(code-block|code|sourcecode)}){0,1}[^{}\n]*\n(:[^\n]+:[^\n]*\n)*([^:\n]*\n){41,}```' - - '::: {0,1}({(code-block|code|sourcecode)}){0,1}[^{}\n]*\n(:[^\n]+:[^\n]*\n)*([^:\n]*\n){41,}:::' - - '::\n\n(( {3}[^\n]+)?\n){40,} {3}[^\n]+\n' - - '\.\. (code-block|code|sourcecode)::( [^\n]+)?\n(( {3,12}:[^\n:]*:[^\n]*\n)*){0,1}\n(( {3}[^\n]+)?\n){40,} {3}[^\n]+\n' diff --git a/styles/Canonical/017a-Suggest-code-over-25-lines.yml b/styles/Canonical/017a-Suggest-code-over-25-lines.yml new file mode 100644 index 0000000..8a16b71 --- /dev/null +++ b/styles/Canonical/017a-Suggest-code-over-25-lines.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Use 25 or fewer lines in code blocks" +link: https://docs.ubuntu.com/styleguide/en/#code-examples-in-documentation +level: suggestion +scope: raw +nonword: true +tokens: + - '``` ?({(code-block|code|sourcecode)})?[^{}\n]*\n((:[^\n]+:[^\n]*\n)+\n?)?(?!```)[^:\n][^\n]*\n(\n|(?!```)[^:\n][^\n]*\n){25,}```' + - '::: ?({(code-block|code|sourcecode)})?[^{}\n]*\n((:[^\n]+:[^\n]*\n)+\n?)?(?!:::)[^:\n][^\n]*\n(\n|(?!:::)[^:\n][^\n]*\n){25,}:::' + - '::\n\n(( {3}[^\n]+)?\n){25,} {3}[^\n]+\n' + - '\.\. (code-block|code|sourcecode)::( [^\n]+)?\n(( {3,12}:[^\n:]*:[^\n]*\n)*)?\n(( {3}[^\n]+)?\n){25,} {3}[^\n]+\n' diff --git a/styles/Canonical/017b-Warn-code-over-35-lines.yml b/styles/Canonical/017b-Warn-code-over-35-lines.yml new file mode 100644 index 0000000..c5a33b6 --- /dev/null +++ b/styles/Canonical/017b-Warn-code-over-35-lines.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Use 35 or fewer lines in code blocks" +link: https://docs.ubuntu.com/styleguide/en/#code-examples-in-documentation +level: warning +scope: raw +nonword: true +tokens: + - '``` ?({(code-block|code|sourcecode)})?[^{}\n]*\n((:[^\n]+:[^\n]*\n)+\n?)?(?!```)[^:\n][^\n]*\n(\n|(?!```)[^:\n][^\n]*\n){35,}```' + - '::: ?({(code-block|code|sourcecode)})?[^{}\n]*\n((:[^\n]+:[^\n]*\n)+\n?){0.1}(?!:::)[^:\n][^\n]*\n(\n|(?!:::)[^:\n][^\n]*\n){35,}:::' + - '::\n\n(( {3}[^\n]+)?\n){35,} {3}[^\n]+\n' + - '\.\. (code-block|code|sourcecode)::( [^\n]+)?\n(( {3,12}:[^\n:]*:[^\n]*\n)*)?\n(( {3}[^\n]+)?\n){35,} {3}[^\n]+\n' diff --git a/tests/data/manifest.yml b/tests/data/manifest.yml index 9b8ef32..49e72a4 100644 --- a/tests/data/manifest.yml +++ b/tests/data/manifest.yml @@ -294,15 +294,639 @@ rules: # - Set VALE_ENFORCE_COVERAGE=1 to require every style rule appear here. # 017 is out of sequence because the content is long. - 017-Avoid-long-code-blocks: + 017a-Suggest-code-over-25-lines: + cases: + - id: long-code-suggestion-md + filetypes: [md] + content: | + 25 lines is acceptable: + + ``` + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + ``` + + But 26 lines is NOT acceptable: + + ``` + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + + This text is outside the code block. + expect: + triggers: + - |- # |- because we don't want the newline at the end. + ``` + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + severity: suggestion + - id: long-code-suggestion-md-lang + filetypes: [md] + content: | + 25 lines is acceptable: + + ```text + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + ``` + + But 26 lines is NOT acceptable: + + ```text + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + + This text is outside the code block. + expect: + triggers: + - |- # |- because we don't want the newline at the end. + ```text + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + severity: suggestion + - id: long-code-suggestion-myst + filetypes: [md] + content: | + 25 lines is acceptable: + + ```{code} text + :foo: bar + + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + ``` + + But 26 lines is NOT acceptable: + + ```{code} text + :foo: bar + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + + This text is outside the code block. + + A long unrelated directive is acceptable: + + ````{tab-set} + + ```{tab-item} Tab 1 + Line 01 of 26 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + + ```` + expect: + triggers: + - |- # |- because we don't want the newline at the end. + ```{code} text + :foo: bar + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + ``` + severity: suggestion + - id: long-code-suggestion-rst-colons + filetypes: [rst] + content: | + 25 lines is acceptable:: + + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + + But 26 lines is NOT acceptable:: + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + + This text is outside the code block. + expect: + triggers: + - | + :: + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + severity: suggestion + - id: long-code-suggestion-rst-lang + filetypes: [rst] + content: | + 25 lines is acceptable. + + .. code:: text + + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + + But 26 lines is NOT acceptable. + + .. code:: text + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + + This text is outside the code block. + expect: + triggers: + - | + .. code:: text + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + severity: suggestion + - id: long-code-suggestion-rst-option + filetypes: [rst] + content: | + 25 lines is acceptable. + + .. code:: + :foo: + + Line 01 of 25 + Line 02 + Line 03 + Line 04 + Line 05 + Line 06 + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + + But 26 lines is NOT acceptable. + + .. code:: + :foo: + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + + This text is outside the code block. + expect: + triggers: + - | + .. code:: + :foo: + + Line 01 of 26 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + severity: suggestion + 017b-Warn-code-over-35-lines: cases: - id: long-code-warning-md filetypes: [md] content: | - 40 lines is acceptable: + 35 lines is acceptable: ``` - Line 01 of 40 + Line 01 of 35 Line 02 Line 03 Line 04 @@ -337,17 +961,12 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 ``` - But 41 lines is NOT acceptable: + But 36 lines is NOT acceptable: ``` - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -383,11 +1002,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` This text is outside the code block. @@ -395,7 +1009,7 @@ rules: triggers: - |- # |- because we don't want the newline at the end. ``` - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -431,20 +1045,15 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` severity: warning - id: long-code-warning-md-lang filetypes: [md] content: | - 40 lines is acceptable: + 35 lines is acceptable: ```text - Line 01 of 40 + Line 01 of 35 Line 02 Line 03 Line 04 @@ -479,17 +1088,12 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 ``` - But 41 lines is NOT acceptable: + But 36 lines is NOT acceptable: ```text - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -525,11 +1129,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` This text is outside the code block. @@ -537,7 +1136,7 @@ rules: triggers: - |- # |- because we don't want the newline at the end. ```text - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -573,21 +1172,17 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` severity: warning - id: long-code-warning-myst filetypes: [md] content: | - 40 lines is acceptable: + 35 lines is acceptable: ```{code} text :foo: bar - Line 01 of 40 + + Line 01 of 35 Line 02 Line 03 Line 04 @@ -622,18 +1217,14 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 ``` - But 41 lines is NOT acceptable: + But 36 lines is NOT acceptable: ```{code} text :foo: bar - Line 01 of 41 + + Line 01 of 36 Line 02 Line 04 @@ -669,11 +1260,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` This text is outside the code block. @@ -683,7 +1269,7 @@ rules: ````{tab-set} ```{tab-item} Tab 1 - Line 01 of 41 + Line 01 of 36 Line 02 Line 03 Line 04 @@ -719,11 +1305,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` ```` @@ -732,7 +1313,97 @@ rules: - |- # |- because we don't want the newline at the end. ```{code} text :foo: bar - Line 01 of 41 + + Line 01 of 36 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + Line 27 + Line 28 + Line 29 + Line 30 + Line 31 + Line 32 + Line 33 + Line 34 + Line 35 + Line 36 + ``` + severity: warning + - id: long-code-warning-myst-no-nl-after-option + filetypes: [md] + content: | + No blank line after option: + + ```{code} text + :foo: bar + Line 01 of 36 + Line 02 + + Line 04 + + + Line 07 + Line 08 + Line 09 + Line 10 + Line 11 + Line 12 + Line 13 + Line 14 + Line 15 + Line 16 + Line 17 + Line 18 + Line 19 + Line 20 + Line 21 + Line 22 + Line 23 + Line 24 + Line 25 + Line 26 + Line 27 + Line 28 + Line 29 + Line 30 + Line 31 + Line 32 + Line 33 + Line 34 + Line 35 + Line 36 + ``` + + + expect: + triggers: + - |- # |- because we don't want the newline at the end. + ```{code} text + :foo: bar + Line 01 of 36 Line 02 Line 04 @@ -768,19 +1439,14 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 ``` severity: warning - id: long-code-warning-rst-colons filetypes: [rst] content: | - 40 lines is acceptable:: + 35 lines is acceptable:: - Line 01 of 40 + Line 01 of 35 Line 02 Line 03 Line 04 @@ -815,15 +1481,10 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - But 41 lines is NOT acceptable:: + But 36 lines is NOT acceptable:: - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -859,11 +1520,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 This text is outside the code block. expect: @@ -871,7 +1527,7 @@ rules: - | :: - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -907,20 +1563,15 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 severity: warning - id: long-code-warning-rst-lang filetypes: [rst] content: | - 40 lines is acceptable. + 35 lines is acceptable. .. code:: text - Line 01 of 40 + Line 01 of 35 Line 02 Line 03 Line 04 @@ -955,17 +1606,12 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - But 41 lines is NOT acceptable. + But 36 lines is NOT acceptable. .. code:: text - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -1001,11 +1647,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 This text is outside the code block. expect: @@ -1013,7 +1654,7 @@ rules: - | .. code:: text - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -1049,21 +1690,16 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 severity: warning - id: long-code-warning-rst-option filetypes: [rst] content: | - 40 lines is acceptable. + 35 lines is acceptable. .. code:: :foo: - Line 01 of 40 + Line 01 of 35 Line 02 Line 03 Line 04 @@ -1098,18 +1734,13 @@ rules: Line 33 Line 34 Line 35 - Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - But 41 lines is NOT acceptable. + But 36 lines is NOT acceptable. .. code:: :foo: - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -1145,11 +1776,6 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 This text is outside the code block. expect: @@ -1158,7 +1784,7 @@ rules: .. code:: :foo: - Line 01 of 41 + Line 01 of 36 Line 02 Line 04 @@ -1194,9 +1820,4 @@ rules: Line 34 Line 35 Line 36 - Line 37 - Line 38 - Line 39 - Line 40 - Line 41 severity: warning diff --git a/vale.ini b/vale.ini index 5b06de5..5815186 100644 --- a/vale.ini +++ b/vale.ini @@ -1,5 +1,5 @@ StylesPath = styles -MinAlertLevel = warning +MinAlertLevel = suggestion Vocab = Canonical IgnoredClasses = woke-ignore, vale-ignore @@ -23,7 +23,8 @@ Canonical.014a-Numbers-greater-than-nine-should-be-in-numeric-form = suggest Canonical.014b-Numbers-with-five-or-more-digits-must-have-comma-separators = suggest Canonical.015-No-prompts-in-comments = warning Canonical.016-No-inline-comments = warning -Canonical.017-Avoid-long-code-blocks = warning +Canonical.017a-Suggest-code-over-25-lines = suggestion +Canonical.017b-Warn-code-over-35-lines = warning Canonical.019-no-google-drive-images = error Canonical.025b-latinisms-to-reconsider = suggest Canonical.025c-latinisms-to-avoid = warning