Skip to content

Commit c01de1f

Browse files
committed
Add public API
1 parent 1591373 commit c01de1f

File tree

6 files changed

+51
-30
lines changed

6 files changed

+51
-30
lines changed

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
1-
# handlebars.php
1+
# PHP Handlebars Parser
22

3-
Parse and render [Handlebars](https://handlebarsjs.com) templates with PHP.
3+
Parse [Handlebars](https://handlebarsjs.com) templates to a spec-compliant AST with PHP.
44

55
## Installation
66

7-
`composer require devtheorem/handlebars.php`
7+
`composer require devtheorem/php-handlebars-parser`
88

99
## Usage
1010

11-
Todo
11+
```php
12+
use DevTheorem\HandlebarsParser\ParserFactory;
13+
14+
$parser = (new ParserFactory())->create();
15+
16+
$template = "Hello {{name}}!";
17+
18+
$result = $parser->parse($template);
19+
```
20+
21+
If the template contains invalid syntax, an exception will be thrown.
22+
Otherwise, `$result` will contain a `DevTheorem\HandlebarsParser\Ast\Program` instance.
1223

1324
## Author
1425

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "devtheorem/handlebars-parser",
2+
"name": "devtheorem/php-handlebars-parser",
33
"description": "Parse Handlebars templates to a spec-compliant AST with PHP.",
44
"keywords": [
55
"Handlebars",

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

grammar/parser.template

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@ $meta #
55
#semval(%n) $stackPos-(%l-%n)
66
#semval(%n,%t) $stackPos-(%l-%n)
77

8-
namespace DevTheorem\Handlebars;
9-
10-
use DevTheorem\Handlebars\Ast\ArrayLiteral;
11-
use DevTheorem\Handlebars\Ast\BooleanLiteral;
12-
use DevTheorem\Handlebars\Ast\CloseBlock;
13-
use DevTheorem\Handlebars\Ast\CommentStatement;
14-
use DevTheorem\Handlebars\Ast\ContentStatement;
15-
use DevTheorem\Handlebars\Ast\Hash;
16-
use DevTheorem\Handlebars\Ast\HashLiteral;
17-
use DevTheorem\Handlebars\Ast\HashPair;
18-
use DevTheorem\Handlebars\Ast\InverseChain;
19-
use DevTheorem\Handlebars\Ast\NullLiteral;
20-
use DevTheorem\Handlebars\Ast\NumberLiteral;
21-
use DevTheorem\Handlebars\Ast\OpenBlock;
22-
use DevTheorem\Handlebars\Ast\OpenHelper;
23-
use DevTheorem\Handlebars\Ast\OpenPartialBlock;
24-
use DevTheorem\Handlebars\Ast\PartialStatement;
25-
use DevTheorem\Handlebars\Ast\PathSegment;
26-
use DevTheorem\Handlebars\Ast\StringLiteral;
27-
use DevTheorem\Handlebars\Ast\SubExpression;
28-
use DevTheorem\Handlebars\Ast\UndefinedLiteral;
8+
namespace DevTheorem\HandlebarsParser;
9+
10+
use DevTheorem\HandlebarsParser\Ast\ArrayLiteral;
11+
use DevTheorem\HandlebarsParser\Ast\BooleanLiteral;
12+
use DevTheorem\HandlebarsParser\Ast\CloseBlock;
13+
use DevTheorem\HandlebarsParser\Ast\CommentStatement;
14+
use DevTheorem\HandlebarsParser\Ast\ContentStatement;
15+
use DevTheorem\HandlebarsParser\Ast\Hash;
16+
use DevTheorem\HandlebarsParser\Ast\HashLiteral;
17+
use DevTheorem\HandlebarsParser\Ast\HashPair;
18+
use DevTheorem\HandlebarsParser\Ast\InverseChain;
19+
use DevTheorem\HandlebarsParser\Ast\NullLiteral;
20+
use DevTheorem\HandlebarsParser\Ast\NumberLiteral;
21+
use DevTheorem\HandlebarsParser\Ast\OpenBlock;
22+
use DevTheorem\HandlebarsParser\Ast\OpenHelper;
23+
use DevTheorem\HandlebarsParser\Ast\OpenPartialBlock;
24+
use DevTheorem\HandlebarsParser\Ast\PartialStatement;
25+
use DevTheorem\HandlebarsParser\Ast\PathSegment;
26+
use DevTheorem\HandlebarsParser\Ast\StringLiteral;
27+
use DevTheorem\HandlebarsParser\Ast\SubExpression;
28+
use DevTheorem\HandlebarsParser\Ast\UndefinedLiteral;
2929
#include;
3030

3131
/* This is an automatically GENERATED file, which should not be manually edited.

src/ParserFactory.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace DevTheorem\HandlebarsParser;
4+
5+
class ParserFactory
6+
{
7+
public function create(): Parser
8+
{
9+
return new Parser(new Lexer());
10+
}
11+
}

tests/ParserTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
namespace DevTheorem\HandlebarsParser\Test;
44

55
use DevTheorem\HandlebarsParser\Ast\Program;
6-
use DevTheorem\HandlebarsParser\Lexer;
7-
use DevTheorem\HandlebarsParser\Parser;
6+
use DevTheorem\HandlebarsParser\ParserFactory;
87
use PHPUnit\Framework\Attributes\DataProvider;
98
use PHPUnit\Framework\TestCase;
109

@@ -37,7 +36,7 @@ public static function jsonSpecProvider(): array
3736
#[DataProvider("jsonSpecProvider")]
3837
public function testSpecs(array $spec): void
3938
{
40-
$parser = new Parser(new Lexer());
39+
$parser = (new ParserFactory())->create();
4140

4241
try {
4342
$result = $parser->parse($spec['template']);

0 commit comments

Comments
 (0)