| Perl-Dist-WiX documentation | Contained in the Perl-Dist-WiX distribution. |
Perl::Dist::WiX::FeatureTree - Tree of <Feature> tag objects.
This document describes Perl::Dist::WiX::FeatureTree version 1.500.
my $tree = Perl::Dist::WiX::FeatureTree->new( parent => $dist, ); my $xml = $tree->as_string();
This module contains the feature tree for a distribution.
Currently, this implements a "feature tree" with one feature. Multiple features will be implemented during the October 2010 release cycle.
my $tree = Perl::Dist::WiX::FeatureTree->new( parent => $dist, );
The new method creates a new feature tree object for the
Perl::Dist::WiX object passed as its parent parameter.
my $xml = $tree->as_string();
The as_string method returns XML representing this feature tree
object for use in the main .msi.
my $xml = $tree->as_string_msm();
The as_string method returns XML representing this feature tree
object for use in merge modules.
$self->add_merge_module($mm)
This routine adds a merge module reference to the feature tree.
The $mm parameter is the
Perl::Dist::WiX::Tag::MergeModule
object to add a reference of.
See Perl::Dist::WiX::Diagnostics (Perl::Dist::WiX::Diagnostics) for a list of exceptions that this module can throw.
Bugs should be reported via:
1) The CPAN bug tracker at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Perl-Dist-WiX if you have an account there.
2) Email to <bug-Perl-Dist-WiX@rt.cpan.org> if you do not.
For other issues, contact the topmost author.
Curtis Jewell <csjewell@cpan.org>
Adam Kennedy <adamk@cpan.org>
Copyright 2009 - 2010 Curtis Jewell.
Copyright 2008 - 2009 Adam Kennedy.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this distribution.
| Perl-Dist-WiX documentation | Contained in the Perl-Dist-WiX distribution. |
package Perl::Dist::WiX::FeatureTree;
use 5.010; use Moose 0.90; use WiX3::XML::Feature qw(); use namespace::clean -except => 'meta'; our $VERSION = '1.500'; $VERSION =~ s/_//ms;
has parent => ( is => 'ro', isa => 'Perl::Dist::WiX', weak_ref => 1, handles => { '_app_ver_name' => 'app_ver_name', '_feature_tree' => 'msi_feature_tree', '_get_components' => 'get_component_array', '_trace_line' => 'trace_line', }, ); has _features => ( traits => ['Array'], is => 'ro', isa => 'ArrayRef[WiX3::XML::Feature]', default => sub { [] }, init_arg => undef, handles => { '_push_feature' => 'push', '_count_features' => 'count', '_get_feature' => 'get', '_get_feature_array' => 'elements', }, ); sub BUILD { my $self = shift; my $feat; # Start the tree. $self->_trace_line( 0, "Creating feature tree...\n" ); if ( defined $self->_feature_tree() ) { PDWiX->throw( 'Complex feature tree not implemented in ' . "Perl::Dist::WiX $VERSION." ); } else { $feat = WiX3::XML::Feature->new( id => 'Complete', title => $self->_app_ver_name(), description => 'The complete package.', level => 1, ); $feat->add_child_tag( $self->_get_components() ); $self->_push_feature($feat); } return; } ## end sub BUILD
sub as_string { my $self = shift; # Get the strings for each of our branches. my $spaces = q{ }; # Indent 4 spaces. my $answer = $spaces; foreach my $feature ( $self->_get_feature_array() ) { $answer .= $feature->as_string(); } chomp $answer; #<<< $answer =~ s{\n} # match a newline {\n$spaces}gxms; # and add spaces after it. # (i.e. the beginning of the line.) #>>> return $answer; } ## end sub as_string
sub as_string_msm { my $self = shift; # Get the strings for each of our branches. my $spaces = q{ }; # Indent 4 spaces. my $answer = $spaces; foreach my $feature ( $self->_get_feature_array() ) { # We just want the children for this one, as # a merge module does not really use <Feature> tags. $answer .= $feature->as_string_children(); } chomp $answer; #<<< $answer =~ s{\n} # match a newline {\n$spaces}gxms; # and add spaces after it. # (i.e. the beginning of the line.) #>>> return $answer; } ## end sub as_string_msm
sub add_merge_module { my $self = shift; my $mm = shift; my $index = shift || 0; my $feature = $self->_get_feature($index); $feature->add_child_tag( $mm->get_merge_reference() ); return; } no Moose; __PACKAGE__->meta->make_immutable; 1; __END__