Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: App::Cmd::Command and abstract encoding (=encoding utf8)

by Anonymous Monk
on Feb 28, 2013 at 15:55 UTC ( #1021073=note: print w/ replies, xml ) Need Help??


in reply to App::Cmd::Command and abstract encoding

perlpod/perlpodspec says use pod  =encoding encodingname directive, and Pod::Weaver should respect that, even though =encoding doesn't appear in the test suite


Comment on Re: App::Cmd::Command and abstract encoding (=encoding utf8)
Download Code
Re^2: App::Cmd::Command and abstract encoding (=encoding utf8 or BOM)
by Anonymous Monk on Feb 28, 2013 at 16:03 UTC
Re^2: App::Cmd::Command and abstract encoding (=encoding utf8)
by McA (Priest) on Feb 28, 2013 at 16:14 UTC

    Hi,

    you're completely right. I do use =encoding and I get the right output of perldoc MyPackage. But the method abstract of App::Cmd::Command doesn't respect it when scanning for an abstract message for showing as help text. That's why I wrote earlier that this method could scan for a pod line =encoding and try to respect the given encoding. Have a look at the source code.

    Best regards
    McA

      I asked rjbs on IRC and he said his preferred route was to just interpret all abstracts extracted from the source as being UTF-8, and forget about scanning for the encoding.

      I've offered to provide him with a patch, but if anyone beats me to it, that's just fine by me.

      package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

        I'm not really happy with that "solution", because if a perl source is not declared beeing utf8-encoded it is latin1-encoded by default. A German umlaut in an ABSTRACT would be decoded wrong.

        My proposal from above:

        --- App/Cmd/Command.pm 2013-01-31 01:37:50.000000000 +0100 +++ App/Cmd/Command-New.pm 2013-03-04 14:57:08.398638804 +0100 @@ -11,6 +11,7 @@ # ABSTRACT: a base class for App::Cmd commands use Carp (); +use Encode (); sub prepare { @@ -115,6 +116,7 @@ local $/ = "\n"; my $inpod; + my $enc_seen; while (local $_ = <$fh>) { # =cut toggles, it doesn't end :-/ @@ -127,10 +129,10 @@ next unless $inpod; chomp; - + $enc_seen = $1 if(/^=encoding\s+(\S+)/); next unless /^(?:$class\s-\s)(.*)/; - $result = $1; + $result = $enc_seen ? Encode::decode($enc_seen, $1) : $1; last; }

        Best regards
        McA

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1021073]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2015-07-04 18:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls