]>
nmode's Git Repositories - Fey/blob - lib/App/Fey.pm
7 our @EXPORT_OK = qw(fey);
11 my ($class, $args) = @_;
12 my $config = do ($ENV{XDG_CONFIG_HOME
} // "$ENV{HOME}/.config") . '/fey/config.pl';
15 mime_query
=> $args->{mime_query
} // $config->{mime_query
} // sub { `file --brief --mime-type "$_[0]"` },
16 contexts
=> $args->{contexts
} // $config->{contexts
} // { default => sub { 1 } },
17 targets
=> $args->{targets
} // $config->{targets
} // {}
26 ARG
: for my $file_or_uri (@_) {
27 if ($file_or_uri =~ m
|^file
://(.+)|) {
31 my ($mime_or_uri, $targets);
32 if (-e
$file_or_uri) {
33 $mime_or_uri = $self->{mime_query
}->($file_or_uri)
35 $mime_or_uri = $file_or_uri;
38 for my $target (@{ $self->{targets
} }) {
39 for my $pattern (@{ $target->{patterns
} }) {
40 if ($mime_or_uri =~ /$pattern/) {
41 my $associations = $target->{associations
};
42 for my $context (keys %{ $associations }) {
43 if ($self->{contexts
}->{$context}->()) {
44 $associations->{$context}->($file_or_uri);
55 App
::Fey-
>new(ref $_[0] ? shift : {})->launch(@_ ? @_ : die 'Error: No files or URIs specified.');