Download the PHP package markup-carve/symfony-carve without Composer
On this page you can find all versions of the php package markup-carve/symfony-carve. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download markup-carve/symfony-carve
More information about markup-carve/symfony-carve
Files in markup-carve/symfony-carve
Package symfony-carve
Short Description Symfony bundle to render Carve markup to HTML via carve-php.
License MIT
Homepage https://github.com/markup-carve/symfony-carve
Informations about the package symfony-carve
symfony-carve
Symfony bundle that renders Carve markup to HTML using carve-php.
Carve is a lightweight markup language for structured documents, with clear, consistent syntax.
Installation
Register the bundle (Symfony Flex does this automatically; otherwise add it to config/bundles.php):
Usage
Service
Twig
Only the HTML output from carve is marked safe, so Twig does not double-escape it. The
carve_text and carve_markdown filters are not HTML and Twig escapes them normally. Safe mode
only affects HTML rendering; profiles apply to all three output formats.
Configuration
| Key | Type | Default | Description |
|---|---|---|---|
safe_mode |
bool | true |
Enable HTML sanitization. Keep this on for untrusted input. |
raw_html |
enum | strip |
How raw HTML is handled when safe_mode is on: strip, escape, allow. |
profile |
enum|null | null |
Restrict markup features using full, article, comment, or minimal. |
diagrams |
string[] | [] |
Diagram fenced-block presets to enable (see below). Off by default. |
include_root |
string|null | null |
Absolute containment root for file-backed rendering. |
Setting safe_mode: false disables sanitization entirely. Only do this for fully trusted input.
Safe mode only affects HTML output. Profiles restrict available constructs for HTML, plain-text,
and Markdown output; null leaves all constructs available.
File includes
Twig filters and CarveRenderer::render() accept anonymous strings, so they
never read files. Set an absolute include_root and call the explicit file API
for trusted, file-backed content:
renderFile() is the HTML-only convenience form. Relative includes resolve
from the file containing each directive and cannot traverse or follow a symlink
outside the configured root. Warning reports omit resolver details and replace
outside paths before they reach the optional PSR logger.
include_root has to be an absolute path, and the renderer refuses a relative
one rather than resolving it against the working directory, which is arbitrary
with respect to the document.
The dependency list contains resolved and attempted targets. Applications that cache rendered HTML must include those identities in their invalidation policy, including missing targets, so creating a formerly missing file invalidates its parent. The bundle does not prescribe a cache implementation.
Diagrams
By default a fenced block like plantuml yaml
config/packages/carve.yaml
carve:
diagrams: ['plantuml', 'mermaid']
` renders as
...
and mermaid ```` as...`, ready for a browser library to pick up.
| Preset | Fence word(s) | Output |
|---|---|---|
mermaid |
mermaid |
<pre class="mermaid"> |
plantuml |
plantuml, puml |
<pre class="plantuml"> |
d2 |
d2 |
<pre class="d2"> |
graphviz |
dot, graphviz |
<pre class="graphviz"> |
wavedrom |
wavedrom |
<pre class="wavedrom"> |
vega_lite |
vega-lite |
<div class="vega-lite"><script type="application/json"> |
chart |
chart |
<div class="chart"><script type="application/json"> |
abc |
abc |
<pre class="abc"> |
The bundle only emits the markup - it does not ship or load any renderer. You supply the client side:
- Graphviz, D2 render fully offline (no server, no external call) with the WebAssembly helpers
from
@markup-carve/carve-grammars:renderDiagrams(orrenderGraphvizDiagrams/renderD2Diagrams). - PlantUML has no practical in-browser renderer; render it via a Kroki
server with the same package's
renderKrokiDiagramshelper.⚠️ Privacy / GDPR: the default Kroki server is the public
https://kroki.io, so the PlantUML source is sent to a third party outside your domain. For sensitive content, or to stay offline, point the helper'sserveroption at a self-hosted or localhost Kroki, and disclose the external call to end users where required. - Mermaid, WaveDrom, Vega-Lite, Chart.js, ABC each need their own browser library loaded on the page (mermaid.js, wavedrom, vega-embed, chart.js, abcjs).
Unknown names in the whitelist are rejected by config validation; the accepted values are exactly the presets above.
Demo
A full runnable demo app lives at symfony-carve-demo: the Twig filter and function, the CarveRenderer service, a live editor, a safe-mode comparison, and a syntax gallery.
All versions of symfony-carve with dependencies
markup-carve/carve-php Version ^0.1.14
psr/log Version ^1.1 || ^2.0 || ^3.0
symfony/cache-contracts Version ^2.5 || ^3.0
symfony/config Version ^6.4 || ^7.0
symfony/console Version ^6.4 || ^7.0
symfony/dependency-injection Version ^6.4 || ^7.0
symfony/http-kernel Version ^6.4 || ^7.0
