Skip to content

Commit

Permalink
Create MDWxrd as a holder for our Markdown oriented data model
Browse files Browse the repository at this point in the history
  • Loading branch information
ENTOMDT committed Jun 25, 2022
1 parent a810721 commit 7c5f6b0
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/myriad/Djehuti.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Wxrd } from './Wxrd';
import { MDWxrd } from './MDWxrd';

export class Djehuti {

Expand All @@ -7,8 +8,9 @@ export class Djehuti {
}

createWxrd(multiLineInput) {

return new Wxrd(multiLineInput);

// return new Wxrd(multiLineInput);
return new MDWxrd(multiLineInput);
}

// TODO: Mimic createWxrd to implement createMarkDown
Expand Down
109 changes: 109 additions & 0 deletions src/myriad/MDWxrd.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/**
* @file Defines an MDWxrd.
*/

import { v4 as uuidv4 } from 'uuid';

const INITIAL_WXRD_UUID = '[wxrdUuid NOT SET]';

export class MDWxrd {

metaData = {
wxrdValue: '',
wxrdType: 'Wxrd',
wxrdUuid: INITIAL_WXRD_UUID,
};

aliases = {};
members = {};

constructor(initializationData){

if (typeof initializationData === 'string'
|| initializationData instanceof String) {

// console.log('initializing...');

this.initializeUuid();
this.initializeCreatedAt();
this.setAlias(this.getUuid(), initializationData);
this.metaData.wxrdValue = initializationData;


} else if ('metaData' in initializationData) {

this.metaData = initializationData.metaData;
this.aliases = initializationData.aliases;
this.members = initializationData.members;

} else {

throw 'unrecognized initialization data!';

}

}

initializeUuid() {

if(this.metaData.wxrdUuid = INITIAL_WXRD_UUID){
const newUuid = uuidv4();
// console.log('initializing wxrdUuid to ' + newUuid);
this.metaData.wxrdUuid = uuidv4();
} else {
const foundUuid = this.metaData.wxrdUuid;
// console.log('wxrdUuid already exists as <' + foundUuid + '>, skipping initialization');
}
}

getUuid() {

if(!'wxrdUuid' in this.metaData){

throw 'wxrdUuid not initialized!';
}

return this.metaData.wxrdUuid;
}

initializeCreatedAt() {

if(!'createdAt' in this.metaData){

const currentTime = new Date();
this.metaData.createdAt = currentTime.toISOString();
}
}

setAlias(uuidKey, aliasValue) {

this.aliases[uuidKey] = aliasValue;
}

getAlias(uuidToGet) {

if(!uuidToGet){

// console.log('no uuid supplied, assuming alias lookup for self');
uuidToGet = this.getUuid();
// console.log('uuid to lookup set to <' + uuidToGet + '>');
}

let foundAlias = '[ALIAS NOT FOUND FOR <' + uuidToGet + '>]';

try{

if(this.aliases[uuidToGet]){

foundAlias = this.aliases[uuidToGet];
}

}catch(err){

foundAlias = 'Error retrieving alias: ' + err;
}

return foundAlias;

}
}

0 comments on commit 7c5f6b0

Please sign in to comment.