################################################################################
#
# フォーマットプラグインの基底クラス。
#
################################################################################
package plugin::format::FormatBase;
#===============================================================================
# コンストラクタ
#===============================================================================
sub new {
	my $class = shift;
	my $self  = {};
	return bless $self,$class;	
}

#===============================================================================
# FSWikiの書式に変換
#===============================================================================
sub convert_to_fswiki {
	my $self   = shift;
	my $source = shift;
	
	my @lines  = split(/\n/,$source);
	my $buf    = "";
	
	$self->{block_level} = 0;
	foreach my $line (@lines){
		if($line =~ /^{{.+}}$/){
			$buf .= $line."\n";
			next;
		} elsif($line =~ /^{{.+$/){
			$self->{block_level}++;
			$buf .= $line."\n";
			next;
		} elsif($self->{block_level} > 0){
			if($line eq "}}"){
				$self->{block_level}--;
			}
			$buf .= $line."\n";
			next;
		}
	
		$buf .= $self->convert_to_fswiki_paragraph($line);
	}
	return $buf;
}

#===============================================================================
# FSWikiの書式から変換
#===============================================================================
sub convert_from_fswiki {
	my $self   = shift;
	my $source = shift;
	
	my @lines  = split(/\n/,$source);
	my $buf    = "";
	
	$self->{block_level} = 0;
	foreach my $line (@lines){
		if($line =~ /^{{.+}}$/){
			$buf .= $line."\n";
			next;
		} elsif($line =~ /^{{.+$/){
			$self->{block_level}++;
			$buf .= $line."\n";
			next;
		} elsif($self->{block_level} > 0){
			if($line eq "}}"){
				$self->{block_level}--;
			}
			$buf .= $line."\n";
			next;
		}
	
		$buf .= $self->convert_from_fswiki_paragraph($line);
	}
	return $buf;
}

1;