вторник, 30 апреля 2013 г.

RDot v1.0 — релиз

Допинал документацию и зарелизил.

На версию 1.1–1.2 планирую связи между rb-файлами (по require), а дальше останется только жевать лавры, да послеживать за совместимостью с более лучшими новыми версиями Ruby и GraphViz... Впрочем, можно еще над гемами поизгаляться...

понедельник, 29 апреля 2013 г.

RDot: v0.10.0 ↝ v0.10.10.1

Зря я, пожалуй, мало пользуюсь четвертой цифрой версии, накручивая третью — изменений в функциональности всего два, и они неотличимы по номерам от исправлений.

Итак, история версий, исправлений и новых фишечек.

четверг, 25 апреля 2013 г.

RDot v0.10

Допинал версию RDot для Ruby 1.9. Полностью удалось отказаться от трассировки, всё делается штатными средствами интроспекции. Так что внезапных глюков должно стать намного меньше.

Заодно разделил логику и управление и оформил всю эту радость в виде гема. Теперь ожидаю лютой бешеной популярности (:смайл:).

В общем, можно брать с: RubyGems, GitHub, и традиционно до кучи —  BitBucket.

На рисунке — пример конечного результата, сформировано командной строкой:

rdot --title=Is::Command --title-size=64 is/command | dot -Tpng -oout.png

PS. Данная версия под Ruby 1.8 работать не будет. Последняя гарантированно рабочая под 1.8 версия — 0.9.4.

воскресенье, 21 апреля 2013 г.

Ruby и обезьяна с гранатом

Начал формировать гем с устоявшимися (у меня) monkey-патчами. Брать тут:

  • is-monkey — собственно гем.
  • yard-is-monkey — плагин для YARD, позволяющий учитывать в документации свойства, определенные методом property().

Собственно, на данный момент ничего, кроме этих самых свойств, гем не содержит, но это пока... А так, по большому счету, его надо рассматривать не сам по себе, а как зависимость для прочих (будущих) библиотек.

PS. Надо бы как-нибудь собраться и написать большую статью про YARD...

четверг, 18 апреля 2013 г.

Корректный nowrap

Наконец-то до меня дошло (в процессе написания предыдущего поста), как до жирафа, право слово... Итак, как же корректно (без использования устаревших и нестандартных конструкций) запретить перенос по пробелам в некоем сложносоставном (например, с маленьким рисунком) сочетании внутри строки, т.е. чтобы в ссылке вида « Иван Шихалев» никакая часть гарантированно не отрывалась от других? Ларчик просто открывался:

<span style="display : inline-block"><img src="/favicon.ico" style="vertical-align : text-bottom"> Иван Шихалев</span>

Детали оформления я, естественно, поскипал, ключевой момент выделил жирным.

Ruby: Gems и кое-что о документации

Сподобился таки оформить пару модулей как гемы и разместить на RubyGems.org:

  • is-command — DSL для написания «многокомандных» консольных приложений, т.е. таких, которые используются в виде:

    $ program ‹опции› ‹команда› ‹опции› ‹параметры›
    причем команды могут быть вложенные. Так, например, работает Git.

    На данный момент не сделана генерация справочного сообщения, посему версия 0.8, а не 0.9.

  • is-lazy — модуль для «ленивых» и многопоточных вычислений, о котором я уже писал (правда, изрядно реорганизованный).

На GitHub я поместил их в один проект — https://github.com/shikhalev/gems, куда и в дальнейшем планирую складывать всякую ruby-мелочевку.

В процессе выяснилась приятная вещь — если код документировать в комментариях посредством YARD, без каких-либо лишних телодвижений получаем онлайн-документацию на RubyDoc.info (см. [1] и [2]), на которую ведет ссылка со страницы гема. Документация появляется с некоторым запозданием порядка минут или часов, но это ж не страшно. Кроме того, с минимальными телодвижениями можно организовать такую же документацию для любого проекта на GitHub — нужно лишь включить соответствующий пункт в «Settings / Service Hooks» — см. [3].

Традиционное зеркало проекта на BitBucket — https://bitbucket.org/shikhalev/gems.