shlomi-fish-homepage / bin / convert-to-unicode-double-quotes.pl

shl...@iglu.org.… 32bd8ed 





























#!/usr/bin/perl

use strict;
use warnings;
use utf8;

use XML::LibXML;

my $doc = XML::LibXML->load_xml(location => "lib/docbook/5/xml/human-hacking-field-guide-v2.xml");

my $xc = XML::LibXML::XPathContext->new($doc);
$xc->registerNs("db5", 'http://docbook.org/ns/docbook');
$xc->registerNs('xlink', 'http://www.w3.org/1999/xlink');

my $num_paras;
foreach my $para ($xc->findnodes('//db5:para'))
{
    print STDERR +($num_paras++), "\n";
    foreach my $text_node ($xc->findnodes('//text()', $para))
    {
        my $str = $text_node->nodeValue();
        my $count = () = ($str =~ m{"}g);
        if ($count > 0 and (($count % 2) == 0))
        {
            my $i = 0;
            $str =~ s{"}{(($i++) % 2 == 0) ? '“' : '”'}eg;
            $text_node->setData($str);
        }
    }
}
print $doc->toString();
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.