UNPKG

oca_package

Version:

The wrapper of OCA bundle to generate OCA Package at ADC

55 lines (54 loc) 1.97 kB
import { saidify } from 'saidify'; import canonicalize from '../../../utils/canonical.js'; class ExampleOverlay { constructor(dynOverlay) { if (!dynOverlay) { throw new Error('A dynamic extension overlay is required'); } this.dynOverlay = dynOverlay; } get language() { return this.dynOverlay.language; } GetAttributeExamples() { const examples = this.dynOverlay.attribute_examples; const canonicalizedExamples = canonicalize(examples); const sortedExamples = JSON.parse(canonicalizedExamples); return sortedExamples; } toJSON() { return { d: '', type: 'community/overlays/adc/example/1.1', language: this.language, attribute_examples: this.GetAttributeExamples(), }; } Saidifying() { const [, sad] = saidify(this.toJSON()); return sad; } // generates a single example overlay GenerateExampleOverlay() { return JSON.stringify(this.Saidifying()); } static GenerateOverlay(dynOverlay) { if (!dynOverlay || typeof dynOverlay !== 'object' || !Array.isArray(dynOverlay['example_overlays'])) { throw new Error('Invalid dynOverlay structure. Expected an object with an "example_overlays" array.'); } const example_overlays = []; const overlays = dynOverlay['example_overlays']; for (let example_ov of overlays) { try { const example_overlay = new ExampleOverlay(example_ov); example_overlays.push(JSON.parse(example_overlay.GenerateExampleOverlay())); } catch (error) { console.error('Failed to process example overlay:', error); } } example_overlays.sort((a, b) => a.language.localeCompare(b.language)); return JSON.stringify(example_overlays); } } export default ExampleOverlay;