-
Notifications
You must be signed in to change notification settings - Fork 26
Modular Extensions Parser Module
Category:HMVC Category:Modules Category:Parser
This parser module is designed for use with the Modular_Extensions_-_HMVC system. It allows the use of function calls from inside parsed templates. [code] <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /**
-
Parser Module for Modular Extensions - HMVC
-
Adapted from CodeIgniter Parser Class
-
@copyright Copyright (c) 2006, EllisLab, Inc.
-
Allows the use of functions in parsed templates ie: {@site_url("home/{page}"}
-
Version 0.4 (c) Wiredesignz 2008-02-28 **/ class Parser extends Module { function Parser() { parent::Module(); }
function parse($view, $data = array()) { if ($template = $this->load->module->view($view, $data, TRUE)) {
$template = $this->_parse($template, $data);while(preg_match('/\{\@(\w*)\("(.*)"\)\}/s', $template, $match)) { $template = str_replace($match[0], $match[1]($match[2]), $template); } return $template; }
}
function _parse($template, $data) { foreach ($data as $key => $val) { if (is_array($val)) {
$template = $this->_parse_pair($key, $val, $template);
} else { $template = $this->_parse_single($key, (string)$val, $template); } } return $template; }function _parse_single($key, $val, $string) { return str_replace('{'.$key.'}', $val, $string); }
function _parse_pair($variable, $data, $string) {
if (FALSE === ($match = $this->_match_pair($string, $variable))) { return $string; }$str = ''; foreach ($data as $row) { $temp = $match['1']; foreach ($row as $key => $val) { if ( ! is_array($val)) { $temp = $this->_parse_single($key, $val, $temp); } else { $temp = $this->_parse_pair($key, $val, $temp); } } $str .= $temp; } return str_replace($match['0'], $str, $string);
}
function _match_pair($string, $variable) { if (!preg_match('/{'.$variable.'}(.*){/'.$variable.'}/s', $string, $match)) { return FALSE; }
return $match;
} } [/code]