nixp.ru v3.0

30 декабря 2024,
понедельник,
17:42:57 MSK

29 июня 2011, 10:59

GitHub открыла Linguist — библиотеку для определения языка программирования

1
Библиотека Linguist
Библиотека Linguist
Иллюстрация с сайта GitHub

Разработчики популярного сервиса GitHub опубликовали исходный код одного из собственных инструментов — библиотеки Linguist (на Ruby), используемой для определения языка программирования, на котором написан публикуемый на хостинге файл.

В первую очередь Linguist учитывает расширение файла — это позволяет определить язык программирования в большинстве случаев. Если не помогает, то проверяется наличие так называемого «shebang» (последовательность символов «#!», принятая для последующего указания интерпретатора, которому передается контент скрипта). Кроме того, изучается и непосредственно содержимое файлов, где по различным популярным ключевым фразам осуществляется окончательная попытка определить используемый язык программирования.

Этим функции библиотеки Linguist не ограничиваются. В ней реализованы и некоторые другие возможности, которые нашли свое применение на GitHub:

  • подсветка синтаксиса, реализованная с помощью своей обертки Albino над Pygments;
  • определение типа MIME: большая часть работы осуществляется стандартной mime-types gem из Ruby, но авторы сделали несколько добавок и надстроек;
  • статистический модуль, с помощью которого строится Language Graph на GitHub (составляет список используемых в проекте языков программирования и их популярность) и общий рейтинг Top Languages.

Исходный код библиотеки Linguist распространяется под Open Source-лицензией MIT и доступен, естественно, на самом GitHub.

Постоянная ссылка к новости: http://www.nixp.ru/news/11277.html. Дмитрий Шурупов по материалам GitHub, h-online.com.

fb twitter vk
Eleidan

Языки программирования можно и ручками указывать (как сделано на launchpad.net). Лучше бы прикрутили поддержку локализации (получение po, предоставление интерфейса для перевода).

Как по мне, то GitHub — неплохая альтернатива launchpad.net. Вот только нету такой вкусности как поддержка работы с локализацией.

Эхх. Куча фичь мне нравится в launchpad.net, куча оных — в GitHub. А так чтобы всё в одном флаконе — пока нету :(