Shlomi Fish avatar Shlomi Fish committed d586dcb

Less BUILD code.

Comments (0)

Files changed (1)

XML-GrammarBase/lib/XML/GrammarBase/Role/XSLT.pm

 
 has 'xslt_transform_basename' => (isa => 'Str', is => 'rw');
 has '_stylesheet' => (isa => "XML::LibXSLT::StylesheetWrapper", is => 'rw');
-has '_xml_parser' => (isa => "XML::LibXML", is => 'rw');
+has '_xml_parser' => (
+    isa => "XML::LibXML",
+    is => 'rw',
+    default => sub { return XML::LibXML->new; },
+    lazy => 1,
+);
+has '_xslt_parser' => (
+    isa => "XML::LibXSLT",
+    is => 'rw',
+    default => sub { return XML::LibXSLT->new; },
+    lazy => 1,
+);
 
 sub BUILD {}
 
 after 'BUILD' => sub {
     my ($self) = @_;
 
-    $self->_xml_parser(XML::LibXML->new());
-
-    my $xslt = XML::LibXSLT->new();
-
     my $style_doc = $self->_xml_parser()->parse_file(
         $self->dist_path_slot('xslt_transform_basename'),
     );
 
-    $self->_stylesheet($xslt->parse_stylesheet($style_doc));
+    $self->_stylesheet($self->_xslt_parser->parse_stylesheet($style_doc));
 
     return;
 };
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.