shlomi-fish-homepage / bin / find_ascii_quotes.pl

#!/usr/bin/perl

use strict;
use warnings;

use XML::LibXML;
use XML::LibXML::Reader;
use XML::LibXML::XPathContext;
use Getopt::Long;

my $out_fn;

binmode STDOUT, ":utf8";

# Input the filename
foreach my $filename (@ARGV)
{
    my $reader = XML::LibXML::Reader->new(
        location => $filename, load_ext_dtd => 1, 'no_network' => 1,
    ) or die "Cannot read '$filename'.";
    while ($reader->read())
    {
        if ($reader->nodeType() == XML_TEXT_NODE)
        {
            my $data = $reader->value;

            my @lines = split(/\n/, $data, -1);

            foreach my $idx (0 .. $#lines)
            {
                my $line = $lines[$idx];

                if ($line =~ m{"})
                {
                    printf {*STDOUT} ("%s:%d:%s\n",
                        $filename, $reader->lineNumber()+$idx, $line
                    );
                }
            }
        }
    }

}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.