blob: 1c0c4eddc3d927c4c06552fcdc51571885ad9fc5 [file] [view] [edit]
# Text Proto Formatter - Configuration
<!--* freshness: { exempt: true } *-->
`txtpbfmt` provides several configuration options that customize the specifics
of the output format. These are configured by adding a comment line to top of
the proto file (before the first non-empty non-comment line) of the form:
`# txtpbfmt: [config-option]`
This doc describes each of these options.
## AllowTripleQuotedStrings
`# txtpbfmt: allow_triple_quoted_strings`
Permit usage of Python-style `"""` or `'''` delimited strings.
## AllowUnnamedNodesEverywhere
`# txtpbfmt: allow_unnamed_nodes_everywhere`
Allow unnamed nodes everywhere.
Default is to allow only top-level nodes to be unnamed.
## ExpandAllChildren
`# txtpbfmt: expand_all_children`
Expand all children irrespective of the initial state.
### Before formatting
[Example](examples/expand_all_children.IN.textproto)
### After formatting
[Example](examples/expand_all_children.OUT.textproto)
## PreserveAngleBrackets
`# txtpbfmt: preserve_angle_brackets`
Whether angle brackets used instead of curly braces should be preserved
when outputting a formatted textproto.
### Before formatting
[Example](examples/preserve_angle_brackets.IN.textproto)
### After formatting
[Example](examples/preserve_angle_brackets.OUT.textproto)
## RemoveDuplicateValuesForRepeatedFields
`# txtpbfmt: remove_duplicate_values_for_repeated_fields`
Remove lines that have the same field name and scalar value as another.
### Before formatting
[Example](examples/remove_duplicate_values_for_repeated_fields.IN.textproto)
### After formatting
[Example](examples/remove_duplicate_values_for_repeated_fields.OUT.textproto)
## SkipAllColons
`# txtpbfmt: skip_all_colons`
Skip colons whenever possible.
### Before formatting
[Example](examples/skip_all_colons.IN.textproto)
### After formatting
[Example](examples/skip_all_colons.OUT.textproto)
## SmartQuotes
`# txtpbfmt: smartquotes`
Use single quotes around strings that contain double but not single quotes.
### Before formatting
[Example](examples/smartquotes.IN.textproto)
### After formatting
[Example](examples/smartquotes.OUT.textproto)
## SortFieldsByFieldName
`# txtpbfmt: sort_fields_by_field_name`
Sort fields by field name.
### Before formatting
[Example](examples/sort_fields_by_field_name.IN.textproto)
### After formatting
[Example](examples/sort_fields_by_field_name.OUT.textproto)
## SortRepeatedFieldsByContent
`# txtpbfmt: sort_repeated_fields_by_content`
Sort adjacent scalar fields of the same field name by their contents.
### Before formatting
[Example](examples/sort_repeated_fields_by_content.IN.textproto)
### After formatting
[Example](examples/sort_repeated_fields_by_content.OUT.textproto)
## SortRepeatedFieldsBySubfield
`# txtpbfmt: sort_repeated_fields_by_subfield=[subfieldSpec]`
Sort adjacent message fields of the given field name by the contents of the
given subfield path.
`subfieldSpec` is of one of two forms:
* `fieldName.subfieldName1.subfieldName2...subfieldNameN`, which will sort
fields named `fieldName` by the value of the final subfield named
`subfieldNameN`.
* `subfieldName`, which will sort any field by its subfield named
`subfieldName`
### Before formatting
[Example](examples/sort_repeated_fields_by_subfield.IN.textproto)
### After formatting
[Example](examples/sort_repeated_fields_by_subfield.OUT.textproto)
## ReverseSort
`# txtpbfmt: reverse_sort`
Sorts all `sort_*` fields in descending order instead of the default ascending
order. Does nothing if not used with at least 1 other `sort_*` field.
### Before formatting
[Example](examples/reverse_sort.IN.textproto)
### After formatting
[Example](examples/reverse_sort.OUT.textproto)
## WrapHTMLStrings
`# txtpbfmt: wrap_html_strings`
Whether strings that appear to contain HTML tags should be wrapped
(requires WrapStringsAtColumn to be set).
### Before formatting
[Example](examples/wrap_html_strings.IN.textproto)
### After formatting
[Example](examples/wrap_html_strings.OUT.textproto)
## WrapStringsAtColumn
`# txtpbfmt: wrap_strings_at_column=[column]`
Max columns for string field values. If zero, no string wrapping will occur.
Strings that may contain HTML tags will not be wrapped unless
`wrap_html_strings` is also specified.
### Before formatting
[Example](examples/wrap_strings_at_column.IN.textproto)
### After formatting
[Example](examples/wrap_strings_at_column.OUT.textproto)