[document-start] adds min/max empty lines after
This commit is contained in:
@@ -102,3 +102,49 @@ class DocumentStartTestCase(RuleTestCase):
|
|||||||
'---\n'
|
'---\n'
|
||||||
'doc: 2\n'
|
'doc: 2\n'
|
||||||
'...\n', conf)
|
'...\n', conf)
|
||||||
|
|
||||||
|
def test_empty_lines(self):
|
||||||
|
conf = ('document-start:\n'
|
||||||
|
' present: true\n'
|
||||||
|
' max-empty-lines-after: 0\n')
|
||||||
|
self.check('---\n'
|
||||||
|
'doc: ument\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf, problem=(3, 1))
|
||||||
|
|
||||||
|
conf = ('document-start:\n'
|
||||||
|
' present: true\n'
|
||||||
|
' max-empty-lines-after: 1\n')
|
||||||
|
self.check('---\n'
|
||||||
|
'doc: ument\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf, problem=(4, 1))
|
||||||
|
|
||||||
|
conf = ('document-start:\n'
|
||||||
|
' present: true\n'
|
||||||
|
' min-empty-lines-after: 1\n')
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'doc: ument\n', conf, problem=(2, 1))
|
||||||
|
|
||||||
|
conf = ('document-start:\n'
|
||||||
|
' present: true\n'
|
||||||
|
' max-empty-lines-after: 1\n'
|
||||||
|
' min-empty-lines-after: 1\n')
|
||||||
|
self.check('---\n'
|
||||||
|
'doc: ument\n', conf, problem=(2, 1))
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf)
|
||||||
|
self.check('---\n'
|
||||||
|
'\n'
|
||||||
|
'\n'
|
||||||
|
'doc: ument\n', conf, problem=(4, 1))
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ Use this rule to require or forbid the use of document start marker (``---``).
|
|||||||
|
|
||||||
* Set ``present`` to ``true`` when the document start marker is required, or to
|
* Set ``present`` to ``true`` when the document start marker is required, or to
|
||||||
``false`` when it is forbidden.
|
``false`` when it is forbidden.
|
||||||
|
* ``min-empty-lines-after`` defines the minimal number of empty lines after the
|
||||||
|
document start marker.
|
||||||
|
* ``max-empty-lines-after`` defines the maximal number of empty lines after the
|
||||||
|
document start marker.
|
||||||
|
|
||||||
.. rubric:: Default values (when enabled)
|
.. rubric:: Default values (when enabled)
|
||||||
|
|
||||||
@@ -79,8 +83,12 @@ from yamllint.linter import LintProblem
|
|||||||
|
|
||||||
ID = 'document-start'
|
ID = 'document-start'
|
||||||
TYPE = 'token'
|
TYPE = 'token'
|
||||||
CONF = {'present': bool}
|
CONF = {'present': bool,
|
||||||
DEFAULT = {'present': True}
|
'max-empty-lines-after': int,
|
||||||
|
'min-empty-lines-after': int}
|
||||||
|
DEFAULT = {'present': True,
|
||||||
|
'max-empty-lines-after': -1,
|
||||||
|
'min-empty-lines-after': 0}
|
||||||
|
|
||||||
|
|
||||||
def check(conf, token, prev, next, nextnext, context):
|
def check(conf, token, prev, next, nextnext, context):
|
||||||
@@ -94,6 +102,21 @@ def check(conf, token, prev, next, nextnext, context):
|
|||||||
yield LintProblem(token.start_mark.line + 1, 1,
|
yield LintProblem(token.start_mark.line + 1, 1,
|
||||||
'missing document start "---"')
|
'missing document start "---"')
|
||||||
|
|
||||||
|
if isinstance(prev, yaml.DocumentStartToken):
|
||||||
|
empty_lines = token.start_mark.line - prev.start_mark.line - 1
|
||||||
|
|
||||||
|
if (conf['max-empty-lines-after'] >= 0 and
|
||||||
|
empty_lines > conf['max-empty-lines-after']):
|
||||||
|
yield LintProblem(token.start_mark.line + 1,
|
||||||
|
token.start_mark.column + 1,
|
||||||
|
'too many empty lines after document start')
|
||||||
|
|
||||||
|
if (conf['min-empty-lines-after'] > 0 and
|
||||||
|
empty_lines < conf['min-empty-lines-after']):
|
||||||
|
yield LintProblem(token.start_mark.line + 1,
|
||||||
|
token.start_mark.column + 1,
|
||||||
|
'too few empty lines after document start')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if isinstance(token, yaml.DocumentStartToken):
|
if isinstance(token, yaml.DocumentStartToken):
|
||||||
yield LintProblem(token.start_mark.line + 1,
|
yield LintProblem(token.start_mark.line + 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user