package Text::Trac::Context; use strict; use base qw (Class::Accessor::Fast); __PACKAGE__->mk_accessors( qw( ul ol min_heading_level permalink in_block_of trac_url ) ); my %Defaults = ( text => '', html => '', htmllines => [], ul => {}, ol => {}, shift_count => 0, in_block_of => [], disable_links => [], enable_links => [], ); sub new { my ( $class, $args ) = @_; my $self = { %Defaults, %$args, }; bless $self, $class; $self->init; return $self; } sub init { my $self = shift; $self->{text} =~ s/\r//g; @{$self->{lines}} = split('\n', $self->{text}); $self->{index} = -1; $self->{htmllines} = []; } sub hasnext { my $self = shift; defined ($self->{lines}->[$self->{index} + 1]); } sub nextline { my $self = shift; $self->{lines}->[$self->{index} + 1]; } sub shiftline { my $self = shift; $self->{lines}->[++$self->{index}]; } sub unshiftline { my $self = shift; $self->{lines}->[--$self->{index}]; } sub currentline { my $self = shift; $self->{lines}->[$self->{index}]; } sub html { my $self = shift; join ("\n", @{$self->{htmllines}}); } sub htmllines { my $self = shift; push @{$self->{htmllines}}, $_[0] if defined $_[0]; $self->{htmllines}; } sub lasthtmlline { $_[0]->{htmllines}->[-1]; } sub list_level { my $self = shift; } 1;