work in progress [might break]
This commit is contained in:
parent
5b50618ed9
commit
5588171b36
10 changed files with 111 additions and 65 deletions
15
dist/xrfragment.js
vendored
15
dist/xrfragment.js
vendored
|
|
@ -476,11 +476,17 @@ xrfragment_URI.parse = function(qs,browser_override) {
|
||||||
}
|
}
|
||||||
return resultMap;
|
return resultMap;
|
||||||
};
|
};
|
||||||
var xrfragment_XRF = function(_fragment,_flags) {
|
var xrfragment_XRF = $hx_exports["xrfragment"]["XRF"] = function(_fragment,_flags) {
|
||||||
this.fragment = _fragment;
|
this.fragment = _fragment;
|
||||||
this.flags = _flags;
|
this.flags = _flags;
|
||||||
};
|
};
|
||||||
xrfragment_XRF.__name__ = true;
|
xrfragment_XRF.__name__ = true;
|
||||||
|
xrfragment_XRF.set = function(flag,flags) {
|
||||||
|
return flags | flag;
|
||||||
|
};
|
||||||
|
xrfragment_XRF.unset = function(flag,flags) {
|
||||||
|
return flags & ~flag;
|
||||||
|
};
|
||||||
xrfragment_XRF.prototype = {
|
xrfragment_XRF.prototype = {
|
||||||
is: function(flag) {
|
is: function(flag) {
|
||||||
return (this.flags & flag) != 0;
|
return (this.flags & flag) != 0;
|
||||||
|
|
@ -563,15 +569,22 @@ xrfragment_XRF.ROUNDROBIN = 16;
|
||||||
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
||||||
xrfragment_XRF.PV_OVERRIDE = 64;
|
xrfragment_XRF.PV_OVERRIDE = 64;
|
||||||
xrfragment_XRF.PV_EXECUTE = 128;
|
xrfragment_XRF.PV_EXECUTE = 128;
|
||||||
|
xrfragment_XRF.T_COLOR = 256;
|
||||||
xrfragment_XRF.T_INT = 512;
|
xrfragment_XRF.T_INT = 512;
|
||||||
|
xrfragment_XRF.T_FLOAT = 1024;
|
||||||
xrfragment_XRF.T_VECTOR2 = 2048;
|
xrfragment_XRF.T_VECTOR2 = 2048;
|
||||||
xrfragment_XRF.T_VECTOR3 = 4096;
|
xrfragment_XRF.T_VECTOR3 = 4096;
|
||||||
xrfragment_XRF.T_URL = 8192;
|
xrfragment_XRF.T_URL = 8192;
|
||||||
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
||||||
xrfragment_XRF.T_STRING = 32768;
|
xrfragment_XRF.T_STRING = 32768;
|
||||||
xrfragment_XRF.T_STRING_OBJ = 65536;
|
xrfragment_XRF.T_STRING_OBJ = 65536;
|
||||||
|
xrfragment_XRF.T_STRING_OBJ_PROP = 131072;
|
||||||
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
||||||
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
||||||
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
||||||
|
xrfragment_XRF.isVector = new EReg("([,]+|\\w)","");
|
||||||
|
xrfragment_XRF.isUrl = new EReg("(://)?\\..*","");
|
||||||
|
xrfragment_XRF.isUrlOrPretypedView = new EReg("(^#|://)?\\..*","");
|
||||||
|
xrfragment_XRF.isString = new EReg(".*","");
|
||||||
})({});
|
})({});
|
||||||
var xrfragment = $hx_exports["xrfragment"];
|
var xrfragment = $hx_exports["xrfragment"];
|
||||||
|
|
|
||||||
21
dist/xrfragment.lua
vendored
21
dist/xrfragment.lua
vendored
|
|
@ -2137,7 +2137,14 @@ __xrfragment_XRF.super = function(self,_fragment,_flags)
|
||||||
self.fragment = _fragment;
|
self.fragment = _fragment;
|
||||||
self.flags = _flags;
|
self.flags = _flags;
|
||||||
end
|
end
|
||||||
|
_hx_exports["xrfragment"]["XRF"] = __xrfragment_XRF
|
||||||
__xrfragment_XRF.__name__ = true
|
__xrfragment_XRF.__name__ = true
|
||||||
|
__xrfragment_XRF.set = function(flag,flags)
|
||||||
|
do return _hx_bit.bor(flags,flag) end;
|
||||||
|
end
|
||||||
|
__xrfragment_XRF.unset = function(flag,flags)
|
||||||
|
do return _hx_bit.band(flags,_hx_bit.bnot(flag)) end;
|
||||||
|
end
|
||||||
__xrfragment_XRF.prototype = _hx_e();
|
__xrfragment_XRF.prototype = _hx_e();
|
||||||
__xrfragment_XRF.prototype.is = function(self,flag)
|
__xrfragment_XRF.prototype.is = function(self,flag)
|
||||||
do return (_hx_bit.band(self.flags,flag)) ~= 0 end
|
do return (_hx_bit.band(self.flags,flag)) ~= 0 end
|
||||||
|
|
@ -2362,8 +2369,12 @@ local _hx_static_init = function()
|
||||||
|
|
||||||
__xrfragment_XRF.PV_EXECUTE = 128;
|
__xrfragment_XRF.PV_EXECUTE = 128;
|
||||||
|
|
||||||
|
__xrfragment_XRF.T_COLOR = 256;
|
||||||
|
|
||||||
__xrfragment_XRF.T_INT = 512;
|
__xrfragment_XRF.T_INT = 512;
|
||||||
|
|
||||||
|
__xrfragment_XRF.T_FLOAT = 1024;
|
||||||
|
|
||||||
__xrfragment_XRF.T_VECTOR2 = 2048;
|
__xrfragment_XRF.T_VECTOR2 = 2048;
|
||||||
|
|
||||||
__xrfragment_XRF.T_VECTOR3 = 4096;
|
__xrfragment_XRF.T_VECTOR3 = 4096;
|
||||||
|
|
@ -2376,12 +2387,22 @@ local _hx_static_init = function()
|
||||||
|
|
||||||
__xrfragment_XRF.T_STRING_OBJ = 65536;
|
__xrfragment_XRF.T_STRING_OBJ = 65536;
|
||||||
|
|
||||||
|
__xrfragment_XRF.T_STRING_OBJ_PROP = 131072;
|
||||||
|
|
||||||
__xrfragment_XRF.isColor = EReg.new("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", "");
|
__xrfragment_XRF.isColor = EReg.new("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", "");
|
||||||
|
|
||||||
__xrfragment_XRF.isInt = EReg.new("^[0-9]+$", "");
|
__xrfragment_XRF.isInt = EReg.new("^[0-9]+$", "");
|
||||||
|
|
||||||
__xrfragment_XRF.isFloat = EReg.new("^[0-9]+\\.[0-9]+$", "");
|
__xrfragment_XRF.isFloat = EReg.new("^[0-9]+\\.[0-9]+$", "");
|
||||||
|
|
||||||
|
__xrfragment_XRF.isVector = EReg.new("([,]+|\\w)", "");
|
||||||
|
|
||||||
|
__xrfragment_XRF.isUrl = EReg.new("(://)?\\..*", "");
|
||||||
|
|
||||||
|
__xrfragment_XRF.isUrlOrPretypedView = EReg.new("(^#|://)?\\..*", "");
|
||||||
|
|
||||||
|
__xrfragment_XRF.isString = EReg.new(".*", "");
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
15
dist/xrfragment.module.js
vendored
15
dist/xrfragment.module.js
vendored
|
|
@ -476,11 +476,17 @@ xrfragment_URI.parse = function(qs,browser_override) {
|
||||||
}
|
}
|
||||||
return resultMap;
|
return resultMap;
|
||||||
};
|
};
|
||||||
var xrfragment_XRF = function(_fragment,_flags) {
|
var xrfragment_XRF = $hx_exports["xrfragment"]["XRF"] = function(_fragment,_flags) {
|
||||||
this.fragment = _fragment;
|
this.fragment = _fragment;
|
||||||
this.flags = _flags;
|
this.flags = _flags;
|
||||||
};
|
};
|
||||||
xrfragment_XRF.__name__ = true;
|
xrfragment_XRF.__name__ = true;
|
||||||
|
xrfragment_XRF.set = function(flag,flags) {
|
||||||
|
return flags | flag;
|
||||||
|
};
|
||||||
|
xrfragment_XRF.unset = function(flag,flags) {
|
||||||
|
return flags & ~flag;
|
||||||
|
};
|
||||||
xrfragment_XRF.prototype = {
|
xrfragment_XRF.prototype = {
|
||||||
is: function(flag) {
|
is: function(flag) {
|
||||||
return (this.flags & flag) != 0;
|
return (this.flags & flag) != 0;
|
||||||
|
|
@ -563,16 +569,23 @@ xrfragment_XRF.ROUNDROBIN = 16;
|
||||||
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
||||||
xrfragment_XRF.PV_OVERRIDE = 64;
|
xrfragment_XRF.PV_OVERRIDE = 64;
|
||||||
xrfragment_XRF.PV_EXECUTE = 128;
|
xrfragment_XRF.PV_EXECUTE = 128;
|
||||||
|
xrfragment_XRF.T_COLOR = 256;
|
||||||
xrfragment_XRF.T_INT = 512;
|
xrfragment_XRF.T_INT = 512;
|
||||||
|
xrfragment_XRF.T_FLOAT = 1024;
|
||||||
xrfragment_XRF.T_VECTOR2 = 2048;
|
xrfragment_XRF.T_VECTOR2 = 2048;
|
||||||
xrfragment_XRF.T_VECTOR3 = 4096;
|
xrfragment_XRF.T_VECTOR3 = 4096;
|
||||||
xrfragment_XRF.T_URL = 8192;
|
xrfragment_XRF.T_URL = 8192;
|
||||||
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
||||||
xrfragment_XRF.T_STRING = 32768;
|
xrfragment_XRF.T_STRING = 32768;
|
||||||
xrfragment_XRF.T_STRING_OBJ = 65536;
|
xrfragment_XRF.T_STRING_OBJ = 65536;
|
||||||
|
xrfragment_XRF.T_STRING_OBJ_PROP = 131072;
|
||||||
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
||||||
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
||||||
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
||||||
|
xrfragment_XRF.isVector = new EReg("([,]+|\\w)","");
|
||||||
|
xrfragment_XRF.isUrl = new EReg("(://)?\\..*","");
|
||||||
|
xrfragment_XRF.isUrlOrPretypedView = new EReg("(^#|://)?\\..*","");
|
||||||
|
xrfragment_XRF.isString = new EReg(".*","");
|
||||||
})({});
|
})({});
|
||||||
var xrfragment = $hx_exports["xrfragment"];
|
var xrfragment = $hx_exports["xrfragment"];
|
||||||
export default xrfragment;
|
export default xrfragment;
|
||||||
|
|
|
||||||
17
dist/xrfragment.py
vendored
17
dist/xrfragment.py
vendored
|
|
@ -1563,7 +1563,7 @@ class xrfragment_XRF:
|
||||||
__slots__ = ("fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query")
|
__slots__ = ("fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query")
|
||||||
_hx_fields = ["fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query"]
|
_hx_fields = ["fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query"]
|
||||||
_hx_methods = ["is", "validate", "guessType"]
|
_hx_methods = ["is", "validate", "guessType"]
|
||||||
_hx_statics = ["ASSET", "PROP_BIND", "QUERY_OPERATOR", "PROMPT", "ROUNDROBIN", "BROWSER_OVERRIDE", "PV_OVERRIDE", "PV_EXECUTE", "T_INT", "T_VECTOR2", "T_VECTOR3", "T_URL", "T_PREDEFINED_VIEW", "T_STRING", "T_STRING_OBJ", "isColor", "isInt", "isFloat"]
|
_hx_statics = ["ASSET", "PROP_BIND", "QUERY_OPERATOR", "PROMPT", "ROUNDROBIN", "BROWSER_OVERRIDE", "PV_OVERRIDE", "PV_EXECUTE", "T_COLOR", "T_INT", "T_FLOAT", "T_VECTOR2", "T_VECTOR3", "T_URL", "T_PREDEFINED_VIEW", "T_STRING", "T_STRING_OBJ", "T_STRING_OBJ_PROP", "isColor", "isInt", "isFloat", "isVector", "isUrl", "isUrlOrPretypedView", "isString", "set", "unset"]
|
||||||
|
|
||||||
def __init__(self,_fragment,_flags):
|
def __init__(self,_fragment,_flags):
|
||||||
self.query = None
|
self.query = None
|
||||||
|
|
@ -1630,6 +1630,14 @@ class xrfragment_XRF:
|
||||||
if (_this.matchObj is not None):
|
if (_this.matchObj is not None):
|
||||||
v.int = Std.parseInt(_hx_str)
|
v.int = Std.parseInt(_hx_str)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def set(flag,flags):
|
||||||
|
return (flags | flag)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def unset(flag,flags):
|
||||||
|
return (flags & ~flag)
|
||||||
|
|
||||||
|
|
||||||
Math.NEGATIVE_INFINITY = float("-inf")
|
Math.NEGATIVE_INFINITY = float("-inf")
|
||||||
Math.POSITIVE_INFINITY = float("inf")
|
Math.POSITIVE_INFINITY = float("inf")
|
||||||
|
|
@ -1647,13 +1655,20 @@ xrfragment_XRF.ROUNDROBIN = 16
|
||||||
xrfragment_XRF.BROWSER_OVERRIDE = 32
|
xrfragment_XRF.BROWSER_OVERRIDE = 32
|
||||||
xrfragment_XRF.PV_OVERRIDE = 64
|
xrfragment_XRF.PV_OVERRIDE = 64
|
||||||
xrfragment_XRF.PV_EXECUTE = 128
|
xrfragment_XRF.PV_EXECUTE = 128
|
||||||
|
xrfragment_XRF.T_COLOR = 256
|
||||||
xrfragment_XRF.T_INT = 512
|
xrfragment_XRF.T_INT = 512
|
||||||
|
xrfragment_XRF.T_FLOAT = 1024
|
||||||
xrfragment_XRF.T_VECTOR2 = 2048
|
xrfragment_XRF.T_VECTOR2 = 2048
|
||||||
xrfragment_XRF.T_VECTOR3 = 4096
|
xrfragment_XRF.T_VECTOR3 = 4096
|
||||||
xrfragment_XRF.T_URL = 8192
|
xrfragment_XRF.T_URL = 8192
|
||||||
xrfragment_XRF.T_PREDEFINED_VIEW = 16384
|
xrfragment_XRF.T_PREDEFINED_VIEW = 16384
|
||||||
xrfragment_XRF.T_STRING = 32768
|
xrfragment_XRF.T_STRING = 32768
|
||||||
xrfragment_XRF.T_STRING_OBJ = 65536
|
xrfragment_XRF.T_STRING_OBJ = 65536
|
||||||
|
xrfragment_XRF.T_STRING_OBJ_PROP = 131072
|
||||||
xrfragment_XRF.isColor = EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","")
|
xrfragment_XRF.isColor = EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","")
|
||||||
xrfragment_XRF.isInt = EReg("^[0-9]+$","")
|
xrfragment_XRF.isInt = EReg("^[0-9]+$","")
|
||||||
xrfragment_XRF.isFloat = EReg("^[0-9]+\\.[0-9]+$","")
|
xrfragment_XRF.isFloat = EReg("^[0-9]+\\.[0-9]+$","")
|
||||||
|
xrfragment_XRF.isVector = EReg("([,]+|\\w)","")
|
||||||
|
xrfragment_XRF.isUrl = EReg("(://)?\\..*","")
|
||||||
|
xrfragment_XRF.isUrlOrPretypedView = EReg("(^#|://)?\\..*","")
|
||||||
|
xrfragment_XRF.isString = EReg(".*","")
|
||||||
50
doc/RFC.md
50
doc/RFC.md
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
> version 1.0.0
|
> version 1.0.0
|
||||||
|
|
||||||
date: 2023-04-07T13:41:47+0200<br>
|
date: 2023-04-27T22:44:39+0200<br>
|
||||||
[](https://github.com/coderofsalvation/xrfragment/actions)
|
[](https://github.com/coderofsalvation/xrfragment/actions)
|
||||||
|
|
||||||
# XRFragment Grammar
|
# XRFragment Grammar
|
||||||
|
|
@ -40,58 +40,10 @@ date: 2023-04-07T13:41:47+0200<br>
|
||||||
1. fragment-values are urlencoded (space becomes `+` using `encodeUriComponent` e.g.)
|
1. fragment-values are urlencoded (space becomes `+` using `encodeUriComponent` e.g.)
|
||||||
1. every recognized fragment key/value-pair is added to a central map/associative array/object
|
1. every recognized fragment key/value-pair is added to a central map/associative array/object
|
||||||
|
|
||||||
# XR Fragments (key/value params)
|
|
||||||
|
|
||||||
> ⛁ = define in 3D asset-file (as custom property or default projection)<br>
|
|
||||||
> ☇ = mutable, using navigator URI (`document.location.href` e.g.)<br>
|
|
||||||
|
|
||||||
| param | type | scope(s) | category | notes |
|
|
||||||
|---------|---------------|-------|--------------------|---------------------------------|
|
|
||||||
| prio | int (-10..1) | ⛁ | Asset loading / linking | \#static allow client to ignore lower-prio objects in the renderloop, to compensate frame-drop/cpu/gpu-overload scenario’s |
|
|
||||||
| pos | 3D vector | ⛁ ☇ |HREF navigation/portals | |
|
|
||||||
| q | string | ⛁ |Query Selector | |
|
|
||||||
|
|
||||||
|
|
||||||
# XR Fragments parser
|
# XR Fragments parser
|
||||||
|
|
||||||
> icanhazcode? yes, see [Parser.hx](https://github.com/coderofsalvation/xrfragment/blob/main/src/xrfragment/Parser.hx)
|
> icanhazcode? yes, see [Parser.hx](https://github.com/coderofsalvation/xrfragment/blob/main/src/xrfragment/Parser.hx)
|
||||||
the gist of it:
|
the gist of it:
|
||||||
|
|
||||||
1. check if param exist
|
1. check if param exist
|
||||||
1. each key has a regex to validate its value-type (see regexes)
|
|
||||||
1. extract the type
|
|
||||||
1. use `|` on stringvalues, to split multiple values
|
|
||||||
1. for each multiple value, guess the type
|
|
||||||
1. `,` assumes 1D/2D/3D vector-values like x[,y[,z]]
|
|
||||||
1. parseFloat(..) and parseInt(..) is applied to vector/float and int values
|
|
||||||
1. anything else will be treated as string-value
|
|
||||||
1. incompatible value-types will be dropped / not used
|
|
||||||
|
|
||||||
|
|
||||||
> the xrfragment specification should stay simple enough
|
|
||||||
|
|
||||||
> for anyone to write a parser using either regexes or grammar/lexers
|
|
||||||
|
|
||||||
> therefore expressions/comprehensions are not supported (max wildcard/comparison operators for queries e.g.)
|
|
||||||
|
|
||||||
# Parser Value types
|
|
||||||
|
|
||||||
| type | info | format | example |
|
|
||||||
|------|------|--------|----------------------------------|
|
|
||||||
|vector| x,y,z| comma-separated | #pos=1,2,3 |
|
|
||||||
|string| color| FFFFFF (hex) | #fog=5m,FFAACC |
|
|
||||||
|string| | | #q=-sun |
|
|
||||||
|int | | [-]x[xxxxx] | #price:>=100 |
|
|
||||||
|float | | [-]x[.xxxx] (ieee)| #prio=-20 |
|
|
||||||
|array | mixed| \|-separated | #pos=0,0,0\|90,0,0 |
|
|
||||||
|
|
||||||
|
|
||||||
> rule for thumb: type-limitations will piggyback JSON limitations (IEEE floatsize e.g.)
|
|
||||||
Regexes:
|
|
||||||
|
|
||||||
1. hex colors are detected using regex `/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/`
|
|
||||||
1. integers are detected using regex `/^[0-9]+$/`
|
|
||||||
1. floats are detected using regex `/^[0-9]+\.[0-9]+$/`
|
|
||||||
1. vectors are detected using regex `/[,]/` (but can also be an string referring to an entity-ID in the asset)
|
|
||||||
1. anything else is string `/.*/`
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,12 @@ BEGIN{
|
||||||
PV_OVERRIDE="🔓"
|
PV_OVERRIDE="🔓"
|
||||||
BROWSER_OVERRIDE="👩"
|
BROWSER_OVERRIDE="👩"
|
||||||
PROMPT="✋?"
|
PROMPT="✋?"
|
||||||
|
BROWSER_OVERRIDE_TOPLEVEL="🌐"
|
||||||
print ROUNDROBIN" = multiple values will be roundrobin'ed<br>"
|
print ROUNDROBIN" = multiple values will be roundrobin'ed<br>"
|
||||||
print ASSET" = immutable value(s) are defined in 3D asset<br>"
|
print ASSET" = value(s) can only defined in 3D asset (immutable)<br>"
|
||||||
print PV_OVERRIDE" = value(s) can be overwritten by [predefined_view](#predefined_view)<br>"
|
print PV_OVERRIDE" = value(s) can be overwritten by [predefined_view](#predefined_view)<br>"
|
||||||
print BROWSER_OVERRIDE" = value(s) can be overwritten by [URL browser_override](#browser_override)<br>"
|
print BROWSER_OVERRIDE" = value(s) can be overwritten by [URL browser_override](#browser_override)<br>"
|
||||||
print PROMPT" = value(s) can be overwritten only after confirmation of user<br><br>"
|
print PROMPT" = value(s) can be overwritten only offering confirmation/undo to user<br><br>"
|
||||||
print "| fragment | type | write access | scope |"
|
print "| fragment | type | write access | scope |"
|
||||||
print "|----------|------|--------------|-------|"
|
print "|----------|------|--------------|-------|"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package xrfragment;
|
package xrfragment;
|
||||||
|
|
||||||
|
@:expose // <- makes the class reachable from plain JavaScript
|
||||||
|
@:keep // <- avoids accidental removal by dead code elimination
|
||||||
class XRF {
|
class XRF {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -341,15 +341,14 @@ xrfragment_Parser.parse = function(key,value,resultMap) {
|
||||||
Frag_h["t"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;
|
Frag_h["t"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;
|
||||||
Frag_h["gravity"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;
|
Frag_h["gravity"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;
|
||||||
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;
|
Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;
|
||||||
Frag_h["scroll"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;
|
|
||||||
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.BROWSER_OVERRIDE;
|
Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.BROWSER_OVERRIDE;
|
||||||
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;
|
Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;
|
||||||
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.BROWSER_OVERRIDE;
|
Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.BROWSER_OVERRIDE;
|
||||||
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
||||||
Frag_h["SPFX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
||||||
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
||||||
Frag_h["description"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
Frag_h["description"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;
|
||||||
Frag_h["src_session"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT;
|
Frag_h["session"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT;
|
||||||
if(value.length == 0 && !Object.prototype.hasOwnProperty.call(Frag_h,key)) {
|
if(value.length == 0 && !Object.prototype.hasOwnProperty.call(Frag_h,key)) {
|
||||||
resultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE);
|
resultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE);
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -361,12 +360,12 @@ xrfragment_Parser.parse = function(key,value,resultMap) {
|
||||||
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
|
if(Object.prototype.hasOwnProperty.call(Frag_h,key)) {
|
||||||
var v = new xrfragment_XRF(key,Frag_h[key]);
|
var v = new xrfragment_XRF(key,Frag_h[key]);
|
||||||
if(!v.validate(value)) {
|
if(!v.validate(value)) {
|
||||||
console.log("src/xrfragment/Parser.hx:75:","[ i ] fragment '" + key + "' has incompatible value (" + value + ")");
|
console.log("src/xrfragment/Parser.hx:74:","[ i ] fragment '" + key + "' has incompatible value (" + value + ")");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
resultMap[key] = v;
|
resultMap[key] = v;
|
||||||
} else {
|
} else {
|
||||||
console.log("src/xrfragment/Parser.hx:79:","[ i ] fragment '" + key + "' does not exist or has no type typed (yet)");
|
console.log("src/xrfragment/Parser.hx:78:","[ i ] fragment '" + key + "' does not exist or has no type typed (yet)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -587,11 +586,17 @@ xrfragment_URI.parse = function(qs,browser_override) {
|
||||||
}
|
}
|
||||||
return resultMap;
|
return resultMap;
|
||||||
};
|
};
|
||||||
var xrfragment_XRF = function(_fragment,_flags) {
|
var xrfragment_XRF = $hx_exports["xrfragment"]["XRF"] = function(_fragment,_flags) {
|
||||||
this.fragment = _fragment;
|
this.fragment = _fragment;
|
||||||
this.flags = _flags;
|
this.flags = _flags;
|
||||||
};
|
};
|
||||||
xrfragment_XRF.__name__ = true;
|
xrfragment_XRF.__name__ = true;
|
||||||
|
xrfragment_XRF.set = function(flag,flags) {
|
||||||
|
return flags | flag;
|
||||||
|
};
|
||||||
|
xrfragment_XRF.unset = function(flag,flags) {
|
||||||
|
return flags & ~flag;
|
||||||
|
};
|
||||||
xrfragment_XRF.prototype = {
|
xrfragment_XRF.prototype = {
|
||||||
is: function(flag) {
|
is: function(flag) {
|
||||||
return (this.flags & flag) != 0;
|
return (this.flags & flag) != 0;
|
||||||
|
|
@ -675,16 +680,23 @@ xrfragment_XRF.ROUNDROBIN = 16;
|
||||||
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
xrfragment_XRF.BROWSER_OVERRIDE = 32;
|
||||||
xrfragment_XRF.PV_OVERRIDE = 64;
|
xrfragment_XRF.PV_OVERRIDE = 64;
|
||||||
xrfragment_XRF.PV_EXECUTE = 128;
|
xrfragment_XRF.PV_EXECUTE = 128;
|
||||||
|
xrfragment_XRF.T_COLOR = 256;
|
||||||
xrfragment_XRF.T_INT = 512;
|
xrfragment_XRF.T_INT = 512;
|
||||||
|
xrfragment_XRF.T_FLOAT = 1024;
|
||||||
xrfragment_XRF.T_VECTOR2 = 2048;
|
xrfragment_XRF.T_VECTOR2 = 2048;
|
||||||
xrfragment_XRF.T_VECTOR3 = 4096;
|
xrfragment_XRF.T_VECTOR3 = 4096;
|
||||||
xrfragment_XRF.T_URL = 8192;
|
xrfragment_XRF.T_URL = 8192;
|
||||||
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
xrfragment_XRF.T_PREDEFINED_VIEW = 16384;
|
||||||
xrfragment_XRF.T_STRING = 32768;
|
xrfragment_XRF.T_STRING = 32768;
|
||||||
xrfragment_XRF.T_STRING_OBJ = 65536;
|
xrfragment_XRF.T_STRING_OBJ = 65536;
|
||||||
|
xrfragment_XRF.T_STRING_OBJ_PROP = 131072;
|
||||||
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","");
|
||||||
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
xrfragment_XRF.isInt = new EReg("^[0-9]+$","");
|
||||||
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$","");
|
||||||
|
xrfragment_XRF.isVector = new EReg("([,]+|\\w)","");
|
||||||
|
xrfragment_XRF.isUrl = new EReg("(://)?\\..*","");
|
||||||
|
xrfragment_XRF.isUrlOrPretypedView = new EReg("(^#|://)?\\..*","");
|
||||||
|
xrfragment_XRF.isString = new EReg(".*","");
|
||||||
Test.main();
|
Test.main();
|
||||||
})({});
|
})({});
|
||||||
var xrfragment = $hx_exports["xrfragment"];
|
var xrfragment = $hx_exports["xrfragment"];
|
||||||
|
|
|
||||||
|
|
@ -1422,15 +1422,14 @@ class xrfragment_Parser:
|
||||||
Frag.h["t"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.ROUNDROBIN) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.BROWSER_OVERRIDE)
|
Frag.h["t"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.ROUNDROBIN) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.BROWSER_OVERRIDE)
|
||||||
Frag.h["gravity"] = ((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3)
|
Frag.h["gravity"] = ((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3)
|
||||||
Frag.h["physics"] = ((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3)
|
Frag.h["physics"] = ((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR3)
|
||||||
Frag.h["scroll"] = ((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_STRING)
|
|
||||||
Frag.h["fov"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_INT) | xrfragment_XRF.BROWSER_OVERRIDE)
|
Frag.h["fov"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_INT) | xrfragment_XRF.BROWSER_OVERRIDE)
|
||||||
Frag.h["clip"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.BROWSER_OVERRIDE)
|
Frag.h["clip"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_VECTOR2) | xrfragment_XRF.BROWSER_OVERRIDE)
|
||||||
Frag.h["fog"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_STRING) | xrfragment_XRF.BROWSER_OVERRIDE)
|
Frag.h["fog"] = (((xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.T_STRING) | xrfragment_XRF.BROWSER_OVERRIDE)
|
||||||
Frag.h["namespace"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
Frag.h["namespace"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
||||||
Frag.h["SPFX"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
Frag.h["SPDX"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
||||||
Frag.h["unit"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
Frag.h["unit"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
||||||
Frag.h["description"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
Frag.h["description"] = (xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING)
|
||||||
Frag.h["src_session"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.T_URL) | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.BROWSER_OVERRIDE) | xrfragment_XRF.PROMPT)
|
Frag.h["session"] = ((((xrfragment_XRF.ASSET | xrfragment_XRF.T_URL) | xrfragment_XRF.PV_OVERRIDE) | xrfragment_XRF.BROWSER_OVERRIDE) | xrfragment_XRF.PROMPT)
|
||||||
if ((len(value) == 0) and (not (key in Frag.h))):
|
if ((len(value) == 0) and (not (key in Frag.h))):
|
||||||
value1 = xrfragment_XRF(key,(xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE))
|
value1 = xrfragment_XRF(key,(xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE))
|
||||||
setattr(resultMap,(("_hx_" + key) if ((key in python_Boot.keywords)) else (("_hx_" + key) if (((((len(key) > 2) and ((ord(key[0]) == 95))) and ((ord(key[1]) == 95))) and ((ord(key[(len(key) - 1)]) != 95)))) else key)),value1)
|
setattr(resultMap,(("_hx_" + key) if ((key in python_Boot.keywords)) else (("_hx_" + key) if (((((len(key) > 2) and ((ord(key[0]) == 95))) and ((ord(key[1]) == 95))) and ((ord(key[(len(key) - 1)]) != 95)))) else key)),value1)
|
||||||
|
|
@ -1678,7 +1677,7 @@ class xrfragment_XRF:
|
||||||
__slots__ = ("fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query")
|
__slots__ = ("fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query")
|
||||||
_hx_fields = ["fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query"]
|
_hx_fields = ["fragment", "flags", "x", "y", "z", "color", "string", "int", "float", "args", "query"]
|
||||||
_hx_methods = ["is", "validate", "guessType"]
|
_hx_methods = ["is", "validate", "guessType"]
|
||||||
_hx_statics = ["ASSET", "PROP_BIND", "QUERY_OPERATOR", "PROMPT", "ROUNDROBIN", "BROWSER_OVERRIDE", "PV_OVERRIDE", "PV_EXECUTE", "T_INT", "T_VECTOR2", "T_VECTOR3", "T_URL", "T_PREDEFINED_VIEW", "T_STRING", "T_STRING_OBJ", "isColor", "isInt", "isFloat"]
|
_hx_statics = ["ASSET", "PROP_BIND", "QUERY_OPERATOR", "PROMPT", "ROUNDROBIN", "BROWSER_OVERRIDE", "PV_OVERRIDE", "PV_EXECUTE", "T_COLOR", "T_INT", "T_FLOAT", "T_VECTOR2", "T_VECTOR3", "T_URL", "T_PREDEFINED_VIEW", "T_STRING", "T_STRING_OBJ", "T_STRING_OBJ_PROP", "isColor", "isInt", "isFloat", "isVector", "isUrl", "isUrlOrPretypedView", "isString", "set", "unset"]
|
||||||
|
|
||||||
def __init__(self,_fragment,_flags):
|
def __init__(self,_fragment,_flags):
|
||||||
self.query = None
|
self.query = None
|
||||||
|
|
@ -1745,6 +1744,14 @@ class xrfragment_XRF:
|
||||||
if (_this.matchObj is not None):
|
if (_this.matchObj is not None):
|
||||||
v.int = Std.parseInt(_hx_str)
|
v.int = Std.parseInt(_hx_str)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def set(flag,flags):
|
||||||
|
return (flags | flag)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def unset(flag,flags):
|
||||||
|
return (flags & ~flag)
|
||||||
|
|
||||||
|
|
||||||
Math.NEGATIVE_INFINITY = float("-inf")
|
Math.NEGATIVE_INFINITY = float("-inf")
|
||||||
Math.POSITIVE_INFINITY = float("inf")
|
Math.POSITIVE_INFINITY = float("inf")
|
||||||
|
|
@ -1763,15 +1770,22 @@ xrfragment_XRF.ROUNDROBIN = 16
|
||||||
xrfragment_XRF.BROWSER_OVERRIDE = 32
|
xrfragment_XRF.BROWSER_OVERRIDE = 32
|
||||||
xrfragment_XRF.PV_OVERRIDE = 64
|
xrfragment_XRF.PV_OVERRIDE = 64
|
||||||
xrfragment_XRF.PV_EXECUTE = 128
|
xrfragment_XRF.PV_EXECUTE = 128
|
||||||
|
xrfragment_XRF.T_COLOR = 256
|
||||||
xrfragment_XRF.T_INT = 512
|
xrfragment_XRF.T_INT = 512
|
||||||
|
xrfragment_XRF.T_FLOAT = 1024
|
||||||
xrfragment_XRF.T_VECTOR2 = 2048
|
xrfragment_XRF.T_VECTOR2 = 2048
|
||||||
xrfragment_XRF.T_VECTOR3 = 4096
|
xrfragment_XRF.T_VECTOR3 = 4096
|
||||||
xrfragment_XRF.T_URL = 8192
|
xrfragment_XRF.T_URL = 8192
|
||||||
xrfragment_XRF.T_PREDEFINED_VIEW = 16384
|
xrfragment_XRF.T_PREDEFINED_VIEW = 16384
|
||||||
xrfragment_XRF.T_STRING = 32768
|
xrfragment_XRF.T_STRING = 32768
|
||||||
xrfragment_XRF.T_STRING_OBJ = 65536
|
xrfragment_XRF.T_STRING_OBJ = 65536
|
||||||
|
xrfragment_XRF.T_STRING_OBJ_PROP = 131072
|
||||||
xrfragment_XRF.isColor = EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","")
|
xrfragment_XRF.isColor = EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","")
|
||||||
xrfragment_XRF.isInt = EReg("^[0-9]+$","")
|
xrfragment_XRF.isInt = EReg("^[0-9]+$","")
|
||||||
xrfragment_XRF.isFloat = EReg("^[0-9]+\\.[0-9]+$","")
|
xrfragment_XRF.isFloat = EReg("^[0-9]+\\.[0-9]+$","")
|
||||||
|
xrfragment_XRF.isVector = EReg("([,]+|\\w)","")
|
||||||
|
xrfragment_XRF.isUrl = EReg("(://)?\\..*","")
|
||||||
|
xrfragment_XRF.isUrlOrPretypedView = EReg("(^#|://)?\\..*","")
|
||||||
|
xrfragment_XRF.isString = EReg(".*","")
|
||||||
|
|
||||||
Test.main()
|
Test.main()
|
||||||
|
|
|
||||||
|
|
@ -16,3 +16,6 @@ print( XF.URI.parse('://foo.com/1.gltf#pos=1.0,2.0,3.0&q=-.foo&t=1,100',true) );
|
||||||
let q = new XF.Query();
|
let q = new XF.Query();
|
||||||
print( q.parse("-.foo -plane") )
|
print( q.parse("-.foo -plane") )
|
||||||
print( q.parse("price:>2") )
|
print( q.parse("price:>2") )
|
||||||
|
|
||||||
|
frags = XF.URI.parse('#my_view&t=1,2')
|
||||||
|
console.dir(XF)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue