#!/usr/bin/perl use warnings; use strict; use lib 'lib'; use Conclave::Mapper::Locate; use File::Slurp qw/write_file read_file/; use Data::Dumper; our $HOME = '/home/smash/conclave-website-root'; my $query = shift; my $pkgid = 'tree-1.5.3'; my $locator = Conclave::Mapper::Locate->new($pkgid); my $rank = $locator->locate($query); my @sorted; my $score = $locator->{query}->{score} || 'pss'; if ($score eq 'levenshtein') { @sorted = $rank->sorted('asc'); } else { @sorted = $rank->sorted; my @new; foreach (@sorted) { push @new, $_ if $_->score > 0; } @sorted = @new; } foreach (@sorted) { my $uid = $_->element; my $score = $_->score; my $filename; if ($uid =~ m/.*?#(.*?)::/) { $filename = $1; } my $line; if ($uid =~ m/(\d+)$/) { $line = $1; } my $str = __get_file_line($pkgid,$filename,$line); #print "$filename:$line|$score|$str\n"; printf "%s:%5d|%10f| %s\n", $filename, $line, $score, $str; } sub __get_file_line { my ($pkgid, $filename, $line) = @_; my $cnt = read_file("$HOME/packages/$pkgid/$filename", {binmode=>':utf8'}); my @lines = split /\n/, $cnt; return splice(@lines, $line-1, 1); }