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{ BEGIN{
ROUNDROBIN="🎲" ROUNDROBIN="🎲"
ASSET="🔒" ASSET="🔒"
PV_OVERRIDE="🔓" OVERRIDE="🔓"
PV_OVERRIDE="💥"
BROWSER_OVERRIDE="👩" BROWSER_OVERRIDE="👩"
PROMPT="✋?" PROMPT="✋?"
BROWSER_OVERRIDE_TOPLEVEL="🌐" EMBED_OVERRIDE="🔗"
print ROUNDROBIN" = multiple values will be roundrobin'ed<br>" print "| fragment | type | access | scope |"
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 |"
print "|----------|------|--------------|-------|" 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:/ { /category:/ {
$1=$2="" $1=$2=""
sub(/^[[:space:]]+/, "", $0 ) # remove leading spaces sub(/^[[:space:]]+/, "", $0 ) # remove leading spaces
@ -26,7 +35,7 @@ BEGIN{
gsub(/.*\("/,"",$1) gsub(/.*\("/,"",$1)
gsub(/".*/,"",$1) gsub(/".*/,"",$1)
type="string" type="string"
perms="" perms = $0 ~ /OVERRIDE/ ? OVERRIDE : ASSET
frag=$1 frag=$1
$1="" $1=""
if( $0 ~ /T_INT/ ) type="int" if( $0 ~ /T_INT/ ) type="int"
@ -36,9 +45,9 @@ BEGIN{
if( $0 ~ /T_URL/ ) type="[url](#url ) " if( $0 ~ /T_URL/ ) type="[url](#url ) "
if( $0 ~ /T_PREDEFINED_VIEW/ ) type="[predefined view](#predefined_view ) " if( $0 ~ /T_PREDEFINED_VIEW/ ) type="[predefined view](#predefined_view ) "
if( $0 ~ /ROUNDROBIN/ ) perms=perms" "ROUNDROBIN if( $0 ~ /ROUNDROBIN/ ) perms=perms" "ROUNDROBIN
if( $0 ~ /ASSET/ ) perms=perms" "ASSET
if( $0 ~ /PV_OVERRIDE/ ) perms=perms" "PV_OVERRIDE if( $0 ~ /PV_OVERRIDE/ ) perms=perms" "PV_OVERRIDE
if( $0 ~ /BROWSER_OVERRIDE/ ) perms=perms" "BROWSER_OVERRIDE if( $0 ~ /BROWSER_OVERRIDE/ ) perms=perms" "BROWSER_OVERRIDE
if( $0 ~ /EMBED_OVERRIDE/ ) perms=perms" "EMBED_OVERRIDE
if( $0 ~ /PROMPT/ ) perms=perms" "PROMPT if( $0 ~ /PROMPT/ ) perms=perms" "PROMPT
print "| **"frag"** |" type "|" perms "|" scope "|" print "| **"frag"** |" type "|" perms "|" scope "|"
} }

File diff suppressed because one or more lines are too long

View file

@ -15,31 +15,31 @@ class Parser {
// category: asset loading linking // category: asset loading linking
Frag.set("prio", XRF.ASSET | XRF.T_INT ); Frag.set("prio", XRF.ASSET | XRF.T_INT );
Frag.set("#", XRF.ASSET | XRF.T_PREDEFINED_VIEW ); Frag.set("#", XRF.ASSET | XRF.T_PREDEFINED_VIEW );
Frag.set("class", XRF.ASSET | XRF.T_STRING ); Frag.set("class", XRF.ASSET | XRF.T_STRING );
Frag.set("src", XRF.ASSET | XRF.T_URL ); Frag.set("src", XRF.ASSET | XRF.T_URL );
// category: href navigation / portals / teleporting // 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 ); Frag.set("href", XRF.ASSET | XRF.T_URL | XRF.T_PREDEFINED_VIEW );
// category: query selector / object manipulation // category: query selector / object manipulation
Frag.set("q", 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 ); 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 ); 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 ); 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 ); 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 ); Frag.set("env", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING | XRF.EMBED_OVERRIDE );
// category: animation // category: animation
Frag.set("t", XRF.ASSET | XRF.PV_OVERRIDE | XRF.ROUNDROBIN | XRF.T_VECTOR2 | XRF.BROWSER_OVERRIDE ); 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 ); 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 ); Frag.set("physics", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_VECTOR3 | XRF.EMBED_OVERRIDE );
// category: device / viewport settings // category: device / viewport settings
Frag.set("fov", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_INT | 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 ); 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 ); Frag.set("fog", XRF.ASSET | XRF.PV_OVERRIDE | XRF.T_STRING | XRF.BROWSER_OVERRIDE | XRF.EMBED_OVERRIDE );
// category: author / metadata // category: author / metadata
Frag.set("namespace", XRF.ASSET | XRF.T_STRING ); Frag.set("namespace", XRF.ASSET | XRF.T_STRING );
@ -48,7 +48,7 @@ class Parser {
Frag.set("description", XRF.ASSET | XRF.T_STRING ); Frag.set("description", XRF.ASSET | XRF.T_STRING );
// category: multiparty // 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 * # XR Fragments parser

View file

@ -11,26 +11,27 @@ class XRF {
// public static inline readonly ASSET // public static inline readonly ASSET
// scope types (powers of 2) // scope types (powers of 2)
public static var ASSET:Int = 1; // fragment is immutable public static var ASSET:Int = 1; // fragment is immutable
public static var PROP_BIND:Int = 2; // fragment binds/controls one property with another public static var PROP_BIND:Int = 2; // fragment binds/controls one property with another
public static var QUERY_OPERATOR:Int = 4; // fragment will be applied to result of queryselecto 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 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 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 BROWSER_OVERRIDE:Int = 32; // fragment can be overridden 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 EMBED_OVERRIDE:Int = 64; // fragment can be overridden by an embedded URL
public static var PV_EXECUTE:Int = 128; // fragment can be overriden by (manual) browser URI change 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) // high-level value-types (powers of 2)
public static var T_COLOR:Int = 256; public static var T_COLOR:Int = 8192;
public static var T_INT:Int = 512; public static var T_INT:Int = 16384;
public static var T_FLOAT:Int = 1024; public static var T_FLOAT:Int = 32768;
public static var T_VECTOR2:Int = 2048; public static var T_VECTOR2:Int = 65536;
public static var T_VECTOR3:Int = 4096; public static var T_VECTOR3:Int = 131072;
public static var T_URL:Int = 8192; public static var T_URL:Int = 262144;
public static var T_PREDEFINED_VIEW:Int = 16384; public static var T_PREDEFINED_VIEW:Int = 524288;
public static var T_STRING:Int = 32768; public static var T_STRING:Int = 1048576;
public static var T_STRING_OBJ:Int = 65536; public static var T_STRING_OBJ:Int = 2097152;
public static var T_STRING_OBJ_PROP:Int = 131072; public static var T_STRING_OBJ_PROP:Int = 4194304;
// regexes // 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})$/` 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})$/`