|
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 |