package ARFCOM;

sub
strip_html {
	$_ = decode_entities(shift);

	$_ =~ s/\<[^\>]+\>//g;
	return $_;
}

sub
extract_number {
	$_ = strip_html(shift);

	if (/([[:digit:]]+)/) {
		$i = int($1);
		if ($i > 0 && $i < 1001) {
			return int($1);
		}
	}
	return undef;
}

1;

package ARFCOM::Post;

use POSIX qw(strftime);
use Date::Parse;

sub
detect_comments {
	$_ = shift;

	$_ =~ s/<BR>//g;	# hard returns
	$_ =~ s/\s+$//g;	# trailing whitespace
	$_ =~ s/^\s+//g;	# leading whitespace
	$_ =~ s/<\/*b>//g;      # Bold tag
	$_ =~ s/<\/*font.*>//g; # Font tag
	$_ =~ s/\s*<img src=\/images\/smilies\/.*>\s*//g;       # smilies
	$_ =~ s/:\)//g;	 # emoticons

	return grep(/[^[:digit:]]+/, $_) ? 1 : 0;
}

sub
extract_poster {
	$_ = shift;
	if (/<font class=\"forumPostAuthor2\">(.+)<\/font>/) {
		return $1;
	}
	return undef;
}

sub
extract_member {
	$_ = shift;
	if (/<font class=\"forumPostTitle\">(.+)<\/font>/) {
		return $1;
	}
	return undef;
}

sub
extract_avatar {
	$_ = shift;
	if (/<img src=\"(http:\/\/media\.ar15\.com\/media\/images\/xAvatar\/[^\"]+)/) {
		return $1;
	}
	return "http://www.ar15.com/images/default.jpg";
}

sub
extract_message {
	$_ = shift;
	if (/<font class=\"forumText\">(.+)<\/font>/s) {
		return $1;
	}
	return undef;
}

sub
extract_date {
	$_ = shift;
	return 0 if !defined($_);
	if (/([[:digit:]]+\/[[:digit:]]+\/[[:digit:]]+ [[:digit:]]+:[[:digit:]]+:[[:digit:]]+ (AM|PM))/) {
		return str2time($1);
	}
	if (/Today ([[:digit:]]+:[[:digit:]]+:[[:digit:]]+ (AM|PM))/) {
		$today = strftime "%D", localtime;
		return str2time($today . " " . $1);
	}
	if (/Yesterday ([[:digit:]]+:[[:digit:]]+:[[:digit:]]+ (AM|PM))/) {
		$yesterday = strftime "%D", localtime(time - 86400);
		return str2time($yesterday . " " . $1);
	}
	return 0;
}

sub
extract_member_id {
	$_ = shift;
	return undef if !defined($_);
	if (/id=([[:digit:]]+)/) {
		return int($1);
	}

	return undef;
}

1;

package ARFCOM::Forum;

sub
parse_forumLink
{
	$_ = shift;
	if (/<a class=\"forumLinkLight\" href=\"(.+)\">(.+)<\/a>/) {
		$link = $1;
		$title = $2;
		$title =~ s/<\/?b>//g;
		return ($link, $title);
	}
	return undef;
}

sub
parse_forumText
{
	$_ = shift;
	if (/<font class=\"forumText(|Small)\">(.+)<\/font>/) {
		$text = $2;
		$text =~ s/<\/?b>//g;
		return $text;
	}
	return undef;
}

1;
