Browse Source

Merge pull request #628 from daylerees/custom-blade

Blade::register() custom blade compilers.
Taylor Otwell 12 years ago
parent
commit
a697781390
1 changed files with 40 additions and 0 deletions
  1. 40 0
      laravel/blade.php

+ 40 - 0
laravel/blade.php

@@ -26,8 +26,16 @@ class Blade {
 		'yield_sections',
 		'section_start',
 		'section_end',
+		'extensions',
 	);
 
+	/**
+	 * An array of user defined compilers.
+	 *
+	 * @var array
+	 */
+	protected static $extensions = array();
+
 	/**
 	 * Register the Blade view engine with Laravel.
 	 *
@@ -64,6 +72,22 @@ class Blade {
 		});
 	}
 
+	/**
+	 * Register a new blade compiler.
+	 *
+	 * <code>
+	 * 		Blade::extend(function($view) {
+	 * 			return str_replace('thing', 'another_thing', $view);
+	 * 		});
+	 * </code>
+	 *
+	 * @param closure $compiler
+	 */
+	public static function extend($compiler)
+	{
+		static::$extensions[] = $compiler;
+	}
+
 	/**
 	 * Determine if a view is "expired" and needs to be re-compiled.
 	 *
@@ -386,6 +410,22 @@ class Blade {
 		return preg_replace('/@endsection/', '<?php \\Laravel\\Section::stop(); ?>', $value);
 	}
 
+	/**
+	 * Execute user defined compilers.
+	 *
+	 * @param  string  $value
+	 * @return string
+	 */
+	protected static function compile_extensions($value)
+	{
+		foreach (static::$extensions as $compiler)
+		{
+			$value = $compiler($value);
+		}
+
+		return $value;
+	}	
+
 	/**
 	 * Get the regular expression for a generic Blade function.
 	 *