mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-04 16:54:41 +08:00
57 lines
2.8 KiB
JavaScript
Executable File
57 lines
2.8 KiB
JavaScript
Executable File
import Parsernostrum from "parsernostrum"
|
|
import AlternativesEntity from "../entity/AlternativesEntity.js"
|
|
import ArrayEntity from "../entity/ArrayEntity.js"
|
|
import BooleanEntity from "../entity/BooleanEntity.js"
|
|
import FormatTextEntity from "../entity/FormatTextEntity.js"
|
|
import GuidEntity from "../entity/GuidEntity.js"
|
|
import IEntity from "../entity/IEntity.js"
|
|
import InvariantTextEntity from "../entity/InvariantTextEntity.js"
|
|
import LinearColorEntity from "../entity/LinearColorEntity.js"
|
|
import LocalizedTextEntity from "../entity/LocalizedTextEntity.js"
|
|
import NullEntity from "../entity/NullEntity.js"
|
|
import NumberEntity from "../entity/NumberEntity.js"
|
|
import ObjectReferenceEntity from "../entity/ObjectReferenceEntity.js"
|
|
import PinReferenceEntity from "../entity/PinReferenceEntity.js"
|
|
import RotatorEntity from "../entity/RotatorEntity.js"
|
|
import StringEntity from "../entity/StringEntity.js"
|
|
import SymbolEntity from "../entity/SymbolEntity.js"
|
|
import UnknownKeysEntity from "../entity/UnknownKeysEntity.js"
|
|
import Vector2DEntity from "../entity/Vector2DEntity.js"
|
|
import Vector4DEntity from "../entity/Vector4DEntity.js"
|
|
import VectorEntity from "../entity/VectorEntity.js"
|
|
import Grammar from "./Grammar.js"
|
|
|
|
export default function initializeSerializerFactory() {
|
|
IEntity.unknownEntityGrammar =
|
|
Parsernostrum.alt(
|
|
// Remember to keep the order, otherwise parsing might fail
|
|
BooleanEntity.grammar,
|
|
GuidEntity.grammar,
|
|
Parsernostrum.str("None").map(() => ObjectReferenceEntity.createNoneInstance()),
|
|
NullEntity.grammar,
|
|
NumberEntity.grammar,
|
|
Parsernostrum.alt(
|
|
ObjectReferenceEntity.fullReferenceGrammar,
|
|
Parsernostrum.regArray(new RegExp(
|
|
// @ts-expect-error
|
|
`"(${Grammar.Regex.Path.source})'(${Grammar.Regex.Path.source}|${Grammar.symbol.getParser().regexp.source})'"`
|
|
)).map(([_0, type, path]) => new ObjectReferenceEntity(type, path, (t, p) => `"${t}'${p}'"`))
|
|
),
|
|
StringEntity.grammar,
|
|
LocalizedTextEntity.grammar,
|
|
InvariantTextEntity.grammar,
|
|
FormatTextEntity.grammar,
|
|
PinReferenceEntity.grammar,
|
|
Vector4DEntity.grammar,
|
|
VectorEntity.grammar,
|
|
Vector2DEntity.grammar,
|
|
RotatorEntity.grammar,
|
|
LinearColorEntity.grammar,
|
|
UnknownKeysEntity.grammar,
|
|
SymbolEntity.grammar,
|
|
ArrayEntity.of(PinReferenceEntity).grammar,
|
|
ArrayEntity.of(AlternativesEntity.accepting(NumberEntity, StringEntity, SymbolEntity)).grammar,
|
|
Parsernostrum.lazy(() => ArrayEntity.createGrammar(IEntity.unknownEntityGrammar)),
|
|
)
|
|
}
|