[prev in list] [next in list] [prev in thread] [next in thread]
List: mason
Subject: [Mason] utf8 - in attr block - bug?
From: Jozef Mojzis <jozef.mojzis () gmail ! com>
Date: 2010-09-29 17:27:27
Message-ID: 3BD9FE5A-3410-45DF-9C1B-2A66FBD6428B () gmail ! com
[Download RAW message or body]
Hi all,
I have in my mason handler defined PREAMBLE "use utf8;", exactly:
sub handler {
my ($r) = @_;
my $ah = HTML::Mason::ApacheHandler->new(
...
args_method => "mod_perl",
preamble => "use utf8;",
...
);
anyway, the generated obj code is not correct.
Here is a demonstration:
Main component (called utf8test.mhtm)
=== cut here start ===
<% $utf1 %><br>
<% $utf2 %><br>
<%init>
my $datacomp = $m->fetch_comp('without_useutf.mc');
my $utf1 = $datacomp->attr_if_exists('utf8');
$datacomp = $m->fetch_comp('with_useutf.mc');
my $utf2 = $datacomp->attr_if_exists('utf8');
</%init>
=== cut here end ===
SImply - fetch another two components, and if named attr "utf8" exists, get them and \
print them...
The component "without_useutf.mc"
=== cut here start ===
<%attr>
utf8 => '=č=cCaron =€=EUR =Ω=Greek capital OMEGA'
</%attr>
=== cut here end ===
and the component "with_useutf.mc"
=== cut here start ===
<%attr>
utf8 => '=č=cCaron =€=EUR =Ω=Greek capital OMEGA'
</%attr>
<%once>
use utf8; #this is in the ONCE-section
</%once>
=== cut here end ===
the result in the browser:
the first line - (utf1 - what comes from a component without "use utf8;') is \
incorrect, the second line (utf2 - what comes from a component WITH use utf8) is OK.
Therefore I think, this is a bug, or I missed something... :-)
Workaround exists - simply enough enter to all components with utf8 ATTR sections, \
the ONCE block, but would be much nicer, if mason compile the preamble block not only \
to code section, but to the obj top section too.
Here are the "compiled" versions (.obj) files of two components:
the file: without_useutf.obj
=== cut here start ===
package HTML::Mason::Commands;
use strict;
use vars qw($m $r $d);
HTML::Mason::Component::FileBased->new(
'attr' => {
utf8 => '=č=cCaron =€=EUR =Ω=Greek capital OMEGA'
},
'code' => sub {
use utf8;$m->debug_hook( $m->current_comp->path ) if ( \
HTML::Mason::Compiler::IN_PERL_DB() );
;return;
},
'load_time' => 1285776495,
)
;
=== cut here end ===
and the file with_useutf.obj
=== cut here start ===
package HTML::Mason::Commands;
use strict;
use vars qw($m $r $d);
#line 4 "/Users/clt/Web/Mad/Documents/special/with_useutf.mc"
use utf8; #this is in the ONCE-section
HTML::Mason::Component::FileBased->new(
'attr' => {
utf8 => '=č=cCaron =€=EUR =Ω=Greek capital OMEGA'
},
'code' => sub {
use utf8;$m->debug_hook( $m->current_comp->path ) if ( \
HTML::Mason::Compiler::IN_PERL_DB() );
;return;
},
'load_time' => 1285779767,
)
;
=== cut here end ===
as you can see, the only difference is in the "use utf8;" line AT THE TOP of \
component. the attr-block has a correct strings in both version, but not in output...
The output is this:
=Ä =cCaron =â =EUR =Î =Greek capital OMEGA
=č=cCaron =€=EUR =Ω=Greek capital OMEGA
the 1st line is bad, second is OK...
jm.
ps: sry for my terrible english...
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic