UNPKG

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
"use strict"; 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;