| 1 | pattern: "(?P<level>\\w+)\\s+(?P<message>.*)" |
| 2 | |
| 3 | # Test variable substitution edge cases |
| 4 | |
| 5 | inject: |
| 6 | - key: SIMPLE_VAR |
| 7 | value: "${LINE}" |
| 8 | |
| 9 | - key: MULTIPLE_VARS |
| 10 | value: "Level: ${LEVEL}, Message: ${MESSAGE}" |
| 11 | |
| 12 | - key: NESTED_VARS |
| 13 | value: "${${LEVEL}_PREFIX}_${MESSAGE}" |
| 14 | |
| 15 | - key: UNDEFINED_VAR |
| 16 | value: "This ${UNDEFINED_VARIABLE} does not exist" |
| 17 | |
| 18 | - key: ESCAPED_VAR |
| 19 | value: "\\${NOT_A_VARIABLE}" |
| 20 | |
| 21 | # Commented out - causes parse error as expected |
| 22 | # - key: MALFORMED_VAR1 |
| 23 | # value: "Start ${UNCLOSED end" # Missing closing brace |
| 24 | |
| 25 | - key: MALFORMED_VAR2 |
| 26 | value: "$NO_BRACES" |
| 27 | |
| 28 | - key: EMPTY_VAR_NAME |
| 29 | value: "${}" |
| 30 | |
| 31 | - key: NUMERIC_VAR |
| 32 | value: "${123}" |
| 33 | |
| 34 | - key: SPECIAL_VAR_NAME |
| 35 | value: "${VAR-WITH-DASHES}" |
| 36 | |
| 37 | - key: WHITESPACE_VAR |
| 38 | value: "${ PADDED }" |
| 39 | |
| 40 | rewrite: |
| 41 | - key: VAR_IN_MATCH |
| 42 | match: "${LEVEL}" # Variable in match pattern |
| 43 | value: "Matched level" |
| 44 | |
| 45 | - key: RECURSIVE_VAR |
| 46 | value: "${VAR_IN_MATCH}" |
| 47 | inject: yes |
| 48 | |
| 49 | - key: CONDITIONAL_VAR |
| 50 | match: "ERROR" |
| 51 | value: "Error: ${MESSAGE}" |
| 52 | |
| 53 | - key: DEFAULT_VALUE |
| 54 | value: "${MISSING:-default value}" |
| 55 | inject: yes |
| 56 | |
| 57 | - key: CHAINED_VARS |
| 58 | value: "${A}${B}${C}${D}${E}" |
| 59 | inject: yes |
| 60 | |
| 61 | rename: |
| 62 | - old_key: "${LEVEL}_KEY" # Variable in key name |
| 63 | new_key: "LEVEL_KEY" |
| 64 | |
| 65 | - old_key: "OLD_${UNDEFINED}" |
| 66 | new_key: "NEW_KEY" |
| 67 | |
| 68 | filter: |
| 69 | include: ".*" # Include all keys to actually test variable substitution |
| 70 | exclude: "^$" |
| 71 | |
| 72 | unmatched: |
| 73 | key: "UNMATCHED_${LEVEL}" |
| 74 | inject: |
| 75 | - key: "ERROR_${LEVEL}" |
| 76 | value: "Failed to parse ${LINE}" |