├── .gitignore
├── app
└── Component
│ ├── AddTask.pre
│ ├── Page.pre
│ ├── Task.pre
│ └── TaskList.pre
├── composer.json
├── composer.lock
├── demo.gif
├── public
└── index.php
├── readme.md
└── server.pre
/.gitignore:
--------------------------------------------------------------------------------
1 | /app/**/*.php
2 | /pre.paths
3 | /pre.compilers
4 | /server.php
5 | /vendor
6 |
--------------------------------------------------------------------------------
/app/Component/AddTask.pre:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 | );
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/Component/Page.pre:
--------------------------------------------------------------------------------
1 | hasValid($props));
12 |
13 | { $children } = $props;
14 |
15 | return (
16 | "".
17 |
18 |
19 | {$children}
20 |
21 |
22 | );
23 | }
24 |
25 | private function hasValid($props)
26 | {
27 | if (empty($props["children"])) {
28 | throw new InvalidArgumentException("page needs content (children)");
29 | }
30 |
31 | return true;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Component/Task.pre:
--------------------------------------------------------------------------------
1 | hasValid($props));
12 |
13 | { $children, $id } = $props;
14 |
15 | return (
16 |
17 | {$children}
18 | remove
19 |
20 | );
21 | }
22 |
23 | private function hasValid($props)
24 | {
25 | if (!isset($props["id"])) {
26 | throw new InvalidArgumentException("task needs id (attribute)");
27 | }
28 |
29 | if (empty($props["children"])) {
30 | throw new InvalidArgumentException("task needs text (children)");
31 | }
32 |
33 | return true;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/Component/TaskList.pre:
--------------------------------------------------------------------------------
1 |
13 | {$this->children($children)}
14 |
15 | );
16 | }
17 |
18 | private function children($children)
19 | {
20 | if (count($children)) {
21 | return {$children}->map(($task) => {
22 | return (
23 | {$task["text"]}
24 | );
25 | });
26 | }
27 |
28 | return (
29 | No tasks
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "silex/silex": "^2.0",
4 | "pre/collections": "^0.4.1",
5 | "pre/short-closures": "^0.5.2",
6 | "pre/phpx": "^0.2.0"
7 | },
8 | "autoload": {
9 | "psr-4": {
10 | "App\\": "app"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "85e18c12c5e3aefbfb69f88d85709188",
8 | "packages": [
9 | {
10 | "name": "doctrine/annotations",
11 | "version": "v1.5.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/doctrine/annotations.git",
15 | "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f",
20 | "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "doctrine/lexer": "1.*",
25 | "php": "^7.1"
26 | },
27 | "require-dev": {
28 | "doctrine/cache": "1.*",
29 | "phpunit/phpunit": "^5.7"
30 | },
31 | "type": "library",
32 | "extra": {
33 | "branch-alias": {
34 | "dev-master": "1.5.x-dev"
35 | }
36 | },
37 | "autoload": {
38 | "psr-4": {
39 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
40 | }
41 | },
42 | "notification-url": "https://packagist.org/downloads/",
43 | "license": [
44 | "MIT"
45 | ],
46 | "authors": [
47 | {
48 | "name": "Roman Borschel",
49 | "email": "roman@code-factory.org"
50 | },
51 | {
52 | "name": "Benjamin Eberlei",
53 | "email": "kontakt@beberlei.de"
54 | },
55 | {
56 | "name": "Guilherme Blanco",
57 | "email": "guilhermeblanco@gmail.com"
58 | },
59 | {
60 | "name": "Jonathan Wage",
61 | "email": "jonwage@gmail.com"
62 | },
63 | {
64 | "name": "Johannes Schmitt",
65 | "email": "schmittjoh@gmail.com"
66 | }
67 | ],
68 | "description": "Docblock Annotations Parser",
69 | "homepage": "http://www.doctrine-project.org",
70 | "keywords": [
71 | "annotations",
72 | "docblock",
73 | "parser"
74 | ],
75 | "time": "2017-07-22T10:58:02+00:00"
76 | },
77 | {
78 | "name": "doctrine/lexer",
79 | "version": "v1.0.1",
80 | "source": {
81 | "type": "git",
82 | "url": "https://github.com/doctrine/lexer.git",
83 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
84 | },
85 | "dist": {
86 | "type": "zip",
87 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
88 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
89 | "shasum": ""
90 | },
91 | "require": {
92 | "php": ">=5.3.2"
93 | },
94 | "type": "library",
95 | "extra": {
96 | "branch-alias": {
97 | "dev-master": "1.0.x-dev"
98 | }
99 | },
100 | "autoload": {
101 | "psr-0": {
102 | "Doctrine\\Common\\Lexer\\": "lib/"
103 | }
104 | },
105 | "notification-url": "https://packagist.org/downloads/",
106 | "license": [
107 | "MIT"
108 | ],
109 | "authors": [
110 | {
111 | "name": "Roman Borschel",
112 | "email": "roman@code-factory.org"
113 | },
114 | {
115 | "name": "Guilherme Blanco",
116 | "email": "guilhermeblanco@gmail.com"
117 | },
118 | {
119 | "name": "Johannes Schmitt",
120 | "email": "schmittjoh@gmail.com"
121 | }
122 | ],
123 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
124 | "homepage": "http://www.doctrine-project.org",
125 | "keywords": [
126 | "lexer",
127 | "parser"
128 | ],
129 | "time": "2014-09-09T13:34:57+00:00"
130 | },
131 | {
132 | "name": "friendsofphp/php-cs-fixer",
133 | "version": "v2.4.0",
134 | "source": {
135 | "type": "git",
136 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
137 | "reference": "63661f3add3609e90e4ab8115113e189ae547bb4"
138 | },
139 | "dist": {
140 | "type": "zip",
141 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/63661f3add3609e90e4ab8115113e189ae547bb4",
142 | "reference": "63661f3add3609e90e4ab8115113e189ae547bb4",
143 | "shasum": ""
144 | },
145 | "require": {
146 | "doctrine/annotations": "^1.2",
147 | "ext-json": "*",
148 | "ext-tokenizer": "*",
149 | "gecko-packages/gecko-php-unit": "^2.0",
150 | "php": "^5.6 || >=7.0 <7.2",
151 | "sebastian/diff": "^1.4",
152 | "symfony/console": "^3.0",
153 | "symfony/event-dispatcher": "^3.0",
154 | "symfony/filesystem": "^3.0",
155 | "symfony/finder": "^3.0",
156 | "symfony/options-resolver": "^3.0",
157 | "symfony/polyfill-php70": "^1.0",
158 | "symfony/polyfill-php72": "^1.4",
159 | "symfony/process": "^3.0",
160 | "symfony/stopwatch": "^3.0"
161 | },
162 | "conflict": {
163 | "hhvm": "*"
164 | },
165 | "require-dev": {
166 | "johnkary/phpunit-speedtrap": "^1.1",
167 | "justinrainbow/json-schema": "^5.0",
168 | "phpunit/phpunit": "^4.8.35 || ^5.4.3",
169 | "satooshi/php-coveralls": "^1.0",
170 | "symfony/phpunit-bridge": "^3.2.2"
171 | },
172 | "suggest": {
173 | "ext-mbstring": "For handling non-UTF8 characters in cache signature.",
174 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
175 | },
176 | "bin": [
177 | "php-cs-fixer"
178 | ],
179 | "type": "application",
180 | "extra": {
181 | "branch-alias": {
182 | "dev-master": "2.4-dev"
183 | }
184 | },
185 | "autoload": {
186 | "psr-4": {
187 | "PhpCsFixer\\": "src/"
188 | },
189 | "classmap": [
190 | "tests/Test/Assert/AssertTokensTrait.php",
191 | "tests/Test/AbstractFixerTestCase.php",
192 | "tests/Test/AbstractIntegrationTestCase.php",
193 | "tests/Test/IntegrationCase.php",
194 | "tests/Test/IntegrationCaseFactory.php"
195 | ]
196 | },
197 | "notification-url": "https://packagist.org/downloads/",
198 | "license": [
199 | "MIT"
200 | ],
201 | "authors": [
202 | {
203 | "name": "Dariusz Rumiński",
204 | "email": "dariusz.ruminski@gmail.com"
205 | },
206 | {
207 | "name": "Fabien Potencier",
208 | "email": "fabien@symfony.com"
209 | }
210 | ],
211 | "description": "A tool to automatically fix PHP code style",
212 | "time": "2017-07-18T15:35:40+00:00"
213 | },
214 | {
215 | "name": "gecko-packages/gecko-php-unit",
216 | "version": "v2.1",
217 | "source": {
218 | "type": "git",
219 | "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git",
220 | "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e"
221 | },
222 | "dist": {
223 | "type": "zip",
224 | "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/5b9e9622c7efd3b22655270b80c03f9e52878a6e",
225 | "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e",
226 | "shasum": ""
227 | },
228 | "require": {
229 | "php": "^5.3.6 || ^7.0"
230 | },
231 | "require-dev": {
232 | "phpunit/phpunit": "^4.8.35 || ^5.4.3"
233 | },
234 | "type": "library",
235 | "autoload": {
236 | "psr-4": {
237 | "GeckoPackages\\PHPUnit\\": "src\\PHPUnit"
238 | }
239 | },
240 | "notification-url": "https://packagist.org/downloads/",
241 | "license": [
242 | "MIT"
243 | ],
244 | "description": "Additional PHPUnit tests.",
245 | "homepage": "https://github.com/GeckoPackages",
246 | "keywords": [
247 | "extension",
248 | "filesystem",
249 | "phpunit"
250 | ],
251 | "time": "2017-06-20T11:22:48+00:00"
252 | },
253 | {
254 | "name": "nikic/php-parser",
255 | "version": "v3.1.0",
256 | "source": {
257 | "type": "git",
258 | "url": "https://github.com/nikic/PHP-Parser.git",
259 | "reference": "4d4896e553f2094e657fe493506dc37c509d4e2b"
260 | },
261 | "dist": {
262 | "type": "zip",
263 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4d4896e553f2094e657fe493506dc37c509d4e2b",
264 | "reference": "4d4896e553f2094e657fe493506dc37c509d4e2b",
265 | "shasum": ""
266 | },
267 | "require": {
268 | "ext-tokenizer": "*",
269 | "php": ">=5.5"
270 | },
271 | "require-dev": {
272 | "phpunit/phpunit": "~4.0|~5.0"
273 | },
274 | "bin": [
275 | "bin/php-parse"
276 | ],
277 | "type": "library",
278 | "extra": {
279 | "branch-alias": {
280 | "dev-master": "3.0-dev"
281 | }
282 | },
283 | "autoload": {
284 | "psr-4": {
285 | "PhpParser\\": "lib/PhpParser"
286 | }
287 | },
288 | "notification-url": "https://packagist.org/downloads/",
289 | "license": [
290 | "BSD-3-Clause"
291 | ],
292 | "authors": [
293 | {
294 | "name": "Nikita Popov"
295 | }
296 | ],
297 | "description": "A PHP parser written in PHP",
298 | "keywords": [
299 | "parser",
300 | "php"
301 | ],
302 | "time": "2017-07-28T14:45:09+00:00"
303 | },
304 | {
305 | "name": "paragonie/random_compat",
306 | "version": "v2.0.10",
307 | "source": {
308 | "type": "git",
309 | "url": "https://github.com/paragonie/random_compat.git",
310 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d"
311 | },
312 | "dist": {
313 | "type": "zip",
314 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d",
315 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d",
316 | "shasum": ""
317 | },
318 | "require": {
319 | "php": ">=5.2.0"
320 | },
321 | "require-dev": {
322 | "phpunit/phpunit": "4.*|5.*"
323 | },
324 | "suggest": {
325 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
326 | },
327 | "type": "library",
328 | "autoload": {
329 | "files": [
330 | "lib/random.php"
331 | ]
332 | },
333 | "notification-url": "https://packagist.org/downloads/",
334 | "license": [
335 | "MIT"
336 | ],
337 | "authors": [
338 | {
339 | "name": "Paragon Initiative Enterprises",
340 | "email": "security@paragonie.com",
341 | "homepage": "https://paragonie.com"
342 | }
343 | ],
344 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
345 | "keywords": [
346 | "csprng",
347 | "pseudorandom",
348 | "random"
349 | ],
350 | "time": "2017-03-13T16:27:32+00:00"
351 | },
352 | {
353 | "name": "pimple/pimple",
354 | "version": "v3.2.2",
355 | "source": {
356 | "type": "git",
357 | "url": "https://github.com/silexphp/Pimple.git",
358 | "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a"
359 | },
360 | "dist": {
361 | "type": "zip",
362 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/4d45fb62d96418396ec58ba76e6f065bca16e10a",
363 | "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a",
364 | "shasum": ""
365 | },
366 | "require": {
367 | "php": ">=5.3.0",
368 | "psr/container": "^1.0"
369 | },
370 | "require-dev": {
371 | "symfony/phpunit-bridge": "^3.2"
372 | },
373 | "type": "library",
374 | "extra": {
375 | "branch-alias": {
376 | "dev-master": "3.2.x-dev"
377 | }
378 | },
379 | "autoload": {
380 | "psr-0": {
381 | "Pimple": "src/"
382 | }
383 | },
384 | "notification-url": "https://packagist.org/downloads/",
385 | "license": [
386 | "MIT"
387 | ],
388 | "authors": [
389 | {
390 | "name": "Fabien Potencier",
391 | "email": "fabien@symfony.com"
392 | }
393 | ],
394 | "description": "Pimple, a simple Dependency Injection Container",
395 | "homepage": "http://pimple.sensiolabs.org",
396 | "keywords": [
397 | "container",
398 | "dependency injection"
399 | ],
400 | "time": "2017-07-23T07:32:15+00:00"
401 | },
402 | {
403 | "name": "pre/collections",
404 | "version": "0.4.1",
405 | "source": {
406 | "type": "git",
407 | "url": "https://github.com/preprocess/pre-collections.git",
408 | "reference": "96ee6f4ca6035d97e9545bf68a248efb5bc33222"
409 | },
410 | "dist": {
411 | "type": "zip",
412 | "url": "https://api.github.com/repos/preprocess/pre-collections/zipball/96ee6f4ca6035d97e9545bf68a248efb5bc33222",
413 | "reference": "96ee6f4ca6035d97e9545bf68a248efb5bc33222",
414 | "shasum": ""
415 | },
416 | "require": {
417 | "pre/plugin": "^0.7.3"
418 | },
419 | "require-dev": {
420 | "phpunit/phpunit": "^5.0|^6.0"
421 | },
422 | "type": "pre-macro",
423 | "extra": {
424 | "macros": [
425 | "src/macros.yay"
426 | ]
427 | },
428 | "autoload": {
429 | "files": [
430 | "src/parsers.php"
431 | ],
432 | "psr-4": {
433 | "Pre\\Collections\\": "src"
434 | }
435 | },
436 | "notification-url": "https://packagist.org/downloads/",
437 | "license": [
438 | "MIT"
439 | ],
440 | "time": "2017-08-17T15:56:38+00:00"
441 | },
442 | {
443 | "name": "pre/phpx",
444 | "version": "0.2.0",
445 | "source": {
446 | "type": "git",
447 | "url": "https://github.com/preprocess/pre-phpx.git",
448 | "reference": "0c82021ff704796a979843ddfe93c2a65740db8b"
449 | },
450 | "dist": {
451 | "type": "zip",
452 | "url": "https://api.github.com/repos/preprocess/pre-phpx/zipball/0c82021ff704796a979843ddfe93c2a65740db8b",
453 | "reference": "0c82021ff704796a979843ddfe93c2a65740db8b",
454 | "shasum": ""
455 | },
456 | "require": {
457 | "pre/plugin": "^0.7.7"
458 | },
459 | "type": "pre-compiler",
460 | "extra": {
461 | "compilers": [
462 | "Pre\\Phpx\\compile"
463 | ]
464 | },
465 | "autoload": {
466 | "files": [
467 | "src/parser.php",
468 | "src/renderers.php"
469 | ]
470 | },
471 | "notification-url": "https://packagist.org/downloads/",
472 | "time": "2017-08-17T15:57:42+00:00"
473 | },
474 | {
475 | "name": "pre/plugin",
476 | "version": "0.7.7",
477 | "source": {
478 | "type": "git",
479 | "url": "https://github.com/preprocess/pre-plugin.git",
480 | "reference": "7587dc7cd00a55f132fdbdef1b5e6dff629f3387"
481 | },
482 | "dist": {
483 | "type": "zip",
484 | "url": "https://api.github.com/repos/preprocess/pre-plugin/zipball/7587dc7cd00a55f132fdbdef1b5e6dff629f3387",
485 | "reference": "7587dc7cd00a55f132fdbdef1b5e6dff629f3387",
486 | "shasum": ""
487 | },
488 | "require": {
489 | "composer-plugin-api": "^1.1",
490 | "friendsofphp/php-cs-fixer": "^2.0",
491 | "tuupola/base62": "^0.8",
492 | "yay/yay": "^0.2"
493 | },
494 | "require-dev": {
495 | "composer/composer": "^1.3",
496 | "phpunit/phpunit": "^5.0|^6.0"
497 | },
498 | "type": "composer-plugin",
499 | "extra": {
500 | "class": [
501 | "Pre\\Plugin\\Integration\\Plugin"
502 | ]
503 | },
504 | "autoload": {
505 | "files": [
506 | "src/autoload.php",
507 | "src/functions.php",
508 | "src/expanders.php",
509 | "src/bootstrap.php"
510 | ],
511 | "psr-4": {
512 | "Pre\\Plugin\\": "src"
513 | }
514 | },
515 | "notification-url": "https://packagist.org/downloads/",
516 | "license": [
517 | "MIT"
518 | ],
519 | "time": "2017-08-16T08:52:56+00:00"
520 | },
521 | {
522 | "name": "pre/short-closures",
523 | "version": "0.5.2",
524 | "source": {
525 | "type": "git",
526 | "url": "https://github.com/preprocess/pre-short-closures.git",
527 | "reference": "279fc104f49049c1cd10daa56b507439a7d5b504"
528 | },
529 | "dist": {
530 | "type": "zip",
531 | "url": "https://api.github.com/repos/preprocess/pre-short-closures/zipball/279fc104f49049c1cd10daa56b507439a7d5b504",
532 | "reference": "279fc104f49049c1cd10daa56b507439a7d5b504",
533 | "shasum": ""
534 | },
535 | "require": {
536 | "pre/plugin": "^0.7.3"
537 | },
538 | "require-dev": {
539 | "phpunit/phpunit": "^5.0|^6.0"
540 | },
541 | "type": "pre-macro",
542 | "extra": {
543 | "macros": [
544 | "src/macros.yay"
545 | ]
546 | },
547 | "notification-url": "https://packagist.org/downloads/",
548 | "license": [
549 | "MIT"
550 | ],
551 | "time": "2017-06-06T09:02:11+00:00"
552 | },
553 | {
554 | "name": "psr/container",
555 | "version": "1.0.0",
556 | "source": {
557 | "type": "git",
558 | "url": "https://github.com/php-fig/container.git",
559 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
560 | },
561 | "dist": {
562 | "type": "zip",
563 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
564 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
565 | "shasum": ""
566 | },
567 | "require": {
568 | "php": ">=5.3.0"
569 | },
570 | "type": "library",
571 | "extra": {
572 | "branch-alias": {
573 | "dev-master": "1.0.x-dev"
574 | }
575 | },
576 | "autoload": {
577 | "psr-4": {
578 | "Psr\\Container\\": "src/"
579 | }
580 | },
581 | "notification-url": "https://packagist.org/downloads/",
582 | "license": [
583 | "MIT"
584 | ],
585 | "authors": [
586 | {
587 | "name": "PHP-FIG",
588 | "homepage": "http://www.php-fig.org/"
589 | }
590 | ],
591 | "description": "Common Container Interface (PHP FIG PSR-11)",
592 | "homepage": "https://github.com/php-fig/container",
593 | "keywords": [
594 | "PSR-11",
595 | "container",
596 | "container-interface",
597 | "container-interop",
598 | "psr"
599 | ],
600 | "time": "2017-02-14T16:28:37+00:00"
601 | },
602 | {
603 | "name": "psr/log",
604 | "version": "1.0.2",
605 | "source": {
606 | "type": "git",
607 | "url": "https://github.com/php-fig/log.git",
608 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
609 | },
610 | "dist": {
611 | "type": "zip",
612 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
613 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
614 | "shasum": ""
615 | },
616 | "require": {
617 | "php": ">=5.3.0"
618 | },
619 | "type": "library",
620 | "extra": {
621 | "branch-alias": {
622 | "dev-master": "1.0.x-dev"
623 | }
624 | },
625 | "autoload": {
626 | "psr-4": {
627 | "Psr\\Log\\": "Psr/Log/"
628 | }
629 | },
630 | "notification-url": "https://packagist.org/downloads/",
631 | "license": [
632 | "MIT"
633 | ],
634 | "authors": [
635 | {
636 | "name": "PHP-FIG",
637 | "homepage": "http://www.php-fig.org/"
638 | }
639 | ],
640 | "description": "Common interface for logging libraries",
641 | "homepage": "https://github.com/php-fig/log",
642 | "keywords": [
643 | "log",
644 | "psr",
645 | "psr-3"
646 | ],
647 | "time": "2016-10-10T12:19:37+00:00"
648 | },
649 | {
650 | "name": "sebastian/diff",
651 | "version": "1.4.3",
652 | "source": {
653 | "type": "git",
654 | "url": "https://github.com/sebastianbergmann/diff.git",
655 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
656 | },
657 | "dist": {
658 | "type": "zip",
659 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
660 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
661 | "shasum": ""
662 | },
663 | "require": {
664 | "php": "^5.3.3 || ^7.0"
665 | },
666 | "require-dev": {
667 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
668 | },
669 | "type": "library",
670 | "extra": {
671 | "branch-alias": {
672 | "dev-master": "1.4-dev"
673 | }
674 | },
675 | "autoload": {
676 | "classmap": [
677 | "src/"
678 | ]
679 | },
680 | "notification-url": "https://packagist.org/downloads/",
681 | "license": [
682 | "BSD-3-Clause"
683 | ],
684 | "authors": [
685 | {
686 | "name": "Kore Nordmann",
687 | "email": "mail@kore-nordmann.de"
688 | },
689 | {
690 | "name": "Sebastian Bergmann",
691 | "email": "sebastian@phpunit.de"
692 | }
693 | ],
694 | "description": "Diff implementation",
695 | "homepage": "https://github.com/sebastianbergmann/diff",
696 | "keywords": [
697 | "diff"
698 | ],
699 | "time": "2017-05-22T07:24:03+00:00"
700 | },
701 | {
702 | "name": "silex/silex",
703 | "version": "v2.2.0",
704 | "source": {
705 | "type": "git",
706 | "url": "https://github.com/silexphp/Silex.git",
707 | "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb"
708 | },
709 | "dist": {
710 | "type": "zip",
711 | "url": "https://api.github.com/repos/silexphp/Silex/zipball/ec7d5b5334465414952d4b2e935e73bd085dbbbb",
712 | "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb",
713 | "shasum": ""
714 | },
715 | "require": {
716 | "php": ">=5.5.9",
717 | "pimple/pimple": "~3.0",
718 | "symfony/event-dispatcher": "~2.8|^3.0",
719 | "symfony/http-foundation": "~2.8|^3.0",
720 | "symfony/http-kernel": "~2.8|^3.0",
721 | "symfony/routing": "~2.8|^3.0"
722 | },
723 | "conflict": {
724 | "phpunit/phpunit": "<4.8.35 || >= 5.0, <5.4.3"
725 | },
726 | "replace": {
727 | "silex/api": "self.version",
728 | "silex/providers": "self.version"
729 | },
730 | "require-dev": {
731 | "doctrine/dbal": "~2.2",
732 | "monolog/monolog": "^1.4.1",
733 | "swiftmailer/swiftmailer": "~5",
734 | "symfony/asset": "~2.8|^3.0",
735 | "symfony/browser-kit": "~2.8|^3.0",
736 | "symfony/config": "~2.8|^3.0",
737 | "symfony/css-selector": "~2.8|^3.0",
738 | "symfony/debug": "~2.8|^3.0",
739 | "symfony/doctrine-bridge": "~2.8|^3.0",
740 | "symfony/dom-crawler": "~2.8|^3.0",
741 | "symfony/expression-language": "~2.8|^3.0",
742 | "symfony/finder": "~2.8|^3.0",
743 | "symfony/form": "~2.8|^3.0",
744 | "symfony/intl": "~2.8|^3.0",
745 | "symfony/monolog-bridge": "~2.8|^3.0",
746 | "symfony/options-resolver": "~2.8|^3.0",
747 | "symfony/phpunit-bridge": "^3.2",
748 | "symfony/process": "~2.8|^3.0",
749 | "symfony/security": "~2.8|^3.0",
750 | "symfony/serializer": "~2.8|^3.0",
751 | "symfony/translation": "~2.8|^3.0",
752 | "symfony/twig-bridge": "~2.8|^3.0",
753 | "symfony/validator": "~2.8|^3.0",
754 | "symfony/var-dumper": "~2.8|^3.0",
755 | "symfony/web-link": "^3.3",
756 | "twig/twig": "~1.28|~2.0"
757 | },
758 | "type": "library",
759 | "extra": {
760 | "branch-alias": {
761 | "dev-master": "2.2.x-dev"
762 | }
763 | },
764 | "autoload": {
765 | "psr-4": {
766 | "Silex\\": "src/Silex"
767 | }
768 | },
769 | "notification-url": "https://packagist.org/downloads/",
770 | "license": [
771 | "MIT"
772 | ],
773 | "authors": [
774 | {
775 | "name": "Fabien Potencier",
776 | "email": "fabien@symfony.com"
777 | },
778 | {
779 | "name": "Igor Wiedler",
780 | "email": "igor@wiedler.ch"
781 | }
782 | ],
783 | "description": "The PHP micro-framework based on the Symfony Components",
784 | "homepage": "http://silex.sensiolabs.org",
785 | "keywords": [
786 | "microframework"
787 | ],
788 | "time": "2017-07-23T07:40:14+00:00"
789 | },
790 | {
791 | "name": "symfony/console",
792 | "version": "v3.3.6",
793 | "source": {
794 | "type": "git",
795 | "url": "https://github.com/symfony/console.git",
796 | "reference": "b0878233cb5c4391347e5495089c7af11b8e6201"
797 | },
798 | "dist": {
799 | "type": "zip",
800 | "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201",
801 | "reference": "b0878233cb5c4391347e5495089c7af11b8e6201",
802 | "shasum": ""
803 | },
804 | "require": {
805 | "php": ">=5.5.9",
806 | "symfony/debug": "~2.8|~3.0",
807 | "symfony/polyfill-mbstring": "~1.0"
808 | },
809 | "conflict": {
810 | "symfony/dependency-injection": "<3.3"
811 | },
812 | "require-dev": {
813 | "psr/log": "~1.0",
814 | "symfony/config": "~3.3",
815 | "symfony/dependency-injection": "~3.3",
816 | "symfony/event-dispatcher": "~2.8|~3.0",
817 | "symfony/filesystem": "~2.8|~3.0",
818 | "symfony/http-kernel": "~2.8|~3.0",
819 | "symfony/process": "~2.8|~3.0"
820 | },
821 | "suggest": {
822 | "psr/log": "For using the console logger",
823 | "symfony/event-dispatcher": "",
824 | "symfony/filesystem": "",
825 | "symfony/process": ""
826 | },
827 | "type": "library",
828 | "extra": {
829 | "branch-alias": {
830 | "dev-master": "3.3-dev"
831 | }
832 | },
833 | "autoload": {
834 | "psr-4": {
835 | "Symfony\\Component\\Console\\": ""
836 | },
837 | "exclude-from-classmap": [
838 | "/Tests/"
839 | ]
840 | },
841 | "notification-url": "https://packagist.org/downloads/",
842 | "license": [
843 | "MIT"
844 | ],
845 | "authors": [
846 | {
847 | "name": "Fabien Potencier",
848 | "email": "fabien@symfony.com"
849 | },
850 | {
851 | "name": "Symfony Community",
852 | "homepage": "https://symfony.com/contributors"
853 | }
854 | ],
855 | "description": "Symfony Console Component",
856 | "homepage": "https://symfony.com",
857 | "time": "2017-07-29T21:27:59+00:00"
858 | },
859 | {
860 | "name": "symfony/debug",
861 | "version": "v3.3.6",
862 | "source": {
863 | "type": "git",
864 | "url": "https://github.com/symfony/debug.git",
865 | "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13"
866 | },
867 | "dist": {
868 | "type": "zip",
869 | "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
870 | "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
871 | "shasum": ""
872 | },
873 | "require": {
874 | "php": ">=5.5.9",
875 | "psr/log": "~1.0"
876 | },
877 | "conflict": {
878 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
879 | },
880 | "require-dev": {
881 | "symfony/http-kernel": "~2.8|~3.0"
882 | },
883 | "type": "library",
884 | "extra": {
885 | "branch-alias": {
886 | "dev-master": "3.3-dev"
887 | }
888 | },
889 | "autoload": {
890 | "psr-4": {
891 | "Symfony\\Component\\Debug\\": ""
892 | },
893 | "exclude-from-classmap": [
894 | "/Tests/"
895 | ]
896 | },
897 | "notification-url": "https://packagist.org/downloads/",
898 | "license": [
899 | "MIT"
900 | ],
901 | "authors": [
902 | {
903 | "name": "Fabien Potencier",
904 | "email": "fabien@symfony.com"
905 | },
906 | {
907 | "name": "Symfony Community",
908 | "homepage": "https://symfony.com/contributors"
909 | }
910 | ],
911 | "description": "Symfony Debug Component",
912 | "homepage": "https://symfony.com",
913 | "time": "2017-07-28T15:27:31+00:00"
914 | },
915 | {
916 | "name": "symfony/event-dispatcher",
917 | "version": "v3.3.6",
918 | "source": {
919 | "type": "git",
920 | "url": "https://github.com/symfony/event-dispatcher.git",
921 | "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e"
922 | },
923 | "dist": {
924 | "type": "zip",
925 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e",
926 | "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e",
927 | "shasum": ""
928 | },
929 | "require": {
930 | "php": ">=5.5.9"
931 | },
932 | "conflict": {
933 | "symfony/dependency-injection": "<3.3"
934 | },
935 | "require-dev": {
936 | "psr/log": "~1.0",
937 | "symfony/config": "~2.8|~3.0",
938 | "symfony/dependency-injection": "~3.3",
939 | "symfony/expression-language": "~2.8|~3.0",
940 | "symfony/stopwatch": "~2.8|~3.0"
941 | },
942 | "suggest": {
943 | "symfony/dependency-injection": "",
944 | "symfony/http-kernel": ""
945 | },
946 | "type": "library",
947 | "extra": {
948 | "branch-alias": {
949 | "dev-master": "3.3-dev"
950 | }
951 | },
952 | "autoload": {
953 | "psr-4": {
954 | "Symfony\\Component\\EventDispatcher\\": ""
955 | },
956 | "exclude-from-classmap": [
957 | "/Tests/"
958 | ]
959 | },
960 | "notification-url": "https://packagist.org/downloads/",
961 | "license": [
962 | "MIT"
963 | ],
964 | "authors": [
965 | {
966 | "name": "Fabien Potencier",
967 | "email": "fabien@symfony.com"
968 | },
969 | {
970 | "name": "Symfony Community",
971 | "homepage": "https://symfony.com/contributors"
972 | }
973 | ],
974 | "description": "Symfony EventDispatcher Component",
975 | "homepage": "https://symfony.com",
976 | "time": "2017-06-09T14:53:08+00:00"
977 | },
978 | {
979 | "name": "symfony/filesystem",
980 | "version": "v3.3.6",
981 | "source": {
982 | "type": "git",
983 | "url": "https://github.com/symfony/filesystem.git",
984 | "reference": "427987eb4eed764c3b6e38d52a0f87989e010676"
985 | },
986 | "dist": {
987 | "type": "zip",
988 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676",
989 | "reference": "427987eb4eed764c3b6e38d52a0f87989e010676",
990 | "shasum": ""
991 | },
992 | "require": {
993 | "php": ">=5.5.9"
994 | },
995 | "type": "library",
996 | "extra": {
997 | "branch-alias": {
998 | "dev-master": "3.3-dev"
999 | }
1000 | },
1001 | "autoload": {
1002 | "psr-4": {
1003 | "Symfony\\Component\\Filesystem\\": ""
1004 | },
1005 | "exclude-from-classmap": [
1006 | "/Tests/"
1007 | ]
1008 | },
1009 | "notification-url": "https://packagist.org/downloads/",
1010 | "license": [
1011 | "MIT"
1012 | ],
1013 | "authors": [
1014 | {
1015 | "name": "Fabien Potencier",
1016 | "email": "fabien@symfony.com"
1017 | },
1018 | {
1019 | "name": "Symfony Community",
1020 | "homepage": "https://symfony.com/contributors"
1021 | }
1022 | ],
1023 | "description": "Symfony Filesystem Component",
1024 | "homepage": "https://symfony.com",
1025 | "time": "2017-07-11T07:17:58+00:00"
1026 | },
1027 | {
1028 | "name": "symfony/finder",
1029 | "version": "v3.3.6",
1030 | "source": {
1031 | "type": "git",
1032 | "url": "https://github.com/symfony/finder.git",
1033 | "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4"
1034 | },
1035 | "dist": {
1036 | "type": "zip",
1037 | "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4",
1038 | "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4",
1039 | "shasum": ""
1040 | },
1041 | "require": {
1042 | "php": ">=5.5.9"
1043 | },
1044 | "type": "library",
1045 | "extra": {
1046 | "branch-alias": {
1047 | "dev-master": "3.3-dev"
1048 | }
1049 | },
1050 | "autoload": {
1051 | "psr-4": {
1052 | "Symfony\\Component\\Finder\\": ""
1053 | },
1054 | "exclude-from-classmap": [
1055 | "/Tests/"
1056 | ]
1057 | },
1058 | "notification-url": "https://packagist.org/downloads/",
1059 | "license": [
1060 | "MIT"
1061 | ],
1062 | "authors": [
1063 | {
1064 | "name": "Fabien Potencier",
1065 | "email": "fabien@symfony.com"
1066 | },
1067 | {
1068 | "name": "Symfony Community",
1069 | "homepage": "https://symfony.com/contributors"
1070 | }
1071 | ],
1072 | "description": "Symfony Finder Component",
1073 | "homepage": "https://symfony.com",
1074 | "time": "2017-06-01T21:01:25+00:00"
1075 | },
1076 | {
1077 | "name": "symfony/http-foundation",
1078 | "version": "v3.3.6",
1079 | "source": {
1080 | "type": "git",
1081 | "url": "https://github.com/symfony/http-foundation.git",
1082 | "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031"
1083 | },
1084 | "dist": {
1085 | "type": "zip",
1086 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49e8cd2d59a7aa9bfab19e46de680c76e500a031",
1087 | "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031",
1088 | "shasum": ""
1089 | },
1090 | "require": {
1091 | "php": ">=5.5.9",
1092 | "symfony/polyfill-mbstring": "~1.1"
1093 | },
1094 | "require-dev": {
1095 | "symfony/expression-language": "~2.8|~3.0"
1096 | },
1097 | "type": "library",
1098 | "extra": {
1099 | "branch-alias": {
1100 | "dev-master": "3.3-dev"
1101 | }
1102 | },
1103 | "autoload": {
1104 | "psr-4": {
1105 | "Symfony\\Component\\HttpFoundation\\": ""
1106 | },
1107 | "exclude-from-classmap": [
1108 | "/Tests/"
1109 | ]
1110 | },
1111 | "notification-url": "https://packagist.org/downloads/",
1112 | "license": [
1113 | "MIT"
1114 | ],
1115 | "authors": [
1116 | {
1117 | "name": "Fabien Potencier",
1118 | "email": "fabien@symfony.com"
1119 | },
1120 | {
1121 | "name": "Symfony Community",
1122 | "homepage": "https://symfony.com/contributors"
1123 | }
1124 | ],
1125 | "description": "Symfony HttpFoundation Component",
1126 | "homepage": "https://symfony.com",
1127 | "time": "2017-07-21T11:04:46+00:00"
1128 | },
1129 | {
1130 | "name": "symfony/http-kernel",
1131 | "version": "v3.3.6",
1132 | "source": {
1133 | "type": "git",
1134 | "url": "https://github.com/symfony/http-kernel.git",
1135 | "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5"
1136 | },
1137 | "dist": {
1138 | "type": "zip",
1139 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db10d05f1d95e4168e638db7a81c79616f568ea5",
1140 | "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5",
1141 | "shasum": ""
1142 | },
1143 | "require": {
1144 | "php": ">=5.5.9",
1145 | "psr/log": "~1.0",
1146 | "symfony/debug": "~2.8|~3.0",
1147 | "symfony/event-dispatcher": "~2.8|~3.0",
1148 | "symfony/http-foundation": "~3.3"
1149 | },
1150 | "conflict": {
1151 | "symfony/config": "<2.8",
1152 | "symfony/dependency-injection": "<3.3",
1153 | "symfony/var-dumper": "<3.3",
1154 | "twig/twig": "<1.34|<2.4,>=2"
1155 | },
1156 | "require-dev": {
1157 | "psr/cache": "~1.0",
1158 | "symfony/browser-kit": "~2.8|~3.0",
1159 | "symfony/class-loader": "~2.8|~3.0",
1160 | "symfony/config": "~2.8|~3.0",
1161 | "symfony/console": "~2.8|~3.0",
1162 | "symfony/css-selector": "~2.8|~3.0",
1163 | "symfony/dependency-injection": "~3.3",
1164 | "symfony/dom-crawler": "~2.8|~3.0",
1165 | "symfony/expression-language": "~2.8|~3.0",
1166 | "symfony/finder": "~2.8|~3.0",
1167 | "symfony/process": "~2.8|~3.0",
1168 | "symfony/routing": "~2.8|~3.0",
1169 | "symfony/stopwatch": "~2.8|~3.0",
1170 | "symfony/templating": "~2.8|~3.0",
1171 | "symfony/translation": "~2.8|~3.0",
1172 | "symfony/var-dumper": "~3.3"
1173 | },
1174 | "suggest": {
1175 | "symfony/browser-kit": "",
1176 | "symfony/class-loader": "",
1177 | "symfony/config": "",
1178 | "symfony/console": "",
1179 | "symfony/dependency-injection": "",
1180 | "symfony/finder": "",
1181 | "symfony/var-dumper": ""
1182 | },
1183 | "type": "library",
1184 | "extra": {
1185 | "branch-alias": {
1186 | "dev-master": "3.3-dev"
1187 | }
1188 | },
1189 | "autoload": {
1190 | "psr-4": {
1191 | "Symfony\\Component\\HttpKernel\\": ""
1192 | },
1193 | "exclude-from-classmap": [
1194 | "/Tests/"
1195 | ]
1196 | },
1197 | "notification-url": "https://packagist.org/downloads/",
1198 | "license": [
1199 | "MIT"
1200 | ],
1201 | "authors": [
1202 | {
1203 | "name": "Fabien Potencier",
1204 | "email": "fabien@symfony.com"
1205 | },
1206 | {
1207 | "name": "Symfony Community",
1208 | "homepage": "https://symfony.com/contributors"
1209 | }
1210 | ],
1211 | "description": "Symfony HttpKernel Component",
1212 | "homepage": "https://symfony.com",
1213 | "time": "2017-08-01T10:25:59+00:00"
1214 | },
1215 | {
1216 | "name": "symfony/options-resolver",
1217 | "version": "v3.3.6",
1218 | "source": {
1219 | "type": "git",
1220 | "url": "https://github.com/symfony/options-resolver.git",
1221 | "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0"
1222 | },
1223 | "dist": {
1224 | "type": "zip",
1225 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ff48982d295bcac1fd861f934f041ebc73ae40f0",
1226 | "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0",
1227 | "shasum": ""
1228 | },
1229 | "require": {
1230 | "php": ">=5.5.9"
1231 | },
1232 | "type": "library",
1233 | "extra": {
1234 | "branch-alias": {
1235 | "dev-master": "3.3-dev"
1236 | }
1237 | },
1238 | "autoload": {
1239 | "psr-4": {
1240 | "Symfony\\Component\\OptionsResolver\\": ""
1241 | },
1242 | "exclude-from-classmap": [
1243 | "/Tests/"
1244 | ]
1245 | },
1246 | "notification-url": "https://packagist.org/downloads/",
1247 | "license": [
1248 | "MIT"
1249 | ],
1250 | "authors": [
1251 | {
1252 | "name": "Fabien Potencier",
1253 | "email": "fabien@symfony.com"
1254 | },
1255 | {
1256 | "name": "Symfony Community",
1257 | "homepage": "https://symfony.com/contributors"
1258 | }
1259 | ],
1260 | "description": "Symfony OptionsResolver Component",
1261 | "homepage": "https://symfony.com",
1262 | "keywords": [
1263 | "config",
1264 | "configuration",
1265 | "options"
1266 | ],
1267 | "time": "2017-04-12T14:14:56+00:00"
1268 | },
1269 | {
1270 | "name": "symfony/polyfill-mbstring",
1271 | "version": "v1.5.0",
1272 | "source": {
1273 | "type": "git",
1274 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1275 | "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803"
1276 | },
1277 | "dist": {
1278 | "type": "zip",
1279 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
1280 | "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
1281 | "shasum": ""
1282 | },
1283 | "require": {
1284 | "php": ">=5.3.3"
1285 | },
1286 | "suggest": {
1287 | "ext-mbstring": "For best performance"
1288 | },
1289 | "type": "library",
1290 | "extra": {
1291 | "branch-alias": {
1292 | "dev-master": "1.5-dev"
1293 | }
1294 | },
1295 | "autoload": {
1296 | "psr-4": {
1297 | "Symfony\\Polyfill\\Mbstring\\": ""
1298 | },
1299 | "files": [
1300 | "bootstrap.php"
1301 | ]
1302 | },
1303 | "notification-url": "https://packagist.org/downloads/",
1304 | "license": [
1305 | "MIT"
1306 | ],
1307 | "authors": [
1308 | {
1309 | "name": "Nicolas Grekas",
1310 | "email": "p@tchwork.com"
1311 | },
1312 | {
1313 | "name": "Symfony Community",
1314 | "homepage": "https://symfony.com/contributors"
1315 | }
1316 | ],
1317 | "description": "Symfony polyfill for the Mbstring extension",
1318 | "homepage": "https://symfony.com",
1319 | "keywords": [
1320 | "compatibility",
1321 | "mbstring",
1322 | "polyfill",
1323 | "portable",
1324 | "shim"
1325 | ],
1326 | "time": "2017-06-14T15:44:48+00:00"
1327 | },
1328 | {
1329 | "name": "symfony/polyfill-php70",
1330 | "version": "v1.5.0",
1331 | "source": {
1332 | "type": "git",
1333 | "url": "https://github.com/symfony/polyfill-php70.git",
1334 | "reference": "b6482e68974486984f59449ecea1fbbb22ff840f"
1335 | },
1336 | "dist": {
1337 | "type": "zip",
1338 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f",
1339 | "reference": "b6482e68974486984f59449ecea1fbbb22ff840f",
1340 | "shasum": ""
1341 | },
1342 | "require": {
1343 | "paragonie/random_compat": "~1.0|~2.0",
1344 | "php": ">=5.3.3"
1345 | },
1346 | "type": "library",
1347 | "extra": {
1348 | "branch-alias": {
1349 | "dev-master": "1.5-dev"
1350 | }
1351 | },
1352 | "autoload": {
1353 | "psr-4": {
1354 | "Symfony\\Polyfill\\Php70\\": ""
1355 | },
1356 | "files": [
1357 | "bootstrap.php"
1358 | ],
1359 | "classmap": [
1360 | "Resources/stubs"
1361 | ]
1362 | },
1363 | "notification-url": "https://packagist.org/downloads/",
1364 | "license": [
1365 | "MIT"
1366 | ],
1367 | "authors": [
1368 | {
1369 | "name": "Nicolas Grekas",
1370 | "email": "p@tchwork.com"
1371 | },
1372 | {
1373 | "name": "Symfony Community",
1374 | "homepage": "https://symfony.com/contributors"
1375 | }
1376 | ],
1377 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
1378 | "homepage": "https://symfony.com",
1379 | "keywords": [
1380 | "compatibility",
1381 | "polyfill",
1382 | "portable",
1383 | "shim"
1384 | ],
1385 | "time": "2017-06-14T15:44:48+00:00"
1386 | },
1387 | {
1388 | "name": "symfony/polyfill-php72",
1389 | "version": "v1.5.0",
1390 | "source": {
1391 | "type": "git",
1392 | "url": "https://github.com/symfony/polyfill-php72.git",
1393 | "reference": "8abc9097f5001d310f0edba727469c988acc6ea7"
1394 | },
1395 | "dist": {
1396 | "type": "zip",
1397 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7",
1398 | "reference": "8abc9097f5001d310f0edba727469c988acc6ea7",
1399 | "shasum": ""
1400 | },
1401 | "require": {
1402 | "php": ">=5.3.3"
1403 | },
1404 | "type": "library",
1405 | "extra": {
1406 | "branch-alias": {
1407 | "dev-master": "1.5-dev"
1408 | }
1409 | },
1410 | "autoload": {
1411 | "psr-4": {
1412 | "Symfony\\Polyfill\\Php72\\": ""
1413 | },
1414 | "files": [
1415 | "bootstrap.php"
1416 | ]
1417 | },
1418 | "notification-url": "https://packagist.org/downloads/",
1419 | "license": [
1420 | "MIT"
1421 | ],
1422 | "authors": [
1423 | {
1424 | "name": "Nicolas Grekas",
1425 | "email": "p@tchwork.com"
1426 | },
1427 | {
1428 | "name": "Symfony Community",
1429 | "homepage": "https://symfony.com/contributors"
1430 | }
1431 | ],
1432 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
1433 | "homepage": "https://symfony.com",
1434 | "keywords": [
1435 | "compatibility",
1436 | "polyfill",
1437 | "portable",
1438 | "shim"
1439 | ],
1440 | "time": "2017-07-11T13:25:55+00:00"
1441 | },
1442 | {
1443 | "name": "symfony/process",
1444 | "version": "v3.3.6",
1445 | "source": {
1446 | "type": "git",
1447 | "url": "https://github.com/symfony/process.git",
1448 | "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a"
1449 | },
1450 | "dist": {
1451 | "type": "zip",
1452 | "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a",
1453 | "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a",
1454 | "shasum": ""
1455 | },
1456 | "require": {
1457 | "php": ">=5.5.9"
1458 | },
1459 | "type": "library",
1460 | "extra": {
1461 | "branch-alias": {
1462 | "dev-master": "3.3-dev"
1463 | }
1464 | },
1465 | "autoload": {
1466 | "psr-4": {
1467 | "Symfony\\Component\\Process\\": ""
1468 | },
1469 | "exclude-from-classmap": [
1470 | "/Tests/"
1471 | ]
1472 | },
1473 | "notification-url": "https://packagist.org/downloads/",
1474 | "license": [
1475 | "MIT"
1476 | ],
1477 | "authors": [
1478 | {
1479 | "name": "Fabien Potencier",
1480 | "email": "fabien@symfony.com"
1481 | },
1482 | {
1483 | "name": "Symfony Community",
1484 | "homepage": "https://symfony.com/contributors"
1485 | }
1486 | ],
1487 | "description": "Symfony Process Component",
1488 | "homepage": "https://symfony.com",
1489 | "time": "2017-07-13T13:05:09+00:00"
1490 | },
1491 | {
1492 | "name": "symfony/routing",
1493 | "version": "v3.3.6",
1494 | "source": {
1495 | "type": "git",
1496 | "url": "https://github.com/symfony/routing.git",
1497 | "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26"
1498 | },
1499 | "dist": {
1500 | "type": "zip",
1501 | "url": "https://api.github.com/repos/symfony/routing/zipball/4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26",
1502 | "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26",
1503 | "shasum": ""
1504 | },
1505 | "require": {
1506 | "php": ">=5.5.9"
1507 | },
1508 | "conflict": {
1509 | "symfony/config": "<2.8",
1510 | "symfony/dependency-injection": "<3.3",
1511 | "symfony/yaml": "<3.3"
1512 | },
1513 | "require-dev": {
1514 | "doctrine/annotations": "~1.0",
1515 | "doctrine/common": "~2.2",
1516 | "psr/log": "~1.0",
1517 | "symfony/config": "~2.8|~3.0",
1518 | "symfony/dependency-injection": "~3.3",
1519 | "symfony/expression-language": "~2.8|~3.0",
1520 | "symfony/http-foundation": "~2.8|~3.0",
1521 | "symfony/yaml": "~3.3"
1522 | },
1523 | "suggest": {
1524 | "doctrine/annotations": "For using the annotation loader",
1525 | "symfony/config": "For using the all-in-one router or any loader",
1526 | "symfony/dependency-injection": "For loading routes from a service",
1527 | "symfony/expression-language": "For using expression matching",
1528 | "symfony/http-foundation": "For using a Symfony Request object",
1529 | "symfony/yaml": "For using the YAML loader"
1530 | },
1531 | "type": "library",
1532 | "extra": {
1533 | "branch-alias": {
1534 | "dev-master": "3.3-dev"
1535 | }
1536 | },
1537 | "autoload": {
1538 | "psr-4": {
1539 | "Symfony\\Component\\Routing\\": ""
1540 | },
1541 | "exclude-from-classmap": [
1542 | "/Tests/"
1543 | ]
1544 | },
1545 | "notification-url": "https://packagist.org/downloads/",
1546 | "license": [
1547 | "MIT"
1548 | ],
1549 | "authors": [
1550 | {
1551 | "name": "Fabien Potencier",
1552 | "email": "fabien@symfony.com"
1553 | },
1554 | {
1555 | "name": "Symfony Community",
1556 | "homepage": "https://symfony.com/contributors"
1557 | }
1558 | ],
1559 | "description": "Symfony Routing Component",
1560 | "homepage": "https://symfony.com",
1561 | "keywords": [
1562 | "router",
1563 | "routing",
1564 | "uri",
1565 | "url"
1566 | ],
1567 | "time": "2017-07-21T17:43:13+00:00"
1568 | },
1569 | {
1570 | "name": "symfony/stopwatch",
1571 | "version": "v3.3.6",
1572 | "source": {
1573 | "type": "git",
1574 | "url": "https://github.com/symfony/stopwatch.git",
1575 | "reference": "602a15299dc01556013b07167d4f5d3a60e90d15"
1576 | },
1577 | "dist": {
1578 | "type": "zip",
1579 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15",
1580 | "reference": "602a15299dc01556013b07167d4f5d3a60e90d15",
1581 | "shasum": ""
1582 | },
1583 | "require": {
1584 | "php": ">=5.5.9"
1585 | },
1586 | "type": "library",
1587 | "extra": {
1588 | "branch-alias": {
1589 | "dev-master": "3.3-dev"
1590 | }
1591 | },
1592 | "autoload": {
1593 | "psr-4": {
1594 | "Symfony\\Component\\Stopwatch\\": ""
1595 | },
1596 | "exclude-from-classmap": [
1597 | "/Tests/"
1598 | ]
1599 | },
1600 | "notification-url": "https://packagist.org/downloads/",
1601 | "license": [
1602 | "MIT"
1603 | ],
1604 | "authors": [
1605 | {
1606 | "name": "Fabien Potencier",
1607 | "email": "fabien@symfony.com"
1608 | },
1609 | {
1610 | "name": "Symfony Community",
1611 | "homepage": "https://symfony.com/contributors"
1612 | }
1613 | ],
1614 | "description": "Symfony Stopwatch Component",
1615 | "homepage": "https://symfony.com",
1616 | "time": "2017-04-12T14:14:56+00:00"
1617 | },
1618 | {
1619 | "name": "tuupola/base62",
1620 | "version": "0.8.0",
1621 | "source": {
1622 | "type": "git",
1623 | "url": "https://github.com/tuupola/base62.git",
1624 | "reference": "5218b96d005e43124ae9d763efb091ee20505ae9"
1625 | },
1626 | "dist": {
1627 | "type": "zip",
1628 | "url": "https://api.github.com/repos/tuupola/base62/zipball/5218b96d005e43124ae9d763efb091ee20505ae9",
1629 | "reference": "5218b96d005e43124ae9d763efb091ee20505ae9",
1630 | "shasum": ""
1631 | },
1632 | "require": {
1633 | "php": "^5.5 || ^7.0"
1634 | },
1635 | "require-dev": {
1636 | "paragonie/random_compat": "^2.0",
1637 | "phpbench/phpbench": "^0.13.0",
1638 | "phpunit/phpunit": "^4.8",
1639 | "squizlabs/php_codesniffer": "^2.5"
1640 | },
1641 | "type": "library",
1642 | "autoload": {
1643 | "psr-4": {
1644 | "Tuupola\\": "src"
1645 | }
1646 | },
1647 | "notification-url": "https://packagist.org/downloads/",
1648 | "license": [
1649 | "MIT"
1650 | ],
1651 | "authors": [
1652 | {
1653 | "name": "Mika Tuupola",
1654 | "email": "tuupola@appelsiini.net",
1655 | "homepage": "http://www.appelsiini.net/",
1656 | "role": "Developer"
1657 | }
1658 | ],
1659 | "description": "Base62 encoder and decoder for arbitrary data",
1660 | "homepage": "https://github.com/tuupola/base62",
1661 | "keywords": [
1662 | "base62"
1663 | ],
1664 | "time": "2017-03-12T07:14:17+00:00"
1665 | },
1666 | {
1667 | "name": "yay/yay",
1668 | "version": "0.2.0",
1669 | "source": {
1670 | "type": "git",
1671 | "url": "https://github.com/marcioAlmada/yay.git",
1672 | "reference": "9013a0a1c4d08eb197d8afec009652d90233ffe5"
1673 | },
1674 | "dist": {
1675 | "type": "zip",
1676 | "url": "https://api.github.com/repos/marcioAlmada/yay/zipball/9013a0a1c4d08eb197d8afec009652d90233ffe5",
1677 | "reference": "9013a0a1c4d08eb197d8afec009652d90233ffe5",
1678 | "shasum": ""
1679 | },
1680 | "require": {
1681 | "ext-mbstring": "*",
1682 | "ext-tokenizer": "*",
1683 | "nikic/php-parser": "^2.1|^3.0",
1684 | "php": "7.*"
1685 | },
1686 | "require-dev": {
1687 | "phpunit/phpunit": "~5.2"
1688 | },
1689 | "bin": [
1690 | "bin/yay",
1691 | "bin/yay-pretty"
1692 | ],
1693 | "type": "library",
1694 | "autoload": {
1695 | "files": [
1696 | "src/parsers.php",
1697 | "src/expanders.php"
1698 | ],
1699 | "psr-4": {
1700 | "Yay\\": "src/"
1701 | }
1702 | },
1703 | "notification-url": "https://packagist.org/downloads/",
1704 | "license": [
1705 | "MIT"
1706 | ],
1707 | "authors": [
1708 | {
1709 | "name": "Márcio Almada",
1710 | "email": "marcio3w@gmail.com",
1711 | "homepage": "https://github.com/marcioAlmada"
1712 | }
1713 | ],
1714 | "description": "A high level PHP Pre-Processor",
1715 | "keywords": [
1716 | "language",
1717 | "pre-processor",
1718 | "syntax"
1719 | ],
1720 | "time": "2017-05-08T03:18:20+00:00"
1721 | }
1722 | ],
1723 | "packages-dev": [],
1724 | "aliases": [],
1725 | "minimum-stability": "stable",
1726 | "stability-flags": [],
1727 | "prefer-stable": false,
1728 | "prefer-lowest": false,
1729 | "platform": [],
1730 | "platform-dev": []
1731 | }
1732 |
--------------------------------------------------------------------------------
/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/preprocess/example-phpx/2010aae8e944afc18b486bde96960dc2f0bb7a2b/demo.gif
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 | register(new SessionServiceProvider());
13 |
14 | $app->get("/", (Request $request) => {
15 | $session = $request->getSession();
16 |
17 | $tasks = $session->get("tasks", []);
18 |
19 | return (
20 |
21 | {$tasks}
22 |
23 |
24 | );
25 | });
26 |
27 | $app->post("/add", (Request $request) => {
28 | $session = $request->getSession();
29 |
30 | $id = $session->get("id", 0);
31 | $tasks = $session->get("tasks", []);
32 |
33 | $tasks[] = [
34 | "id" => $id++,
35 | "text" => $request->get("text"),
36 | ];
37 |
38 | $session->set("id", $id);
39 | $session->set("tasks", $tasks);
40 |
41 | return $app->redirect("/");
42 | });
43 |
44 | $app->get("/remove/{id}", (Request $request, $id) => {
45 | $session = $request->getSession();
46 |
47 | $tasks = $session->get("tasks", []);
48 |
49 | $tasks = array_filter($tasks, ($task) => {
50 | return $task["id"] !== (int) $id;
51 | });
52 |
53 | $session->set("tasks", $tasks);
54 |
55 | return $app->redirect("/");
56 | });
57 |
58 | $app->run();
59 |
--------------------------------------------------------------------------------