пятница, 15 марта 2013 г.

Подсветка синтаксиса haskell на blogspot

Однажды я согрешил. Честолюбие сыграло во мне, жадность и святая злость вскипели полным ходом. Тысячу раз приходя на сайт восхитительной книги Learn You A Haskell мне захотелось стырить замечательную подсветку синтаксиса Haskell вместе с элементами дизайна. Покопался в исходниках сайта, накачал css и js файлов, потом порылся в google на эту тему и задача решилась. На blogspot это заработало, хотя и с гораздо большим количеством костылей и элементов культа карго, чем это желательно.

Так как всем абсолютно безразлично на идеи, методы, высокий смысл, лучше я опишу итог. Все заработало достаточно удовлетворительно при моддинге простого шаблона, динамические шаблоны так и не "захотели" работать без вырвиглазной кривизны. В шаблоне сайта на blogger после тэга title я поместил следующие строки:

<link href='http://patamushta-ff.narod2.ru/styleHs.css' rel='stylesheet' type='text/css'/>
<link href='http://patamushta-ff.narod2.ru/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
<script src='http://patamushta-ff.narod2.ru/shCore.js' type='text/javascript'/>
<script src='http://patamushta-ff.narod2.ru/shBrushPlain.js' type='text/javascript'/>
<script src='http://patamushta-ff.narod2.ru/shBrushHaskell.js' type='text/javascript'/>

При этом текст в редакторе блоггера должен быть обрамлен в два div'a:

<div class="bgwrapper">
<div id="content"<

В конце (я не понял почему именно в конце, но лучшего решения пока не нашел) шаблона, перед закрытием тега html я прилепил еще эту строку:

<script type="text/javascript" src="http://patamushta-ff.narod2.ru/shAdd.js"></script>

После данных телесных манипуляций открылись новые кармические уровни для блоггинга в этом вашем blogspot. Первое, и самое главное, если к блоку pre, в который мы обычно помещаем листинг добавить атрибуты <pre name="code" class="haskell: ghci">, то будет получаться моднейший блок кода на хаскеле, абсолютно подсвеченный крутейшими цветами:

bmiTell :: (RealFloat a) => a -> a -> String  
bmiTell weight height  
    | bmi <= skinny = "You're underweight, you emo, you!"  
    | bmi <= normal = "You're supposedly normal. Pffft, I bet you're ugly!"  
    | bmi <= fat    = "You're fat! Lose some weight, fatty!"  
    | otherwise     = "You're a whale, congratulations!"  
    where bmi = weight / height ^ 2  
          skinny = 18.5  
          normal = 25.0  
          fat = 30.0  

И вторая фича. Текст в тэге <span class="fixed">foo</span> становится foo.

И последнее. Да, согласен, все это - дикий костыль и вообще невозможно использовать. Но мне это помогло.

Комментариев нет:

Отправить комментарий