Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

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

by McA (Priest)
on Feb 28, 2013 at 16:14 UTC ( #1021077=note: print w/ replies, xml ) Need Help??


in reply to Re: App::Cmd::Command and abstract encoding (=encoding utf8)
in thread App::Cmd::Command and abstract encoding

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


Comment on Re^2: App::Cmd::Command and abstract encoding (=encoding utf8)
Select or Download Code
Re^3: App::Cmd::Command and abstract encoding (=encoding utf8)
by Anonymous Monk on Mar 01, 2013 at 00:53 UTC
Re^3: App::Cmd::Command and abstract encoding (=encoding utf8)
by tobyink (Abbot) on Mar 01, 2013 at 01:18 UTC

    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://1021077]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (9)
As of 2015-07-04 10:11 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 (59 votes), past polls