#title=MarkdownをHTMLに変換 //このマクロを動作させるには http://pamgau.net/showdown/ からshowdown.jsを入手し //このマクロと同じフォルダに置いてください /* ConversionMode:使いたいモードを以下から選んでConversionModeに設定してください。 1: 選択文字列のMarkdownをHTMLに変換してクリップボードに格納 2: 編集中のMarkdown文書全体をHTMLに変換してクリップボードに格納 3: 編集中のMarkdown文書全体をHTMLに変換して、別のタブで無題のHTML文書として表示 4: 編集中のMarkdown文書全体をHTMLに変換して、拡張子をhtmlに置き換えた同名のファイルを作成 */ ConversionMode = 4;//好みに応じて変更可能 OpenHTML = true;//trueならHTMLを開いたままにします。 Header = "\n"; Footer = "\n" //-------------------------------------------------------------- fso = new ActiveXObject("Scripting.FileSystemObject"); function GetHTMLPath() { var markdownPath = document.FullName; var parentFolder = fso.GetParentFolderName(markdownPath); var basename = fso.GetBaseName(markdownPath); var htmlPath = parentFolder + "\\" + basename + ".html"; return htmlPath; } function Markdown2Html(text) { var html = ""; var thisScriptPath = ScriptFullName; var parentFolder = fso.GetParentFolderName(thisScriptPath); var showdownPath = parentFolder + "\\showdown.js" if (fso.FileExists(showdownPath)) { var file = fso.GetFile(showdownPath); var fileStream = file.OpenAsTextStream(1, 0); var showdown_js_content = fileStream.ReadAll(); eval(showdown_js_content); var converter = new Showdown.converter(); html = Header + converter.makeHtml(text) + Footer; } else { alert("このマクロを動作させるには http://pamgau.net/showdown/ からshowdown.jsを入手し、 " + parentFolder + " に置いてください。"); Quit(); } return html; } var selectionState = { x0 : document.selection.GetActivePointX(eePosView), y0 : document.selection.GetActivePointY(eePosView), x1 : document.selection.GetAnchorPointX(eePosView), y1 : document.selection.GetAnchorPointY(eePosView), mode : document.selection.Mode, restore : function () { document.selection.SetAnchorPoint(eePosView, this.x1, this.y1); document.selection.SetActivePoint(eePosView, this.x0, this.y0, true); document.selection.Mode = this.mode; } }; switch (ConversionMode) { case 1: { clipboardData.setData("TEXT", Markdown2Html(document.selection.Text)); break; } case 2: { Redraw = false; document.selection.SelectAll(); clipboardData.setData("TEXT", Markdown2Html(document.selection.Text)); selectionState.restore(); Redraw = true; break; } case 3: { Redraw = false; document.selection.SelectAll(); var result = Markdown2Html(document.selection.Text); selectionState.restore(); var curDoc = document; editor.EnableTab = true; editor.NewFile(); document.ConfigName = "HTML"; document.write(result); if (!OpenHTML) curDoc.Activate(); Redraw = true; break; } case 4: { Redraw = false; document.selection.SelectAll(); var result = Markdown2Html(document.selection.Text); selectionState.restore(); var curDoc = document; var htmlPath = GetHTMLPath(); editor.EnableTab = true; if (fso.FileExists(htmlPath)) { if (editor.OpenFile(htmlPath, 0, eeOpenAllowNewWindow)) { document.write(result); document.Save(); } else { status = htmlPath + " を開けませんでした。"; } } else { editor.NewFile(); document.write(result); document.Save(htmlPath); } if (!OpenHTML) curDoc.Activate(); Redraw = true; break; } }