Skip to content

Commit

Permalink
Extracted TwigTemplateEngine in its own package
Browse files Browse the repository at this point in the history
  • Loading branch information
Loïc Chardonnet committed Apr 28, 2015
1 parent 4686aec commit a593f0c
Show file tree
Hide file tree
Showing 34 changed files with 2 additions and 395 deletions.
86 changes: 1 addition & 85 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,91 +14,7 @@ console output or displayed in a web page. Possibilities are endless!

Install it using [Composer](https://getcomposer.org/download):

composer require memio/pretty-printer:~1.0@rc

## Example

We're going to generate a class with a constructor and two attributes:

```php
<?php

require __DIR__.'/vendor/autoload.php';

use Memio\PrettyPrinter\PrettyPrinter;
use Memio\PrettyPrinter\TwigExtension\Line\ContractLineStrategy;
use Memio\PrettyPrinter\TwigExtension\Line\FileLineStrategy;
use Memio\PrettyPrinter\TwigExtension\Line\Line;
use Memio\PrettyPrinter\TwigExtension\Line\MethodPhpdocLineStrategy;
use Memio\PrettyPrinter\TwigExtension\Line\ObjectLineStrategy;
use Memio\PrettyPrinter\TwigExtension\Line\StructurePhpdocLineStrategy;
use Memio\PrettyPrinter\TwigExtension\Type;
use Memio\PrettyPrinter\TwigExtension\Whitespace;
use Memio\PrettyPrinter\TwigTemplateEngine;
use Memio\Model\File;
use Memio\Model\Object;
use Memio\Model\Property;
use Memio\Model\Method;
use Memio\Model\Argument;

// Initialize the code generator
$loader = new \Twig_Loader_Filesystem(__DIR__.'/templates');
$twig = new \Twig_Environment($loader);

$line = new Line();
$line->add(new ContractLineStrategy());
$line->add(new FileLineStrategy());
$line->add(new MethodPhpdocLineStrategy());
$line->add(new ObjectLineStrategy());
$line->add(new StructurePhpdocLineStrategy());

$twig->addExtension(new Type());
$twig->addExtension(new Whitespace($line));

$templateEngine = new TwigTemplateEngine($twig);
$prettyPrinter = new PrettyPrinter($templateEngine);

// Describe the code you want to generate using "Models"
$myService = File::make('src/Vendor/Project/MyService.php')
->setStructure(
Object::make('Vendor\Project\MyService')
->addProperty(new Property('createdAt'))
->addProperty(new Property('filename'))
->addMethod(
Method::make('__construct')
->addArgument(new Argument('DateTime', 'createdAt'))
->addArgument(new Argument('string', 'filename'))
)
)
;

// Generate the code and display in the console
echo $prettyPrinter->generateCode($myService);

// Or display it in a browser
// echo '<pre>'.htmlspecialchars($prettyPrinter->generateCode($myService)).'</pre>';
```

With this simple example, we get the following output:

```
<?php
namespace Vendor\Project;
class MyService
{
private $createdAt;
private $filename;
public function __construct(DateTime $createdAt, $filename)
{
}
}
```

Have a look at [the main respository](http://github.com/memio/memio) to discover the full power of Memio.
composer require memio/pretty-printer:~1.0

## Want to know more?

Expand Down
3 changes: 1 addition & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
}},
"require": {
"memio/model": "~1.0",
"php": ">=5.3.3",
"twig/twig": "~1.18"
"php": ">=5.3.3"
},
"require-dev": {
"ciaranmcnulty/phpspec-typehintedmethods": "~1.1",
Expand Down
14 changes: 0 additions & 14 deletions config/Locate.php

This file was deleted.

41 changes: 0 additions & 41 deletions spec/Memio/PrettyPrinter/TwigTemplateEngineSpec.php

This file was deleted.

46 changes: 0 additions & 46 deletions src/Memio/PrettyPrinter/TwigTemplateEngine.php

This file was deleted.

4 changes: 0 additions & 4 deletions templates/argument.twig

This file was deleted.

8 changes: 0 additions & 8 deletions templates/collection/argument_collection.twig

This file was deleted.

4 changes: 0 additions & 4 deletions templates/collection/arguments/inline.twig

This file was deleted.

5 changes: 0 additions & 5 deletions templates/collection/arguments/multiline.twig

This file was deleted.

4 changes: 0 additions & 4 deletions templates/collection/constant_collection.twig

This file was deleted.

4 changes: 0 additions & 4 deletions templates/collection/contract_collection.twig

This file was deleted.

4 changes: 0 additions & 4 deletions templates/collection/fully_qualified_name_collection.twig

This file was deleted.

3 changes: 0 additions & 3 deletions templates/collection/method_collection.twig

This file was deleted.

7 changes: 0 additions & 7 deletions templates/collection/methods/pure_virtual.twig

This file was deleted.

3 changes: 0 additions & 3 deletions templates/collection/methods/pure_virtual_collection.twig

This file was deleted.

7 changes: 0 additions & 7 deletions templates/collection/phpdoc/parameter_tag_collection.twig

This file was deleted.

3 changes: 0 additions & 3 deletions templates/collection/property_collection.twig

This file was deleted.

2 changes: 0 additions & 2 deletions templates/constant.twig

This file was deleted.

15 changes: 0 additions & 15 deletions templates/contract.twig

This file was deleted.

19 changes: 0 additions & 19 deletions templates/file.twig

This file was deleted.

2 changes: 0 additions & 2 deletions templates/fully_qualified_name.twig

This file was deleted.

9 changes: 0 additions & 9 deletions templates/method.twig

This file was deleted.

7 changes: 0 additions & 7 deletions templates/method_body.twig

This file was deleted.

22 changes: 0 additions & 22 deletions templates/object.twig

This file was deleted.

2 changes: 0 additions & 2 deletions templates/phpdoc/api_tag.twig

This file was deleted.

2 changes: 0 additions & 2 deletions templates/phpdoc/deprecation_tag.twig

This file was deleted.

3 changes: 0 additions & 3 deletions templates/phpdoc/description.twig

This file was deleted.

8 changes: 0 additions & 8 deletions templates/phpdoc/license_phpdoc.twig

This file was deleted.

21 changes: 0 additions & 21 deletions templates/phpdoc/method_phpdoc.twig

This file was deleted.

Loading

0 comments on commit a593f0c

Please sign in to comment.