Comments (4)
Hi @spotman! Thanks for reporting the issue, what you are trying to achieve can be seen as two problems:
- actually parsing shortcode wildcards, ie. matching shortcodes with certain wildcards with the single handler (register
[banner-*]
, have all[banner-top]
,[banner-bottom_left]
shortcodes passed to that single handler), - handling wildcard shortcode just like any other one, just falling back to default handler to dispatch it manually or handle inside.
Actually parsing wildcards is an interesting idea I will put into #16. I will need to find a way to make it work without changing shortcode syntax. As for the default handler, I prepared an example for you below - it works by catching all unhandled shortcodes and replacing them out manually. Note that I used TextSerializer
instead of returning raw string because it automatically produces proper self-closed and with-content shortcode, but it is not mandatory. Please let me know what do you think and whether it solves your problem.
$handlers = new HandlerContainer();
$handlers->setDefault(function(ShortcodeInterface $s) {
if(preg_match('~^banner-([a-zA-Z0-9_]+)$~', $s->getName(), $matches)) {
$serializer = new TextSerializer();
$new = new Shortcode('banner', ['type' => $matches[1]], $s->getContent());
return $serializer->serialize($new);
}
});
$processor = new Processor(new RegularParser(), $handlers);
assert('[banner type=top /]' === $processor->process('[banner-top]'));
assert('[banner type=top]content[/banner]' === $processor->process('[banner-top]content[/banner-top]'));
assert('[banner type=top_left /]' === $processor->process('[banner-top_left]'));
from shortcode.
@thunderer Thank you for quick and detailed answer! I've tested it and this approach is OK for me coz all other shortcodes are fully described. You may close this issue (or keep it as doc, up to you).
from shortcode.
I'm happy that it solved your problem, I will probably update README with this example. You gave me an interesting idea to think about, thanks!
from shortcode.
I'm glad to help you :)
from shortcode.
Related Issues (20)
- mb_strpos() 3rd parameter is not nullable in PHP 8.1 HOT 2
- [question] Convert content with shortcodes into Json string ? HOT 2
- (question) Also retrieve content outside shortcodes when parsing HOT 3
- Nested shortcodes HOT 4
- facade process not working HOT 3
- On large HTML files, RegularParser does not fire any handler. HOT 12
- RegularParser = Uncaught Error: Maximum function nesting level of '256' reached, aborting! HOT 9
- regular parser throws exception with `param=0` HOT 4
- Method getParameter returns value with quotes HOT 4
- Large file not firing all shortcodes with Regular Parser HOT 4
- Parse error with Vietnamese characters or open and close tag only HOT 6
- I made a new Shortcode library - Inspired by yours HOT 6
- PHP 7.4 issues HOT 3
- mb_strrpos() 3rd parameter deprecated in PHP 7.4 HOT 2
- Custom Short Codes HOT 3
- Multiple options in one add handler HOT 2
- Nested Shortcode for foreach loop HOT 2
- Is it possible to use this without composer? HOT 5
- Is there any built-in method to strip all shortcodes in provided text ? HOT 4
- Issue with Nested shortcodes HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shortcode.