MarpaX-Role-Parameterized-ResourceIdentifier
view release on metacpan or search on metacpan
lib/MarpaX/Role/Parameterized/ResourceIdentifier/BNF.pm view on Meta::CPAN
_ESCAPED_STRUCT => 2,
_UNESCAPED_STRUCT => 3,
_CONVERTED_STRUCT => 4,
_MAX_STRUCTS => 4,
_COUNT_STRUCTS => 5
};
#
# Just a helper for me
#
has _indice_description => ( is => 'ro', isa => ArrayRef[Str], default => sub {
[
'Raw structure ',
'Normalized structure',
'Escaped structure',
'Unescaped structure',
'Converted structure '
]
}
);
#
lib/MarpaX/Role/Parameterized/ResourceIdentifier/BNF.pm view on Meta::CPAN
# Internal class methods
# =============================================================================
sub _generate_attributes {
my ($class, $type, @names) = @_;
#
# The lazy builders that implementation should around
#
foreach (@names) {
my $builder = "build_$_";
has $_ => (is => 'ro', isa => HashRef[CodeRef],
lazy => 1,
builder => $builder,
handles_via => 'Hash',
handles => {
"get_$_" => 'get',
"set_$_" => 'set',
"exists_$_" => 'exists',
"delete_$_" => 'delete',
"kv_$_" => 'kv',
"keys_$_" => 'keys',
lib/MarpaX/Role/Parameterized/ResourceIdentifier/BNF.pm view on Meta::CPAN
}
);
}
my $_type_names = "_${type}_names";
my $_type_wrapper = "_${type}_wrapper";
my $_type_wrapper_call_lazy_builder = "_${type}_wrapper_call_lazy_builder";
#
# Just a convenient thing for us
#
has $_type_names => (is => 'ro', isa => ArrayRef[Str|Undef], default => sub { \@names });
#
# The important thing is these wrappers:
# - the one using accessors so that we are sure builders are executed
# - the one without the accessors for performance
#
has $_type_wrapper => (is => 'ro', isa => ArrayRef[CodeRef|Undef],
# lazy => 1, Not lazy and this is INTENTIONAL
handles_via => 'Array',
handles => {
"_get_$type" => 'get'
},
default => sub {
$_[0]->_build_impl_sub(0, @names)
}
);
has $_type_wrapper_call_lazy_builder => (is => 'ro', isa => ArrayRef[CodeRef|Undef],
# lazy => 1, Not lazy and this is INTENTIONAL
handles_via => 'Array',
handles => {
"_get_${type}_call_lazy_builder" => 'get'
},
default => sub {
$_[0]->_build_impl_sub(1, @names)
}
);
}
( run in 0.689 second using v1.01-cache-2.11-cpan-5f2e87ce722 )