@ -23,6 +23,8 @@ Use this rule to set a limit to lines length.
* ` ` allow - non - breakable - words ` ` is used to allow non breakable words ( without
* ` ` allow - non - breakable - words ` ` is used to allow non breakable words ( without
spaces inside ) to overflow the limit . This is useful for long URLs , for
spaces inside ) to overflow the limit . This is useful for long URLs , for
instance . Use ` ` yes ` ` to allow , ` ` no ` ` to forbid .
instance . Use ` ` yes ` ` to allow , ` ` no ` ` to forbid .
* ` ` allow - non - breakable - inline - mappings ` ` implies ` ` allow - non - breakable - words ` `
and extends it to also allow non - breakable words in inline mappings .
. . rubric : : Examples
. . rubric : : Examples
@ -61,6 +63,19 @@ Use this rule to set a limit to lines length.
- this line is waaaaaaaaaaaaaay too long but could be easily split . . .
- this line is waaaaaaaaaaaaaay too long but could be easily split . . .
and the following code snippet would also * * FAIL * * :
: :
- foobar : http : / / localhost / very / very / very / very / very / very / very / very / long / url
#. With ``line-length: {max: 60, allow-non-breakable-words: yes,
allow - non - breakable - inline - mappings : yes } ` `
the following code snippet would * * PASS * * :
: :
- foobar : http : / / localhost / very / very / very / very / very / very / very / very / long / url
#. With ``line-length: {max: 60, allow-non-breakable-words: no}``
#. With ``line-length: {max: 60, allow-non-breakable-words: no}``
the following code snippet would * * FAIL * * :
the following code snippet would * * FAIL * * :
@ -80,11 +95,14 @@ from yamllint.linter import LintProblem
ID = ' line-length '
ID = ' line-length '
TYPE = ' line '
TYPE = ' line '
CONF = { ' max ' : int ,
CONF = { ' max ' : int ,
' allow-non-breakable-words ' : bool }
' allow-non-breakable-words ' : bool ,
' allow-non-breakable-inline-mappings ' : bool }
def check ( conf , line ) :
def check ( conf , line ) :
if line . end - line . start > conf [ ' max ' ] :
if line . end - line . start > conf [ ' max ' ] :
conf [ ' allow-non-breakable-words ' ] | = \
conf [ ' allow-non-breakable-inline-mappings ' ]
if conf [ ' allow-non-breakable-words ' ] :
if conf [ ' allow-non-breakable-words ' ] :
start = line . start
start = line . start
while start < line . end and line . buffer [ start ] == ' ' :
while start < line . end and line . buffer [ start ] == ' ' :
@ -97,6 +115,7 @@ def check(conf, line):
if line . buffer . find ( ' ' , start , line . end ) == - 1 :
if line . buffer . find ( ' ' , start , line . end ) == - 1 :
return
return
if conf [ ' allow-non-breakable-inline-mappings ' ] :
line_yaml = yaml . safe_load ( line . content )
line_yaml = yaml . safe_load ( line . content )
if ( isinstance ( line_yaml , dict ) and
if ( isinstance ( line_yaml , dict ) and
' ' not in line_yaml . popitem ( ) [ 1 ] ) :
' ' not in line_yaml . popitem ( ) [ 1 ] ) :