mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-26 14:09:41 -08:00
44fcf876ca
* Implement Pretty() function for AST nodes. Signed-off-by: Harkishen-Singh <harkishensingh@hotmail.com> This commit adds .Pretty() for all nodes of PromQL AST. Each .Pretty() prettifies the node it belongs to, and under no circustance, the parent or child node is touch/prettified. Read more in the "Approach" part in `prettier.go` * Refactor functions between printer.go & prettier.go Signed-off-by: Harkishen-Singh <harkishensingh@hotmail.com> This commit removes redundancy between printer.go and prettier.go by taking out the common code into separate private functions. * Add more unit tests for Prettier. Signed-off-by: Harkishen-Singh <harkishensingh@hotmail.com> * Add support for spliting function calls with 1 arg & unary expressions. Signed-off-by: Harkishen-Singh <harkishensingh@hotmail.com> This commit does 2 things: 1. It adds support to split function calls that have 1 arg and exceeds the max_characters_per_line to multiple lines. 2. Splits Unary expressions that exceed the max_characters_per_line. This is done by formatting the child node and then removing the prefix indent, which is already applied before the unary operator.
1,021 B
1,021 B
Prettifying PromQL expressions
This files contains rules for prettifying PromQL expressions.
Note: The current version of prettier does not preserve comments.
Keywords
max_characters_per_line
: Maximum number of characters that will be allowed on a single line in a prettified PromQL expression.
Rules
- A node exceeding the
max_characters_per_line
will qualify for split unless- It is a
MatrixSelector
- It is a
VectorSelector
. Label sets in aVectorSelector
will be in the same line as metric_name, separated by commas and a space Note: Label groupings likeby
,without
,on
,ignoring
will remain on the same line as their parent node
- It is a
- Nodes that are nested within another node will be prettified only if they exceed the
max_characters_per_line
- Expressions like
sum(expression) without (label_matchers)
will be modified tosum without(label_matchers) (expression)
- Functional call args will be split to different lines if they exceed the
max_characters_per_line