typedraft
Version:
TypeDraft is a superset of typescript with built-in support for DSL extension and literate programming.
41 lines (40 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const export_class_1 = require("../code-object/export-class");
const method_1 = require("../code-object/method");
const local_context_1 = require("../code-object/local-context");
const inline_context_1 = require("../code-object/inline-context");
const draft_dsl_match_1 = require("draft-dsl-match");
class RefreshDraftPlugin {
constructor(transcriber) {
this.m_Transcriber = transcriber;
}
Transcribe() {
this.m_Transcriber.m_ClassMap.clear();
this.m_Transcriber.m_MethodMap.clear();
this.m_Transcriber.m_ContextMap.clear();
this.m_Transcriber.m_InlineContextMap.clear();
const draft = this.m_Transcriber.m_Module.ToDraft();
draft.forEach(each => draft_dsl_match_1.MatchDSL(each).when(() => {
return each instanceof export_class_1.ExportClassCode;
}, (each) => {
this.m_Transcriber.m_ClassMap.set(each.m_Name, each);
}).when(() => {
return each instanceof local_context_1.LocalContext;
}, (each) => {
this.m_Transcriber.m_ContextMap.set(each.m_Name, each);
}).when(() => {
return each instanceof inline_context_1.InlineContext;
}, (each) => {
this.m_Transcriber.m_InlineContextMap.set(each.m_ID, each);
}).when(() => {
return each instanceof method_1.MethodCode;
}, (each) => {
var _a;
const class_name = each.m_ClassName;
const methods = (_a = this.m_Transcriber.m_MethodMap.get(class_name)) !== null && _a !== void 0 ? _a : [];
this.m_Transcriber.m_MethodMap.set(class_name, [...methods, each]);
}).run());
}
}
exports.RefreshDraftPlugin = RefreshDraftPlugin;