Remove unnecessary default attributes

This commit is contained in:
barsdeveloper
2024-10-16 20:52:27 +02:00
parent 404a2aed4f
commit a8d78483d5
8 changed files with 65 additions and 20 deletions

View File

@@ -55,7 +55,7 @@ const pinColorMaterial = css`120, 120, 120`
/** @param {PinEntity<IEntity>} entity */
export default function pinColor(entity) {
if (entity.PinType.PinCategory?.toString() === "mask") {
const result = colors[entity.PinType.PinSubCategory]
const result = colors[entity.PinType.PinSubCategory?.toString()]
if (result) {
return result
}

View File

@@ -60,6 +60,14 @@ export default class IEntity {
this.#ignored = value
}
#inlined = /** @type {typeof IEntity} */(this.constructor).inlined
get inlined() {
return this.#inlined
}
set inlined(value) {
this.#inlined = value
}
#quoted
get quoted() {
return this.#quoted ?? /** @type {typeof IEntity} */(this.constructor).quoted ?? false
@@ -330,7 +338,7 @@ export default class IEntity {
if (keyValue.length && (Self.attributes[key]?.quoted || value.quoted)) {
keyValue = `"${keyValue}"`
}
if (valueType.inlined) {
if (value.inlined) {
const inlinedPrintKey = valueType.className() === "ArrayEntity"
? k => printKey(`${keyValue}${k}`)
: k => printKey(`${keyValue}.${k}`)

View File

@@ -88,11 +88,11 @@ export default class PinEntity extends IEntity {
AutogeneratedDefaultValue: StringEntity,
DefaultObject: ObjectReferenceEntity,
PersistentGuid: GuidEntity,
bHidden: BooleanEntity.withDefault(),
bNotConnectable: BooleanEntity.withDefault(),
bDefaultValueIsReadOnly: BooleanEntity.withDefault(),
bDefaultValueIsIgnored: BooleanEntity.withDefault(),
bAdvancedView: BooleanEntity.withDefault(),
bHidden: BooleanEntity,
bNotConnectable: BooleanEntity,
bDefaultValueIsReadOnly: BooleanEntity,
bDefaultValueIsIgnored: BooleanEntity,
bAdvancedView: BooleanEntity,
bOrphanedPin: BooleanEntity,
}
static grammar = this.createGrammar()

View File

@@ -12,7 +12,7 @@ export default class PinTypeEntity extends IEntity {
static attributes = {
...super.attributes,
PinCategory: StringEntity.withDefault(),
PinSubCategory: StringEntity.withDefault(),
PinSubCategory: StringEntity,
PinSubCategoryObject: ObjectReferenceEntity,
PinSubCategoryMemberReference: FunctionReferenceEntity,
ContainerType: SymbolEntity,

View File

@@ -1,15 +1,22 @@
import P from "parsernostrum"
import Grammar from "../serialization/Grammar.js"
import GuidEntity from "./GuidEntity.js"
import PinEntity from "./PinEntity.js"
export default class UnknownPinEntity extends PinEntity {
static attributes = {
...super.attributes,
PinId: GuidEntity
}
static grammar = this.createGrammar()
/** @returns {P<UnknownPinEntity>} */
static createGrammar() {
return P.seq(
P.reg(new RegExp(`(${Grammar.Regex.Symbol.source})\\s*\\(\\s*`), 1),
// Lookbehind
P.reg(new RegExp(`(${Grammar.Regex.Symbol.source}\\s*)\\(\\s*`), 1),
Grammar.createAttributeGrammar(this).sepBy(Grammar.commaSeparation),
P.reg(/\s*(?:,\s*)?\)/)
).map(([lookbehind, attributes, _2]) => {

View File

@@ -107,9 +107,17 @@ export default class Grammar {
const attributeKey = attributeName.split(Configuration.keysSeparator)
const attributeValue = this.getAttribute(entityType, attributeKey)
const grammar = attributeValue ? attributeValue.grammar : IEntity.unknownEntityGrammar
const inlined = attributeKey.length > 1
return grammar.map(attributeValue =>
values => {
Utility.objectSet(values, attributeKey, attributeValue)
attributeKey.reduce(
(acc, cur, i) => {
acc[cur]["inlined"] = inlined && i < attributeKey.length - 1
return acc[cur]
},
values
)
handleObjectSet(values, attributeKey, attributeValue)
}
)