Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | package Psh::Support::Builtins; |
2 | ||
3 | my %builtins=(); | |
4 | my %builtin_aliases= ( | |
5 | '.' => 'source', | |
6 | 'options' => 'option', | |
7 | ); | |
8 | ||
9 | # Returns a list of builtins | |
10 | sub get_builtin_commands { | |
11 | return sort keys %builtins; | |
12 | } | |
13 | ||
14 | # Called during initialization | |
15 | sub build_autoload_list { | |
16 | %builtins= (); | |
17 | ||
18 | my $unshift=''; | |
19 | foreach my $tmp (@INC) { | |
20 | my $tmpdir= Psh::OS::catdir($tmp,'Psh','Builtins'); | |
21 | if (-r $tmpdir) { | |
22 | $unshift=$tmp; | |
23 | my @files= Psh::OS::glob('*.pm',$tmpdir,1); | |
24 | foreach( @files) { | |
25 | s/\.pm$//; | |
26 | $_= lc($_); | |
27 | $builtins{$_}= 1; | |
28 | } | |
29 | } | |
30 | } | |
31 | unshift @INC, $unshift if $unshift; | |
32 | } | |
33 | ||
34 | sub is_builtin { | |
35 | my $name= shift; | |
36 | $name= $builtin_aliases{$name} if $builtin_aliases{$name}; | |
37 | return $name if $builtins{$name}; | |
38 | return 0; | |
39 | } | |
40 | ||
41 | ||
42 | 1; |