Skip to content

Improvement for splitting settings variables #601

@jyligehc

Description

@jyligehc

I would like to split and intend following lines:

*** Variables ***
${VARIABLE} =         High
@{VARIABLE_LIST} =    High    High, Med    High, Med,\nLow    High, Med,\\nLow
@{SHORT_LIST} =       valuevalue    valuevaluevalue    valuevaluevalue

&{SHORT_DICT} =       name=John Doe    age=12    hobby=coding
@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =    apple    banana    pineapple    tomato

@{OVER_LONG_LIST} =   valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue   valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =   name=John Doe    age=12    hobby=coding    age=12    hobby=coding    age=12    hobby=coding  age=12    hobby=coding

into something like this:

*** Variables ***
${VARIABLE} =         High
@{VARIABLE_LIST} =    High    High, Med    High, Med,\nLow    High, Med,\\nLow
@{SHORT_LIST} =       valuevalue    valuevaluevalue    valuevaluevalue

&{SHORT_DICT} =       name=John Doe    age=12    hobby=coding

@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =    
...    apple    banana    pineapple    tomato

@{OVER_LONG_LIST} =   valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =   name=John Doe    age=12    hobby=coding    age=12    hobby=coding    age=12    hobby=coding  age=12
...    hobby=coding

With following configuration: defaults +

 "SplitTooLongLine:skip_comments=True:split_on_every_arg=False:split_on_every_setting_arg=False:split_on_every_value=False"

I get this:

${VARIABLE} =                                       High
@{VARIABLE_LIST} =                                  High    High, Med    High, Med,\nLow    High, Med,\\nLow
@{SHORT_LIST} =                                     valuevalue    valuevaluevalue    valuevaluevalue

&{SHORT_DICT} =                                     name=John Doe    age=12    hobby=coding

@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =      apple    banana    pineapple    tomato

@{OVER_LONG_LIST} =    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =    name=John Doe    age=12    hobby=coding    age=12    hobby=coding    age=12    hobby=coding
...    age=12    hobby=coding

Readable but lot of empty space. Also OVER_LONG_LIST & OVER_LONG_DICT are not aligned. To minimize that I'll use config:

 "SplitTooLongLine:skip_comments=True:split_on_every_arg=False:split_on_every_setting_arg=False:split_on_every_value=False"
 "AlignVariablesSection:fixed_width=4",

I get:

*** Variables ***
${VARIABLE} =    High
@{VARIABLE_LIST} =    High    High, Med    High, Med,\nLow    High, Med,\\nLow
@{SHORT_LIST} =    valuevalue    valuevaluevalue    valuevaluevalue

&{SHORT_DICT} =    name=John Doe    age=12    hobby=coding

@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =    apple    banana    pineapple    tomato

@{OVER_LONG_LIST} =    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =    name=John Doe    age=12    hobby=coding    age=12    hobby=coding    age=12    hobby=coding
...    age=12    hobby=coding

Now it become difficult to read.

I can manually split the line with long variable but rest of the lines are still quite unreadable:

@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =
...    apple    banana    pineapple    tomato

Removing AlignVariablesSection:fixed_width from config readability improves but that manually splitted line become awkward.

@{VERY_LONG_VARIABLE_NAME_CONTAINING_FRUITS} =
...                                                 apple    banana    pineapple    tomato

I guess the reason why indentation is different between different variables (like OVER_LONG_LIST & OVER_LONG_DICT) is that they are formatted with SplitTooLongLine and other are formatted with AlignVariablesSection.

In my opinion, the formatting (splitting and aliging) should be done by same formatter so the aligning gets done the same way everywhere (mostly referring only to Settings and variables sections).

Other thing to mention.
If those OVER_LONG_LIST & OVER_LONG_DICT are manually splitted then they start to be formatted by AlignVariablesSection which means that if AlignVariablesSection:fixed_width is not set they become:

@{OVER_LONG_LIST} =                                 valuevaluevaluevaluevalue
...                                                 valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
...                                                 valuevaluevaluevaluevalue
...                                                 valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =                                 name=John Doe    age=12    hobby=coding
...                                                 age=12    hobby=coding    age=12    hobby=coding
...                                                 age=12    hobby=coding

which is not what is wanted.

If AlignVariablesSection:fixed_width is set they become:

@{OVER_LONG_LIST} =    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue
...    valuevaluevaluevaluevalue    valuevaluevaluevaluevalue
&{OVER_LONG_DICT} =    name=John Doe    age=12    hobby=coding
...    age=12    hobby=coding    age=12    hobby=coding
...    age=12    hobby=coding

This is what is wanted but then the other variable lines becomes difficult to read.
In fact, also the lines above containing variables (like @{OVER_LONG_LIST} = valuevaluevaluevaluevalue) should be aligned with other lines having variable names.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions