Timber - Version 1.4.0

Version Description

Fixes and Improvements

  • Improve GIF resize performance #1495 (thanks @ahallais)
  • Fix for get_host which could generate an unncessary warning #1490 (thanks @ahallais)

Changes for Theme Developers

  • Improve loader performance and logic #1476 #1489 #1491 (thanks @heino). This introduces potential changes if you were loading templates in a non-standard way and with multiple sources (ex: from a theme and plugin directory). Non-existing templates are no longer passed all the way to Twigs render(), which currently generates an exception.
Download this release

Release Info

Developer jarednova
Plugin Icon 128x128 Timber
Version 1.4.0
Comparing to
See all releases

Code changes from version 1.3.4 to 1.4.0

README.md CHANGED
@@ -1,9 +1,10 @@
1
  <div style="text-align:center">
2
  <a href="http://timber.github.io/timber"><img src="http://i.imgur.com/PbEwvZ9.png" style="display:block; margin:auto; width:100%; max-width:100%"/></a>
3
- <div>
4
- By Jared Novack (<a href="https://twitter.com/jarednova">@JaredNova</a>) and <a href="http://upstatement.com">Upstatement</a> (<a href="https://twitter.com/upstatement">@Upstatement</a>)</div>
5
  </div>
6
 
 
 
 
7
  [![Build Status](https://img.shields.io/travis/timber/timber/master.svg?style=flat-square)](https://travis-ci.org/timber/timber)
8
  [![Coverage Status](https://img.shields.io/coveralls/timber/timber.svg?style=flat-square)](https://codecov.io/gh/timber/timber)
9
  [![Dependency Status](https://www.versioneye.com/user/projects/574e40e6e298f30048059b9f/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/574e40e6e298f30048059b9f)
@@ -35,7 +36,7 @@ This is what Timber's `.twig` files look like:
35
  Once Timber is installed and activated in your plugin directory, it gives any WordPress theme the ability to take advantage of the power of Twig and other Timber features.
36
 
37
  ### Looking for docs?
38
- * [Timber Documentation](https://github.com/timber/timber/wiki)
39
  * [Twig Reference](http://twig.sensiolabs.org/doc/templates.html)
40
  * [Video Tutorials](https://github.com/timber/timber/wiki/Video-Tutorials)
41
  * [Overview / Getting Started Guide](https://github.com/timber/timber/wiki/getting-started)
@@ -102,21 +103,11 @@ Please post on [StackOverflow under the "Timber" tag](http://stackoverflow.com/q
102
  It's MIT-licensed, so please use in personal or commercial work. Just don't re-sell it. Timber is used on [hundreds of sites](http://timber.github.io/timber/#showcase) (and tons more we don't know about)
103
 
104
  #### Contributing
105
- Read the [contributor guidelines](https://github.com/timber/timber/wiki#contributing) in the wiki.
106
-
107
-
108
- ## [Documentation](http://timber.github.io/timber/)
109
-
110
- Documentation for Timber classes and functions is [auto generated](https://github.com/jarednova/PHP-Markdown-Documentation-Generator), so any changes to the object reference docs should be made by editing the function's DocBlock. To make a change to one of the guides, edit the relevant file in the `docs` directory.
111
-
112
- #### To publish docs:
113
-
114
- 1. `composer install` if not already run
115
- 2. Clone the [timber/slate](https://github.com/timber/slate) repo at the same directory level as Timber
116
- 3. From the root of the slate directory, run these commands:
117
- ```bash
118
- sh publish-docs.sh
119
- ```
120
 
 
121
 
 
122
 
 
 
1
  <div style="text-align:center">
2
  <a href="http://timber.github.io/timber"><img src="http://i.imgur.com/PbEwvZ9.png" style="display:block; margin:auto; width:100%; max-width:100%"/></a>
 
 
3
  </div>
4
 
5
+ By [Jared Novack](https://github.com/jarednova) ([@jarednova](https://twitter.com/jarednova)), [Lukas Gächter](https://github.com/gchtr) ([@lgaechter](https://twitter.com/lgaechter)), [Linda Gorman](https://github.com/lggorman) ([@lggorman](https://twitter.com/lggorman)) and [Upstatement](https://twitter.com/upstatement)
6
+
7
+
8
  [![Build Status](https://img.shields.io/travis/timber/timber/master.svg?style=flat-square)](https://travis-ci.org/timber/timber)
9
  [![Coverage Status](https://img.shields.io/coveralls/timber/timber.svg?style=flat-square)](https://codecov.io/gh/timber/timber)
10
  [![Dependency Status](https://www.versioneye.com/user/projects/574e40e6e298f30048059b9f/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/574e40e6e298f30048059b9f)
36
  Once Timber is installed and activated in your plugin directory, it gives any WordPress theme the ability to take advantage of the power of Twig and other Timber features.
37
 
38
  ### Looking for docs?
39
+ * [Timber Documentation](https://timber.github.io/docs/)
40
  * [Twig Reference](http://twig.sensiolabs.org/doc/templates.html)
41
  * [Video Tutorials](https://github.com/timber/timber/wiki/Video-Tutorials)
42
  * [Overview / Getting Started Guide](https://github.com/timber/timber/wiki/getting-started)
103
  It's MIT-licensed, so please use in personal or commercial work. Just don't re-sell it. Timber is used on [hundreds of sites](http://timber.github.io/timber/#showcase) (and tons more we don't know about)
104
 
105
  #### Contributing
106
+ Read the [Contributor Guidelines](https://github.com/timber/timber/blob/master/CONTRIBUTING.md).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
+ ## Documentation
109
 
110
+ The [Documentation for Timber](https://timber.github.io/docs/) is generated from the contents of this repository:
111
 
112
+ * Documentation for classes and functions is [auto generated](https://github.com/timber/docs). Any changes to the [Reference section](https://timber.github.io/docs/reference/) of the docs should be made by editing the function’s DocBlock. For inline documentation, we follow the [WordPress PHP Documentation Standards](https://make.wordpress.org/core/handbook/best-practices/inline-documentation-standards/php/).
113
+ * To make a change to one of the guides, edit the relevant file in the [`docs` directory](https://github.com/timber/timber/tree/master/docs).
lib/Image/Operation/Resize.php CHANGED
@@ -59,11 +59,9 @@ class Resize extends ImageOperation {
59
  /**
60
  * @param string $load_filename
61
  * @param string $save_filename
 
62
  */
63
- protected function run_animated_gif( $load_filename, $save_filename, $editor ) {
64
- $current_size = $editor->get_size();
65
- $src_w = $current_size['width'];
66
- $src_h = $current_size['height'];
67
  $w = $this->w;
68
  $h = $this->h;
69
  if ( !class_exists('Imagick') ) {
@@ -82,7 +80,7 @@ class Resize extends ImageOperation {
82
  }
83
 
84
  /**
85
- * @param WP_Image_Editor $image
86
  */
87
  protected function get_target_sizes( \WP_Image_Editor $image ) {
88
  $w = $this->w;
59
  /**
60
  * @param string $load_filename
61
  * @param string $save_filename
62
+ * @param \WP_Image_Editor $editor
63
  */
64
+ protected function run_animated_gif( $load_filename, $save_filename, \WP_Image_Editor $editor ) {
 
 
 
65
  $w = $this->w;
66
  $h = $this->h;
67
  if ( !class_exists('Imagick') ) {
80
  }
81
 
82
  /**
83
+ * @param \WP_Image_Editor $image
84
  */
85
  protected function get_target_sizes( \WP_Image_Editor $image ) {
86
  $w = $this->w;
lib/Loader.php CHANGED
@@ -87,37 +87,42 @@ class Loader {
87
  }
88
 
89
  /**
90
- * Get first existing template file.
91
  *
92
- * @param array|string $filenames Name of the Twig file to render. If this is an array of files, the function
93
- * return the first file that exists.
94
- * @return string
95
  */
96
- public function choose_template( $filenames ) {
97
- if ( is_array($filenames) ) {
98
- /* its an array so we have to figure out which one the dev wants */
99
- foreach ( $filenames as $filename ) {
100
- if ( self::template_exists($filename) ) {
101
- return $filename;
102
- }
 
 
 
 
 
 
 
 
103
  }
104
- return $filenames[0];
105
  }
106
- return $filenames;
 
 
107
  }
108
 
109
  /**
110
- * @param string $file
111
  * @return bool
 
 
 
112
  */
113
- protected function template_exists( $file ) {
114
- foreach ( $this->locations as $dir ) {
115
- $look_for = $dir.$file;
116
- if ( file_exists($look_for) ) {
117
- return true;
118
- }
119
- }
120
- return false;
121
  }
122
 
123
 
87
  }
88
 
89
  /**
90
+ * Get first existing template.
91
  *
92
+ * @param array|string $templates Name(s) of the Twig template(s) to choose from.
93
+ * @return string|bool Name of chosen template, otherwise false.
 
94
  */
95
+ public function choose_template( $templates ) {
96
+ // Change $templates into array, if needed
97
+ if ( !is_array($templates) ) {
98
+ $templates = (array) $templates;
99
+ }
100
+
101
+ // Get Twig loader
102
+ $loader = $this->get_loader();
103
+
104
+ // Run through template array
105
+ foreach ( $templates as $template ) {
106
+ // Use the Twig loader to test for existance
107
+ if ( $loader->exists($template) ) {
108
+ // Return name of existing template
109
+ return $template;
110
  }
 
111
  }
112
+
113
+ // No existing template was found
114
+ return false;
115
  }
116
 
117
  /**
118
+ * @param string $name
119
  * @return bool
120
+ * @deprecated 1.3.5 No longer used internally
121
+ * @todo remove in 2.x
122
+ * @codeCoverageIgnore
123
  */
124
+ protected function template_exists( $name ) {
125
+ return $this->get_loader()->exists($name);
 
 
 
 
 
 
126
  }
127
 
128
 
lib/Timber.php CHANGED
@@ -292,22 +292,32 @@ class Timber {
292
  $caller = LocationManager::get_calling_script_dir(1);
293
  $loader = new Loader($caller);
294
  $file = $loader->choose_template($filenames);
 
295
  $caller_file = LocationManager::get_calling_script_file(1);
296
  apply_filters('timber/calling_php_file', $caller_file);
297
- $output = '';
298
- if ( is_null($data) ) {
299
- $data = array();
 
 
300
  }
301
- if ( strlen($file) ) {
 
 
 
 
 
 
 
302
  if ( $via_render ) {
303
- $file = apply_filters('timber_render_file', $file);
304
  $data = apply_filters('timber_render_data', $data);
305
  } else {
306
- $file = apply_filters('timber_compile_file', $file);
307
  $data = apply_filters('timber_compile_data', $data);
308
  }
 
309
  $output = $loader->render($file, $data, $expires, $cache_mode);
310
  }
 
311
  do_action('timber_compile_done');
312
  return $output;
313
  }
292
  $caller = LocationManager::get_calling_script_dir(1);
293
  $loader = new Loader($caller);
294
  $file = $loader->choose_template($filenames);
295
+
296
  $caller_file = LocationManager::get_calling_script_file(1);
297
  apply_filters('timber/calling_php_file', $caller_file);
298
+
299
+ if ( $via_render ) {
300
+ $file = apply_filters('timber_render_file', $file);
301
+ } else {
302
+ $file = apply_filters('timber_compile_file', $file);
303
  }
304
+
305
+ $output = false;
306
+
307
+ if ($file !== false) {
308
+ if ( is_null($data) ) {
309
+ $data = array();
310
+ }
311
+
312
  if ( $via_render ) {
 
313
  $data = apply_filters('timber_render_data', $data);
314
  } else {
 
315
  $data = apply_filters('timber_compile_data', $data);
316
  }
317
+
318
  $output = $loader->render($file, $data, $expires, $cache_mode);
319
  }
320
+
321
  do_action('timber_compile_done');
322
  return $output;
323
  }
lib/URLHelper.php CHANGED
@@ -127,7 +127,7 @@ class URLHelper {
127
  * @return bool
128
  */
129
  public static function is_local( $url ) {
130
- if ( strstr($url, self::get_host()) ) {
131
  return true;
132
  }
133
  return false;
127
  * @return bool
128
  */
129
  public static function is_local( $url ) {
130
+ if ( !empty(self::get_host()) && strstr($url, self::get_host()) ) {
131
  return true;
132
  }
133
  return false;
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: jarednova, connorjburton, lggorman
3
  Tags: template engine, templates, twig
4
  Requires at least: 3.7
5
- Stable tag: 1.3.4
6
- Tested up to: 4.8
7
  PHP version: 5.3.0 or greater
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -17,7 +17,7 @@ Once Timber is installed and activated in your plugin directory, it gives any Wo
17
 
18
  ### Looking for docs?
19
  * **[Project Page](http://upstatement.com/timber)**
20
- * [Timber Documentation](https://github.com/timber/timber/wiki/)
21
  * [Twig Reference (from SensioLabs)](http://twig.sensiolabs.org/doc/templates.html)
22
  _Twig is the template language powering Timber; if you need a little background on what a template language is, [Twig's homepage has an overview](http://twig.sensiolabs.org/)_
23
  * **[Video Tutorials](https://github.com/timber/timber/wiki/Video-Tutorials)**
@@ -41,6 +41,17 @@ Timber is great for any WordPress developer who cares about writing good, mainta
41
 
42
  == Changelog ==
43
 
 
 
 
 
 
 
 
 
 
 
 
44
  = 1.3.4 =
45
  * Fix for Twig 2.0 compatibility issue #1464 (thanks @luism-s)
46
 
@@ -127,7 +138,7 @@ Misc fixes to documentation
127
  * A new PostQuery object that comes _with_ pagination (thanks @lggorman).
128
  * You can pass an array of post types to `post.children()` (thanks @njbarrett)
129
 
130
- = 1.1.6 =
131
  * Kill those transients! Timber now wipes expired ones away 9a5851bf36110dcb399e277d51230f1addb0c53c
132
  * Fixed a warning that was annoying and nobody liked and didn't have any friends c53b4c832cfced01157f8196688468ad3318d3fb
133
 
@@ -215,7 +226,7 @@ Misc fixes to documentation
215
  * Updated version numbers and build script (@jarednova) 81a281e
216
  * Corrected Routes -> /Routes which threw a fatal error (@jarednova) 26b6585
217
 
218
- = 0.22.6 =
219
  * New {{request}} object for post/get variables (thanks @connorjburton) #856
220
  * New crop positions (thanks @salaros) #861
221
  * Bug Fixes
2
  Contributors: jarednova, connorjburton, lggorman
3
  Tags: template engine, templates, twig
4
  Requires at least: 3.7
5
+ Stable tag: 1.4.0
6
+ Tested up to: 4.8.1
7
  PHP version: 5.3.0 or greater
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
17
 
18
  ### Looking for docs?
19
  * **[Project Page](http://upstatement.com/timber)**
20
+ * [Timber Documentation](https://github.com/timber/docs)
21
  * [Twig Reference (from SensioLabs)](http://twig.sensiolabs.org/doc/templates.html)
22
  _Twig is the template language powering Timber; if you need a little background on what a template language is, [Twig's homepage has an overview](http://twig.sensiolabs.org/)_
23
  * **[Video Tutorials](https://github.com/timber/timber/wiki/Video-Tutorials)**
41
 
42
  == Changelog ==
43
 
44
+ = 1.4.0 =
45
+
46
+ **Fixes and Improvements**
47
+
48
+ - Improve GIF resize performance #1495 (thanks @ahallais)
49
+ - Fix for get_host which could generate an unncessary warning #1490 (thanks @ahallais)
50
+
51
+ **Changes for Theme Developers**
52
+
53
+ - Improve loader performance and logic #1476 #1489 #1491 (thanks @heino). This introduces potential changes if you were loading templates in a non-standard way and with multiple sources (ex: from a theme and plugin directory). Non-existing templates are no longer passed all the way to Twig’s `render()`, which currently generates an exception.
54
+
55
  = 1.3.4 =
56
  * Fix for Twig 2.0 compatibility issue #1464 (thanks @luism-s)
57
 
138
  * A new PostQuery object that comes _with_ pagination (thanks @lggorman).
139
  * You can pass an array of post types to `post.children()` (thanks @njbarrett)
140
 
141
+ = 1.1.6 =
142
  * Kill those transients! Timber now wipes expired ones away 9a5851bf36110dcb399e277d51230f1addb0c53c
143
  * Fixed a warning that was annoying and nobody liked and didn't have any friends c53b4c832cfced01157f8196688468ad3318d3fb
144
 
226
  * Updated version numbers and build script (@jarednova) 81a281e
227
  * Corrected Routes -> /Routes which threw a fatal error (@jarednova) 26b6585
228
 
229
+ = 0.22.6 =
230
  * New {{request}} object for post/get variables (thanks @connorjburton) #856
231
  * New crop positions (thanks @salaros) #861
232
  * Bug Fixes
timber.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Timber
4
  Description: The WordPress Timber Library allows you to write themes using the power of Twig templates.
5
  Plugin URI: http://timber.upstatement.com
6
  Author: Jared Novack + Upstatement
7
- Version: 1.3.4
8
  Author URI: http://upstatement.com/
9
  */
10
  // we look for Composer files first in the plugins dir.
4
  Description: The WordPress Timber Library allows you to write themes using the power of Twig templates.
5
  Plugin URI: http://timber.upstatement.com
6
  Author: Jared Novack + Upstatement
7
+ Version: 1.4.0
8
  Author URI: http://upstatement.com/
9
  */
10
  // we look for Composer files first in the plugins dir.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitfc5424fd7137f4e31703647a20f27b2f::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit862731a8f7673738491a1b7cef45d134::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitfc5424fd7137f4e31703647a20f27b2f
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitfc5424fd7137f4e31703647a20f27b2f
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitfc5424fd7137f4e31703647a20f27b2f', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitfc5424fd7137f4e31703647a20f27b2f', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit862731a8f7673738491a1b7cef45d134
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit862731a8f7673738491a1b7cef45d134', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit862731a8f7673738491a1b7cef45d134', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
vendor/composer/installed.json CHANGED
@@ -115,112 +115,6 @@
115
  "zikula"
116
  ]
117
  },
118
- {
119
- "name": "altorouter/altorouter",
120
- "version": "v1.1.0",
121
- "version_normalized": "1.1.0.0",
122
- "source": {
123
- "type": "git",
124
- "url": "https://github.com/dannyvankooten/AltoRouter.git",
125
- "reference": "09d9d946c546bae6d22a7654cdb3b825ffda54b4"
126
- },
127
- "dist": {
128
- "type": "zip",
129
- "url": "https://api.github.com/repos/dannyvankooten/AltoRouter/zipball/09d9d946c546bae6d22a7654cdb3b825ffda54b4",
130
- "reference": "09d9d946c546bae6d22a7654cdb3b825ffda54b4",
131
- "shasum": ""
132
- },
133
- "require": {
134
- "php": ">=5.3.0"
135
- },
136
- "time": "2014-04-16 09:44:40",
137
- "type": "library",
138
- "installation-source": "dist",
139
- "autoload": {
140
- "classmap": [
141
- "AltoRouter.php"
142
- ]
143
- },
144
- "notification-url": "https://packagist.org/downloads/",
145
- "license": [
146
- "MIT"
147
- ],
148
- "authors": [
149
- {
150
- "name": "Danny van Kooten",
151
- "email": "dannyvankooten@gmail.com",
152
- "homepage": "http://dannyvankooten.com/"
153
- },
154
- {
155
- "name": "Koen Punt",
156
- "homepage": "https://github.com/koenpunt"
157
- },
158
- {
159
- "name": "niahoo",
160
- "homepage": "https://github.com/niahoo"
161
- }
162
- ],
163
- "description": "A lightning fast router for PHP",
164
- "homepage": "https://github.com/dannyvankooten/AltoRouter",
165
- "keywords": [
166
- "lightweight",
167
- "router",
168
- "routing"
169
- ]
170
- },
171
- {
172
- "name": "upstatement/routes",
173
- "version": "0.4",
174
- "version_normalized": "0.4.0.0",
175
- "source": {
176
- "type": "git",
177
- "url": "https://github.com/Upstatement/routes.git",
178
- "reference": "fae7d46f56e8b5775f072774941a5f0a25cb86f3"
179
- },
180
- "dist": {
181
- "type": "zip",
182
- "url": "https://api.github.com/repos/Upstatement/routes/zipball/fae7d46f56e8b5775f072774941a5f0a25cb86f3",
183
- "reference": "fae7d46f56e8b5775f072774941a5f0a25cb86f3",
184
- "shasum": ""
185
- },
186
- "require": {
187
- "altorouter/altorouter": "1.1.0",
188
- "composer/installers": "~1.0",
189
- "php": ">=5.3.0"
190
- },
191
- "require-dev": {
192
- "phpunit/phpunit": "3.7.*",
193
- "satooshi/php-coveralls": "dev-master",
194
- "wp-cli/wp-cli": "*"
195
- },
196
- "time": "2016-07-06 12:53:24",
197
- "type": "library",
198
- "installation-source": "dist",
199
- "autoload": {
200
- "psr-0": {
201
- "Routes": ""
202
- }
203
- },
204
- "notification-url": "https://packagist.org/downloads/",
205
- "license": [
206
- "MIT"
207
- ],
208
- "authors": [
209
- {
210
- "name": "Jared Novack",
211
- "email": "jared@upstatement.com",
212
- "homepage": "http://upstatement.com"
213
- }
214
- ],
215
- "description": "Manage rewrites and routes in WordPress with this dead-simple plugin",
216
- "homepage": "http://routes.upstatement.com",
217
- "keywords": [
218
- "redirects",
219
- "rewrite",
220
- "routes",
221
- "routing"
222
- ]
223
- },
224
  {
225
  "name": "twig/twig",
226
  "version": "v1.34.4",
@@ -343,5 +237,111 @@
343
  "extension",
344
  "twig"
345
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  }
347
  ]
115
  "zikula"
116
  ]
117
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  {
119
  "name": "twig/twig",
120
  "version": "v1.34.4",
237
  "extension",
238
  "twig"
239
  ]
240
+ },
241
+ {
242
+ "name": "altorouter/altorouter",
243
+ "version": "v1.1.0",
244
+ "version_normalized": "1.1.0.0",
245
+ "source": {
246
+ "type": "git",
247
+ "url": "https://github.com/dannyvankooten/AltoRouter.git",
248
+ "reference": "09d9d946c546bae6d22a7654cdb3b825ffda54b4"
249
+ },
250
+ "dist": {
251
+ "type": "zip",
252
+ "url": "https://api.github.com/repos/dannyvankooten/AltoRouter/zipball/09d9d946c546bae6d22a7654cdb3b825ffda54b4",
253
+ "reference": "09d9d946c546bae6d22a7654cdb3b825ffda54b4",
254
+ "shasum": ""
255
+ },
256
+ "require": {
257
+ "php": ">=5.3.0"
258
+ },
259
+ "time": "2014-04-16 09:44:40",
260
+ "type": "library",
261
+ "installation-source": "dist",
262
+ "autoload": {
263
+ "classmap": [
264
+ "AltoRouter.php"
265
+ ]
266
+ },
267
+ "notification-url": "https://packagist.org/downloads/",
268
+ "license": [
269
+ "MIT"
270
+ ],
271
+ "authors": [
272
+ {
273
+ "name": "Danny van Kooten",
274
+ "email": "dannyvankooten@gmail.com",
275
+ "homepage": "http://dannyvankooten.com/"
276
+ },
277
+ {
278
+ "name": "Koen Punt",
279
+ "homepage": "https://github.com/koenpunt"
280
+ },
281
+ {
282
+ "name": "niahoo",
283
+ "homepage": "https://github.com/niahoo"
284
+ }
285
+ ],
286
+ "description": "A lightning fast router for PHP",
287
+ "homepage": "https://github.com/dannyvankooten/AltoRouter",
288
+ "keywords": [
289
+ "lightweight",
290
+ "router",
291
+ "routing"
292
+ ]
293
+ },
294
+ {
295
+ "name": "upstatement/routes",
296
+ "version": "0.4",
297
+ "version_normalized": "0.4.0.0",
298
+ "source": {
299
+ "type": "git",
300
+ "url": "https://github.com/Upstatement/routes.git",
301
+ "reference": "fae7d46f56e8b5775f072774941a5f0a25cb86f3"
302
+ },
303
+ "dist": {
304
+ "type": "zip",
305
+ "url": "https://api.github.com/repos/Upstatement/routes/zipball/fae7d46f56e8b5775f072774941a5f0a25cb86f3",
306
+ "reference": "fae7d46f56e8b5775f072774941a5f0a25cb86f3",
307
+ "shasum": ""
308
+ },
309
+ "require": {
310
+ "altorouter/altorouter": "1.1.0",
311
+ "composer/installers": "~1.0",
312
+ "php": ">=5.3.0"
313
+ },
314
+ "require-dev": {
315
+ "phpunit/phpunit": "3.7.*",
316
+ "satooshi/php-coveralls": "dev-master",
317
+ "wp-cli/wp-cli": "*"
318
+ },
319
+ "time": "2016-07-06 12:53:24",
320
+ "type": "library",
321
+ "installation-source": "dist",
322
+ "autoload": {
323
+ "psr-0": {
324
+ "Routes": ""
325
+ }
326
+ },
327
+ "notification-url": "https://packagist.org/downloads/",
328
+ "license": [
329
+ "MIT"
330
+ ],
331
+ "authors": [
332
+ {
333
+ "name": "Jared Novack",
334
+ "email": "jared@upstatement.com",
335
+ "homepage": "http://upstatement.com"
336
+ }
337
+ ],
338
+ "description": "Manage rewrites and routes in WordPress with this dead-simple plugin",
339
+ "homepage": "http://routes.upstatement.com",
340
+ "keywords": [
341
+ "redirects",
342
+ "rewrite",
343
+ "routes",
344
+ "routing"
345
+ ]
346
  }
347
  ]