pattern-lab / patternengine-php-twig

Twig-based PatternEngine for Pattern Lab.
http://patternlab.io/
MIT License
78 stars 36 forks source link

How to use shorthand syntax outside of patternlab itself? #54

Open andriokha opened 5 years ago

andriokha commented 5 years ago

Hi,

Thanks for all the work that's gone into this project!

I was hoping to use the shorthand include syntax outside of Pattern Lab (in Drupal as it happens). I found the same request from 2016 in https://github.com/pattern-lab/edition-php-twig-standard/issues/18. In that issue there's a workaround suggested and the issue was closed.

I was just wondering if there was any interest in trying to go further and make the pattern partial loader itself available to consumers such as Drupal? I've done a simple PoC that seems to work for me:

  1. pattern-lab-php-path-src-exporter: A PL listener that dumps the pattern paths data (ie the second argument to \PatternLab\PatternEngine\Twig\Loaders\Twig\PatternPartialLoader::__construct()) to a file.
  2. patternlabloader: A Drupal module that extends PatternPartialLoader to read the location of the pattern paths data file from the theme info file, and use it to construct the loader.

I'm quite new to Pattern Lab, maybe there's a better way to do this? At the moment a pain point is obviously that to get the partial loader and utility class you need patternengine-twig which needs core + deps, and really this is all for two classes: \PatternLab\PatternEngine\Twig\Loaders\Twig\PatternPartialLoader and \PatternLab\PatternEngine\Util.

Would there be any chance we could grab the pattern partial loader without the rest of pattern lab? Any advice/suggestions?

Thanks for your time and consideration!

andriokha commented 5 years ago

Connected issue on drupal.org: Support same including patterns like Pattern Lab

sghoweri commented 5 years ago

@andriokha out of curiosity, have you looked into using Twig namespaces to basically get the same outcome (shorter Twig template paths + a little less brittle integrations if folder names change), but using a standard that Pattern Lab and Drupal (and any other system that speaks Twig for that matter) can understand?

Ex. {% include “@bolt-components-button/button.twig” %}

There’s been a ton of progress already made on this integration approach in the Pattern Lab / Drupal community (plugins, examples, modules, etc) if this fits the bill!

andriokha commented 5 years ago

hey @sghoweri, thanks so much for your suggestion. When you put it like that, I start to see why maybe people haven't been working on getting this done (:

I was particularly hoping to be in a situation where unhiding a pattern wouldn't cause code churn (ie having to update the filename everwhere it's included). IIUC using a Twig namespace wouldn't help me there? Also there's a chance we'll be moving away from PHP and/or Twig in the future but stick with PL so I thought it might be neat to have something compatible between them. I guess it's a bit of a niche need (:

Thanks again for your time!