MCPcopy Index your code
hub / github.com/PebbleTemplates/pebble

github.com/PebbleTemplates/pebble @4.1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.1.2 ↗ · + Follow
2,842 symbols 13,586 edges 380 files 423 documented · 15% updated 8d ago4.1.2 · 2026-05-29★ 1,19425 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Pebble "Buy Me A Coffee" Build

Pebble is a java templating engine inspired by Twig. It separates itself from the crowd with its inheritance feature and its easy-to-read syntax. It ships with built-in autoescaping for security, and it includes integrated support for internationalization.

For more information please visit the website.

Breaking changes in version 4.1.x

  • If you do not provide a custom Loader, Pebble will now use only a ClasspathLoader by default, same as the spring autoconfiguration. Before that, it would have used an instance of the DelegatingLoader which consists of a ClasspathLoader and a FileLoader behind the scenes to find your templates.
  • Modify the FileLoader to use a mandatory base directory parameter.

Breaking changes in version 4.0.x

  • Use one of the following artifactId according to the spring boot version that you are using
ArtifactId spring-boot version
pebble-legacy-spring-boot-starter 3.x.x
pebble-spring-boot-starter 4.x.x
  • The following spring boot properties has been moved to .servlet or .reactive
Old property New Property
pebble.allowRequestOverride pebble.servlet.allowRequestOverride
pebble.allowSessionOverride pebble.servlet.allowSessionOverride
pebble.cache pebble.servlet.cache
pebble.contentType pebble.servlet.contentType
pebble.exposeRequestAttributes pebble.servlet.exposeRequestAttributes
pebble.exposeSessionAttributes pebble.servlet.exposeSessionAttributes
pebble.exposeSpringMacroHelpers pebble.servlet.exposeSpringMacroHelpers
pebble.reactive.mediaTypes

For more information, please consult the spring-boot integration documentation in the Boot externalized configuration section

Breaking changes in version 3.2.x

  • Rename package from com.mitchellbosecke to io.pebbletemplates
  • Change default suffix to .peb instead of .pebble in spring boot autoconfiguration
  • Rename method getInstance to createInstance in BinaryOperator interface (#521)

License

Copyright (c) 2013, Mitchell Bösecke
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this
  list of conditions and the following disclaimer in the documentation and/or
  other materials provided with the distribution.

* Neither the name of the {organization} nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Extension points exported contracts — how you extend this code

StoppingCondition (Interface)
Implementations of this class are provided by the TokenParsers and handed to the main Parser. The main parser will parse [46 …
pebble/src/main/java/io/pebbletemplates/pebble/parser/StoppingCondition.java
TokenParser (Interface)
A TokenParser is responsible for converting a stream of Tokens into a Node. A TokenParser often has to temporarily deleg [34 …
pebble/src/main/java/io/pebbletemplates/pebble/tokenParser/TokenParser.java
Loader (Interface)
Interface used to find templates for Pebble. Different implementations can use different techniques for finding template [7 …
pebble/src/main/java/io/pebbletemplates/pebble/loader/Loader.java
AttributeResolver (Interface)
Resolves instance attributes [10 implementers]
pebble/src/main/java/io/pebbletemplates/pebble/attributes/AttributeResolver.java
NodeVisitorFactory (Interface)
The node visitor factory creates NodeVisitors. Extension can provide own implementation to provide [6 implementers]
pebble/src/main/java/io/pebbletemplates/pebble/extension/NodeVisitorFactory.java

Core symbols most depended-on inside this repo

getTemplate
called by 638
pebble/src/main/java/io/pebbletemplates/pebble/PebbleEngine.java
build
called by 636
pebble/src/main/java/io/pebbletemplates/pebble/lexer/Syntax.java
evaluate
called by 620
pebble/src/main/java/io/pebbletemplates/pebble/template/PebbleTemplate.java
loader
called by 560
pebble/src/main/java/io/pebbletemplates/pebble/PebbleEngine.java
strictVariables
called by 559
pebble/src/main/java/io/pebbletemplates/pebble/PebbleEngine.java
add
called by 197
pebble/src/main/java/io/pebbletemplates/pebble/utils/OperatorUtils.java
peek
called by 193
pebble/src/main/java/io/pebbletemplates/pebble/lexer/TokenStream.java
append
called by 132
pebble/src/main/java/io/pebbletemplates/pebble/lexer/TemplateSource.java

Shape

Method 2,358
Class 448
Interface 28
Enum 8

Languages

Java100%

Modules by API surface

pebble/src/test/java/io/pebbletemplates/pebble/GetAttributeTest.java98 symbols
pebble/src/test/java/io/pebbletemplates/pebble/CoreFiltersTest.java97 symbols
pebble/src/test/java/io/pebbletemplates/pebble/CoreTagsTest.java71 symbols
pebble/src/test/java/io/pebbletemplates/pebble/ArraySyntaxTest.java57 symbols
pebble/src/test/java/io/pebbletemplates/pebble/LogicTest.java51 symbols
pebble/src/main/java/io/pebbletemplates/pebble/lexer/Syntax.java43 symbols
pebble-spring/pebble-spring-boot-starter/src/main/java/io/pebbletemplates/boot/autoconfigure/PebbleProperties.java41 symbols
pebble/src/main/java/io/pebbletemplates/pebble/PebbleEngine.java38 symbols
pebble/src/test/java/io/pebbletemplates/pebble/ContextTest.java37 symbols
pebble/src/test/java/io/pebbletemplates/pebble/OverloadedMethodTest.java32 symbols
pebble/src/test/java/io/pebbletemplates/pebble/MapSyntaxTest.java32 symbols
pebble/src/main/java/io/pebbletemplates/pebble/utils/OperatorUtils.java28 symbols

For agents

$ claude mcp add pebble \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page