#-------------------------------
-package _util;
+package QueryParser::_util;
# At this level, joiners are always & or |. This is not
# the external, configurable representation of joiners that
my $self = shift;
my %opts = @_;
+ my $pkg = ref $self->QueryParser || $self->QueryParser;
+
my $abstract_query = {
type => "query_plan",
filters => [map { $_->to_abstract_query } @{$self->filters}],
if ($opts{with_config}) {
$opts{with_config} = 0;
- $abstract_query->{config} = $QueryParser::parser_config{QueryParser};
+ $abstract_query->{config} = $QueryParser::parser_config{$pkg};
}
my $kids = [];
for my $qnode (@{$self->query_nodes}) {
# Remember: qnode can be a joiner string, a node, or another query_plan
- if (_util::is_joiner($qnode)) {
+ if (QueryParser::_util::is_joiner($qnode)) {
if ($abstract_query->{children}) {
my $open_joiner = (keys(%{$abstract_query->{children}}))[0];
next if $open_joiner eq $qnode;
}
}
- $abstract_query->{children} ||= { _util::default_joiner() => $kids };
+ $abstract_query->{children} ||= { QueryParser::_util::default_joiner() => $kids };
return $abstract_query;
}
for (my $i = 0; $i < scalar (@$long_list); $i++) {
my $right = $long_list->[$i];
- if (_util::compare_abstract_atoms(
+ if (QueryParser::_util::compare_abstract_atoms(
$short_list->[scalar @already], $right
)) {
push @already, $i;
my $self = shift;
my %opts = @_;
+ my $pkg = ref $self->plan->QueryParser || $self->plan->QueryParser;
+
my $abstract_query = {
"type" => "node",
"class" => $self->classname,
my $kids = [];
for my $qatom (@{$self->query_atoms}) {
- if (_util::is_joiner($qatom)) {
+ if (QueryParser::_util::is_joiner($qatom)) {
if ($abstract_query->{children}) {
my $open_joiner = (keys(%{$abstract_query->{children}}))[0];
next if $open_joiner eq $qatom;
next if $@;
foreach (
- _util::find_arrays_in_abstract($abstract_query->{children})
+ QueryParser::_util::find_arrays_in_abstract($abstract_query->{children})
) {
last if $self->replace_phrase_in_abstract_query(
$tmplist,
$_,
- _util::fake_abstract_atom_from_phrase($phrase)
+ QueryParser::_util::fake_abstract_atom_from_phrase($phrase)
);
}
}
if ($self->{unphrases} and not $opts{no_phrases}) {
for my $phrase (@{$self->{unphrases}}) {
my $tmptree = $self->{plan}->{QueryParser}->new(
- query => $QueryParser::parser_config{QueryParser}{operators}{disallowed}.
+ query => $QueryParser::parser_config{$pkg}{operators}{disallowed}.
'"' . $phrase . '"'
)->parse->parse_tree;
next if $@;
foreach (
- _util::find_arrays_in_abstract($abstract_query->{children})
+ QueryParser::_util::find_arrays_in_abstract($abstract_query->{children})
) {
last if $self->replace_phrase_in_abstract_query(
$tmplist,
$_,
- _util::fake_abstract_atom_from_phrase($phrase, 1)
+ QueryParser::_util::fake_abstract_atom_from_phrase($phrase, 1)
);
}
}
}
}
- $abstract_query->{children} ||= { _util::default_joiner() => $kids };
+ $abstract_query->{children} ||= { QueryParser::_util::default_joiner() => $kids };
return $abstract_query;
}