xrfragment/dist/xrfragment.php/lib/xrfragment/XRF.php
2023-08-04 09:11:26 +02:00

334 lines
6.8 KiB
PHP

<?php
/**
*/
namespace xrfragment;
use \php\Boot;
use \php\_Boot\HxString;
class XRF {
/**
* @var int
*/
static public $ASSET = 1;
/**
* @var int
*/
static public $EMBEDDED = 64;
/**
* @var int
*/
static public $NAVIGATOR = 32;
/**
* @var int
*/
static public $PROMPT = 8;
/**
* @var int
*/
static public $PROP_BIND = 2;
/**
* @var int
*/
static public $PV_EXECUTE = 256;
/**
* @var int
*/
static public $PV_OVERRIDE = 128;
/**
* @var int
*/
static public $QUERY_OPERATOR = 4;
/**
* @var int
*/
static public $ROUNDROBIN = 16;
/**
* @var int
*/
static public $T_COLOR = 8192;
/**
* @var int
*/
static public $T_FLOAT = 32768;
/**
* @var int
*/
static public $T_INT = 16384;
/**
* @var int
*/
static public $T_PREDEFINED_VIEW = 524288;
/**
* @var int
*/
static public $T_STRING = 1048576;
/**
* @var int
*/
static public $T_STRING_OBJ = 2097152;
/**
* @var int
*/
static public $T_STRING_OBJ_PROP = 4194304;
/**
* @var int
*/
static public $T_URL = 262144;
/**
* @var int
*/
static public $T_VECTOR2 = 65536;
/**
* @var int
*/
static public $T_VECTOR3 = 131072;
/**
* @var \EReg
*/
static public $isColor;
/**
* @var \EReg
*/
static public $isFloat;
/**
* @var \EReg
*/
static public $isInt;
/**
* @var \EReg
*/
static public $isString;
/**
* @var \EReg
*/
static public $isUrl;
/**
* @var \EReg
*/
static public $isUrlOrPretypedView;
/**
* @var \EReg
*/
static public $isVector;
/**
* @var XRF[]|\Array_hx
*/
public $args;
/**
* @var string
*/
public $color;
/**
* @var int
*/
public $flags;
/**
* @var float
*/
public $float;
/**
* @var string
*/
public $fragment;
/**
* @var int
*/
public $int;
/**
* @var Query
*/
public $query;
/**
* @var string
*/
public $string;
/**
* @var float
*/
public $x;
/**
* @var float
*/
public $y;
/**
* @var float
*/
public $z;
/**
* @param int $flag
* @param int $flags
*
* @return int
*/
public static function set ($flag, $flags) {
#src/xrfragment/XRF.hx:70: characters 5-24
return $flags | $flag;
}
/**
* @param int $flag
* @param int $flags
*
* @return int
*/
public static function unset ($flag, $flags) {
#src/xrfragment/XRF.hx:74: characters 5-25
return $flags & ~$flag;
}
/**
* @param string $_fragment
* @param int $_flags
*
* @return void
*/
public function __construct ($_fragment, $_flags) {
#src/xrfragment/XRF.hx:61: characters 5-25
$this->fragment = $_fragment;
#src/xrfragment/XRF.hx:62: characters 5-22
$this->flags = $_flags;
}
/**
* @param XRF $v
* @param string $str
*
* @return void
*/
public function guessType ($v, $str) {
#src/xrfragment/XRF.hx:103: characters 5-19
$v->string = $str;
#src/xrfragment/XRF.hx:104: lines 104-109
if (HxString::split($str, ",")->length > 1) {
#src/xrfragment/XRF.hx:105: characters 7-46
$xyz = HxString::split($str, ",");
#src/xrfragment/XRF.hx:106: characters 7-56
if ($xyz->length > 0) {
#src/xrfragment/XRF.hx:106: characters 28-56
$v->x = \Std::parseFloat(($xyz->arr[0] ?? null));
}
#src/xrfragment/XRF.hx:107: characters 7-56
if ($xyz->length > 1) {
#src/xrfragment/XRF.hx:107: characters 28-56
$v->y = \Std::parseFloat(($xyz->arr[1] ?? null));
}
#src/xrfragment/XRF.hx:108: characters 7-56
if ($xyz->length > 2) {
#src/xrfragment/XRF.hx:108: characters 28-56
$v->z = \Std::parseFloat(($xyz->arr[2] ?? null));
}
}
#src/xrfragment/XRF.hx:111: characters 5-43
if (XRF::$isColor->match($str)) {
#src/xrfragment/XRF.hx:111: characters 30-43
$v->color = $str;
}
#src/xrfragment/XRF.hx:112: characters 5-59
if (XRF::$isFloat->match($str)) {
#src/xrfragment/XRF.hx:112: characters 30-59
$v->float = \Std::parseFloat($str);
}
#src/xrfragment/XRF.hx:113: characters 5-57
if (XRF::$isInt->match($str)) {
#src/xrfragment/XRF.hx:113: characters 30-57
$v->int = \Std::parseInt($str);
}
}
/**
* @param int $flag
*
* @return bool
*/
public function is ($flag) {
#src/xrfragment/XRF.hx:66: characters 5-31
return ($this->flags & $flag) !== 0;
}
/**
* @param string $value
*
* @return bool
*/
public function validate ($value) {
#src/xrfragment/XRF.hx:78: characters 5-27
$this->guessType($this, $value);
#src/xrfragment/XRF.hx:80: lines 80-88
if (HxString::split($value, "|")->length > 1) {
#src/xrfragment/XRF.hx:81: characters 7-35
$this->args = new \Array_hx();
#src/xrfragment/XRF.hx:82: characters 7-49
$args = HxString::split($value, "|");
#src/xrfragment/XRF.hx:83: characters 17-21
$_g = 0;
#src/xrfragment/XRF.hx:83: characters 21-32
$_g1 = $args->length;
#src/xrfragment/XRF.hx:83: lines 83-87
while ($_g < $_g1) {
#src/xrfragment/XRF.hx:83: characters 17-32
$i = $_g++;
#src/xrfragment/XRF.hx:84: characters 9-45
$x = new XRF($this->fragment, $this->flags);
#src/xrfragment/XRF.hx:85: characters 9-30
$this->guessType($x, ($args->arr[$i] ?? null));
#src/xrfragment/XRF.hx:86: characters 9-28
$_this = $this->args;
$_this->arr[$_this->length++] = $x;
}
}
#src/xrfragment/XRF.hx:90: characters 5-59
if ($this->fragment === "q") {
#src/xrfragment/XRF.hx:90: characters 27-59
$this->query = (new Query($value))->get();
}
#src/xrfragment/XRF.hx:92: characters 5-24
$ok = true;
#src/xrfragment/XRF.hx:93: lines 93-97
if (!($this->args instanceof \Array_hx)) {
#src/xrfragment/XRF.hx:94: characters 7-115
if ($this->is(XRF::$T_VECTOR3) && !((is_float($this->x) || is_int($this->x)) && (is_float($this->y) || is_int($this->y)) && (is_float($this->z) || is_int($this->z)))) {
#src/xrfragment/XRF.hx:94: characters 105-115
$ok = false;
}
#src/xrfragment/XRF.hx:95: characters 7-115
if ($this->is(XRF::$T_VECTOR2) && !((is_float($this->x) || is_int($this->x)) && (is_float($this->y) || is_int($this->y)))) {
#src/xrfragment/XRF.hx:95: characters 105-115
$ok = false;
}
#src/xrfragment/XRF.hx:96: characters 7-63
if ($this->is(XRF::$T_INT) && !Boot::isOfType($this->int, Boot::getClass('Int'))) {
#src/xrfragment/XRF.hx:96: characters 53-63
$ok = false;
}
}
#src/xrfragment/XRF.hx:98: characters 5-14
return $ok;
}
/**
* @internal
* @access private
*/
static public function __hx__init ()
{
static $called = false;
if ($called) return;
$called = true;
self::$isColor = new \EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\$", "");
self::$isInt = new \EReg("^[0-9]+\$", "");
self::$isFloat = new \EReg("^[0-9]+\\.[0-9]+\$", "");
self::$isVector = new \EReg("([,]+|\\w)", "");
self::$isUrl = new \EReg("(://)?\\..*", "");
self::$isUrlOrPretypedView = new \EReg("(^#|://)?\\..*", "");
self::$isString = new \EReg(".*", "");
}
}
Boot::registerClass(XRF::class, 'xrfragment.XRF');
XRF::__hx__init();