AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Markdown preview

 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 20 Oct 2013
Posts: 655

PostPosted: Sun May 03, 2015 12:40 am    Post subject: Markdown preview Reply with quote

Вариантов, собственно, найдено два: Pandoc и MultiMarkdown.

Первый много чего ещё умеет, но pandoc.exe размером 37,9 Мб (хотя и неплохо ужимается UPX до 7,2) и есть параметр --from= с вариантами для Markdown в частности:
Code:
markdown          (pandoc’s extended markdown)
markdown_strict   (original unextended markdown)
markdown_phpextra (PHP Markdown Extra extended markdown)
markdown_github   (github extended markdown)

Что не очень удобно, т.к. нужно выбирать.

У второго - вывод только в консоль (начинался с Markdown.pl, как понял) и только содрежимое <body></body>.
Обы предпочитают на входе-выходе UTF-8.

Есть ли альтернативы? Что-то видел на JScript, но не понял, как пользоваться.

-------------
Вариант скрипта для MultiMarkdown (пока без комментариев)

Code:
var nArg1      = AkelPad.GetArgValue("browser", "");
var nArg2      = AkelPad.GetArgValue("del", 0);
var pTextRange = AkelPad.GetTextRange(0, -1, 2);
var WshShell   = new ActiveXObject("WScript.Shell");
var pTempPath  = WshShell.ExpandEnvironmentStrings("%Temp%")
var pPFPath    = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
var fso        = new ActiveXObject("Scripting.FileSystemObject");

var pTextStart = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><meta http-equiv=\"Content-Style-Type\" content=\"text/css\" /><meta name=\"generator\" content=\"MultiMarkdown\" /><title></title><style type=\"text/css\">code{white-space: pre;}</style></head><body>"
var pTextEnd   = "</body></html>"

AkelPad.WriteFile(pTempPath + "\\temp.html", pTextStart + "\n", -1, 65001, false);

AkelPad.WriteFile(pTempPath + "\\temp.md", pTextRange, -1, 65001, false);
AkelPad.Exec("%ComSpec% /c chcp 65001 & \"%a\\AkelFiles\\Tools\\MultiMarkdown\\multimarkdown.exe\" \"" + pTempPath + "\\temp.md\">> \"" + pTempPath + "\\temp.html\"", "", 1, 0);

AkelPad.WriteFile(pTempPath + "\\temp.html", "\n" + pTextEnd, -1, 65001, false, 0x2);

if (nArg1 && fso.FileExists(nArg1))
{
  AkelPad.Exec(nArg1 + " " + pTempPath + "\\temp.html", "", 1);
}
else
  AkelPad.Exec(pPFPath + "\\Internet Explorer\\iexplore.exe " + pTempPath + "\\temp.html", "", 1);

//if (nArg2 == 0)
//{
//  var oSys  = AkelPad.SystemFunction();
//  oSys.Call("kernel32::DeleteFile" + _TCHAR, pTempPath + "\\temp.md")
//  oSys.Call("kernel32::DeleteFile" + _TCHAR, pTempPath + "\\temp.html")
//}

Что не совсем правильно и как правильно реализовать удаление временных файлов (if (nArg2 == 0))?

Добавлено:
Добавлена проверка существования файла, если -browser в команде есть, а браузера нет.

Добавлено:
Убран ключ -c (compatibility mode), иначе не все фичи срабатывают (например, на Github).


Last edited by Skif_off on Tue May 05, 2015 9:24 pm; edited 1 time in total
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 290

PostPosted: Tue May 05, 2015 8:19 pm    Post subject: Reply with quote

Skif_off
Правильно ли я понял, что предпросмотр выводится в отдельном окне браузера?
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 655

PostPosted: Tue May 05, 2015 9:24 pm    Post subject: Reply with quote

Cuprum
Типа как в AkelPadDocsView.js? Тогда нет, либо указанный полноценный браузер, либо ишак.
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 290

PostPosted: Thu May 07, 2015 7:46 pm    Post subject: Reply with quote

Skif_off
Попробовал, работает Smile.
Но почему-то не показывает картинки, внедренные в markdown-файл.

Посмотрел еще варианты.
Есть marked. Он под node.js. Если на машине установлена node, наверное, можно как-то прикрутить.
Есть discount. Он на Си. Тут сказать нечего...
Лично я пользуюсь предпросмотром markdown в Brackets. Сделан в виде стороннего палагина. Очень удобно: окно редактора поделено на 2 области. В одной сам текст файла, в другой предпросмотр. "Живой" показ всех изменений + синхронизация скроллинга.

Вот что-то бы подобное для Акела, была бы бомба!
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 655

PostPosted: Thu May 07, 2015 9:10 pm    Post subject: Reply with quote

Cuprum wrote:
Но почему-то не показывает картинки, внедренные в markdown-файл.

Можно пример файла?
Cuprum wrote:
Есть discount. Он на Си. Тут сказать нечего...

Мне тоже нечего Smile Не удалось найти скомпилированную версию.

Brackets неприлично большой Smile MarkdownPad вроде тоже так умеет.
Back to top
View user's profile Send private message
Cuprum



Joined: 28 Sep 2011
Posts: 290

PostPosted: Thu May 07, 2015 9:49 pm    Post subject: Reply with quote

Skif_off
Quote:
Можно пример файла?

По коду там просто. Указано в файле
Code:
![forked](img/forked.png)

А рядом с md-файлом папка img, в которой рисунок forked.png.

Quote:
Brackets неприлично большой

Если его использовать только как редактор для md - да, тяжеловат.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 655

PostPosted: Thu May 07, 2015 11:58 pm    Post subject: Reply with quote

Cuprum wrote:
А рядом с md-файлом папка img, в которой рисунок forked.png

А HTML-код правильный получается? Временный файл создаётся в %Temp%, относительные пути не сработают. Надо подумать о замене пути на абсолютный.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 655

PostPosted: Fri May 08, 2015 5:54 pm    Post subject: Reply with quote

Замена относительного пути не тривиальна, оптимально - генерить *.html рядом с *.md, но как потом удалять?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group