Hi Roman, The place to override this is Mason::Compilation:
https://metacpan.org/module/Mason::Compilation output_class_header() is probably what you want to override in this case. Give it a try and let me know of problems. Jon On Jan 23, 2012, at 3:01 AM, Roman Daniel wrote: > What is the recommended way how to prepend some text at the beginning of an > object file? > > I wanted all my templates to be considered utf8 source files. But I didn't > want to write > > <%class> > use utf8; > .... > </%class> > > in each template. > > So I created custom Interp class and overwrote > Mason::Interp::write_object_file > > around write_object_file => sub { > my $orig = shift; > my ( $this, $object_file, $object_contents, @rest ) = @_; > > $object_contents = "use utf8;\n$object_contents"; > return $orig->( $this, $object_file, $object_contents, @rest ); > }; > > But I found very quickly that this little modification broke my inheritance. > The reason was that generated code relies on # FLAGS comment to be at the > very first line of the object file: > > # FLAGS: {"extends":"/Page.mc"} > our ($_class_cmeta, $m, $_m_buffer, $_interp); > BEGIN { > local $_interp = Mason::Interp->current_load_interp; > $_interp->component_moose_class->import; > $_interp->component_import_class->import; > } > ... > > > I modified the custom class and put use utf8 after FLAGS line if present: > > around write_object_file => sub { > my $orig = shift; > my ( $this, $object_file, $object_contents, @rest ) = @_; > > # all content files are utf8 > # 2012-01-22 we must respect the flags > $object_contents =~ /^(?:#\s*FLAGS.*?\n)?/sg; > $object_contents =~ s/\G/use utf8;\n/; > > return $orig->( $this, $object_file, $object_contents, @rest ); > }; > > It works but I am not sure how reliable this method is. Aren't there any > other lines except of FLAGS which further processing relied upon? > > Thanks for any reply > > Roman > ------------------------------------------------------------------------------ > Try before you buy = See our experts in action! > The most comprehensive online learning library for Microsoft developers > is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, > Metro Style Apps, more. Free future releases when you subscribe now! > http://p.sf.net/sfu/learndevnow-dev2_______________________________________________ > Mason-users mailing list > Mason-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mason-users ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2 _______________________________________________ Mason-users mailing list Mason-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mason-users