Changeset 13235
- Timestamp:
- 03/26/08 18:15:41 (10 months ago)
- Location:
- util/trunk/docscripts
- Files:
-
- 3 modified
-
includes/dojo.inc (modified) (2 diffs)
-
lib/parser/DojoFunctionBody.php (modified) (9 diffs)
-
lib/parser/DojoFunctionDeclare.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
util/trunk/docscripts/includes/dojo.inc
r12999 r13235 327 327 328 328 foreach ($executions as $execution) { 329 $execution->removeSwallowedMixins($swallowed_mixins); 329 330 $execution->rollOut($output); 330 $execution->removeSwallowedMixins($swallowed_mixins);331 331 332 332 unset($execution); … … 341 341 $is_prototype = false; 342 342 if ($call->getParameter(0)->isA(DojoVariable) || $call->getParameter(0)->isA(DojoFunctionDeclare)) { 343 if ($call->getParameter(0)->isA( dojoVariable)) {343 if ($call->getParameter(0)->isA(DojoVariable)) { 344 344 $object = $call->getParameter(0)->getVariable(); 345 345 if (strpos($object, '(') !== false) { -
util/trunk/docscripts/lib/parser/DojoFunctionBody.php
r12919 r13235 279 279 280 280 foreach ($possible_mixins as $i => $mixin) { 281 $parameter = $mixin->getParameter(0); 282 if ($mixin->getName() == 'dojo.extend' && $parameter->isA(DojoFunctionDeclare)) { 283 $code = $this->package->getCode(); 284 $line = substr($code[$parameter->start[0]], 0, $parameter->start[1]); 285 $line = substr($line, 0, strrpos($line, $mixin->getName())); 286 preg_match_all('%(?:([a-zA-Z0-9_.$\s]+)\s*=\s*)+%', $line, $matches); 287 foreach ($matches[1] as $match) { 288 $match = trim($match); 289 if (!preg_match('%^var\s+%', $match)) { 290 $found = true; 291 while ($found) { 292 $found = false; 293 foreach ($internals as $internal_name => $external_name) { 294 if ($internal_name == 'this') continue; 295 if (strpos($match, $internal_name . '.') === 0) { 296 $last = $match; 297 $match = $external_name . substr($match, strlen($internal_name)); 298 if ($last != $match) { 299 $found = true; 281 if (($this->start[0] < $mixin->start[0] || ($this->start[0] == $mixin->start[0] && $this->start[1] < $mixin->start[1])) && 282 ($this->end[0] > $mixin->end[0] || ($this->end[0] == $mixin->end[0] && $this->end[1] > $mixin->end[1]))) { 283 $parameter = $mixin->getParameter(0); 284 if ($mixin->getName() == 'dojo.extend' && $parameter->isA(DojoFunctionDeclare)) { 285 $code = $this->package->getCode(); 286 $line = substr($code[$parameter->start[0]], 0, $parameter->start[1]); 287 $line = substr($line, 0, strrpos($line, $mixin->getName())); 288 preg_match_all('%(?:([a-zA-Z0-9_.$\s]+)\s*=\s*)+%', $line, $matches); 289 foreach ($matches[1] as $match) { 290 $match = trim($match); 291 if (!preg_match('%^var\s+%', $match)) { 292 $found = true; 293 while ($found) { 294 $found = false; 295 foreach ($internals as $internal_name => $external_name) { 296 if ($internal_name == 'this') continue; 297 if (strpos($match, $internal_name . '.') === 0) { 298 $last = $match; 299 $match = $external_name . substr($match, strlen($internal_name)); 300 if ($last != $match) { 301 $found = true; 302 } 300 303 } 301 304 } 302 305 } 303 }304 $parameter->getFunction()->setFunctionName($match);305 } 306 }307 }308 elseif ($parameter->isA(DojoVariable)) {309 $object = $parameter->getVariable();310 if ($object == "this") {311 unset($possible_mixins[$i]);312 continue;313 }314 if (($mixin->start[0] > $this->start[0] || ($mixin->start[0] == $this->start[0] && $mixin->start[1] > $this->start[1]))315 && ($mixin->end[0] < $this->end[0] || ($mixin->end[0] == $this->end[0] && $mixin->end[1] < $this->end[1]))) {316 if (array_key_exists($object, $internals)) {317 unset($possible_mixins[$i]);318 }319 else{320 foreach ($internals as $internal_name => $external_name) {321 if (strpos($object, $internal_name . '.') === 0) {322 $object = $external_name . substr($object, strlen($internal_name));306 $parameter->getFunction()->setFunctionName($match); 307 } 308 } 309 $this->externalized_mixins[] = $mixin; 310 } 311 elseif ($parameter->isA(DojoVariable)) { 312 $object = $parameter->getVariable(); 313 if ($object == "this") { 314 unset($possible_mixins[$i]); 315 } 316 elseif (($mixin->start[0] > $this->start[0] || ($mixin->start[0] == $this->start[0] && $mixin->start[1] > $this->start[1])) 317 && ($mixin->end[0] < $this->end[0] || ($mixin->end[0] == $this->end[0] && $mixin->end[1] < $this->end[1]))) { 318 if (array_key_exists($object, $internals)) { 319 unset($possible_mixins[$i]); 320 } 321 else { 322 foreach ($internals as $internal_name => $external_name) { 323 if (strpos($object, $internal_name . '.') === 0) { 324 $object = $external_name . substr($object, strlen($internal_name)); 325 } 323 326 } 324 } 325 326 $parameter->setVariable($object); 327 } 328 } 329 } 330 else { 331 unset($possible_mixins[$i]); 332 } 333 } 334 } 335 336 public function getExternalizedObjects($function_name=false){ 327 328 $parameter->setVariable($object); 329 } 330 } 331 $this->externalized_mixins[] = $mixin; 332 } 333 else { 334 $this->externalized_mixins[] = $mixin; 335 array_splice($possible_mixins, $i--, 1); 336 } 337 } 338 } 339 } 340 341 public function getExternalizedObjects($function_name=false, $parameter_names=array()){ 337 342 if ($this->externalized_objects) { 338 343 return $this->externalized_objects; … … 341 346 $this->build(); 342 347 $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); 348 foreach ($this->externalized_mixins as $mixin) { 349 $lines = Text::blankOutAtPositions($lines, $mixin->start[0], $mixin->start[1], $mixin->end[0], $mixin->end[1]); 350 } 343 351 $internals = $this->getLocalVariableNames(); 344 352 … … 373 381 $name = $function_name . substr($name, 4); 374 382 } 383 384 if (in_array($name, $parameter_names)) { 385 continue; 386 } 387 375 388 $externalized_object->setName($name); 376 389 $this->externalized_objects[] = $externalized_object; … … 448 461 } 449 462 450 public function getExternalizedAllVariableNames($function_name ) {463 public function getExternalizedAllVariableNames($function_name, $parameter_names=array()) { 451 464 if ($this->externalized_avariables) { 452 465 return $this->externalized_avariables; … … 463 476 } 464 477 465 $objects = $this->getExternalizedObjects( );478 $objects = $this->getExternalizedObjects(false, $parameter_names); 466 479 foreach ($objects as $object) { 467 480 $object->build(); … … 525 538 } 526 539 } 527 540 528 541 return $this->externalized_avariables = $variables; 529 542 } 530 543 531 public function getExternalizedInstanceVariableNames($function_name ) {544 public function getExternalizedInstanceVariableNames($function_name, $parameter_names=array()) { 532 545 if ($this->externalized_ivariables) { 533 546 return $this->externalized_ivariables; … … 536 549 $ivariables = array(); 537 550 538 $variables = $this->getExternalizedAllVariableNames($function_name );551 $variables = $this->getExternalizedAllVariableNames($function_name, $parameter_names); 539 552 foreach ($variables as $variable) { 540 553 if (strpos($variable, 'this.') === 0) { … … 546 559 } 547 560 548 public function getExternalizedVariableNames($function_name ) {561 public function getExternalizedVariableNames($function_name, $parameter_names=array()) { 549 562 if ($this->externalized_variables) { 550 563 return $this->externalized_variables; … … 553 566 $evariables = array(); 554 567 555 $variables = $this->getExternalizedAllVariableNames($function_name );568 $variables = $this->getExternalizedAllVariableNames($function_name, $parameter_names); 556 569 foreach ($variables as $variable) { 557 570 if (strpos($variable, 'this.') !== 0) { -
util/trunk/docscripts/lib/parser/DojoFunctionDeclare.php
r12987 r13235 132 132 } 133 133 134 public function getVariableNames($function_name ){135 return $this->body->getExternalizedVariableNames($function_name );134 public function getVariableNames($function_name, $parameter_names=array()){ 135 return $this->body->getExternalizedVariableNames($function_name, $parameter_names); 136 136 } 137 137 … … 141 141 142 142 public function getObjects(){ 143 return $this->body->getExternalizedObjects( );143 return $this->body->getExternalizedObjects(false, $this->getParameterNames()); 144 144 } 145 145 … … 325 325 } 326 326 327 $variables = $this->body->getExternalizedInstanceVariableNames($function_name );327 $variables = $this->body->getExternalizedInstanceVariableNames($function_name, $this->getParameterNames()); 328 328 foreach($variables as $variable) { 329 329 $output[$function_name . '.' . $variable]['instance'] = $function_name; 330 330 } 331 331 332 $variables = $this->body->getExternalizedVariableNames($function_name );332 $variables = $this->body->getExternalizedVariableNames($function_name, $this->getParameterNames()); 333 333 foreach($variables as $variable) { 334 334 list($first,) = explode('.', $variable, 2);