文字列またはシンボルでないとエラー
492871
def validates_to_be_string_or_symbol!(value)
      case
      when value.nil?, value == "", value == :""
        raise ArgumentError, "#{value} is empty string or symbol"
      when !value.is_a?(String) && !value.is_a?(Symbol)
        raise ArgumentError, "#{value} is not string or symbol"
      else
        true
      end
    end
444810
function (error, res) {
            task.uploadError = 'error';
            for (var i = task.uploadingAjax.length - 1; i >= 0; i--) {
                var ajax = task.uploadingAjax[i];
                ajax && ajax.abort();
            }
            task.onTaskProgress(true);
            defer.reject(res);
        }
1133285
function aError(errorObject){
  if(!terminal.symbolProgress) terminal.symbolProgress="? ";
  if(errorObject.aux){
    if(!terminal.colors.aux) terminal.colors.aux= chalk.white;
    console.log(terminal.colors.error(terminal.symbolProgress+" Error: "+errorObject.message)+ " " +terminal.colors.aux(errorObject.aux));
    console.log();  
  }
  else{
    console.log(terminal.colors.error(terminal.symbolProgress+" Error: "+errorObject.message));
    console.log();
  }    
}
646009
public static function DefaultRule () {
		return [
			//状態
			static::RULE_REQUIRE			=> [function ($value, $options, $meta = []) {return $value !== null;}, '必須入力項目 {:title}が入力されていません。'],
			static::RULE_NOT_EMPTY			=> [function ($value, $options, $meta = []) {return (is_array($value)) ? !empty($value) : preg_match("/[^\s]+/um", $value) === 1;}, '{:title}を入力してください。'],
			static::RULE_NOT_STRING_EMPTY	=> [function ($value, $options, $meta = []) {return (is_array($value)) ? !empty($value) : trim($value, "\r\n") !== '';}, '{:title}を入力してください。'],

			//逆状態
			static::RULE_NOT_REQUIRE		=> [function ($value, $options, $meta = []) {return $value === null;}, '必須除外項目 {:title}が入力されました。'],

			//スカラー値
			'bool'			=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_BOOLEAN);}, '{:title}には1, true, on, yesのいずれかを入力してください。'],
			'int'			=> [function ($value, $options, $meta = []) {return is_int(filter_var($value, \FILTER_VALIDATE_INT)) && 0 === preg_match("/\A[^0-9\-\+eEx]\z/", $value);}, '{:title}には整数を入力してください。'],
			'positive_int'	=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_INT) > -1;}, '{:title}には正の整数を入力してください。'],
			'negative_int'	=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_INT) < 1;}, '{:title}には負の整数を入力してください。'],
			'int_length'	=> [function ($value, $options, $meta = []) {return static::Length($value, ['length' => $options[0] ?? $options['length'] ?? null], $options);}, '{:title}は{:length:0}桁入力してください。'],
			'int_range'		=> [function ($value, $options, $meta = []) {return is_int(filter_var($value, \FILTER_VALIDATE_INT, $options));}, '{:title}には{:min_range:0}から{:max_range:1}までの間の半角数値を入力してください。'],
			'int_min_range'	=> [function ($value, $options, $meta = []) {return is_int(filter_var($value, \FILTER_VALIDATE_INT, ['min_range' => $options['min_range']]));}, '{:title}には{:min_range:0}以上の半角数値を入力してください。'],
			'int_max_range'	=> [function ($value, $options, $meta = []) {return is_int(filter_var($value, \FILTER_VALIDATE_INT, ['max_range' => $options['max_range']]));}, '{:title}には{:max_range:0}以下の半角数値を入力してください。'],

			'float'			=> [function ($value, $options, $meta = []) {return is_float(filter_var($value, \FILTER_VALIDATE_FLOAT)) && 0 === preg_match("/\A[^0-9\-\+eEx\.]\z/", $value);}, '{:title}には実数を入力してください。'],

			//bit演算
			'bit_any'		=> [function  ($value, $options, $meta = []) {$value = (int) $value;return $value !== 0 && $value === ($value & $options[0] ?? $options['bit'] ?? 0);}, '{:title}には有効なbit値を入力してください。'],
			'bit_or'		=> [function  ($value, $options, $meta = []) {$value = (int) $value;return $value !== 0 && $value === ($value & $options[0] ?? $options['bit'] ?? 0);}, '{:title}には有効なbit値を入力してください。'],

			//型
			'is_array'		=> [function ($value, $options, $meta = []) {return is_array($value);}, '{:title}には配列を設定してください。'],
			'is_bool'		=> [function ($value, $options, $meta = []) {return is_bool($value);}, '{:title}には真偽値を設定してください。'],
			'is_callable'	=> [function ($value, $options, $meta = []) {return is_callable($value);}, '{:title}にはコーラブルな値を設定してください。'],
			'is_double'		=> [function ($value, $options, $meta = []) {return is_double($value);}, '{:title}には浮動小数点を設定してください。'],
			'is_float'		=> [function ($value, $options, $meta = []) {return is_float($value);}, '{:title}には浮動小数点を設定してください。'],
			'is_int'		=> [function ($value, $options, $meta = []) {return is_int($value);}, '{:title}には整数を設定してください。'],
			'is_integer'	=> [function ($value, $options, $meta = []) {return is_integer($value);}, '{:title}には整数を設定してください。'],
			'is_iterable'	=> [function ($value, $options, $meta = []) {return is_iterable($value);}, '{:title}にはイテレータブルな値を設定してください。'],
			'is_long'		=> [function ($value, $options, $meta = []) {return is_long($value);}, '{:title}には整数を設定してください。'],
			'is_null'		=> [function ($value, $options, $meta = []) {return is_null($value);}, '{:title}にはNULLを設定してください。'],
			'is_numeric'	=> [function ($value, $options, $meta = []) {return is_numeric($value);}, '{:title}には数字または数値形式の文字列を設定してください。'],
			'is_object'		=> [function ($value, $options, $meta = []) {return is_object($value);}, '{:title}にはオブジェクトを設定してください。'],
			'is_real'		=> [function ($value, $options, $meta = []) {return is_real($value);}, '{:title}には浮動小数点を設定してください。'],
			'is_resource'	=> [function ($value, $options, $meta = []) {return is_resource($value);}, '{:title}にはリソース型の値を設定してください。'],
			'is_scalar'		=> [function ($value, $options, $meta = []) {return is_scalar($value);}, '{:title}にはスカラーな値を設定してください。'],
			'is_string'		=> [function ($value, $options, $meta = []) {return is_string($value);}, '{:title}には文字列を設定してください。'],

			//意味
			'num'			=> [function ($value, $options, $meta = []) {return ctype_digit($value);}, '{:title}には数値のみ入力してください。'],
			'numeric'		=> [function ($value, $options, $meta = []) {return ctype_digit($value);}, '{:title}には数値のみ入力してください。'],
			'digit'			=> [function ($value, $options, $meta = []) {return ctype_digit($value);}, '{:title}には数値のみ入力してください。'],
			'alpha'			=> [function ($value, $options, $meta = []) {return ctype_alpha($value);}, '{:title}にはアルファベットのみ入力してください。'],
			'alpha_num'		=> [function ($value, $options, $meta = []) {return ctype_alnum($value);}, '{:title}にはアルファベットと数字のみ入力してください。'],
			'blank'			=> ["/^\s/", '{:title}には空白以外を入力しないでください。'],
			'phone'			=> ["/^\d{2,4}\-\d{4}\-\d{4}\$/", '{:title}には電話番号を入力してください。例：000-0000-0000'],

			//PHP session id
			'session_id'	=> ["/\A[,0-9a-zA-Z\-]{1,128}\z/", '{:title}にはsession idとして有効な値を入力してください。'],

			//UUID
			'uuid_v4'		=> ["/\A[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-4[0-9a-fA-F]{3}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}\z/", '{:title}にはUUID v4を入力してください。'],

			//e-mail
			'email'			=> [function ($value, $options, $meta = []) {return is_string(filter_var($value, \FILTER_VALIDATE_EMAIL));}, '{:title}にはemailアドレスを入力してください。例：user@example.com'],
			'email_char'	=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_SANITIZE_EMAIL) === $value;}, '{:title}にはemailアドレスで使用できる文字を入力してください。'],
			'email_strict'	=> [function ($value, $options, $meta = []) {$separated_value = explode('@', $value);return isset($separated_value[1]) && filter_var($value, \FILTER_SANITIZE_EMAIL) === $value && checkdnsrr($separated_value[1], 'MX') && count(dns_get_record($separated_value[1], DNS_MX)) !== 0;}, '{:title}には有効なemailアドレスを入力してください。'],
			'email_include_localhost'	=> [function ($value, $options, $meta = []) {if (is_string(filter_var($value, \FILTER_VALIDATE_EMAIL))) {return true;};$separated_value = explode('@', $value);if (count($separated_value) !== 2 || $separated_value[1] !== 'localhost') {return false;};return is_string(filter_var($separated_value[0].'@example.com', \FILTER_VALIDATE_EMAIL));}, '{:title}には有効なemailアドレスを入力してください。'],
			'email_jp_limited'	=> [function ($value, $options, $meta = []) {return static::EmailJpLimited($value, $options, $meta);}, '{:title}にはemailアドレスを入力してください。例：user@example.com'],

			//IP addr
			'ip_addr'				=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_IP) === $value;}, '{:title}にはIPアドレスを入力してください。'],
			'ip_v4_addr'			=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4) === $value;}, '{:title}にはIP V4アドレスを入力してください。'],
			'ip_v6_addr'			=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6) === $value;}, '{:title}にはIP V6アドレスを入力してください。'],
			'no_private_ip_addr'	=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_NO_PRIV_RANGE) === $value;}, '{:title}にはプライベートIPアドレス以外のIPアドレスを入力してください。'],
			'no_res_ip_addr'		=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_NO_RES_RANGE) === $value;}, '{:title}には予約済みIPアドレス以外のIPアドレスを入力してください。'],

			//ホスト
			'hostname'				=> [function ($value, $options, $meta = []) {return static::Hostname($value, $options, $meta);}, '{:title}には有効なホスト名を入力してください。'],
			'host'					=> [function ($value, $options, $meta = []) {return static::Hostname($value, $options, $meta) || filter_var($value, \FILTER_VALIDATE_IP) === $value;}, '{:title}には有効なホスト名を入力してください。'],

			//ポート
			'port'							=> [function ($value, $options, $meta = []) {$length = strlen($value);return $length === strspn($value, '1234567890') && -0 < $value && $value < 65536;}, '{:title}には有効なポートを入力してください。'],
			'well_known_port'				=> [function ($value, $options, $meta = []) {$length = strlen($value);return $length === strspn($value, '1234567890') && -0 < $value && $value < 1024;}, '{:title}には有効なポートを入力してください。'],
			'registered_port'				=> [function ($value, $options, $meta = []) {$length = strlen($value);return $length === strspn($value, '1234567890') && 1023 < $value && $value < 49152;}, '{:title}には有効なポートを入力してください。'],
			'dynamic_and_or_private_ports'	=> [function ($value, $options, $meta = []) {$length = strlen($value);return $length === strspn($value, '1234567890') && 49151 < $value && $value < 65536;}, '{:title}には有効なポートを入力してください。'],

			//DNS
			'exists_host'		=> [function ($value, $options, $meta = []) {return checkdnsrr($value, $options['type']);}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_mx'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'MX');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_ns'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'NS');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_soa'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'SOA');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_ptr'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'PTR');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_cname'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'CNAME');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_aaaa'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'AAAA');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_a6'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'A6');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_srv'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'SRV');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_naptr'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'NAPTR');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_naptr'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'NAPTR');}, '{:title}には存在するホスト名を入力してください。'],
			'exists_host_any'	=> [function ($value, $options, $meta = []) {return checkdnsrr($value, 'ANY');}, '{:title}には存在するホスト名を入力してください。'],

			'exists_dns_record_mx'	=> [function ($value, $options, $meta = []) {return count(dns_get_record($value, DNS_MX)) !== 0;}, '{:title}には存在するホスト名を入力してください。'],

			//範囲
			'range'			=> [function ($value, $options, $meta = []) {return static::Range($value, $options, $options['format'] ?? null, $options);}, '{:title}には{:min_range:0}から{:max_range:1}までの間の値を入力してください。'],
			'min_range'		=> [function ($value, $options, $meta = []) {return static::Range($value, ['min_range' => $options[0] ?? $options['min_range'] ?? null], $options['format'] ?? null, $options);}, '{:title}には{:min_range:0}以上の値を入力してください。'],
			'max_range'		=> [function ($value, $options, $meta = []) {return static::Range($value, ['max_range' => $options[1] ?? $options['max_range'] ?? $options[0] ?? null], $options['format'] ?? null, $options);}, '{:title}には{:max_range:0}以下の値を入力してください。'],

			//日付
			'date'			=> [function ($value, $options, $meta = []) {return static::DateTime($value, $options['format'] ?? static::YMD);}, '{:title}には{:format:0}形式の日付を入力してください。'],
			'time'			=> [function ($value, $options, $meta = []) {return static::DateTime($value, $options['format'] ?? static::HIS);}, '{:title}には{:format:0}形式の時間を入力してください。'],
			'datetime'		=> [function ($value, $options, $meta = []) {return static::DateTime($value, $options['format'] ?? static::YMD_HIS);}, '{:title}には{:format:0}形式の日付と時間を入力してください。'],

			//文字列長さ
			'length'			=> [function ($value, $options, $meta = []) {return static::Length($value, ['length' => $options[0] ?? $options['length'] ?? null], $options);}, '{:title}は{:length:0}文字入力してください。'],
			'between_length'	=> [function ($value, $options, $meta = []) {return static::Length($value, $options, $options);}, '{:title}は{:min_length:0}文字以上{:max_length:1}文字以内で入力してください。'],
			'max_length'		=> [function ($value, $options, $meta = []) {return static::Length($value, ['max_length' => $options[0] ?? $options['max_length']], $options);}, '{:title}は{:max_length:0}文字以内で入力してください。'],
			'min_length'		=> [function ($value, $options, $meta = []) {return static::Length($value, ['min_length' => $options[0] ?? $options['min_length']], $options);}, '{:title}は{:min_length:0}文字以上入力してください。'],

			//カラーコード
			'color_code'	=> [function ($value, $options, $meta = []) {return \ickx\fw2\constants\web\ColorCode::IsHexColorCode($value);}, '{:title}には16進数のカラーコードを入力してください。'],

			//配列
			'in'					=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_IN,					$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}に未定義の値が入力されています。'],
			'not_in'				=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_NOT_IN,				$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}の値は利用できません。'],
			'not_overlap'			=> [function ($value, $options, $meta = []) {$tmp = [];foreach ($value as $element) {if (in_array($element, $tmp, true)) {return false;}$tmp[] = $element;}return true;}, '{:title}に重複した値があります。'],
			'key'					=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_KEY,					$options[0] ?? $options['key_set'] ?? null, $options);}, '{:title}に未定義の値が入力されています。'],
			'key_exists'			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_KEY_EXISTS,			$options[0] ?? $options['key_set'] ?? null, $options);}, '{:title}に未定義の値が入力されています。'],
			'any'					=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_ANY,					$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}に必須項目が含まれていません。'],
			'any_key_exists'		=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_ANY_KEY_EXISTS	,	$options[0] ?? $options['key_set'] ?? null, $options);}, '{:title}には{:key_set:0}のいずれかを入力してください。'],
			'not_any_key_exists'	=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_NOT_ANY_KEY_EXISTS,	$options[0] ?? $options['key_set'] ?? null, $options);}, '{:title}には{:key_set:0}のいずれかを入力してください。'],
			//'min'
			//'max'

			//比較
			'<'				=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_LT,		$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}には{:operand:0}未満の値を入力してください。'],
			'<='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_LT_EQ,	$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}には{:operand:0}以下の値を入力してください。'],
			'>'				=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_GT,		$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}には{:operand:0}より上の値を入力してください。'],
			'>='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_GT_EQ,	$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}には{:operand:0}以上の値を入力してください。'],
			'=='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_EQ,		$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}が{:operand:0}と異なります。'],
			'!='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_NOT_EQ,	$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}が{:operand:0}と同じです。'],
			'==='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_S_EQ,		$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}が{:operand:0}と異なります。'],
			'!=='			=> [function ($value, $options, $meta = []) {return static::Comparison($value, static::OP_S_NOT_EQ,	$options[0] ?? $options['operand'] ?? null, $options);}, '{:title}が{:operand:0}と同じです。'],

			//ファイルシステム
			'file_exists'	=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return file_exists($value);}, 'パス：{:value}は存在しません。'],
			'is_dir'		=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return is_dir($value);}, 'パス：{:value}はディレクトリではありません。'],
			'is_file'		=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return is_file($value);}, 'パス：{:value}はファイルではありません。'],
			'readable'		=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return is_readable($value);}, 'パス：{:value}は読み込めません。'],
			'writable'		=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return is_writable($value);}, 'パス：{:value}は書き込めません。'],
			'executable'	=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return is_executable($value);}, 'パス：{:value}は実行できません。'],
//			'file_size'		=> [function ($value, $options, $meta = []) {clearstatcache(true, $value);return filesize($value);}, 'パス：{:value}は存在しません。'],

			'parent_is_dir'		=> [function ($value, $options, $meta = []) {$value = dirname($value);clearstatcache(true, $value);return is_dir($value);}, 'パス：{:value}の親はディレクトリではありません。'],
			'parent_exists'		=> [function ($value, $options, $meta = []) {$value = dirname($value);clearstatcache(true, $value);return file_exists($value);}, 'パス：{:value}の親ディレクトリがありません。'],
			'parent_executable'	=> [function ($value, $options, $meta = []) {$value = dirname($value);clearstatcache(true, $value);return strtolower(substr(\PHP_OS, 0, 3)) === 'win' ? is_readable($value) : is_executable($value);}, 'パス：{:value}の親ディレクトリを開けません。'],
			'parent_readable'	=> [function ($value, $options, $meta = []) {$value = dirname($value);clearstatcache(true, $value);return is_readable($value);}, 'パス：{:value}の親ディレクトリを読み込めません。'],
			'parent_writable'	=> [function ($value, $options, $meta = []) {$value = dirname($value);clearstatcache(true, $value);return is_writable($value);}, 'パス：{:value}の親ディレクトリに書き込めません。'],

			//ファイルアップロード
			'upload_check_status'	=> [function ($value, $options, $meta = []) {return static::CheckUploadStatus($value, $options, $meta);}, '{:title}{:adjust}でエラーが発生しました。error code:{:error_code} {:validator_message}'],
			'upload_range_filesize'	=> [function ($value, $options, $meta = []) {return static::Range($value['size'], $options, $options['format'] ?? null, $options);}, '{:title}はファイルサイズを{:min_range:0}バイトから{:max_range:1}バイトまでの間にしてください。'],
			'upload_min_filesize'	=> [function ($value, $options, $meta = []) {return static::Range($value['size'], ['min_range' => $options[0] ?? $options['min_range'] ?? null], $options['format'] ?? null, $options);}, '{:title}はファイルサイズが{:min_range:0}バイト以上必要です。'],
			'upload_max_filesize'	=> [function ($value, $options, $meta = []) {return static::Range($value['size'], ['max_range' => $options[1] ?? $options['max_range'] ?? $options[0] ?? null], $options['format'] ?? null, $options);}, '{:title}はファイルサイズが{:max_range:0}バイト以下である必要があります。'],
			'upload_mimetype'		=> [function ($value, $options, $meta = []) {return $value['type'] > $options[0] ?? $options['max'] ?? null;} ,'{:title}は{:max:0}バイト以上にしてください。'],
			'upload_ext'			=> [function ($value, $options, $meta = []) {return $value['type'] > $options[0] ?? $options['max'] ?? null;} ,'{:title}は{:max:0}バイト以上にしてください。'],
			'upload_name'			=> [function ($value, $options, $meta = []) {return $value['type'] > $options[0] ?? $options['max'] ?? null;} ,'{:title}は{:max:0}バイト以上にしてください。'],

			//文字セット
			'charset_email'			=> [function ($value, $options, $meta = []) {$filterd_length = strlen(filter_var($value, \FILTER_SANITIZE_EMAIL));return $filterd_length !== 0 && $filterd_length === strlen($value);}, '{:title}にはemailに利用できる文字を入力してください。'],
			'charset_full_kana'		=> [function ($value, $options, $meta = []) {return 1 === preg_match(sprintf("/^[ァ-ヶぁ-ん%s]+$/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value);}, '{:title}に利用できない文字「{:reject_character:0}」が含まれています。', ['reject_character' => function ($value, $options, $meta = []) {preg_match_all(sprintf("/([^ァ-ヶぁ-ん%s])/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value, $reject_character);return implode(', ', array_unique($reject_character[1]));}],],
			'charset_full_katakana'	=> [function ($value, $options, $meta = []) {return 1 === preg_match(sprintf("/^[ァ-ヶ%s]+$/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value);}, '{:title}に利用できない文字「{:reject_character:0}」が含まれています。', ['reject_character' => function ($value, $options, $meta = []) {preg_match_all(sprintf("/([^ァ-ヶ%s])/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value, $reject_character);return implode(', ', array_unique($reject_character[1]));}],],
			'charset_full_hiragana'	=> [function ($value, $options, $meta = []) {return 1 === preg_match(sprintf("/^[ぁ-ん%s]+$/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value);}, '{:title}に利用できない文字「{:reject_character:0}」が含まれています。', ['reject_character' => function ($value, $options, $meta = []) {preg_match_all(sprintf("/([^ぁ-ん%s])/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value, $reject_character);return implode(', ', array_unique($reject_character[1]));}],],
			'charset_full_alpha'	=> [function ($value, $options, $meta = []) {return 1 === preg_match(sprintf("/^[ａ-ｚＡ-Ｚ%s]+$/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value);}, '{:title}に利用できない文字「{:reject_character:0}」が含まれています。', ['reject_character' => function ($value, $options, $meta = []) {preg_match_all(sprintf("/([^ａ-ｚＡ-Ｚ%s])/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value, $reject_character);return implode(', ', array_unique($reject_character[1]));}],],
			'charset_full_num'		=> [function ($value, $options, $meta = []) {return 1 === preg_match(sprintf("/^[０-９%s]+$/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value);}, '{:title}に利用できない文字「{:reject_character:0}」が含まれています。', ['reject_character' => function ($value, $options, $meta = []) {preg_match_all(sprintf("/([^０-９%s])/u", (isset($options['append_pattern']) ? $options['append_pattern'] : '')), $value, $reject_character);return implode(', ', array_unique($reject_character[1]));}],],

			//エンコーディング
			'utf8'			=> [function ($value, $options, $meta = []) {return static::Encoding($value, ['encoding' => 'UTF-8'] + $options);}, '{:title}がUTF-8ではなく{:encoding}になっています。'],
			'sjis-win'		=> [function ($value, $options, $meta = []) {return static::Encoding($value, ['encoding' => 'SJIS-win'] + $options);}, '{:title}がSJIS-winではなく{:encoding}になっています。'],
			'eucjp-win'		=> [function ($value, $options, $meta = []) {return static::Encoding($value, ['encoding' => 'eucJP-win'] + $options);}, '{:title}がeucJP-winではなく{:encoding}になっています。'],

			//PREG 互換正規表現
			'preg_regex'	=> [function ($value, $options, $meta = []) {return filter_var($value, \FILTER_VALIDATE_REGEXP) === $value;}, '{:title}にはPREG互換の正規表現を入力してください。'],

			//正規表現
			'regex'			=> [function ($value, $options, $meta = []) {return preg_match($options[0] ?? $options['regex'] ?? null, $value) === 1;}, '{:title}がパターンに一致しません。'],

			//クレジットカード
			'luhn'			=> [function ($value, $options, $meta = []) {for ($i = 0, $digits = strrev($digits), $alt = true, $total = 0; ($str = substr($digits, $i, 1)) !== false;$total += $alt ? $str : ($str < 5 ? $str * 2 : 1 + ($str - 5) * 2), $alt = !$alt, $i++); return $total % 10 === 0;}, '{:title}のチェックディジットが正しくありません。'],
			'credit_card'	=> [function ($value, $options, $meta = []) {return static::CreditCard($value, $options, $meta);}, '{:title}のクレジットカード番号が正しくありません。'],

			//パディング
			'padding'		=> [function ($value, $options, $meta = []) {return $value === str_pad($value, $options['length'], $options['char'], $options['vector']);}, '{:title}の値が正しくありません。'],
			'zero_padding'	=> [function ($value, $options, $meta = []) {return $value === str_pad($value, $options['length'], '0', \STR_PAD_LEFT);}, '{:title}の値が正しくありません。'],

			//HTML
			'html'				=> [function ($value, $options, $meta = []) {return static::Html($value, $options[0] ?? $options['value'] ?? null, $options);}, '{:title}に利用できない{:validator_message}が含まれています。'],
			'html_element'		=> [function ($value, $options, $meta = []) {return static::HtmlElement($value, $options[0] ?? $options['value'] ?? null, $options);}, '{:title}に利用できないHTML要素 {:validator_message}が含まれています。'],
			'html_tag'			=> [function ($value, $options, $meta = []) {return static::HtmlElement($value, $options[0] ?? $options['value'] ?? null, $options);}, '{:title}に利用できないHTMLタグ {:validator_message}が含まれています。'],
			'html_attribute'	=> [function ($value, $options, $meta = []) {return static::HtmlAttribute($value, $options[0] ?? $options['value'] ?? null, $options);}, '{:title}に利用できないHTML属性 {:validator_message}が含まれています。'],
			'html_attr'			=> [function ($value, $options, $meta = []) {return static::HtmlAttribute($value, $options[0] ?? $options['value'] ?? null, $options);}, '{:title}に利用できないHTML属性 {:validator_message}が含まれています。'],

			//コールバック
			'callback'		=> [function ($value, $options, $meta = []) {return static::Callback($value, $options, $meta);}, ''],
		];
	}
388670
public static function ReflectFromIniFile ($ini_file_path, $extension = null, $options = []) {
		$cache_dir		= isset($options['cache']) ? $options['cache'] : null;

		if ($cache_dir) {
			$ini = ArrayCache::GetCache($ini_file_path, $cache_dir, $options);
			if ($ini) {
				static::Set($ini);
				return $ini;
			}
		}

		//ファイル生存系確認：本当はvalidationでやりたい
		FileSystem::IsReadableFile($ini_file_path);

		$allow_parameter_list = array_keys((($extension === null) ? static::GetCurrent() : static::GetCurrent($extension)));
		switch ($extension) {
			case static::SESSION:
				$allow_parameter_list[] = static::URL_REWRITER_TAGS;
				break;
		}

		$ini = IniFile::GetConfig($ini_file_path, $allow_parameter_list, $options);
		if ($cache_dir) {
			ArrayCache::SetCache($ini_file_path, $cache_dir, $ini, $options);
		}

		return static::Set($ini);
	}
834205
function sendError(msg, file, line, col, err) {
        var errString = 'JSON not found';
        if (window.JSON) {
            errString = JSON.stringify(err);
        }

        if (typeof(msg) === 'object') {
            file      = msg.filename;
            line      = msg.lineno;
            col       = msg.colno;
            errString = msg.error.stack;
            msg       = msg.message;
        }

        new Image().src = pathServerAPI + 'jserrors?msg=' + encodeURIComponent(msg) + '&file=' + encodeURIComponent(file) + '&line=' + encodeURIComponent(line) + '&col=' + encodeURIComponent(col) + '&err=' + encodeURIComponent(errString);
    }
825797
function curveRegisterInfoUpdate(){
    //レジスタ値の取得 複数取得は返り値がObject
    KMB.cmdReadRegister([KMMotorOneWebBLE.cmdReadRegister_COMMAND.curveType,KMMotorOneWebBLE.cmdReadRegister_COMMAND.acc,KMMotorOneWebBLE.cmdReadRegister_COMMAND.dec]).then(function(val){
        let str="";
        Object.keys(val).forEach(function(k){str+=k+":"+val[k]+" "});
        $("#curveRegisterInfo").text(str);
    }).catch(function(msg){
        console.log(msg);
    });
}
1288641
def error(message)
      puts message.prepend('✗ ').colorize(:light_red)
    end
682720
function handleResponseError(error) {
    console.error('handleResponseError', error)
    let reason
    const status = error.response.status

    if (status === 404) {
        reason = wrap('接口不存在')
    } else {
        reason = wrap(defaultErrorMessage)
    }

    return reason
}
258342
function(){
		var lines = this.fstr.split("\n");
		var firstline = lines.shift();
		delete this.fstr;
		
		/* ヘッダからパズルの種類・ファイルの種類を判定する */
		if(firstline.match(/^pzprv3/)){
			this.type = FILE_PZPR;
			if(firstline.match(/pzprv3\.(\d+)/)){ this.filever = +RegExp.$1;}
			this.pid = lines.shift();
			this.qdata = lines.join("\n");
		}
		else if(firstline.match(/^\<\?xml/)){ // jshint ignore:line
			this.type = FILE_PBOX_XML;
			lines.unshift(firstline);
			this.qdata = lines.join("\n");
			if(!!DOMParser){
				this.body = (new DOMParser()).parseFromString(this.qdata, 'text/xml');
				this.pid = this.body.querySelector('puzzle').getAttribute('type');
			}
			else{ this.pid = '';}
		}
		else if(firstline.match(/^\d+$/)){
			this.type = FILE_PBOX;
			lines.unshift(firstline);
			this.qdata = lines.join("\n");
		}
		else{
			this.pid = '';
		}
		this.pid = pzpr.variety.toPID(this.pid);
		
		return (!!this.pid);
	}
191549
function(e) {
    var error_free, form, isFileUpload, l, len, len1, len2, m, map, n, o, opts, ref1, ref2, ref3, val;
    if (e !== null) {
      e.preventDefault();
    }
    form = $('.sandbox', $(this.el));
    error_free = true;
    form.find('input.required').each(function() {
      $(this).removeClass('error');
      if (jQuery.trim($(this).val()) === '') {
        $(this).addClass('error');
        $(this).wiggle({
          callback: (function(_this) {
            return function() {
              $(_this).focus();
            };
          })(this)
        });
        error_free = false;
      }
    });
    form.find('textarea.required').each(function() {
      $(this).removeClass('error');
      if (jQuery.trim($(this).val()) === '') {
        $(this).addClass('error');
        $(this).wiggle({
          callback: (function(_this) {
            return function() {
              return $(_this).focus();
            };
          })(this)
        });
        error_free = false;
      }
    });
    if (error_free) {
      map = {};
      opts = {
        parent: this
      };
      isFileUpload = false;
      ref1 = form.find('input');
      for (l = 0, len = ref1.length; l < len; l++) {
        o = ref1[l];
        if ((o.value !== null) && jQuery.trim(o.value).length > 0) {
          map[o.name] = o.value;
        }
        if (o.type === 'file') {
          map[o.name] = o.files[0];
          isFileUpload = true;
        }
      }
      ref2 = form.find('textarea');
      for (m = 0, len1 = ref2.length; m < len1; m++) {
        o = ref2[m];
        if ((o.value !== null) && jQuery.trim(o.value).length > 0) {
          map[o.name] = o.value;
        }
      }
      ref3 = form.find('select');
      for (n = 0, len2 = ref3.length; n < len2; n++) {
        o = ref3[n];
        val = this.getSelectedValue(o);
        if ((val !== null) && jQuery.trim(val).length > 0) {
          map[o.name] = val;
        }
      }
      opts.responseContentType = $('div select[name=responseContentType]', $(this.el)).val();
      opts.requestContentType = $('div select[name=parameterContentType]', $(this.el)).val();
      $('.response_throbber', $(this.el)).show();
      if (isFileUpload) {
        return this.handleFileUpload(map, form);
      } else {
        return this.model['do'](map, opts, this.showCompleteStatus, this.showErrorStatus, this);
      }
    }
  }
24115
function errorDialog(text, err) {
    var msg = err && err.message ?
      err.message.split(/\r?\n/)[0] :
      typeof err === "string" ?
        err.split(/\r?\n/)[0] :
        JSON.stringify(err);
    return window.alert(text+ ':\n' + msg);
  }
1205901
public FessMessages addErrorsFailedToUploadKuromojiFile(String property) {
        assertPropertyNotNull(property);
        add(property, new UserMessage(ERRORS_failed_to_upload_kuromoji_file));
        return this;
    }
101312
function(){
		var pzl = this, col = pzl.cols, row = pzl.rows, out = [];

		/* URLにつけるオプション */
		if(pzl.type!==URL_KANPEN && pzl.type!==URL_HEYAAPP){
			if(pzl.type===URL_KANPENP || !!pzl.pflag){ out.push(pzl.pflag);}
		}

		/* サイズを表す文字列 */
		if(pzl.type===URL_KANPEN){
			if(pzl.pid==="kakuro"){
				out.push(row + 1);
				out.push(col + 1);
			}
			else if(pzl.pid==="sudoku"){
				out.push(col);
			}
			else{
				out.push(row);
				out.push(col);
			}
		}
		else if(pzl.type===URL_HEYAAPP){
			out.push([col, row].join("x"));
		}
		else{
			out.push(col);
			out.push(row);
		}

		/* サイズ以降のデータを設定 */
		out.push(pzl.body);

		/* 末尾が0-9,a-z,A-Z以外の時にt.coで情報が欠落しないよう/を追加 */
		var body = out.join("/");
		if(!body.charAt(body.length-1).match(/[a-zA-Z0-9]/)){ body+='/';}
		return body;
	}
458733
function isErrorDirectory(command) {
  const intl = new Intl(message);
  // 如果当前目录下不存在fie.config.js 则提示
  if (['start', 'build'].indexOf(command) !== -1 && !fieConfig.exist()) {
    log.debug('error directory');
    log.error(intl.get('configFileNotFound', { file: fieConfig.getConfigName() }));
    return false;
  }
  return true;
}
517257
function(_bid,_text){
        try{
            !!_text&&_text.search('//#DWR')>=0
            ? (new Function(_text))()
            : __onErrorAll(_bid,{
                  code:_g._$CODE_ERRSERV,
                  message:'DWR请求返回数据不合法!'
              });
        }catch(ex){
            __onErrorAll(_bid,{
                code:_g._$CODE_ERREVAL,
                message:'DWR返回脚本执行异常：'+(ex.message||ex)
            });
        }finally{
            __doDestroyBatch(_bid);
        }
    }
1167047
function makeDirs(plan, dest, savedir, callback) {

  // フォルダパスのリストを作成
  let all = plan.map(file => {
    let dirname = path.dirname(path.join(savedir, dest, file)); //ファイル名を除外
    return pathcrumb(dirname);
  });

  // 配列をフラットにして重複分を排除
  let uniq = _.uniq(_.flatten(all));

  // フォルダを作成
  let shell = path.join(__dirname, '../sh/makedirs.sh');
  return exec('chmod +x ' + shell, (error, stdout, stderr) => {
    return execFile(shell, uniq, (error, stdout, stderr) => {
      if (error !== null) throw ('[Error: makeDirs makedis.sh:] ' + error);
    }).on('close', callback);
  });
}