package Text::Trac::Context;
use strict;
use warnings;
use base qw (Class::Accessor::Fast);

our $VERSION = '0.18';

__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;
