Changeset 2534
- Timestamp:
- 12/06/07 13:16:55 (5 years ago)
- Files:
-
- 1 modified
-
lang/php/mumu/trunk/GunyaTemplate.php (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/mumu/trunk/GunyaTemplate.php
r2533 r2534 72 72 $this->text = $text; 73 73 } 74 function render($context) {74 public function render($context) { 75 75 return $this->text; 76 76 } … … 78 78 79 79 class GTVariableNode extends GTNode { 80 private $filter_expression; 81 function __construct($filter_expression) { 82 $this->filter_expression = $filter_expression; 83 } 84 public function render($context) { 85 return $filter_expression->resolve($context); 86 } 80 87 } 81 88 … … 132 139 $this->format_string = $format_string; 133 140 } 134 function render($context) {141 public function render($context) { 135 142 return date($this->format_string); 136 143 } … … 138 145 139 146 class GTUnknownNode extends GTNode { 140 function render($context) {147 public function render($context) { 141 148 return 'unknown...'; 149 } 150 } 151 152 class GTFilterExpression { 153 private $var; 154 private $filters; 155 156 function __construct($token) { 157 // $token = 'variable|default:"Default value"|date:"Y-m-d"' 158 // �äƤΤ����ä��顢 159 // $this->var = 'variable' 160 // $this->filters = 'array(array('default, 'Default value'), array('date', 'Y-m-d'))' 161 // �äƤ��롣 162 // Django�Τ��ǻϤޤä��餤���ʤ��餷���� 163 $fils = GTParser::smart_split($token, '|'); 164 $this->var = array_shift($fils); 165 foreach ($fils as $fil) { 166 $fils = GTParser::smart_split($fil, ':'); 167 } 168 } 169 170 // TODO: support ignore_failures 171 public function resolve($context) { 172 142 173 } 143 174 } … … 164 195 // "��ǥ������Ȥ��줿������ƥ��ڡ�������� // "���"'������ˤϡ�\"\'�Ȥ��롣 165 196 // �ľ�����ɽ���ǽФ褫�ä������ޤ����ä��� 166 private function smart_split($text) {197 // �ޥ��Х��ȥ����դʥǥ�������褦�˵��������� static public function smart_split($text, $delimiter = ' ') { 167 198 $epos = strlen($text); 168 199 $ret = array(); … … 200 231 break; 201 232 case "'": 233 $buf .= "'"; 202 234 switch ($mode) { 203 235 case 'd': 204 $buf .= "'";205 236 break; 206 237 case 'q': 207 array_push($ret, $buf);208 238 $mode = 'n'; 209 $buf = '';210 239 break; 211 240 default: 212 if ($buf != '') {213 array_push($ret, $buf);214 }215 241 $mode = 'q'; 216 $buf = '';217 242 break; 218 243 } 219 244 break; 220 245 case '"': 246 $buf .= '"'; 221 247 switch ($mode) { 222 248 case 'd': 223 array_push($ret, $buf);224 249 $mode = 'n'; 225 $buf = '';226 250 break; 227 251 case 'q': 228 $buf .= '"';229 252 break; 230 253 default: 231 if ($buf != '') {232 array_push($ret, $buf);233 }234 254 $mode = 'd'; 235 $buf = ''; 236 break; 237 } 238 break; 239 case ' ': 255 break; 256 } 257 break; 258 case $delimiter: 240 259 switch ($mode) { 241 260 case 'd': 242 261 case 'q': 243 $buf .= ' ';262 $buf .= $delimiter; 244 263 break; 245 264 default: … … 311 330 return FALSE; 312 331 } 313 $node = new GTNowNode($in[1]); 332 $param = explode('"', $in[1]); 333 if (count($param) != 3) { 334 $this->errorStr = 'now�ν����"�Ǥ����äƤ������'; 335 return FALSE; 336 } 337 $node = new GTNowNode($param[1]); 314 338 break; 315 339 default: … … 320 344 return $node; 321 345 } 322 323 // ��������˲ù�324 // �: variable|filter1|filter2:"test"|filter3325 // ��array('variable', array('filter1'), array(filter2, 'test'), array('filter3'))326 // �������Ȥˡ�327 346 328 347 // {{ }}�������� … … 332 351 return FALSE; 333 352 } 334 // TODO: use limit for explode 335 $in = explode(' ', trim(substr($this->template, $spos, $epos))); 336 353 $in = $this->smart_split(substr($this->template, $spos, $epos)); 337 354 $spos = $epos + 2; 338 355 } … … 401 418 return $nl; 402 419 } 403 420 } 421 422 class GunyaTemplate { 404 423 } 405 424 ?>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)