schema-dts-gen
Version:
Generate TypeScript Definitions for Schema.org Schema
47 lines • 1.82 kB
JavaScript
/**
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Log } from '../logging/index.js';
import { shortStr } from '../triples/term_utils.js';
import { HasEnumType } from '../triples/wellKnown.js';
import { EnumValue } from '../ts/enum.js';
import { assertIs } from '../util/assert.js';
/**
* Annotates classes with any Enum values they blong to.
*
* @param topics a sequence of processed triples describing an Ontology.
* @param classes return value of `ProcessClasses`.
*/
export function ProcessEnums(topics, classes) {
// Process Enums
for (const topic of topics) {
if (!HasEnumType(topic.types))
continue;
// Everything Here should be an enum.
assertIs(topic.subject, (s) => s.termType === 'NamedNode');
const enumValue = new EnumValue(topic.subject, topic.types, classes);
const skipped = [];
for (const v of topic.quads) {
if (!enumValue.add(v))
skipped.push(v);
}
if (skipped.length > 0) {
Log(`For Enum Item ${shortStr(topic.subject)}, did not process:\n\t${skipped
.map(q => `(${shortStr(q.predicate)}, ${shortStr(q.object)})`)
.join('\n\t')}`);
}
}
}
//# sourceMappingURL=toEnum.js.map