Large Value Handling
Multi-line and long values are formatted clearly with line-by-line diffs in collapsible sections.
Configuration files, JSON policies, and user data scripts can be huge. tfplan2md automatically detects large values and moves them to a dedicated section with collapsible details, keeping the main report clean.
❌ Without tfplan2md
112-line XML policy embedded in strings with \n escape sequences-nearly impossible to spot changes.
✅ With tfplan2md
🔄 azurerm_api_management_policy.global
| Attribute | Before | After |
|---|---|---|
| xml_content | (see below) | (see below) |
Large values: xml_content (112 lines, 57 changed)
xml_content:
<policies>
<inbound>
- <!-- Rate limiting policy -->
- <rate-limit calls="100" renewal-period="60" />
+ <!-- Rate limiting policy with increased limits -->
+ <rate-limit calls="200" renewal-period="60" />
+ <!-- IP filtering with additional networks -->
<ip-filter action="allow">
<address>10.0.0.0/24</address>
<address>172.16.0.0/16</address>
+ <address>192.168.1.0/24</address>
</ip-filter>
- <!-- CORS policy -->
+ <!-- CORS policy with additional origins -->
<cors allow-credentials="true">
<allowed-origins>
<origin>https://example.com</origin>
<origin>https://app.example.com</origin>
+ <origin>https://portal.example.com</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
<method>PUT</method>
<method>DELETE</method>
+ <method>PATCH</method>
</allowed-methods>
<allowed-headers>
<header>Content-Type</header>
<header>Authorization</header>
<header>X-Requested-With</header>
+ <header>X-API-Key</header>
</allowed-headers>
</cors>
<!-- Authentication, backend, headers... -->
- <set-backend-service base-url="https://backend-old.example.com" />
+ <set-backend-service base-url="https://backend-new.example.com" />
... 80+ more lines with inline character-level highlighting ...
</policies>### 🔄 azurerm_api_management_policy.global
| Attribute | Before | After |
| ----------- | -------- | ------- |
| xml_content | *(see below)* | *(see below)* |
Large values: xml_content (112 lines, 57 changed)
##### **xml_content:**
<pre><code><policies>
<inbound>
<span style="background-color: #fff5f5; ...">- <!-- Rate limiting policy --></span>
<span style="background-color: #fff5f5; ...">- <rate-limit calls="100" renewal-period="60" /></span>
<span style="background-color: #f0fff4; ...">+ <!-- <span style="...">Rate limiting policy with increased limits</span> --></span>
<span style="background-color: #f0fff4; ...">+ <rate-limit calls="200" renewal-period="60" /></span>
...
</policies>
</code></pre>Readable formatted content with inline diff highlighting makes every change reviewable.
Smart Formatting
- Automatic Detection: Values longer than a threshold are automatically moved.
- Collapsible Sections: Details are hidden by default to reduce noise.
- Line-by-Line Diffs: Changes within large text blocks are highlighted.
- Syntax Highlighting: JSON, YAML, and scripts are formatted for readability.
Configuration
Control the diff format for large values using the --render-target CLI option:
# Default: azuredevops (HTML with character-level highlighting)
tfplan2md plan.json
# GitHub-compatible diff format (markdown code blocks)
tfplan2md plan.json --render-target github
Note: The --large-value-format flag has been deprecated. Use --render-target azuredevops instead of inline-diff, or --render-target github instead of standard-diff.
Learn More
Large value handling automatically detects and formats multi-line or long attribute values for better readability.