Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Shortcode Laravel Package

thunderer/shortcode

Framework-agnostic PHP library for parsing and processing shortcodes/BBCodes. Extract shortcodes from text, handle replacements, and apply them via processors and events. Includes serializers for Text/XML/JSON/YAML. Supports PHP 5.3–8.x.

View on GitHub
Deep Wiki
Context7
Version
  • v0.6.2 (25.04.2016)

    • fixed issue with parsing shortcode tokens inside shortcode content.
  • v0.6.1 (25.02.2016)

    • fixed bug with not recalculating new text length after applying shortcode replacement which caused the replacements to be applied only up to the length of source text.
  • v0.6.0 (13.02.2016)

    • README was completely rewritten to take into account newest additions,
    • introduced FilterShortcodesEvent for modifying set of parsed shortcodes before processing them,
    • introduced ReplaceShortcodesEvent to alter the way shortcode replacements are applied to source text at each processing level,
    • introduced EventContainerInterface with default implementation EventContainer to store event handlers,
    • introduced events handling in Processor with events above,
    • added Processor::withEventContainer() to configure event handlers,
    • added ProcessedShortcode::hasAncestor() to detect if shortcode has any parent with given name,
    • introduced ReplacedShortcode which represents parsed shortcode data with replacement returned from its handler,
    • introduced ready to use event handlers classes:
      • FilterRawEventHandler allows to automatically configure shortcodes that should not have their content processed,
      • ReplaceJoinEventHandler discards the parent shortcode content and returns only concatenated replacements,
    • fixed HandlerContainer::addAlias() bug that may have silently added aliases for default handler,
    • added possibility to create WordpressParser with names from array or HandlerContainer to catch only those like WordPress does,
    • fixed differences between parsers and standardized validating allowed characters in their names in RegexBuilderUtility::buildNameRegex()
    • introduced several ready to use shortcode handlers described in dedicated section of README,
    • refactored ShortcodeFacade for better developer experience.
  • v0.5.3 (26.01.2016)

    • massive performance improvements in RegularParser,
    • fixed problem with multibyte characters in parsed texts,
    • fixed matching shortcodes with invalid names.
  • v0.5.2 (20.01.2016)

    • fixed bug with subsequent string tokens in RegularParser.
  • v0.5.1 (12.11.2015)

    • fixed bug leaving part of shortcode text when it contained multibyte characters.
  • v0.5.0 (28.10.2015)

    • fixed bug with parent shortcode not being correctly set when there was more than one shortcode at given recursion level,
    • fixed bug which caused shortcode content to be returned without modification when auto processing was enabled, there was no handler for that shortcode, but there were handlers for inner shortcodes,
    • added example demonstrating how to remove content outside shortcodes,
    • added ProcessedShortcode::getTextContent() to allow returning unprocessed content regardless of auto processing setting value,
    • added XML and YAML serializers,
    • AbstractShortcode::getParameter() does not throw exception for missing parameter without default value,
    • removed create*() methods from ShortcodeFacade, now all dependencies construction is inside the constructor,
    • removed classes and methods deprecated in previous releases,
    • removed RegexExtractor and ExtractorInterface, its functionality was moved to Parser - now it returns instances of ParsedShortcodeInterface,
    • removed Match and MatchInterface,
    • removed HandlerInterface, from now on handlers can be only closures and classes with __invoke() (callable typehint),
    • removed all handler-related methods from Processor (extracted to HandlerContainer):
      • addHandler(),
      • addHandlerAlias(),
      • setDefaultHandler().
    • refactored ShortcodeFacade to also use HandlerContainer, also SyntaxInterface parameter is now required,
    • Processor is now immutable, options setters were refactored to return reconfigured clones:
      • setRecursionDepth() » withRecursionDepth(),
      • setMaxIterations() » withMaxIterations(),
      • setAutoProcessContent() » withAutoProcessContent(),
    • extracted HandlerContainerInterface and its default implementation HandlerContainer from Processor,
    • Processor now requires instance of HandlerContainer,
    • introduced RegularParser with dedicated parser implementation that correctly handles nested shortcodes,
    • introduced WordpressParser with slightly refactored implementation of WordPress' regex-based shortcodes in case anyone would like full compatibility,
    • introduced ImmutableHandlerContainer as an alternative implementation,
    • introduced ProcessorContext to store internal state when processing text,
    • introduced AbstractShortcode, restored final on regular Shortcode,
    • ProcessedShortcode can be now created with static method createFromContext() using instance of ProcessorContext,
    • introduced ParsedShortcode and ParsedShortcodeInterface that extends ShortcodeInterface with position and exact text match.
  • v0.4.0 (15.07.2015)

    • classes and interfaces were moved to their own namespaces, update your use clauses and use new names. Backward compatibility was fully maintained, but note that previous class files will be removed in the next release. Old class files contain call to class_alias() and empty implementation for IDE autocompletion, interfaces extend those from new locations. All modified elements are listed below:
      • Extractor » Parser\RegexExtractor,
      • ExtractorInterface » Extractor\ExtractorInterface,
      • HandlerInterface » Extractor\HandlerInterface,
      • Parser » Parser\RegexParser,
      • ParserInterface » Parser\ParserInterface,
      • Processor » Processor\Processor,
      • ProcessorInterface » Processor\ProcessorInterface,
      • SerializerInterface » Serializer\SerializerInterface,
      • Shortcode » Shortcode\Shortcode,
      • Syntax » Syntax\Syntax,
      • SyntaxBuilder » Syntax\SyntaxBuilder,
    • next version of this library will remove all files marked as deprecated (listed above) and will introduce backward incompatible changes to allow finishing refactorings for version 1.0. Sneak peek:
      • Extractor abstraction will be removed and its functionality will be merged with Parser,
      • processing shortcode content will be moved to its handler,
      • ProcessedShortcode will be aware of ProcessorInterface instance that is processing it,
      • HandlerContainer will be refactored outside Processor to remove SRP violation,
      • various methods will lose their ability to accept nullable parameters to enforce visibility of dependencies,
      • ProcessedShortcode will not extend Shortcode and Shortcode will be final again,
      • Match class will be removed and ParsedShortcode will be introduced in its place,
    • introduced ShortcodeInterface for reusable shortcode implementation, handlers should typehint it,
    • nearly all classes and interfaces were renamed and moved to their own namespaces, see UPGRADE,
    • introduced ProcessedShortcode to provide more runtime information about context in handlers,
    • strict syntax capabilities were removed (will be reimplemented in the future),
    • introduced CommonSyntax with default values,
    • introduced RegexBuilderUtility to separate regex building from Syntax class,
    • improved regular expressions which now offer more flexibility,
    • HandlerInterface was deprecated, please use classes with __invoke() method.
  • v0.3.0 (08.05.2015)

    • added support for [self-closing /] shortcodes,
    • added library facade for easier usage,
    • Syntax regular expressions are now built once in constructor,
    • added support for whitespace between shortcode fragments, ie. [ code arg = val ] [ / code ],
    • Syntax and SyntaxBuilder support whitespaced and strict syntaxes.
  • v0.2.2 (26.04.2015)

    • fixed support for PHP 5.3.
  • v0.2.1 (23.04.2015)

    • fixed matching simple parameter values enclosed by delimiters,
    • fixed missing support for escaping characters inside parameter values.
  • v0.2.0 (17.04.2015)

    • added HandlerInterface to enable shortcode handlers with basic validation capabilities,
    • added default handler for processing shortcodes without registered name handlers,
    • added handler aliasing to reuse name handlers without manually registering them,
    • added recursive processing with ability to control recursion depth,
    • added iterative processing with ability to control maximum number of iterations,
    • added configurable syntax to enable different shortcode formats without modifying library code,
    • added syntax builder to ease building Syntax object,
    • added dash - to allowed characters in shortcode names,
    • deprecated Processor::setRecursion(), use Processor::setRecursionDepth() instead,
    • removed regular expressions constants from classes.
  • v0.1.0 (06.04.2015)

    • first library version.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky