メソッド/特異メソッドを定義したときの共通処理
771508
def __neuron_check_method_added_hook(target_cls_or_mod, method_name, met, singleton_original_class = nil)
      singleton = !(singleton_original_class.nil?)

      # メソッド定義時のフックが無効化されている場合は何もしない
      return unless @__neuron_check_method_added_hook_enabled

      # 直前にNeuronCheck宣言部があれば、その宣言内容を登録する
      if (declaration = @__neuron_check_last_declaration) then

        # あらかじめ登録と、メソッドやクラスとの紐付けを行っておく
        # この処理を先に行わないと正しく名前を取得できない
        NeuronCheckSystem::METHOD_DECLARATIONS[target_cls_or_mod][method_name] = declaration
        declaration.assigned_class_or_module = target_cls_or_mod
        declaration.assigned_method = met
        declaration.assigned_singleton_original_class = singleton_original_class


        # 宣言に引数チェックが含まれている場合、宣言部の引数の数が、実際のメソッドの引数の数を超えていないかをチェック
        # 超えていれば宣言エラーとする
        if declaration.arg_matchers.size > met.parameters.size then
          raise NeuronCheckSystem::DeclarationError, "given arguments number of ##{method_name} greater than method definition - expected #{met.parameters.size} args, but #{declaration.arg_matchers.size} args were declared"
        end

        # パラメータの中にブロック型の引数が含まれているが
        # そのパラメータが、anyでもblockでもない型である場合はエラー
        met.parameters.each_with_index do |param_info, def_param_index|
          param_type, param_name = param_info
          if param_type == :block and (matcher = declaration.arg_matchers[def_param_index]) then
            next if matcher.respond_to?(:keyword_name) and matcher.keyword_name == 'any'
            next if matcher.respond_to?(:keyword_name) and matcher.keyword_name == 'block'

            context_caption = "#{NeuronCheckSystem::Utils.ordinalize(def_param_index + 1)} argument `#{param_name}' of `#{declaration.signature_caption_name_only}'"
            raise NeuronCheckSystem::DeclarationError, "#{context_caption} is block argument - it can be specified only keyword `any' or `block'"
          end
        end

        # 特異メソッドでなく、メソッド名が「initialize」であるにもかかわらず、returns宣言が含まれている場合はエラー
        if not singleton and method_name == :initialize and declaration.return_matcher then
          raise NeuronCheckSystem::DeclarationError, "returns declaration cannot be used with `#initialize' method"
        end

        # チェック処理の追加が完了したら、「最後に宣言した内容」を表すクラスインスタンス変数をnilに戻す
        @__neuron_check_last_declaration = nil
      end
    end
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;
	}
946083
private void init(List<Mentsu> winCandidate, Toitsu toitsu) {
        // 操作変数を初期化
        initStock();
        winCandidate.clear();
        //ストックから雀頭を減らす
        handStocks[toitsu.getTile().getCode()] -= 2;
        winCandidate.add(toitsu);
    }
1237142
function otfContours2ttfContours(otfContours) {
            if (!otfContours || !otfContours.length) {
                return otfContours;
            }
            var contours = [];
            for (var i = 0, l = otfContours.length; i < l; i++) {

                // 这里可能由于转换错误导致空轮廓，需要去除
                if (otfContours[i][0]) {
                    contours.push(transformContour(otfContours[i]));
                }
            }

            return contours;
        }
798157
function(iscount, type, code){ // type = 0:違う 1:numより小さい 2:numより大きい
		for(var c=0;c<this.board.cell.length;c++){
			var cell = this.board.cell[c];
			if(!cell.isValidNum()){ continue;}
			var num = cell.getNum(), count=cell.countDir4Cell(iscount);
			if((type===0 && num===count) || (type===1 && num<=count) || (type===2 && num>=count)){ continue;}
			
			this.failcode.add(code);
			if(this.checkOnly){ break;}
			cell.seterr(1);
		}
	}
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;
	}
310528
function () {
                var self = this, attrs = self.getAttrs(), attr, m;
                for (attr in attrs) {
                    m = ON_SET + ucfirst(attr);
                    if (self[m]) {
                        // 自动绑定事件到对应函数
                        self.on('after' + ucfirst(attr) + 'Change', onSetAttrChange);
                    }
                }
            }
1241722
public function validate()
    {
        $members = get_object_vars($this);
        unset($members['validation']);
        unset($members['validation_errors']);

        $errors = 0;
        foreach ($members as $member => $v) {
            if (!isset($this->validation[$member])) {
                continue;
            }
            foreach ($this->validation[$member] as $rule_name => $args) {
                $validate_func = array_shift($args);
                if (method_exists($this, $validate_func)) {
                    // 検証メソッドがモデルに存在するとき実行
                    $valid = call_user_func_array(array($this, $validate_func), array_merge(array($v), $args));
                } elseif (function_exists($validate_func)) {
                    $valid = call_user_func_array($validate_func, array_merge(array($v), $args));
                } else {
                    // 存在しない検証メソッドのときエラー
                    throw new DCException("{$validate_func} does not exist");
                }
                $this->validation_errors[$member][$rule_name] = $valid ? false : true;
                if (!$valid) {
                    $errors++;
                }
            }
        }
        return $errors === 0 ? true : false;
    }
14469
function UserInfo() {
	//使用者帳號(索引用)
	this.strAccount = "";
	//電子信箱
	this.strEmail = "";
	//信箱通知勾選
	this.bEmailNotify = false;
	//電話資料
	this.strPhone = "";
	//簡訊通知勾選
	this.bSMSNotify = false;
	//使用者名稱(暱稱?)
	this.strUserName = "";
	//語系控制
	this.strLanguages = "";
	//系統保護
	this.bSystemAegis = false;
	//登入次數
	this.iLoginCount = 0;
	//登入時間
	this.iLogin = 0;
	//最後登出時間
	this.iLastLogout = 0;
}
435466
private boolean isRyanmen(Shuntsu shuntsu, Tile last) {
        //ラスト牌と判定したい順子のtypeが違う場合はfalse
        if (shuntsu.getTile().getType() != last.getType()) {
            return false;
        }

        int shuntsuNum = shuntsu.getTile().getNumber();
        int lastNum = last.getNumber();
        if (shuntsuNum == 2 && lastNum == 1) {
            return true;
        }

        if (shuntsuNum == 8 && lastNum == 9) {
            return true;
        }

        int i = shuntsuNum - lastNum;
        if (i == 1 || i == -1) {
            return true;
        }

        return false;
    }
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;
	}
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);
	}
396844
function setCanvas_main(puzzle, type){
	/* fillTextが使えない場合は強制的にSVG描画に変更する */
	if(type==='canvas' && !!pzpr.Candle.enable.canvas && !CanvasRenderingContext2D.prototype.fillText){ type = 'svg';}
	
	pzpr.Candle.start(puzzle.canvas, type, function(g){
		pzpr.util.unselectable(g.canvas);
		g.child.style.pointerEvents = 'none';
		if(g.use.canvas && !puzzle.subcanvas){
			var canvas = puzzle.subcanvas = createSubCanvas('canvas');
			if(!!document.body){
				canvas.id = "_"+(new Date()).getTime()+type; /* 何か他とかぶらないようなID */
				canvas.style.position = 'absolute';
				canvas.style.left = '-10000px';
				canvas.style.top = '0px';
				document.body.appendChild(canvas);
			}
		}
		if(puzzle.ready){ postCanvasReady(puzzle);}
	});
}
1171258
function spellCheckText(text) {
    var src = new StructuredSource(text);
    var results = [];
    for (var i = 0, length = dictionaryItems.length; i < length; i++) {
        var dictionary = dictionaryItems[i];
        var query = new RegExp(dictionary.pattern, dictionary.flag);
        var match = query.exec(text);
        if (!match) {
            continue;
        }
        var matchedString = match[0];
        // s/Web/Web/iは大文字小文字無視してWebに変換したいという意味に対応する
        if (dictionary.flag != null) {
            var strictQuery = new RegExp(dictionary.pattern);
            var isStrictMatch = strictQuery.test(match[0]);
            // /Web/i でマッチするけど、 /Web/ でマッチするならそれは除外する
            if (isStrictMatch) {
                continue;
            }
        }

        // s/ベンダ/ベンダー/ のようにexpectedがpatternを包含している場合のexpectedを除外
        var expected = matchedString.replace(query, dictionary.expected);
        if (text.slice(match.index).indexOf(expected) === 0) {
            // [start, end]
            continue;
        }

        var position = src.indexToPosition(match.index);
        /**
         *
         * @typedef {{actual: string, expected: string, paddingLine: number, paddingColumn: number}} SpellCheckResult
         */
        var result = {
            actual: matchedString,
            expected: expected,
            paddingIndex: match.index,
            paddingLine: position.line - 1,// start with 0
            paddingColumn: position.column// start with 0
        };


        results.push(result);
    }
    return results.reverse();
}
1271972
function entrustGlobalVariables()
    {
        // if don't have request instance, do not anything
        if ($this->requestInstance) {
            $swooleRequest = $this->requestInstance->getSwooleRequest();
            $_GET          = isset($swooleRequest->get) ? $swooleRequest->get : [];
            $_POST         = isset($swooleRequest->post) ? $swooleRequest->post : [];
            $_FILES        = isset($swooleRequest->files) ? $swooleRequest->files : [];
            $_SERVER       = isset($swooleRequest->server) ? array_change_key_case($swooleRequest->server, CASE_UPPER) : [];
            $_REQUEST      = array(); // 暂不支持
            $_COOKIE       = array(); // 暂不支持
            $_ENV          = array(); // 暂不支持
            $_SESSION      = array(); // 暂不支持
            $GLOBALS       = array(); // 暂不支持

            $header = $this->requestInstance->getHeaderLine('x-requested-with');
            if ($header && strtolower($header) == 'xmlhttprequest') {
                $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
            }
        }
    }
578189
function ( el, attrs ) {
            var i, attrNum = attrs.length, result = false;
    
            for ( i = 0; i < attrNum; ++i ) {
                //parseAttr
                //attrs[i].replace( /(^\w+)([\=\$\*\~\^]{1,2})?([\w\W]+)?|(^\w+)([^\=\$\*\~\^]+)/, function ( str, name, operator, value ) {
                attrs[i].replace( /(^\w+)([=$*~\^]{1,2})?([\w\W]+)?|(^\w+)([^=$*~\^]+)/, function ( str, name, operator, value ) {
                    if ( name ) {
                        var elValue = $B( el ).attr( name ),
                            reValue;
    
                        if ( operator ) {
                            if ( !elValue ) return;
    
                            //연산자
                            switch ( operator ) {
                                case '=':
                                    result = ( elValue == value );
                                    break;
                                case '*=':
                                    result = ( elValue.indexOf(value) > -1 );
                                    break;
                                case '~=':
                                    result = $B.string.isWholeWord( elValue, value );
                                    break;
                                case '^=':
                                    reValue = value.replace( /[(){}[\]*+?.\\^$|,\-]/g, '\\$&' );
                                    result = new RegExp( '^' + reValue ).test( elValue );
                                    break;
                                case '$=':
                                    reValue = value.replace( /[(){}[\]*+?.\\^$|,\-]/g, '\\$&' );
                                    result = new RegExp( reValue + '$' ).test( elValue );
                                    break;
                            }
                            //attr이 있는지 비교만 할때
                        } else {
                            result = ( !elValue )? false : true;
                        }
                    } else {
                        return false;
                    }
                });
    
                //하나라도 false가 나오면 더이상 체크하지 않는다.
                if ( !result ) return result;
            }
    
            return result;
        }
194225
function onClicksetPresetData(){
$("#onClicksetPresetDataBtn").prop('disabled', true);
    setPresetData().then(()=>{
        alert("書き込み完了");
        $("#onClicksetPresetDataBtn").prop('disabled', false);
        $("#onplayPresetDataBtn").prop('disabled', false);

    }).catch((e)=>{
        alert(e);
        $("#onClicksetPresetDataBtn").prop('disabled', false);
    })
}