From 5cfcc853cd29774a3d455803cc6540792d52713f Mon Sep 17 00:00:00 2001 From: Chris-Prime Date: Tue, 13 Dec 2016 21:05:51 +0200 Subject: [PATCH] figldig --- LICENSE | 0 README.md | 0 src/dominate/Command.php | 2 +- src/dominate/argument/Argument.php | 41 +++++++++++++------ src/dominate/requirement/Requirement.php | 0 .../requirement/SimpleRequirement.php | 2 +- 6 files changed, 31 insertions(+), 14 deletions(-) mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 src/dominate/Command.php mode change 100644 => 100755 src/dominate/argument/Argument.php mode change 100644 => 100755 src/dominate/requirement/Requirement.php mode change 100644 => 100755 src/dominate/requirement/SimpleRequirement.php diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/src/dominate/Command.php b/src/dominate/Command.php old mode 100644 new mode 100755 index af3d41f..18c776c --- a/src/dominate/Command.php +++ b/src/dominate/Command.php @@ -268,7 +268,7 @@ public function addRequirement(Requirement $r) { public function testRequirements(CommandSender $sender = null) : bool { $sender = $sender ?? $this->sender; foreach($this->requirements as $requirement) { - if(!$requirement->hasMet($r, false)) return false; + if(!$requirement->hasMet($sender, false)) return false; } return true; } diff --git a/src/dominate/argument/Argument.php b/src/dominate/argument/Argument.php old mode 100644 new mode 100755 index a68c606..3fd8055 --- a/src/dominate/argument/Argument.php +++ b/src/dominate/argument/Argument.php @@ -26,6 +26,7 @@ class Argument { const TYPE_STRING = 0x0; const TYPE_INTEGER = 0x1; + const TYPE_NUMERIC = self::TYPE_INTEGER; const TYPE_FLOAT = 0x2; const TYPE_DOUBLE = self::TYPE_FLOAT; const TYPE_REAL = self::TYPE_FLOAT; @@ -36,10 +37,9 @@ class Argument { /** @var string[] */ public static $ERROR_MESSAGES = [ self::TYPE_STRING => "argument.type-string-error", - self::TYPE_INTEGER => "argument.type-string-error", - self::TYPE_FLOAT => "argument.type-string-error", - self::TYPE_DOUBLE => "argument.type-string-error", - self::TYPE_BOOLEAN => "argument.type-string-error", + self::TYPE_INTEGER => "argument.type-integer-error", + self::TYPE_FLOAT => "argument.type-float-error", + self::TYPE_BOOLEAN => "argument.type-boolean-error", self::TYPE_NULL => "argument.type-null-error" ]; @@ -47,7 +47,6 @@ class Argument { self::TYPE_STRING, self::TYPE_INTEGER, self::TYPE_FLOAT, - self::TYPE_DOUBLE, self::TYPE_BOOLEAN, self::TYPE_NULL, ]; @@ -125,18 +124,34 @@ public function getType() { * Will do checks only on primitive data types * @return bool */ - public static function validateInputType(string $input, int $type) : bool { + public static function validateInputType($input, int $type) : bool { if(!isset(self::PRIMITIVE_TYPES[$type])) return false; + echo "Validating primitive type".PHP_EOL; switch ($type) { case self::TYPE_STRING: - return is_string((string) $input); + return is_string($input); case self::TYPE_BOOLEAN: - return is_bool((bool) $input); + switch(strtolower($input)) { + case '1': + case 'true': + case 'yes': + case 'y': + return true; + case '0': + case 'false': + case 'no': + case 'n': + return true; + default: + return false; + } + return false; case self::TYPE_DOUBLE: case self::TYPE_FLOAT: - return is_float((float) $input); + if(strpos($input, ".") === false) return false; + return is_numeric($input); case self::TYPE_INTEGER: - return is_int((float) $input); + return is_numeric($input); } return false; } @@ -158,13 +173,13 @@ public function createErrorMessage(CommandSender $sender, string $value) : Trans return new Translatable(self::$ERROR_MESSAGES[$this->type], [ "sender" => ($sender instanceof Player ? $sender->getDisplayName() : $sender->getName()), "value" => $value, - "n" => $this->getIndex() + "n" => $this->getIndex() + 1 // Must make this readable, not everyone can program ]); } else { return new Translatable("argument.generic-error", [ "sender" => ($sender instanceof Player ? $sender->getDisplayName() : $sender->getName()), "value" => $value, - "n" => $this->getIndex() + "n" => $this->getIndex() + 1 ]); } } @@ -186,7 +201,9 @@ public function isPrimitive() : bool { public function read(string $input, CommandSender $sender = null) { $silent = $sender ? false : true; if($this->isPrimitive()) { + echo "Is primitive".PHP_EOL; if(!self::validateInputType($input, $this->type)) { + echo "Input validation failed!".PHP_EOL; if(!$silent) { $sender->sendMessage($this->createErrorMessage($sender, $input)); } diff --git a/src/dominate/requirement/Requirement.php b/src/dominate/requirement/Requirement.php old mode 100644 new mode 100755 diff --git a/src/dominate/requirement/SimpleRequirement.php b/src/dominate/requirement/SimpleRequirement.php old mode 100644 new mode 100755 index 64390f5..2f97cfd --- a/src/dominate/requirement/SimpleRequirement.php +++ b/src/dominate/requirement/SimpleRequirement.php @@ -48,7 +48,7 @@ public function __construct(int $type) { } public function createErrorMessage(CommandSender $sender) : Translatable { - return new Translatable(self::ERROR_MESSAGES[$this->type], [($sender instanceof Player) ? $sender->getDisplayName() : $sender->getName()]); + return new Translatable(self::$ERROR_MESSAGES[$this->type], [($sender instanceof Player) ? $sender->getDisplayName() : $sender->getName()]); } public function hasMet(CommandSender $sender, $silent = false) : bool {