mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-04 08:50:33 +08:00
Integer => IntegerEntity, No more primitive
This commit is contained in:
66
dist/ueblueprint.js
vendored
66
dist/ueblueprint.js
vendored
@@ -114,49 +114,15 @@ class Context {
|
||||
}
|
||||
}
|
||||
|
||||
class Primitive {
|
||||
|
||||
toString() {
|
||||
return "Unimplemented for " + this.constructor.name
|
||||
}
|
||||
}
|
||||
|
||||
class Integer extends Primitive {
|
||||
|
||||
constructor(value) {
|
||||
super();
|
||||
// Using constructor equality and not instanceof in order to consider both primitives and objects
|
||||
if (value?.constructor === String) {
|
||||
value = Number(value);
|
||||
}
|
||||
if (value?.constructor === Number) {
|
||||
value = Math.round(value);
|
||||
}
|
||||
/** @type {number} */
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
valueOf() {
|
||||
this.value;
|
||||
}
|
||||
|
||||
toString() {
|
||||
return this.value.toString()
|
||||
}
|
||||
}
|
||||
|
||||
class TypeInitialization {
|
||||
|
||||
static sanitize(value) {
|
||||
if (!(value instanceof Object)) {
|
||||
return value // Is already primitive
|
||||
}
|
||||
if (value instanceof Boolean || value instanceof Integer || value instanceof Number) {
|
||||
if (value instanceof Boolean || value instanceof Number || value instanceof String) {
|
||||
return value.valueOf()
|
||||
}
|
||||
if (value instanceof String) {
|
||||
return value.toString()
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
@@ -1291,6 +1257,26 @@ class GraphNode extends SelectableDraggable {
|
||||
|
||||
customElements.define('u-node', GraphNode);
|
||||
|
||||
class IntegerEntity extends Entity {
|
||||
|
||||
static attributes = {
|
||||
value: Number
|
||||
}
|
||||
|
||||
getAttributes() {
|
||||
return IntegerEntity.attributes
|
||||
}
|
||||
|
||||
constructor(options = {}) {
|
||||
super(options);
|
||||
this.value = Math.round(value);
|
||||
}
|
||||
|
||||
toString() {
|
||||
return this.value.toString()
|
||||
}
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
|
||||
function getDefaultExportFromCjs (x) {
|
||||
@@ -1316,7 +1302,7 @@ class Grammar {
|
||||
None = _ => P.string("None").map(_ => new ObjectReferenceEntity({ type: "None", path: "" })).desc("none")
|
||||
Boolean = _ => P.alt(P.string("True"), P.string("False")).map(v => v === "True" ? true : false).desc("either True or False")
|
||||
Number = _ => P.regex(/[0-9]+(?:\.[0-9]+)?/).map(Number).desc("a number")
|
||||
Integer = _ => P.regex(/[0-9]+/).map(v => new Integer(v)).desc("an integer")
|
||||
Integer = _ => P.regex(/[0-9]+/).map(v => new IntegerEntity({ value: v })).desc("an integer")
|
||||
String = _ => P.regex(/(?:[^"\\]|\\")*/).wrap(P.string('"'), P.string('"')).desc('string (with possibility to escape the quote using \")')
|
||||
Word = _ => P.regex(/[a-zA-Z]+/).desc("a word")
|
||||
Guid = _ => P.regex(/[0-9a-zA-Z]{32}/).map(v => new GuidEntity({ value: v })).desc("32 digit hexadecimal (accepts all the letters for safety) value")
|
||||
@@ -1371,7 +1357,7 @@ class Grammar {
|
||||
return r.Boolean
|
||||
case Number:
|
||||
return r.Number
|
||||
case Integer:
|
||||
case IntegerEntity:
|
||||
return r.Integer
|
||||
case String:
|
||||
return r.String
|
||||
@@ -1512,9 +1498,6 @@ class Serializer {
|
||||
if (value instanceof Entity) {
|
||||
return serialize(value)
|
||||
}
|
||||
if (value instanceof Primitive) {
|
||||
return value.toString()
|
||||
}
|
||||
}
|
||||
|
||||
subWrite(key, object) {
|
||||
@@ -2221,6 +2204,7 @@ SerializerFactory.registerSerializer(
|
||||
))
|
||||
);
|
||||
SerializerFactory.registerSerializer(PathSymbolEntity, new ToStringSerializer(PathSymbolEntity));
|
||||
SerializerFactory.registerSerializer(GuidEntity, new ToStringSerializer(GuidEntity));
|
||||
SerializerFactory.registerSerializer(GuidEntity, new ToStringSerializer(GuidEntity));
|
||||
SerializerFactory.registerSerializer(IntegerEntity, new ToStringSerializer(IntegerEntity));
|
||||
|
||||
export { Blueprint, GraphLink, GraphNode };
|
||||
|
||||
21
js/entity/IntegerEntity.js
Executable file
21
js/entity/IntegerEntity.js
Executable file
@@ -0,0 +1,21 @@
|
||||
import Entity from "./Entity"
|
||||
|
||||
export default class IntegerEntity extends Entity {
|
||||
|
||||
static attributes = {
|
||||
value: Number
|
||||
}
|
||||
|
||||
getAttributes() {
|
||||
return IntegerEntity.attributes
|
||||
}
|
||||
|
||||
constructor(options = {}) {
|
||||
super(options)
|
||||
this.value = Math.round(value)
|
||||
}
|
||||
|
||||
toString() {
|
||||
return this.value.toString()
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,12 @@
|
||||
import Integer from "./primitive/Integer"
|
||||
|
||||
export default class TypeInitialization {
|
||||
|
||||
static sanitize(value) {
|
||||
if (!(value instanceof Object)) {
|
||||
return value // Is already primitive
|
||||
}
|
||||
if (value instanceof Boolean || value instanceof Integer || value instanceof Number) {
|
||||
if (value instanceof Boolean || value instanceof Number || value instanceof String) {
|
||||
return value.valueOf()
|
||||
}
|
||||
if (value instanceof String) {
|
||||
return value.toString()
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
import Primitive from "./Primitive"
|
||||
|
||||
export default class Integer extends Primitive {
|
||||
|
||||
constructor(value) {
|
||||
super()
|
||||
// Using constructor equality and not instanceof in order to consider both primitives and objects
|
||||
if (value?.constructor === String) {
|
||||
value = Number(value)
|
||||
}
|
||||
if (value?.constructor === Number) {
|
||||
value = Math.round(value)
|
||||
}
|
||||
/** @type {number} */
|
||||
this.value = value
|
||||
}
|
||||
|
||||
valueOf() {
|
||||
this.value
|
||||
}
|
||||
|
||||
toString() {
|
||||
return this.value.toString()
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
export default class Primitive {
|
||||
|
||||
toString() {
|
||||
return "Unimplemented for " + this.constructor.name
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import GeneralSerializer from "./serialization/GeneralSerializer"
|
||||
import GraphLink from "./graph/GraphLink"
|
||||
import GraphNode from "./graph/GraphNode"
|
||||
import GuidEntity from "./entity/GuidEntity"
|
||||
import IntegerEntity from "./entity/IntegerEntity"
|
||||
import LocalizedTextEntity from "./entity/LocalizedTextEntity"
|
||||
import ObjectEntity from "./entity/ObjectEntity"
|
||||
import ObjectReferenceEntity from "./entity/ObjectReferenceEntity"
|
||||
@@ -47,5 +48,6 @@ SerializerFactory.registerSerializer(
|
||||
)
|
||||
SerializerFactory.registerSerializer(PathSymbolEntity, new ToStringSerializer(PathSymbolEntity))
|
||||
SerializerFactory.registerSerializer(GuidEntity, new ToStringSerializer(GuidEntity))
|
||||
SerializerFactory.registerSerializer(IntegerEntity, new ToStringSerializer(IntegerEntity))
|
||||
|
||||
export { Blueprint as Blueprint, GraphNode as GraphNode, GraphLink as GraphLink }
|
||||
@@ -1,6 +1,6 @@
|
||||
import FunctionReferenceEntity from "../entity/FunctionReferenceEntity"
|
||||
import GuidEntity from "../entity/GuidEntity"
|
||||
import Integer from "../entity/primitive/Integer"
|
||||
import IntegerEntity from "../entity/IntegerEntity"
|
||||
import LocalizedTextEntity from "../entity/LocalizedTextEntity"
|
||||
import ObjectEntity from "../entity/ObjectEntity"
|
||||
import ObjectReferenceEntity from "../entity/ObjectReferenceEntity"
|
||||
@@ -21,7 +21,7 @@ export default class Grammar {
|
||||
None = _ => P.string("None").map(_ => new ObjectReferenceEntity({ type: "None", path: "" })).desc("none")
|
||||
Boolean = _ => P.alt(P.string("True"), P.string("False")).map(v => v === "True" ? true : false).desc("either True or False")
|
||||
Number = _ => P.regex(/[0-9]+(?:\.[0-9]+)?/).map(Number).desc("a number")
|
||||
Integer = _ => P.regex(/[0-9]+/).map(v => new Integer(v)).desc("an integer")
|
||||
Integer = _ => P.regex(/[0-9]+/).map(v => new IntegerEntity({ value: v })).desc("an integer")
|
||||
String = _ => P.regex(/(?:[^"\\]|\\")*/).wrap(P.string('"'), P.string('"')).desc('string (with possibility to escape the quote using \")')
|
||||
Word = _ => P.regex(/[a-zA-Z]+/).desc("a word")
|
||||
Guid = _ => P.regex(/[0-9a-zA-Z]{32}/).map(v => new GuidEntity({ value: v })).desc("32 digit hexadecimal (accepts all the letters for safety) value")
|
||||
@@ -76,7 +76,7 @@ export default class Grammar {
|
||||
return r.Boolean
|
||||
case Number:
|
||||
return r.Number
|
||||
case Integer:
|
||||
case IntegerEntity:
|
||||
return r.Integer
|
||||
case String:
|
||||
return r.String
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import Entity from "../entity/Entity"
|
||||
import Grammar from "./Grammar"
|
||||
import Parsimmon from "parsimmon"
|
||||
import Primitive from "../entity/primitive/Primitive"
|
||||
import SerializerFactory from "./SerializerFactory"
|
||||
import TypeInitialization from "../entity/TypeInitialization"
|
||||
import Utility from "../Utility"
|
||||
@@ -41,9 +40,6 @@ export default class Serializer {
|
||||
if (value instanceof Entity) {
|
||||
return serialize(value)
|
||||
}
|
||||
if (value instanceof Primitive) {
|
||||
return value.toString()
|
||||
}
|
||||
}
|
||||
|
||||
subWrite(key, object) {
|
||||
|
||||
Reference in New Issue
Block a user