Tripletail

 view release on metacpan or  search on metacpan

lib/Tripletail/Value.pm  view on Meta::CPAN


	1;
}

sub isExistentDateTime {
	# YYYY-MM-DD HH:mm:ss この日時が存在するなら1
	my $this = shift;
	my %option = @_;

	for my $key (keys %option) {
		if($key !~ /^format|date_delim|date_delim_optional|time_delim|time_delim_optional$/) {
			die __PACKAGE__."#isExistentDateTime: invalid argument. [$key] (引数名の $key はサポートされていません)\n";
		}
	}

	$option{format} = exists $option{format} ? $option{format} : $DEFAULT_DATETIME_FORMAT;
	if($option{format} !~ /^$YYYYMMDDHHMMSS|$YYYYMMDDHMS|$YMDHHMMSS|$YMDHMS$/o) {
		die __PACKAGE__."#isExistentDateTime: invalid argument. [$option{format}] (formatの $option{format} はサポートされていません)\n";
	}
	
	if((exists $option{date_delim} && exists $option{date_delim_optional}) || (exists $option{time_delim} && exists $option{time_delim_optional})) {
		die __PACKAGE__."#isExistentDateTime: invalid argument. (date_delim/date_delim_optional又はtime_delim/time_delim_optionalを同時に指定する事はできません)\n";
	}

	if($option{format} ne $YYYYMMDDHHMMSS && (exists $option{date_delim_optional} || exists $option{time_delim_optional})) {
		die __PACKAGE__."#isExistentDateTime: invalid argument. [$option{format}] ([YYYYMMDD HHMMSS]以外ではoptionalパラメータを指定できません)\n";
	}

	if(!defined($this->{value})) {
		return undef;
	}

	my @datetime = $this->_parseDateTime(_get_parse_param($this->{value}, \%option));
	if(!@datetime || !$this->_isExistentDateTime(@datetime)) {
		return undef;
	}

	1;
}

sub isGif {
	my $this = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	$this->{value} =~ /\AGIF8[79]a/ ? 1 : undef;
}

sub isJpeg {
	my $this = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	$this->{value} =~ /\A\xFF\xD8/ ? 1 : undef;
}

sub isPng {
	my $this = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	$this->{value} =~ /\A\x89PNG\x0D\x0A\x1A\x0A/ ? 1 : undef;
}

sub isHttpUrl {
	my $this = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	$this->{value} =~ m!\Ahttp://! ? 1 : undef;
}

sub isHttpsUrl {
	my $this = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	$this->{value} =~ m!\Ahttps://! ? 1 : undef;
}

sub isLen {
	my $this = shift;
	my $min = shift;
	my $max = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	my $len = $this->getLen;

	if(defined($min)) {
		$len >= $min or return undef;
	}
	if(defined($max)) {
		$len <= $max or return undef;
	}

	1;
}

sub isSjisLen {
	my $this = shift;
	my $min = shift;
	my $max = shift;

	if(!defined($this->{value})) {
		return undef;
	}

	my $len = $this->getSjisLen;

lib/Tripletail/Value.pm  view on Meta::CPAN

'HHMMSS'
'HMS'

time_delim
時刻区切り文字を指定する。区切り文字は複数指定可能。
省略時は:が指定される。

time_delim_optional
時刻区切り文字を指定する。指定した区切り文字と区切り文字なしを対象とする。
formatは'HHMMSS'のみ指定可能。
time_delimと同時に指定する事は出来ない。
省略可能。

=item isExistentDateTime

  $bool = $val->isExistentDateTime
  $bool = $val->isExistentDateTime(format => 'YMD HMS',date_delim => '-/',time_delim => ':')
  $bool = $val->isExistentDateTime(date_delim_optional => '-/',time_delim_optional => ':')
  
YYYY-MM-DD HH:MM:SSで設定された日付時刻が実在するものなら1。
そうでなければundefを返す。

引数を省略した場合はYYYY-MM-DD HH:MM:SSで設定された日付時刻のみチェックする。

fomrat
日付時刻フォーマットを指定する。省略可能。
省略時は'YYYYMMDD HHMMSS'が指定される。
'YYYYMMDD HHMMSS'
'YMD HHMMSS'
'YYYYMMDD HMS'
'YMD HMS'

date_delim
日付区切り文字を指定する。区切り文字は複数指定可能。
省略時は-が指定される。

time_delim
時刻区切り文字を指定する。区切り文字は複数指定可能。
省略時は:が指定される。

date_delim_optional
日付区切り文字を指定する。指定した区切り文字と区切り文字なしを対象とする。
formatは'YYYYMMDD HHMMSS'のみ指定可能。
date_delimと同時に指定する事は出来ない。
省略可能。

time_delim_optional
時刻区切り文字を指定する。指定した区切り文字と区切り文字なしを対象とする。
formatは'YYYYMMDD HHMMSS'のみ指定可能。
time_delimと同時に指定する事は出来ない。
省略可能。

=item isGif

  $bool = $val->isGif

=item isJpeg

  $bool = $val->isJpeg

=item isPng

  $bool = $val->isPng

それぞれの形式の画像なら1。
そうでなければundefを返す。

画像として厳密に正しい形式であるかどうかは確認しない。
( L<file(1)> 程度の判断のみ。)

=item isHttpUrl

  $bool = $val->isHttpUrl

"http://" で始まる文字列なら1。
そうでなければundefを返す。

=item isHttpsUrl

  $bool = $val->isHttpsUrl

"https://" で始まる文字列なら1。
そうでなければundefを返す。

=item isLen($min,$max)

  $bool = $val->isLen($min,$max)

バイト数の範囲が指定値以内かチェックする。$mix,$maxは省略可能。
範囲内であれば1、そうでなければundefを返す。

=item isSjisLen($min,$max)

  $bool = $val->isSjisLen($min,$max)

Shift-Jisでのバイト数の範囲が指定値以内かチェックする。$mix,$maxは省略可能。
範囲内であれば1、そうでなければundefを返す。

=item isCharLen($min,$max)

  $bool = $val->isCharLen($min,$max)

文字数の範囲が指定値以内かチェックする。$mix,$maxは省略可能。
範囲内であれば1、そうでなければundefを返す。

=item isPortable

  $bool = $val->isPortable

機種依存文字以外のみで構成されていれば1。
そうでなければ(機種依存文字を含んでいれば)undefを返す。

値が0文字やundefの場合は1を返す。

機種依存文字は、以下の文字を指す。

Shift_JISコード上でのNEC選定IBM拡張文字(89-92区)、IBM拡張文字(115-119区)、特殊文字エリア、JIS外字エリア、MAC外字及び縦組用、
JIS領域外の13区の記号。
Unicode上でのプライベート領域(U+E000~U+F8FF、U+F0000~U+10FFFF)。

携帯絵文字も機種依存文字に含まれる。(文字コード変換によってUnicode上でのプライベート領域にマップされる)

=item isPcPortable



( run in 1.448 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )