Data-Stag

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


2002-12-20	- Added Data::Stag::Writer and tidied up writer classes
		- added stag-splitter.pl script
		- fixed Makefile.PL

Version 0.03
============

2003-04-29	- Fixed bug with empty XML tags being treated as nulls
                - Fixed bug with XML parsing/export where zero-valued
                  pcdata was treated as empty string
                  (new test emptytag.t added for these)
                - Modified behaviour of BaseHandler - now the whole
                  stag object is passed. This can be manipulated by
                  the intercepting code directly
                - Added makehandler() to Data::Stag

                - BIG CHANGE: behaviour of 'get' now different;
                  if the value 'got' is a terminal, will return
                  the node data; if it is non-terminal, it will
                  return the node itself (like getnode()).

Data/Stag/BaseHandler.pm  view on Meta::CPAN

    if (!$self->{sax_stack}) {
	$self->{sax_stack} = [];
    }
    push(@{$self->{sax_stack}}, $name);
    push(@{$self->{is_nonterminal_stack}}, 0);
    if (@{$self->{is_nonterminal_stack}} > 1) {
	$self->{is_nonterminal_stack}->[-2] = 1;
    }

    # check if we need an event
    # for any preceeding pcdata
    my $str = $self->{__str};
    if (defined $str) {
	# mixed attribute text - use element '.'
        $str =~ s/^\s*//;
        $str =~ s/\s*$//;
	if ($str) {
	    $self->event(".", $str) if $str;
	}
	$self->{__str} = undef;
    }

Data/Stag/ITextParser.pm  view on Meta::CPAN

    $self->pop_to_level(0, $txt, \@stack);
    return;
}

sub pop_to_level {
    my $self = shift;
    my $indent = shift;
    my $txt = shift;
    my $stack = shift;

    # if buffered pcdata, export it
    if (defined $txt) {
	# unescape :s
	$txt =~ s/^\\:/:/g;
	$txt =~ s/([^\\])\\:/$1:/g;
        $self->evbody($txt);
    }
    while (scalar(@$stack) &&
           $stack->[-1]->[0] >= $indent) {
        $self->end_event($stack->[-1]->[1]);
        pop(@$stack);

Data/Stag/IndentWriter.pm  view on Meta::CPAN

sub start_event {
    my $self = shift;
    my $ev = shift;
    my $stack = $self->stack;
    
    if ($ev eq '@') {
        $self->o('[');
	$self->in_attr(1);
    }
    elsif ($ev eq '.') {
	# pcdata for element with attributes
	# do nothing
    }
    elsif ($self->in_attr) {
        if ($self->in_attr > 1) {
            $self->o(' ');
        }
	$self->o("$ev=");
        $self->in_attr(2);
    }
    elsif ($ev eq '') {

Data/Stag/IndentWriter.pm  view on Meta::CPAN

    my $stack = $self->stack;
    my $top = pop @$stack;
    $top eq $ev or confess("$top ne $ev");
    if ($self->in_attr) {
	if ($ev eq '@') {
	    $self->in_attr(0);
            $self->o(']');
	}
    }
    elsif ($ev eq '.') {
	# end of pcdata for element with attributes
    }
    else {
	if (!@$stack) {
	    $self->o("\n");
	}
    }
    return $ev;
}
sub evbody {
    my $self = shift;

Data/Stag/XMLWriter.pm  view on Meta::CPAN

    }
    my $stack = $self->stack;
    if (!@$stack) {
	$self->o($self->first_line || "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    }

    if ($ev eq '@') {
	$self->in_attr(1);
    }
    elsif ($ev eq '.') {
	# pcdata for element with attributes
	# do nothing
    }
    elsif ($self->in_attr) {
	$self->o(" $ev=");
    }
    elsif ($ev eq '') {
        # ignore null nodes
    }
    else {
	$self->ensure_closed;

Data/Stag/XMLWriter.pm  view on Meta::CPAN

    if (!$ev) {
	$ev = $popped;
    }
    if ($self->in_attr) {
	if ($ev eq '@') {
	    $self->in_attr(0);
	    $self->ensure_closed;
	}
    }
    elsif ($ev eq '.') {
	# end of pcdata for element with attributes
    }
    else {
	$self->ensure_closed;
	if ($self->{_nl}) {
	    $self->o("\n" . $self->indent_txt)
	}
	$self->o("</$ev>");
	$self->{_nl} = 1;
	if (!@$stack) {
	    $self->o("\n");

t/bio.x  view on Meta::CPAN

    my ($f1, $f2) = @_;
}

sub composite {
    my $fset = shift;
    return
      Node(gene=>[
                  [transcript=>[
                               ]
                  ],
                  [funcdata=>[
                              [function=>'tm receptor'],
                             ],
                  ],
                 ]
          );
}

my $intersects_f1 = mk_intersects($f);
print 111 if $intersects_f1->($f);
print 222 if $intersects_f1->(Node(feature=>[



( run in 1.071 second using v1.01-cache-2.11-cpan-995e09ba956 )