oca_package
Version:
The wrapper of OCA bundle to generate OCA Package at ADC
55 lines (54 loc) • 1.97 kB
JavaScript
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;