/* 入力された文字列を、URLおよびファイルデータとして解析し返します /* ただし最初から解析済みのデータが渡された場合は、それをそのまま返します
515843
function(data, variety){
		if(data instanceof URLData || data instanceof FileData){ return data;}
		
		return this.parseFile(data, variety) || this.parseURL(data);
	}
920779
private function init() {

		$current_dir = realpath('.');

		$output = "";
		$result = array('status' => true,
						'message' => '');

		$server_list = $this->options->preview_server;
		array_push($server_list, json_decode(json_encode(array(
			'name'=>'master',
			'path'=>$this->options->git->repository,
		))));

		set_time_limit(0);

		foreach ( $server_list as $preview_server ) {
			chdir($current_dir);

			try {

				if ( strlen($preview_server->path) ) {

					// デプロイ先のディレクトリが無い場合は作成
					if ( !file_exists( $preview_server->path) ) {
						// 存在しない場合

						// ディレクトリ作成
						if ( !mkdir( $preview_server->path, 0777) ) {
							// ディレクトリが作成できない場合

							// エラー処理
							throw new \Exception('Creation of preview server directory failed.');
						}
					}

					// 「.git」フォルダが存在すれば初期化済みと判定
					if ( !file_exists( $preview_server->path . "/.git") ) {
						// 存在しない場合

						// ディレクトリ移動
						if ( chdir( $preview_server->path ) ) {

							// git セットアップ
							exec('git init', $output);

							// git urlのセット
							$url = $this->options->git->protocol . "://";
							if( strlen(@$this->options->git->username) ){
								// ID/PW が設定されていない場合は、認証情報なしでアクセスする。
								$url .= urlencode($this->options->git->username) . ":" . urlencode($this->options->git->password) . "@";
							}
							$url .= $this->options->git->url;
							exec('git remote add origin ' . escapeshellarg($url), $output);

							// git fetch
							exec( 'git fetch origin', $output);

							// git pull
							exec( 'git pull origin master', $output);

							chdir($current_dir);
						} else {
							// プレビューサーバのディレクトリが存在しない場合

							// エラー処理
							throw new \Exception('Preview server directory not found.');
						}
					}
				}

			} catch (\Exception $e) {
				set_time_limit(30);

				$result['status'] = false;
				$result['message'] = $e->getMessage();

				chdir($current_dir);
				return $result;
			}

		}
		set_time_limit(30);

		$result['status'] = true;

		return $result;
	}
755617
function resolveRequest(context, request, callback) {
    try {
        let { filename, query } = parsePath(request),
            path = resolvePath(context)(filename);

        // 执行回调
        callback(null, path ? path + query : path);
    } catch (err) {
        callback(err);
    }
}
289025
function task () {
  run = true;
  var item = messages.shift();
  if (!item) {
    run = false;

  // 書き込み
  } else if ('message' in item) {
    if (output_) {
      write(item);
    } else {
      task();
    }

  // パスの変更
  } else if (item.path) {
    p_ = path.resolve(p_, item.path);
    task();

  // 出力のコントロール
  } else if ('output' in item) {
    output_ = item.output;
    task();

  } else {
    task();
  }
}
1141440
function _normalizeUploadParams(file, options, callback) {
    if (!file) {
        callback(new Error('The "file" parameter is empty.'))
        return
    }

    if (!(is.string(file) || is.buffer(file) || is.readableStream(file))) {
        callback(new Error('The "file" parameter is invalid, it must be a String, Buffer, or ReadableStream'))
        return
    }

    if (is.string(file)) {
        fs.stat(file, function(err, stats) {
            if (err || !stats) {
                callback(new Error('File [' + file + '] is not exists!'))
                return
            }

            options.size = stats.size
            if (!options.ext) {
                options.ext = path.extname(file)
                if (options.ext) {
                    // 去掉.
                    options.ext = options.ext.substring(1)
                }
            }
            callback(null)
        })
        return
    }

    if (is.readableStream(file) && !options.size) {
        callback(new Error('when the "file" parameter\'s is ReadableStream, options.size must specified'))
        return
    }

    if (is.buffer(file)) {
        options.size = file.length
    }

    callback(null)
}
1096358
function inlineFileRegHandle(regFiles, buildInfo, options, reqModuleJS, file) {        
        var content = '';
        if(regFiles && regFiles.length) {
            var destMP = {'.js':options.jsDestPath,'.css':options.cssDestPath};
            for(var j=0;j<regFiles.length;j++) {
                var jp = regFiles[j].trim().replace(/(^['"]*)|(['"]*$)/g, '');               
                if(!jp) continue;
                //去除?之后面路径
                if(jp.indexOf('?') > -1) jp = jp.substr(0, jp.indexOf('?'));

                if(jp[0] == '/') {
                    //相对于当前根路径
                    var filepath = path.join(options.destPath, jp);
                }
                //相对于js构建目标目录
                else if(jp[0] != '.') { 
                    var ext = path.extname(jp).toLowerCase();
                    var dest = destMP[ext] || options.destPath;
                    var filepath = path.join(dest, jp);
                    
                    //如果不存在，则相对于当前html发布路径
                    if(!fs.existsSync(filepath)) {                        
                        filepath = path.join(options.dest, jp); 
                    }//如果不存在，则相对于当前根发布路径
                    if(!fs.existsSync(filepath) && options.destPath) {                        
                        filepath = path.join(options.destPath, jp); 
                    }                              
                    //如果文件还是不存在，则相对于项目发布路径
                    if(!fs.existsSync(filepath)) {
                        console.log(filepath + ' not exists, check dest path!');
                        //相对于当前html文件                  
                        filepath = path.join(path.dirname(file.path), jp); 
                    }
                }
                else {
                    //相对于当前html路径
                    var filepath = path.join(options.dest, jp);
                }
                //读取内联的文件内容
                content += readInlineContent(filepath, buildInfo, reqModuleJS, options) + '\n';
            }
        }
        return content;
    }
153755
function tryNoExtLookUp(info, file, opts) {
  // 支持没有指定后缀的 require 查找。
  return findResource(info.rest, file ? file.dirname : fis.project.getProjectPath(), opts.extList);
}
553452
function(){
		/* "ものを動かしたように描画する"でなければinputLineと同じ */
		if(this.puzzle.execConfig('dispmove')){
			this.inputMoveLine();
			return;
		}
		
		var pos, border;
		if(!this.board.borderAsLine){
			pos = this.getpos(0);
			if(this.prevPos.equals(pos)){ return;}
			border = this.prevPos.getnb(pos);
		}
		else{
			pos = this.getpos(0.35);
			if(this.prevPos.equals(pos)){ return;}
			border = this.prevPos.getborderobj(pos);
		}
		
		if(!border.isnull){
			if(this.inputData===null){ this.inputData=(border.isLine()?0:1);}
			if     (this.inputData===1){ border.setLine();}
			else if(this.inputData===0){ border.removeLine();}
			border.draw();
		}
		this.prevPos = pos;
	}
