X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=trigger%2FKinoSearch.pm;fp=trigger%2FKinoSearch.pm;h=1d5f832675c0fa2af68ba5e73bb701c06d41cab2;hb=1aafaac1bd8f3172db42b6f4160e6663a6238758;hp=d0ec50bdd3a3118db37390ac3515ef73a9260c8e;hpb=552f20ee2f3c5d614f9794bb023037f8a3ca8222;p=angular-mojolicious.git diff --git a/trigger/KinoSearch.pm b/trigger/KinoSearch.pm index d0ec50b..1d5f832 100644 --- a/trigger/KinoSearch.pm +++ b/trigger/KinoSearch.pm @@ -32,7 +32,8 @@ sub _indexer { sub flatten { my ($flat,$data,$prefix) = @_; if ( ref $data eq '' ) { - $$flat->{$prefix} = $data; + $$flat->{$prefix} .= "\n" . $data; + $$flat->{$prefix} =~ s/^\n//; # strip first } elsif ( ref $data eq 'HASH' ) { foreach my $key ( keys %$data ) { my $full_prefix = $prefix ? $prefix . '.' : ''; @@ -40,8 +41,13 @@ sub flatten { flatten( $flat, $data->{$key}, $full_prefix ); } } elsif ( ref $data eq 'ARRAY' ) { - $$flat->{$prefix} = join("\n", map { ref $_ ? dump($_) : $_ } @$data); - # FIXME arrays with non-scalar references aren't really indexed well + foreach my $el ( @$data ) { + flatten( $flat, $el, $prefix ); + } + } elsif ( ref $data eq 'Mojo::JSON::_Bool' ) { + $$flat->{$prefix} = $data; + } else { + die "unsupported ",ref($data)," from ",dump($data); } }