update documentation

This commit is contained in:
Leon van Kammen 2023-04-28 17:16:13 +02:00
parent c969197470
commit 751c040651
4 changed files with 75 additions and 52 deletions

View file

@ -1,19 +1,28 @@
BEGIN{
ROUNDROBIN="🎲"
ASSET="🔒"
PV_OVERRIDE="🔓"
OVERRIDE="🔓"
PV_OVERRIDE="💥"
BROWSER_OVERRIDE="👩"
PROMPT="✋?"
BROWSER_OVERRIDE_TOPLEVEL="🌐"
print ROUNDROBIN" = multiple values will be roundrobin'ed<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 BROWSER_OVERRIDE" = value(s) can be overwritten by [URL browser_override](#browser_override)<br>"
print PROMPT" = value(s) can be overwritten only offering confirmation/undo to user<br><br>"
print "| fragment | type | write access | scope |"
EMBED_OVERRIDE="🔗"
print "| fragment | type | access | scope |"
print "|----------|------|--------------|-------|"
}
END{
print ""
print ASSET" = value(s) can only defined in 3D asset (immutable)<br>"
print OVERRIDE" = value(s) can be overwritten in certain context<br>"
print ROUNDROBIN" = multiple values will be roundrobin'ed<br>"
print PV_OVERRIDE" = value(s) can be overwritten by [predefined_view](#predefined_view)<br>"
print BROWSER_OVERRIDE" = value(s) can be overwritten when user clicks `href` (value) or top-level URL change(see [How it works](#How%20it%20works))<br>"
print EMBED_OVERRIDE" = value(s) can be overwritten when 3D asset is embedded/linked as `src` value<br>"
print PROMPT" = value(s) can be overwritten by offering confirmation/undo to user<br><br>"
print ""
print "for more info see [How it works](#How%20it%20works)"
}
/category:/ {
$1=$2=""
sub(/^[[:space:]]+/, "", $0 ) # remove leading spaces
@ -26,7 +35,7 @@ BEGIN{
gsub(/.*\("/,"",$1)
gsub(/".*/,"",$1)
type="string"
perms=""
perms = $0 ~ /OVERRIDE/ ? OVERRIDE : ASSET
frag=$1
$1=""
if( $0 ~ /T_INT/ ) type="int"
@ -36,9 +45,9 @@ BEGIN{
if( $0 ~ /T_URL/ ) type="[url](#url ) "
if( $0 ~ /T_PREDEFINED_VIEW/ ) type="[predefined view](#predefined_view ) "
if( $0 ~ /ROUNDROBIN/ ) perms=perms" "ROUNDROBIN
if( $0 ~ /ASSET/ ) perms=perms" "ASSET
if( $0 ~ /PV_OVERRIDE/ ) perms=perms" "PV_OVERRIDE
if( $0 ~ /BROWSER_OVERRIDE/ ) perms=perms" "BROWSER_OVERRIDE
if( $0 ~ /EMBED_OVERRIDE/ ) perms=perms" "EMBED_OVERRIDE
if( $0 ~ /PROMPT/ ) perms=perms" "PROMPT
print "| **"frag"** |" type "|" perms "|" scope "|"
}

File diff suppressed because one or more lines are too long

View file

@ -20,26 +20,26 @@ class Parser {
Frag.set("src", XRF.ASSET | XRF.T_URL );
// category: href navigation / portals / teleporting
Frag.set("pos", XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 | XRF.T_STRING_OBJ );
Frag.set("pos", XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 | XRF.T_STRING_OBJ | XRF.EMBED_OVERRIDE );
Frag.set("href", XRF.ASSET | XRF.T_URL | XRF.T_PREDEFINED_VIEW );
// category: query selector / object manipulation
Frag.set("q", XRF.PV_OVERRIDE | XRF.T_STRING );
Frag.set("scale", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_INT );
Frag.set("rot", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 );
Frag.set("translate", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 );
Frag.set("visible", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_INT );
Frag.set("env", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING );
Frag.set("q", XRF.PV_OVERRIDE | XRF.T_STRING | XRF.EMBED_OVERRIDE );
Frag.set("scale", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_INT | XRF.EMBED_OVERRIDE );
Frag.set("rot", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 | XRF.EMBED_OVERRIDE );
Frag.set("translate", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR3 | XRF.EMBED_OVERRIDE );
Frag.set("visible", XRF.QUERY_OPERATOR | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_INT | XRF.EMBED_OVERRIDE );
Frag.set("env", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING | XRF.EMBED_OVERRIDE );
// category: animation
Frag.set("t", XRF.ASSET | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR2 | XRF.BROWSER_OVERRIDE );
Frag.set("gravity", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR3 );
Frag.set("physics", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR3 );
Frag.set("t", XRF.ASSET | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR2 | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE);
Frag.set("gravity", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR3 | XRF.EMBED_OVERRIDE );
Frag.set("physics", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR3 | XRF.EMBED_OVERRIDE );
// category: device / viewport settings
Frag.set("fov", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_INT | XRF.BROWSER_OVERRIDE );
Frag.set("clip", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR2 | XRF.BROWSER_OVERRIDE );
Frag.set("fog", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING | XRF.BROWSER_OVERRIDE );
Frag.set("fov", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_INT | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE );
Frag.set("clip", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR2 | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE );
Frag.set("fog", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE );
// category: author / metadata
Frag.set("namespace", XRF.ASSET | XRF.T_STRING );
@ -48,7 +48,7 @@ class Parser {
Frag.set("description", XRF.ASSET | XRF.T_STRING );
// category: multiparty
Frag.set("session", XRF.ASSET | XRF.T_URL | XRF.PV_OVERRIDE | XRF.BROWSER_OVERRIDE | XRF.PROMPT );
Frag.set("session", XRF.ASSET | XRF.T_URL | XRF.PV_OVERRIDE | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE | XRF.PROMPT );
/**
* # XR Fragments parser

View file

@ -16,21 +16,22 @@ class XRF {
public static var QUERY_OPERATOR:Int = 4; // fragment will be applied to result of queryselecto
public static var PROMPT:Int = 8; // ask user whether this fragment value can be changed
public static var ROUNDROBIN:Int = 16; // evaluation of this (multi) value can be roundrobined
public static var BROWSER_OVERRIDE:Int = 32; // fragment can be overriden by (manual) browser URI change
public static var PV_OVERRIDE:Int = 64; // fragment can be overriden when specified in predefined view value
public static var PV_EXECUTE:Int = 128; // fragment can be overriden by (manual) browser URI change
public static var BROWSER_OVERRIDE:Int = 32; // fragment can be overridden by (manual) browser URI change
public static var EMBED_OVERRIDE:Int = 64; // fragment can be overridden by an embedded URL
public static var PV_OVERRIDE:Int = 128; // fragment can be overridden when specified in predefined view value
public static var PV_EXECUTE:Int = 256; // fragment can be overridden by (manual) browser URI change
// high-level value-types (powers of 2)
public static var T_COLOR:Int = 256;
public static var T_INT:Int = 512;
public static var T_FLOAT:Int = 1024;
public static var T_VECTOR2:Int = 2048;
public static var T_VECTOR3:Int = 4096;
public static var T_URL:Int = 8192;
public static var T_PREDEFINED_VIEW:Int = 16384;
public static var T_STRING:Int = 32768;
public static var T_STRING_OBJ:Int = 65536;
public static var T_STRING_OBJ_PROP:Int = 131072;
public static var T_COLOR:Int = 8192;
public static var T_INT:Int = 16384;
public static var T_FLOAT:Int = 32768;
public static var T_VECTOR2:Int = 65536;
public static var T_VECTOR3:Int = 131072;
public static var T_URL:Int = 262144;
public static var T_PREDEFINED_VIEW:Int = 524288;
public static var T_STRING:Int = 1048576;
public static var T_STRING_OBJ:Int = 2097152;
public static var T_STRING_OBJ_PROP:Int = 4194304;
// regexes
public static var isColor:EReg = ~/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; // 1. hex colors are detected using regex `/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/`