58838
public static function SendFile ($file_path, $file_name = null, $mime_type = null, $options = []) {
		//==============================================
		//オプション展開
		//==============================================
		$filename_from_charset	= $options['from_charset']			?? Encoding::UTF_8;
		$filename_to_charset	= $options['to_charset']			?? Encoding::SJIS;
		$chunk_size				= $options['chunk_size']			?? static::CHUNK_SIZE;
		$content_disposition	= $options['content_disposition']	?? static::CONTENT_DISPOSITION_ATTACHMENT;

		//==============================================
		//ファイル存在確認
		//==============================================
		if (($status = FileSystem::IsReadableFile($file_path, $options)) !== true) {
			return $status;
		}

		//==============================================
		//ファイル情報取得
		//==============================================
		$file_size = filesize($file_path);

		//==============================================
		//ファイル名確定
		//==============================================
		$file_name = $file_name ?: basename($file_path);

		//==============================================
		//mime type確定
		//==============================================
		if ($mime_type === null) {
			$ext = pathinfo($file_name, \PATHINFO_EXTENSION);
			$mime_type = isset(self::GetMimeTypeMapForExt()[$ext]) ? self::GetMimeTypeMapForExt()[$ext] : self::MIME_TYPE_BINARY;
		}

		//==============================================
		//ファイル送信開始
		//==============================================
		//HTTP ResponseHeaderの出力
		foreach (static::GetHttpHeaderContentDispositionAttachment(
			$file_name,
			$file_size,
			$mime_type,
			$content_disposition,
			$filename_to_charset,
			$filename_from_charset
		) as $header) {
			header(str_replace(["\r", "\n"], '', $header));
		}

		//----------------------------------------------
		//実処理の開始
		//----------------------------------------------
		//既存の出力を全て送信
		OutputBuffer::Clean();
		flush();

		//file pointer open
		$fp = fopen($file_path, 'rb');

		//timeout引き延ばし処理：実行開始秒
		$split_time = time();

		//チャンクサイズごとに送信
		while (!feof($fp)) {
			print fread($fp, $chunk_size);
			flush();

			//3秒以上経過ごとにタイムリミットを延長する
			if (time() - $split_time > 3) {
				set_time_limit(time() - $split_time);
			}
		}

		//==============================================
		//処理の終了
		//==============================================
		fclose($fp);
	}
9849
public function rewrite($path, $callback){
		if( is_null($callback) ){
			// コールバック関数が設定されなかった場合
			return $path;
		}elseif( is_callable($callback) ){
			// コールバック関数が設定された場合
			return call_user_func( $callback, $path );
		}elseif( is_string($callback) ){
			$path_rewrited = $callback;
			$data = array(
				'dirname'=>$this->px->fs()->normalize_path(dirname($path)),
				'filename'=>basename($this->px->fs()->trim_extension($path)),
				'ext'=>strtolower($this->px->fs()->get_extension($path)),
			);
			$path_rewrited = str_replace( '{$dirname}', $data['dirname'], $path_rewrited );
			$path_rewrited = str_replace( '{$filename}', $data['filename'], $path_rewrited );
			$path_rewrited = str_replace( '{$ext}', $data['ext'], $path_rewrited );
			return $path_rewrited;
		}
		return $path;
	}
252026
function(url, params, onsuccess, onfail) {
    // url中包含 get 参数和 params 合并
    if (_typeof(params) == 'object') params = _params_2_url(params);
    else params = '';

    if (params) url = url + '?' + params;
    return request('GET', url, '', onsuccess, onfail);
  }
804966
function fetchHTTPFile( $httpFileIdentifier, &$errors, &$file, &$mimeData )
    {
        $returnCode = eZHTTPFile::canFetch( $httpFileIdentifier, 0 );
        if ( $returnCode !== eZHTTPFile::UPLOADEDFILE_OK && $returnCode !== true )
        {
            switch ( $returnCode )
            {
                case eZHTTPFile::UPLOADEDFILE_DOES_NOT_EXIST:
                    $errors[] = array( 'description' => ezpI18n::tr( 'kernel/content/upload', 'A file is required for upload, no file were found.' ) );
                    break;
                case eZHTTPFile::UPLOADEDFILE_EXCEEDS_PHP_LIMIT:
                case eZHTTPFile::UPLOADEDFILE_EXCEEDS_MAX_SIZE:
                    $errors[] = array( 'description' => ezpI18n::tr( 'kernel/content/upload', 'The uploaded file size is above the maximum limit.' ) );
                    break;
                case eZHTTPFile::UPLOADEDFILE_MISSING_TMP_DIR:
                case eZHTTPFile::UPLOADEDFILE_CANT_WRITE:
                case eZHTTPFile::UPLOADEDFILE_UNKNOWN_ERROR:
                    $errors[] = array( 'description' => ezpI18n::tr( 'kernel/content/upload', 'A system error occured while writing the uploaded file.' ) );
                    break;
            }
            return false;
        }

        $file = eZHTTPFile::fetch( $httpFileIdentifier );
        if ( !( $file instanceof eZHTTPFile ) )
        {
            $errors[] = array( 'description' => ezpI18n::tr( 'kernel/content/upload',
                                                        'Expected a eZHTTPFile object but got nothing.' ) );
            return false;
        }

        $mimeData = eZMimeType::findByFileContents( $file->attribute( "original_filename" ) );

        return true;
    }
559357
public function reload_definition_data(){
		// キャッシュから読み込み
		$caches = $this->caches->load_cached_contents();

		if( $caches === false ){
			// テーブル定義ファイルの解析を実行
			$table_definition = $this->parse_definition_file();
			$this->fs->save_file(
				$this->config->path_cache_dir.'/table_definition.json',
				json_encode($table_definition, JSON_PRETTY_PRINT)
			);
			$caches = $this->caches->load_cached_contents();
		}
		if( $caches === false ){
			trigger_error('[ExcellentDb: Setup Error] Could NOT read data.');
			return;
		}
		$this->table_definition = $caches->table_definition;
		return true;
	}
980433
function inferFileMetadata (file) {
  file.mimeType = lowercase(mime.lookup(file.url) || null);
  file.encoding = lowercase(mime.charset(file.mimeType) || null);
}
1146185
function () {

        var that = this;
        var base = this.base;
        var $ = this.$;
        var files = [];


        $('link[rel=stylesheet]').each(function () {

            var $this = $(this);
            var cssFile;
            var href = $this.attr('href');

            cssFile = utils.resolve(base, href);
            cssFile = getUrl(cssFile);

            // 注意：为空也得放进去，保持与 link 标签一一对应
            files.push(cssFile);
        });


        // 转换 file 地址
        // 执行顺序：ignore > map > normalize
        function getUrl (file) {

            if (!that.ignore(file)) {
                file = that.map(file);
                file = utils.normalize(file);
                return file;
            }
        }


        if (this.options.debug) {
            console.log('');
            console.log('[DEBUG]', 'HtmlParser#getCssFiles', this.file);
            console.log(files);
        }


        return files;
    }
851118
public function validate ($validate_rule = null, $data_set = [], $force_source = false) {
		//結果の初期化
		$result = [];

		//現在のバリデーションルールを取得
		$validate_rule = $validate_rule ?? $this->rule->validate ?? null;
		if (is_callable($validate_rule)) {
			$validate_rule = $validate_rule();
		}

		//実行対象のバリデーションがあるか確認、なければ対象はなかったとして終了
		if (is_null($validate_rule)) {
			$this->hasValidator = false;
			return [];
		}
		$this->hasValidator = true;

		//外部入力値を取得
		$request_access = LazyArrayObject::Create([
			'parameter'	=> Request::GetParameters(),
			'data'		=> Request::GetPostData(),
			'post'		=> Request::GetPost(),
			'upload'	=> Request::GetUploadFileData(),
			'cookie'	=> Request::GetCookies(),
			'route'		=> $this->route,
			'direct'	=> $data_set,
		]);

		//検証の実行：入力一要素ごとに処理を行う
		foreach (array_filter(($validate_rule instanceof \ArrayObject) ? $validate_rule->getArrayCopy() : $validate_rule) as $target => $rules) {
			//短縮設定を掬い取る
			$rule_length = count($rules);
			for ($i = 0;$i < $rule_length;$i++) {
				$data_set = array_slice($rules, $i, 1);
				$idx = key($data_set);
				$rule = current($data_set);
				if (is_int($idx) && is_string($rule)) {
					$rules = array_merge(array_slice($rules, 0, $i), [$rule => true], array_slice($rules, $i + 1));
				}
			}

			//先行する検証の結果を参照するかどうか
			$premise = $rules['premise'] ?? null;
			if ($premise) {
				foreach (Arrays::AdjustArray($premise) as $error_name) {
					//一つでもエラーとなっている先行検証結果がある場合、処理そのものをスキップ
					if (isset($result[$error_name])) {
						continue 2;
					}
				}
			}

			//データ取得対象ソースの指定
			$source = $force_source ?: ($rules['rules']['source'] ?? $rules['source'] ?? (Request::IsPostMethod() ? 'data' : 'parameter'));
			$data = $request_access->$source;

			//先行確認値があった場合、突合チェック
			$pre_check_pattern = null;
			if (($position = strpos($target, '@value=')) !== false) {
				$pre_check_pattern = substr($target, $position + strlen('@value='));
				$target = substr($target, 0, $position);

				//先行入力値とマッチしなかった場合はスキップ
				if ($pre_check_pattern !== null && preg_match(sprintf("/^%s$/u", str_replace('/', "\\/", $pre_check_pattern)), $data->$target) !== 1) {
					continue;
				}
			}

			//指定があった場合、値の取得先を差し替え
			$name = $rules['name'] ?? $target;

			//検証実行：結果はどんどん末尾に追加していく
			$ret = Validator::BulkCheck($data, [$name => $rules], $result) ?? [];
			if (!empty($ret)) {
				foreach ($ret as $target => $error_message_list) {
					$result += $result + [$target => $error_message_list];
				}

				//入力要素レベルのis_lastが存在した場合、ここで処理終了となる
				if ($rules['is_last'] ?? null) {
					break;
				}
			}
		}

		//処理の終了
		return $result;
	}
1266777
function searchInFile(row, callback){
		// console.log(row);

		var result = {
			'matched': false,
			'type': row.type,
			'count': 0
		};

		if( _this.cond.matchFileName ){
			if( php.basename(row.path).match( _this.cond.keyword ) ){
				// ファイル名にキーワードマッチング
				result.matched = true;
			}
		}

		if( row.type == 'file' ){
			// ファイルの場合
			fs.readFile( row.path, function( err, bin ){
				if(_this.completed){
					return;
				}

				var result = {
					'matched': false,
					'type': 'file',
					'count': 0
				};
				if(err){
					// エラー
					countDone ++;
					result.error = err;
					_this.cond.error(row.path, result);
					_this.cond.progress(countDone, countTarget);
					callback();
					return;
				}
				bin = bin.toString('UTF8');

				var matched = bin.match( _this.cond.keyword );
				if( matched ){
					// キーワードマッチング
					result.matched = true;
					result.count = matched.length;
				}

				countDone ++;
				if( result.matched ){
					// マッチした場合
					_this.cond.match(row.path, result);
				}else{
					// マッチしなかった場合
					_this.cond.unmatch(row.path, result);
				}
				_this.cond.progress(countDone, countTarget);
				callback();
				return;

			} );
		}else{
			// ディレクトリの場合
			countDone ++;
			if( result.matched ){
				// マッチした場合
				_this.cond.match(row.path, result);
			}else{
				// マッチしなかった場合
				_this.cond.unmatch(row.path, result);
			}
			_this.cond.progress(countDone, countTarget);
			callback();
			return;
		}
	}