Lines 333-362
according to the following rules:
Link Here
|
333 |
=cut |
333 |
=cut |
334 |
|
334 |
|
335 |
sub _build_order_atom { |
335 |
sub _build_order_atom { |
336 |
my ( $args ) = @_; |
336 |
my ($args) = @_; |
337 |
my $string = $args->{string}; |
337 |
my $string = $args->{string}; |
338 |
my $result_set = $args->{result_set}; |
338 |
my $result_set = $args->{result_set}; |
339 |
|
339 |
|
340 |
my $param = $string; |
340 |
my $param = $string; |
341 |
$param =~ s/^(\+|\-|\s)//; |
341 |
$param =~ s/^(\+|\-|\s)//; |
342 |
if ( $result_set ) { |
342 |
|
343 |
my $model_param = _from_api_param($param, $result_set); |
343 |
my $modifier; |
|
|
344 |
( $param, $modifier ) = split '/', $param; |
345 |
if ($result_set) { |
346 |
my $model_param = _from_api_param( $param, $result_set ); |
344 |
$param = $model_param if defined $model_param; |
347 |
$param = $model_param if defined $model_param; |
345 |
} |
348 |
} |
346 |
|
349 |
|
347 |
if ( $string =~ m/^\+/ or |
350 |
my $order = ( $string =~ m/^\+/ or $string =~ m/^\s/ ) ? 'asc' : ( $string =~ m/^\-/ ) ? 'desc' : ''; |
348 |
$string =~ m/^\s/ ) { |
351 |
if ( $modifier && $modifier eq 'anti-the' ) { |
349 |
# asc order operator present |
352 |
return \"REGEXP_REPLACE(LOWER($param), '^(a|an|the)', '') $order"; |
350 |
return { -asc => $param }; |
|
|
351 |
} |
352 |
elsif ( $string =~ m/^\-/ ) { |
353 |
# desc order operator present |
354 |
return { -desc => $param }; |
355 |
} |
356 |
else { |
357 |
# no order operator present |
358 |
return $param; |
359 |
} |
353 |
} |
|
|
354 |
return $order ? { "-$order" => $param } : $param; |
360 |
} |
355 |
} |
361 |
|
356 |
|
362 |
=head3 _parse_embed |
357 |
=head3 _parse_embed |