@gmetrixr/rjson
Version:
(R)ecursive Json
39 lines (38 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const r_1 = require("../../../r");
/**
* Changes the phrases property in speech element into items
*/
class Migration {
execute(projectJson) {
const pJson = projectJson;
const projectF = r_1.r.record(pJson);
projectF.getAllDeepChildren(r_1.RT.element).forEach(e => {
if (e.props.element_type === r_1.en.ElementType.speech) {
// phrases is a map
const phrases = e.props.phrases;
let i = 0;
for (const phraseItem of Object.values(phrases)) {
i = i + 1;
//Need the id to be deterministic for test cases
const item = r_1.R.createRecord(r_1.RT.item, e.id + 100002 + i);
item.props.phrase_id = phraseItem.phrase_id;
item.props.phrase = phraseItem.phrase;
item.props.aliases = phraseItem.aliases;
r_1.r.element(e).addRecord(item);
}
delete e.props.phrases;
}
});
projectF.set(r_1.rtp.project.version, 102);
}
}
const migration = new Migration();
exports.default = migration;
//REFERENCE:
// export interface Phrase {
// phrase: string,
// aliases: string[],
// phrase_id: number
// }