… | |
… | |
23 | sub is_prefix_of($@) { |
23 | sub is_prefix_of($@) { |
24 | my ($node, @path) = @_; |
24 | my ($node, @path) = @_; |
25 | |
25 | |
26 | return 1 unless @path; |
26 | return 1 unless @path; |
27 | |
27 | |
28 | my $kw = pop @path; |
28 | my $kw = lc pop @path; |
29 | |
29 | |
30 | $node = $node->{parent} |
30 | $node = $node->{parent} |
31 | or return 0; |
31 | or return 0; |
32 | |
32 | |
33 | return ! ! grep $_ eq $kw, @{ $node->{kw} }; |
33 | return ! ! grep $_ eq $kw, @{ $node->{kw} }; |
… | |
… | |
36 | sub find(@) { |
36 | sub find(@) { |
37 | my (@path) = @_; |
37 | my (@path) = @_; |
38 | |
38 | |
39 | return unless @path; |
39 | return unless @path; |
40 | |
40 | |
41 | my $kw = pop @path; |
41 | my $kw = lc pop @path; |
42 | |
42 | |
43 | # TODO: make sure results are unique |
43 | # TODO: make sure results are unique |
44 | |
44 | |
45 | grep { is_prefix_of $_, @path } |
45 | grep { is_prefix_of $_, @path } |
46 | map @$_, |
46 | map @$_, |