Shlomi Fish avatar Shlomi Fish committed 8a95511

Moved an attribute initialisation out of BUILD.

Comments (0)

Files changed (4)

XML-GrammarBase/Build.PL

     dist_version_from   => 'lib/XML/GrammarBase.pm',
     requires => {
         'Any::Moose' => 0,
+        'File::ShareDir' => 0,
+        'XML::LibXML' => 0,
+        'XML::LibXSLT' => 0,
         'strict' => 0,
         'warnings' => 0,
     },

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

 
 use Any::Moose 'Role';
 
+use File::ShareDir qw(dist_dir);
 use XML::LibXML;
 
 our $VERSION = '0.0.1';
 
 has 'module_base' => (isa => 'Str', is => 'rw');
-has 'data_dir' => (isa => 'Str', is => 'rw');
+has 'data_dir' => (isa => 'Str', is => 'rw',
+    default => sub { return shift->_calc_default_data_dir(); },
+    lazy => 1,
+);
 has 'rng_schema_basename' => (isa => 'Str', is => 'rw');
 has '_rng' => (isa => 'XML::LibXML::RelaxNG', is => 'rw');
 
+sub _calc_default_data_dir
+{
+    my ($self) = @_;
+
+    return dist_dir( $self->module_base() );
+}
+
 sub BUILD {}
 
 after 'BUILD' => sub {
     my ($self) = @_;
 
-    my $data_dir = $self->data_dir() ||
-        dist_dir( $self->module_base() );
-
-    $self->data_dir($data_dir);
-
     my $rngschema =
         XML::LibXML::RelaxNG->new(
             location =>

XML-GrammarBase/t/rng.t

 
 with ('XML::GrammarBase::Role::RelaxNG');
 
-has '+module_base' => (default => 'XML::GrammarBase');
+has '+module_base' => (default => 'XML-GrammarBase');
 has '+data_dir' => (default => File::Spec->catdir(File::Spec->curdir(), "t", "data"));
 has '+rng_schema_basename' => (default => 'fiction-xml.rng');
 

XML-GrammarBase/t/xslt.t

 
 with ('XML::GrammarBase::Role::XSLT');
 
-has '+module_base' => (default => 'XML::GrammarBase');
+has '+module_base' => (default => 'XML-GrammarBase');
 has '+data_dir' => (default => File::Spec->catdir(File::Spec->curdir(), "t", "data"));
 has '+xslt_transform_basename' => (default => 'fiction-xml-to-html.xslt');
 has '+rng_schema_basename' => (default => 'fiction-xml.rng');
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.