2017 © Pedro Peláez
 

library gutenberg

PHP based templa

image

ldf/gutenberg

PHP based templa

  • Thursday, June 21, 2018
  • by gotardo
  • Repository
  • 1 Watchers
  • 0 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 11 Versions
  • 500 % Grown

The README.md

ldf-gutenberg v0.2.2

Build Status Maintainability Test Coverage, (*1)

Gutenberg is a view renderer written in PHP and based on the fact that view must be totally separated from logic., (*2)

This system will allow you to easily substitute some variables for values and compose views in an easy way for a CMS, but you will not find control structures such as if/ese statements or even template inheritance. If you are looking for this kind of feature, I recommend to have a look at Blade or Twig., (*3)

How to install

You can install Gutenberg with composer:, (*4)

composer require ldf/gutenberg

Instantiate Gutenberg

Gutenberg is instantiated by a builder class called Gutenberg:, (*5)

$Gutenberg = Gutenberg::ForWorkspace('./path/to/templates');

By using the fluent api, you will be able to set up some extra behaviours. The following lines will build a Gutenberg object with Wipe Out mode enabled:, (*6)

// Get the object
$Gutenberg = Gutenberg::ForWorkspace('./path/to/templates')
    ->withWipeOut();

// Call the render function to get the rendered page    
return $Gutenberg->render('page', [
    'var1' => 'value1',
    'var2' => 'value2',
]);

Template files

Template files are just .html files (as they are expected to contain just html with a couple of Guttemberg tweaks). They must be place in a workspace., (*7)

A workspace is essentially a path to a directory., (*8)

Templates are referenced by an id which, by convention, resolves to a file in the workspace., (*9)

For example, a template identified by myTemplate will resolve to path ./workspace/myTemplate.html and another tempalte identified by partials/_widget will resolve to path ./workspace/partials/_widget.html, (*10)

  • By the way, it is recommended that, by convention you prefix your partial files with underscore _ (you may recognize this convention).

If you decide to an extension other than .html for your templates, you can specify this as part of your identifier with something like myTemplate.tpl., (*11)

Keywords

Gutenberg provides some expressions to allow you to define some dinamic points in your templates., (*12)

Generally speaking

Expressions in Gutenberg are anything you place between double curly braces., (*13)

If you want to print double curly braces you must use the html entity instead:, (*14)

The value of variable "myvar" is {{ myvar }}
{{This will be displayed in the html.|;|

Variables

Variables will be refered as {{ varname }}, (*15)

import

{{ import _partialTemplateId }}, (*16)

Please, notice that in this case the Id begins with an underscore _. This way Gutenberg knows that this template is a partial template. Partial templates, by convention must begin by underscore. Indeed, if they don't begin by underscore they import expression will be ignored., (*17)

Also notice that you are already in a workspace, so you can not import templates from another workspace. This way you are forced to avoid cross dependencies., (*18)

wrapper

{{ wrapper tplname}}, (*19)

We don't support inheritance -no, we don't like inheritance. Instead, you are able to wrap templates. Think of wrapping as a sort of reverse-import in which the wrapped template can define one -and only one- template to be wrapped., (*20)

When you use wrapping, the source code file must start exactly by the wrapper command., (*21)

Wrappers use the {{ content }} mark to define the place were the inner template will be wrapped., (*22)

comments

{{- (a.k.a X-Wing operator), (*23)

The rest of the line is a comment and will be ingored. For multiple-line comments you can send some X-Wing spaceships:, (*24)

```html/gutenberg {{- {{- This is a multi-line comment. {{- You can use it as header of template files. {{- Everything you write in a comment will be ignored and will not appear in the ouput. {{- This will be rendered , (*25)


Now, be a good kid and go add some comments to your code. ### Control structures So, how can I add some structures such as `if`/`else` or `foreach`? The answer is easy: __you can't__. Logic should not be on your templates, so you must take care of passing exactly some ready-to-use substitution values. ## Extra options By using the builder, you will be able to configure some extra options ### WipeOut You can enable wipe out feature by calling ```withWipeOut```. When Wipe out option is enabled any Gutenberg tag which is not recognized, e.g. {{ unknownVariable }}, will be cleaned from the template. An E_USER_WARNING level error will be raised. ```php $Gutenberg = Gutenberg::ForWorkspace('./path/to/templates') ->withWipeOut() ->get();

Extending Gutenberg's functionality.

Gutenberg provides a feature to add some custom compilers. This will allow you to create your own language expressions. You can add your own language expression calls by implementing ICompiler:, (*26)

class MyCustomCompiler implements \Ldf\Gutenberg\ICompiler
{
    public function compile(string $tpl) : string
    {
        ...
    }
}

You can add as many custom compilers as you want., (*27)

Gutenberg::ForWorkspace('./FakeTemplates')
    ->addCustomCompiler($myCustomCompiler1)
    ->addCustomCompiler($myCustomCompiler2)

Just take into account that compilers are executed sequentially, begining by the core compilers and the core options. Custom compilers will be executed at the end., (*28)

The Versions

21/06 2018

dev-master

9999999-dev

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

20/06 2018

v0.2.0

0.2.0.0

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

19/06 2018

dev-dev

dev-dev

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

19/06 2018

v0.2.0-RC2

0.2.0.0-RC2

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

19/06 2018

v0.2.0-RC

0.2.0.0-RC

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

19/06 2018

dev-feature/Custom_tags

dev-feature/Custom_tags

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

14/06 2018

dev-feature/this_year_tag

dev-feature/this_year_tag

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

09/06 2018

v0.1.2

0.1.2.0

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

09/06 2018

v0.1.2-RC

0.1.2.0-RC

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

29/05 2018

dev-feature/Template_renderer

dev-feature/Template_renderer

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating

29/05 2018

v0.1.1-BETA

0.1.1.0-beta

PHP based templa

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

by Gotardo González

templating