File:  [parser3project] / parser3 / tests / 366.html
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Nov 23 21:55:56 2016 UTC (9 years, 6 months ago) by moko
Branches: MAIN
CVS tags: release_3_5_1, release_3_5_0, release_3_4_6, release_3_4_5, HEAD
test for native and parser implementation of ^use[] logic (related to feature #1074)

# checking native implementation first
@USE
366_dir/test.p

# parser implementation of native ^use[] logic
@use[name;options][origin;mi;first;path]
$result[]

^if(^name.left(1) eq '/'){
	^include[$name]
}{
	$origin[$options.origin]

	^if(!def $origin){
		$mi[^reflection:method_info[$caller.method]]
		$origin[$mi.file]
	}

	$origin[/^origin.mid(^request:document-root.length[])]

	$first[^file:dirname[$origin]/$name]

	^if(-f $first){
		^include[$first]
	}($CLASS_PATH is table && $CLASS_PATH){
		^CLASS_PATH.menu{
			$path[$CLASS_PATH.path/$name]
			^if(-f $path){
				^include[$path]
				$name[]
				^break[]
			}
		}
		^if(def $name){
			^throw[use;'$name' not found along ^$MAIN:CLASS_PATH]
		}
	}{
		^throw[use;'$name' usage failed - no ^$MAIN:CLASS_PATH were specified]
	}
}

@include[filename][file]
$filename[^filename.replace[//;/]]
^if(!$USED.$filename){
	$file[^file::load[text;$filename]]
	^process[$MAIN:CLASS]{^taint[as-is][$file.text]}[ $.file[$filename] ]
	$USED[$USED $.$filename(true)]
}

@main[]

native LOG: $LOG
$LOG[]
^use[366_dir/test.p]
parser LOG: $LOG

E-mail: