«Будем бить через дымоход.»
Есть такая вещь, т. с. сама в себе — TiddlyWiki. Раза четыре к ней «подъезжал», но как то не складывалось (видимо сильно влияла разметка MediaWiki - а у Тиддли она весьма отличается от «старшего брата»). Писать здесь как это круто или убого (и все такое) не буду — до меня написано множество дифирамб… Я лучше постепенно буду рассказывать о том, что накопал :-) Сразу оговорюсь, что все изыскания проводились под Виндами (отсюда и специфика этих самых изысканий)
Начну, пожалуй, с плагина SaveTiddlerToFilePlugin — сохранение исходника текущего тидлера в файл (взята версия плагина 1.1.0). Вещь сама по себе хороша, но… при сохранении тидлера с кириллическим именем и этим же содержимым, получаем откровенную лабуду: имя файла явно из области UTF8 (что под M$ не воспринимается), а содержимое файла — нечто вроде убиенного Unicode.
Собственно правка заключается в следующем: имя файла конвертим из UTF8 в Unicode, а содержимое наоборот - из Unicode в UTF8. Т.е. в методе go вместо строки:
пишем
var msg=saveFile(target,store.getTiddlerText(tid))?cms.okmsg:cms.failmsg;
пишем
target=convertUTF8ToUnicode(target);
var msg=saveFile(target,convertUnicodeToUTF8(store.getTiddlerText(tid)))?cms.okmsg:cms.failmsg;
Теперь и овцы сыты и волки…
…поработав с этой модификацией понял, что сохраненные голые сорцы тидлеров не есть гуд. Иногда хочется иметь полный антураж.
Ok. Едем дальше. Добавим возможность сохранения полнофункционального тидлера — обернем исходный текст тидлера в html-обертку. Формат тидлера в обертке такой:
Ok. Едем дальше. Добавим возможность сохранения полнофункционального тидлера — обернем исходный текст тидлера в html-обертку. Формат тидлера в обертке такой:
<div title="Название тидлера"
modifier="Модификатор"
created="Когда создан"
modified="Когда можифицирован"
tags="Тэги"
changecount="Сколько раз модифицирован">
<pre>
Исходный текст тидлера
</pre>
</div>
Для начала организуем возможность включать/отключать эту фичу (через меню tweak). Для этого добавим в начало (после строки определения версии) вот такой код:
if(config.options.chkSaveFullTiddler == undefined)
config.options.chkSaveFullTiddler = false;
if(config.optionsDesc.chkSaveFullTiddler == undefined)
config.optionsDesc.chkSaveFullTiddler ="Макрос saveTiddlerToFile будет сохранять tiddler в html-обертке";
Снова идем к строке, где вызывается функция saveFile и переписываем строки вот так:
if(config.options.chkSaveFullTiddler)
savedtiddlertext=store.getSaver().externalizeTiddler(store,store.getTiddler(tid));
else
savedtiddlertext=store.getTiddlerText(tid);
savedtiddlertext=convertUnicodeToUTF8(savedtiddlertext);
var msg=saveFile(target,savedtiddlertext)?cms.okmsg:cms.failmsg;
Фсе. В сухом остатке имеем:
- кодировка сохраняемых тидлеров корректна (как имя файла, так и содержимое);
- сохранять тидлеры можно в двух вариантах — plain-текстом или в html-обертке.
3 комментария:
Еще за полтора года чего-нить интересного для TW накопал? Я использую MPTW http://mptw.tiddlyspot.com/ и это круто
Интересного?
Хмм... разве что тема "как влудить тидлер вне интерфейса" (из скрипта или ком.строки... напрямую в файл, минуя "традиционное" редактирование :-))
Кстати, а где можно прочитать про отличия mptw от "традиционно"?
Отправить комментарий