.
On to what's new…
New languages:
- Handlebars templates by [Robin Ward][]
- Oracle Rules Language by [Jason Jacobson][]
- F# by [Joans Follesø][]
- AsciiDoc and Haml by [Dan Allen][]
- Lasso by [Eric Knibbe][]
- SCSS by [Kurt Emch][]
- VB.NET by [Poren Chiang][]
- Mizar by [Kelley van Evert][]
[Robin Ward]: https://github.com/eviltrout
[Jason Jacobson]: https://github.com/jayce7
[Joans Follesø]: https://github.com/follesoe
[Dan Allen]: https://github.com/mojavelinux
[Eric Knibbe]: https://github.com/EricFromCanada
[Kurt Emch]: https://github.com/kemch
[Poren Chiang]: https://github.com/rschiang
[Kelley van Evert]: https://github.com/kelleyvanevert
New style themes:
- Monokai Sublime by [noformnocontent][]
- Railscasts by [Damien White][]
- Obsidian by [Alexander Marenin][]
- Docco by [Simon Madine][]
- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything)
- Foundation by [Dan Allen][]
[noformnocontent]: http://nn.mit-license.org/
[Damien White]: https://github.com/visoft
[Alexander Marenin]: https://github.com/ioncreature
[Simon Madine]: https://github.com/thingsinjars
[Ivan Sagalaev]: https://github.com/isagalaev
Other notable changes:
- Corrected many corner cases in CSS.
- Dropped Python 2 version of the build tool.
- Implemented building for the AMD format.
- Updated Rust keywords (thanks to [Dmitry Medvinsky][]).
- Literal regexes can now be used in language definitions.
- CoffeeScript highlighting is now significantly more robust and rich due to
input from [Cédric Néhémie][].
[Dmitry Medvinsky]: https://github.com/dmedvinsky
[Cédric Néhémie]: https://github.com/abe33
## Version 7.3
- Since this version highlight.js no longer works in IE version 8 and older.
It's made it possible to reduce the library size and dramatically improve code
readability and made it easier to maintain. Time to go forward!
- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and
Brainfuck (by [Evgeny Stepanischev][bolk]).
- Improvements to existing languages:
- interpreter prompt in Python (`>>>` and `...`)
- @-properties and classes in CoffeeScript
- E4X in JavaScript (by [Oleg Efimov][oe])
- new keywords in Perl (by [Kirk Kimmel][kk])
- big Ruby syntax update (by [Vasily Polovnyov][vast])
- small fixes in Bash
- Also Oleg Efimov did a great job of moving all the docs for language and style
developers and contributors from the old wiki under the source code in the
"docs" directory. Now these docs are nicely presented at
.
[ng]: https://github.com/nathan11g
[dd]: https://github.com/drdrang
[bolk]: https://github.com/bolknote
[oe]: https://github.com/Sannis
[kk]: https://github.com/kimmel
[vast]: https://github.com/vast
## Version 7.2
A regular bug-fix release without any significant new features. Enjoy!
## Version 7.1
A Summer crop:
- [Marc Fornos][mf] made the definition for Clojure along with the matching
style Rainbow (which, of course, works for other languages too).
- CoffeeScript support continues to improve getting support for regular
expressions.
- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the
[project by Chris Kempson][tm0].
- Thanks to [Casey Duncun][cd] the library can now be built in the popular
[AMD format][amd].
- And last but not least, we've got a fair number of correctness and consistency
fixes, including a pretty significant refactoring of Ruby.
[mf]: https://github.com/mfornos
[tm]: http://jmblog.github.com/color-themes-for-highlightjs/
[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme
[cd]: https://github.com/caseman
[amd]: http://requirejs.org/docs/whyamd.html
## Version 7.0
The reason for the new major version update is a global change of keyword syntax
which resulted in the library getting smaller once again. For example, the
hosted build is 2K less than at the previous version while supporting two new
languages.
Notable changes:
- The library now works not only in a browser but also with [node.js][]. It is
installable with `npm install highlight.js`. [API][] docs are available on our
wiki.
- The new unique feature (apparently) among syntax highlighters is highlighting
*HTTP* headers and an arbitrary language in the request body. The most useful
languages here are *XML* and *JSON* both of which highlight.js does support.
Here's [the detailed post][p] about the feature.
- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an
emulation of*XCode* IDE by [Angel Olloqui][ao].
- Three new languages: *D* by [Aleksandar Ružičić][ar], *R* by [Joe Cheng][jc]
and *GLSL* by [Sergey Tikhomirov][st].
- *Nginx* syntax has become a million times smaller and more universal thanks to
remaking it in a more generic manner that doesn't require listing all the
directives in the known universe.
- Function titles are now highlighted in *PHP*.
- *Haskell* and *VHDL* were significantly reworked to be more rich and correct
by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik].
And last but not least, many bugs have been fixed around correctness and
language detection.
Overall highlight.js currently supports 51 languages and 20 style themes.
[node.js]: http://nodejs.org/
[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api
[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/
[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
[ao]: https://github.com/angelolloqui
[ar]: https://github.com/raleksandar
[jc]: https://github.com/jcheng5
[st]: https://github.com/tikhomirov
[sr]: https://github.com/sourrust
[ik]: https://github.com/ikalnitsky
## Version 6.2
A lot of things happened in highlight.js since the last version! We've got nine
new contributors, the discussion group came alive, and the main branch on GitHub
now counts more than 350 followers. Here are most significant results coming
from all this activity:
- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and
experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av],
[Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis
Bardadym][db] and [John Crepezzi][jc].
- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of
another well-known highlighter Google Code Prettify by [Aahan Krish][ak].
- A vast number of [correctness fixes and code refactorings][log], mostly made
by [Oleg Efimov][oe] and [Evgeny Stepanischev][es].
[av]: https://github.com/vlasovskikh
[am]: https://github.com/myadzel
[dn]: https://github.com/dnagir
[oe]: https://github.com/Sannis
[db]: https://github.com/btd
[jc]: https://github.com/seejohnrun
[lm]: http://grigio.org/
[ak]: https://github.com/geekpanth3r
[es]: https://github.com/bolknote
[log]: https://github.com/isagalaev/highlight.js/commits/
## Version 6.1 — Solarized
[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][]
style theme famous for being based on the intricate color theory to achieve
correct contrast and color perception. It is now available for highlight.js in
both variants — light and dark.
This version also adds a new original style Arta. Its author pumbur maintains a
[heavily modified fork of highlight.js][pb] on GitHub.
[jh]: https://github.com/sourrust
[solarized]: http://ethanschoonover.com/solarized
[pb]: https://github.com/pumbur/highlight.js
## Version 6.0
New major version of the highlighter has been built on a significantly
refactored syntax. Due to this it's even smaller than the previous one while
supporting more languages!
New languages are:
- Haskell by [Jeremy Hull][sourrust]
- Erlang in two varieties — module and REPL — made collectively by [Nikolay
Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov]
- Objective C by [Valerii Hiora][vhbit]
- Vala by [Antono Vasiljev][antono]
- Go by [Stephan Kountso][steplg]
[sourrust]: https://github.com/sourrust
[desh]: http://desh.su/
[arhibot]: https://github.com/arhibot
[ignatov]: https://github.com/ignatov
[vhbit]: https://github.com/vhbit
[antono]: https://github.com/antono
[steplg]: https://github.com/steplg
Also this version is marginally faster and fixes a number of small long-standing
bugs.
Developer overview of the new language syntax is available in a [blog post about
recent beta release][beta].
[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/
P.S. New version is not yet available on a Yandex CDN, so for now you have to
download [your own copy][d].
[d]: /soft/highlight/en/download/
## Version 5.14
Fixed bugs in HTML/XML detection and relevance introduced in previous
refactoring.
Also test.html now shows the second best result of language detection by
relevance.
## Version 5.13
Past weekend began with a couple of simple additions for existing languages but
ended up in a big code refactoring bringing along nice improvements for language
developers.
### For users
- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard.
- Description of HTML has got new tags from [HTML 5][].
- CSS-styles have been unified to use consistent padding and also have lost
pop-outs with names of detected languages.
- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake & VHDL.
This makes total number of languages supported by highlight.js to reach 35.
Bug fixes:
- Custom classes on `` tags are not being overridden anymore
- More correct highlighting of code blocks inside non-`` containers:
highlighter now doesn't insist on replacing them with its own container and
just replaces the contents.
- Small fixes in browser compatibility and heuristics.
[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
[html 5]: http://en.wikipedia.org/wiki/HTML5
[ik]: http://kalnitsky.org.ua/
### For developers
The most significant change is the ability to include language submodes right
under `contains` instead of defining explicit named submodes in the main array:
contains: [
'string',
'number',
{begin: '\\n', end: hljs.IMMEDIATE_RE}
]
This is useful for auxiliary modes needed only in one place to define parsing.
Note that such modes often don't have `className` and hence won't generate a
separate `` in the resulting markup. This is similar in effect to
`noMarkup: true`. All existing languages have been refactored accordingly.
Test file test.html has at last become a real test. Now it not only puts the
detected language name under the code snippet but also tests if it matches the
expected one. Test summary is displayed right above all language snippets.
## CDN
Fine people at [Yandex][] agreed to host highlight.js on their big fast servers.
[Link up][l]!
[yandex]: http://yandex.com/
[l]: http://softwaremaniacs.org/soft/highlight/en/download/
## Version 5.10 — "Paris".
Though I'm on a vacation in Paris, I decided to release a new version with a
couple of small fixes:
- Tomas Vitvar discovered that TAB replacement doesn't always work when used
with custom markup in code
- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests
## Version 5.9
A long-awaited version is finally released.
New languages:
- Andrew Fedorov made a definition for Lua
- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for
Nginx config
- [Vladimir Moskva][vm] made a definition for TeX
[pl]: http://kung-fu-tzu.ru/
[vm]: http://fulc.ru/
Fixes for existing languages:
- [Loren Segal][ls] reworked the Ruby definition and added highlighting for
[YARD][] inline documentation
- the definition of SQL has become more solid and now it shouldn't be overly
greedy when it comes to language detection
[ls]: http://gnuu.org/
[yard]: http://yardoc.org/
The highlighter has become more usable as a library allowing to do highlighting
from initialization code of JS frameworks and in ajax methods (see.
readme.eng.txt).
Also this version drops support for the [WordPress][wp] plugin. Everyone is
welcome to [pick up its maintenance][p] if needed.
[wp]: http://wordpress.org/
[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php
## Version 5.8
- Jan Berkel has contributed a definition for Scala. +1 to hotness!
- All CSS-styles are rewritten to work only inside `` tags to avoid
conflicts with host site styles.
## Version 5.7.
Fixed escaping of quotes in VBScript strings.
## Version 5.5
This version brings a small change: now .ini-files allow digits, underscores and
square brackets in key names.
## Version 5.4
Fixed small but upsetting bug in the packer which caused incorrect highlighting
of explicitly specified languages. Thanks to Andrew Fedorov for precise
diagnostics!
## Version 5.3
The version to fulfil old promises.
The most significant change is that highlight.js now preserves custom user
markup in code along with its own highlighting markup. This means that now it's
possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the
[initial proposal][1] and for making a proof-of-concept patch.
Also in this version:
- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented
support for CSS @-rules and Ruby symbols.
- Yura Zaripov has sent two styles: Brown Paper and School Book.
- Oleg Volchkov has sent a definition for [Parser 3][p3].
[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
[p3]: http://www.parser.ru/
[vp]: http://vasily.polovnyov.ru/
[vd]: http://dolzhenko.blogspot.com/
## Version 5.2
- at last it's possible to replace indentation TABs with something sensible
(e.g. 2 or 4 spaces)
- new keywords and built-ins for 1C by Sergey Baranov
- a couple of small fixes to Apache highlighting
## Version 5.1
This is one of those nice version consisting entirely of new and shiny
contributions!
- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his
original visual style for it is now available for all highlight.js languages
under the name "Magula".
- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan
languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on
the matter.
[vooon]: http://vehq.ru/about/
[rukeba]: http://rukeba.com/
[drake]: http://drakeguan.org/
[ke]: http://k-evdokimenko.moikrug.ru/
## Version 5.0
The main change in the new major version of highlight.js is a mechanism for
packing several languages along with the library itself into a single compressed
file. Now sites using several languages will load considerably faster because
the library won't dynamically include additional files while loading.
Also this version fixes a long-standing bug with Javascript highlighting that
couldn't distinguish between regular expressions and division operations.
And as usually there were a couple of minor correctness fixes.
Great thanks to all contributors! Keep using highlight.js.
## Version 4.3
This version comes with two contributions from [Jason Diamond][jd]:
- language definition for C# (yes! it was a long-missed thing!)
- Visual Studio-like highlighting style
Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.
[jd]: http://jason.diamond.name/weblog/
## Version 4.2
The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's
somewhat experimental meaning that for highlighting "keywords" it doesn't use
any pre-defined set of a Lisp dialect. Instead it tries to highlight first word
in parentheses wherever it makes sense. I'd like to ask people programming in
Lisp to confirm if it's a good idea and send feedback to [the forum][f].
Other changes:
- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for
test.html
- comments now allowed inside Ruby function definition
- [MEL][] language from [Shuen-Huei Guan][drake]
- whitespace now allowed between `` and ``
- better auto-detection of C++ and PHP
- HTML allows embedded VBScript (`<% .. %>`)
[f]: http://softwaremaniacs.org/forum/highlightjs/
[voldmar]: http://voldmar.ya.ru/
[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language
[drake]: http://drakeguan.org/
## Version 4.1
Languages:
- Bash from Vah
- DOS bat-files from Alexander Makarov (Sam)
- Diff files from Vasily Polovnyov
- Ini files from myself though initial idea was from Sam
Styles:
- Zenburn from Vladimir Epifanov, this is an imitation of a
[well-known theme for Vim][zenburn].
- Ascetic from myself, as a realization of ideals of non-flashy highlighting:
just one color in only three gradations :-)
In other news. [One small bug][bug] was fixed, built-in keywords were added for
Python and C++ which improved auto-detection for the latter (it was shame that
[my wife's blog][alenacpp] had issues with it from time to time). And lastly
thanks go to Sam for getting rid of my stylistic comments in code that were
getting in the way of [JSMin][].
[zenburn]: http://en.wikipedia.org/wiki/Zenburn
[alenacpp]: http://alenacpp.blogspot.com/
[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823
[jsmin]: http://code.google.com/p/jsmin-php/
## Version 4.0
New major version is a result of vast refactoring and of many contributions.
Visible new features:
- Highlighting of embedded languages. Currently is implemented highlighting of
Javascript and CSS inside HTML.
- Bundled 5 ready-made style themes!
Invisible new features:
- Highlight.js no longer pollutes global namespace. Only one object and one
function for backward compatibility.
- Performance is further increased by about 15%.
Changing of a major version number caused by a new format of language definition
files. If you use some third-party language files they should be updated.
## Version 3.5
A very nice version in my opinion fixing a number of small bugs and slightly
increased speed in a couple of corner cases. Thanks to everybody who reports
bugs in he [forum][f] and by email!
There is also a new language — XML. A custom XML formerly was detected as HTML
and didn't highlight custom tags. In this version I tried to make custom XML to
be detected and highlighted by its own rules. Which by the way include such
things as CDATA sections and processing instructions (` ... ?>`).
[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6
## Version 3.3
[Vladimir Gubarkov][xonix] has provided an interesting and useful addition.
File export.html contains a little program that shows and allows to copy and
paste an HTML code generated by the highlighter for any code snippet. This can
be useful in situations when one can't use the script itself on a site.
[xonix]: http://xonixx.blogspot.com/
## Version 3.2 consists completely of contributions:
- Vladimir Gubarkov has described SmallTalk
- Yuri Ivanov has described 1C
- Peter Leonov has packaged the highlighter as a Firefox extension
- Vladimir Ermakov has compiled a mod for phpBB
Many thanks to you all!
## Version 3.1
Three new languages are available: Django templates, SQL and Axapta. The latter
two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an
SQL definition but I'd never started it be it from the ground up :-)
The engine itself has got a long awaited feature of grouping keywords
("keyword", "built-in function", "literal"). No more hacks!
[1]: http://roudakov.ru/
## Version 3.0
It is major mainly because now highlight.js has grown large and has become
modular. Now when you pass it a list of languages to highlight it will
dynamically load into a browser only those languages.
Also:
- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for
RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more
languages!
- Heuristics for C++ and HTML got better.
- I've implemented (at last) a correct handling of backslash escapes in C-like
languages.
There is also a small backwards incompatible change in the new version. The
function initHighlighting that was used to initialize highlighting instead of
initHighlightingOnLoad a long time ago no longer works. If you by chance still
use it — replace it with the new one.
[RibKit]: http://ribkit.sourceforge.net/
## Version 2.9
Highlight.js is a parser, not just a couple of regular expressions. That said
I'm glad to announce that in the new version 2.9 has support for:
- in-string substitutions for Ruby -- `#{...}`
- strings from from numeric symbol codes (like #XX) for Delphi
## Version 2.8
A maintenance release with more tuned heuristics. Fully backwards compatible.
## Version 2.7
- Nikita Ledyaev presents highlighting for VBScript, yay!
- A couple of bugs with escaping in strings were fixed thanks to Mickle
- Ongoing tuning of heuristics
Fixed bugs were rather unpleasant so I encourage everyone to upgrade!
## Version 2.4
- Peter Leonov provides another improved highlighting for Perl
- Javascript gets a new kind of keywords — "literals". These are the words
"true", "false" and "null"
Also highlight.js homepage now lists sites that use the library. Feel free to
add your site by [dropping me a message][mail] until I find the time to build a
submit form.
[mail]: mailto:Maniac@SoftwareManiacs.Org
## Version 2.3
This version fixes IE breakage in previous version. My apologies to all who have
already downloaded that one!
## Version 2.2
- added highlighting for Javascript
- at last fixed parsing of Delphi's escaped apostrophes in strings
- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in
Perl
## Version 2.0
- Ruby support by [Anton Kovalyov][ak]
- speed increased by orders of magnitude due to new way of parsing
- this same way allows now correct highlighting of keywords in some tricky
places (like keyword "End" at the end of Delphi classes)
[ak]: http://anton.kovalyov.net/
## Version 1.0
Version 1.0 of javascript syntax highlighter is released!
It's the first version available with English description. Feel free to post
your comments and question to [highlight.js forum][forum]. And don't be afraid
if you find there some fancy Cyrillic letters -- it's for Russian users too :-)
[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6
highlight.js-9.12.0/.gitattributes 0000644 0001750 0001750 00000000275 13113427226 017471 0 ustar infinity0 infinity0 # The build script and some tests use `\n` as markers, so we need to make sure
# that all javascript files are checked out using UNIX line endings (not `\r\n`)
*.js eol=lf
*.txt eol=lf highlight.js-9.12.0/LICENSE 0000644 0001750 0001750 00000002732 13113427226 015603 0 ustar infinity0 infinity0 Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
highlight.js-9.12.0/AUTHORS.en.txt 0000644 0001750 0001750 00000023214 13113427226 017063 0 ustar infinity0 infinity0 Syntax highlighting with language autodetection.
URL: https://highlightjs.org/
Core developers (in order of appearance):
- Ivan Sagalaev (original author)
- Jeremy Hull
- Oleg Efimov
Contributors:
- Peter Leonov
- Victor Karamzin
- Vsevolod Solovyov
- Anton Kovalyov
- Nikita Ledyaev
- Konstantin Evdokimenko
- Dmitri Roudakov
- Yuri Ivanov
- Vladimir Ermakov
- Vladimir Gubarkov
- Brian Beck
- MajestiC
- Vasily Polovnyov
- Vladimir Epifanov
- Alexander Makarov
- Vah
- Shuen-Huei Guan
- Jason Diamond
- Michal Gabrukiewicz
- Ruslan Keba
- Sergey Baranov
- Zaripov Yura
- Oleg Volchkov
- Vasily Mikhailitchenko
- Jan Berkel
- Vladimir Moskva
- Loren Segal
- Andrew Fedorov
- Igor Kalnitsky
- Valerii Hiora
- Nikolay Zakharov
- Dmitry Kovega
- Sergey Ignatov
- Antono Vasiljev
- Stephan Kountso
- pumbur
- John Crepezzi
- Andrey Vlasovskikh
- Alexander Myadzel
- Evgeny Stepanischev
- Dmytrii Nagirniak
- Luigi Maselli
- Denis Bardadym
- Aahan Krish
- Ilya Baryshev
- Aleksandar Ruzicic
- Joe Cheng
- Angel G. Olloqui
- Jason Tate
- Sergey Tikhomirov
- Marc Fornos
- Yoshihide Jimbo
- Casey Duncan
- Eugene Nizhibitsky
- Alberto Gimeno
- Kirk Kimmel
- Nathan Grigg
- Dr. Drang
- Robin Ward
- Dmitry Medvinsky
- Jason Jacobson
- Jonas Follesø
- Dan Allen
- noformnocontent
- Damien White
- Alexander Marenin
- Cédric Néhémie
- Simon Madine
- Benjamin Pannell
- Eric Knibbe
- Poren Chiang
- Kelley van Evert
- Kurt Emch
- Mehdi Dogguy
- Nicolas Braud-Santoni
- Ralf Bitter
- Sylvestre Ledru
- Troy Kershaw
- Zena Treep
- Daniel Kvasnicka
- Carlo Kok
- Bram de Haan
- Seongwon Lee
- Zaven Muradyan
- Jan T. Sott
- Brent Bradbury
- Martin Dilling-Hansen
- Ilya Vassilevsky
- Josh Adams
- Dan Tao
- Jeff Escalante
- Jun Yang
- Nikolay Lisienko
- Heiko August
- Domen Kožar
- Travis Odom
- innocenat
- Arthur Bikmullin
- Pascal Hurni
- Roman Shmatov
- Nic West
- Panu Horsmalahti
- Flaviu Tamas
- Damian Mee
- Christopher Kaster
- Chris Eidhof
- Nate Cook
- Matt Diephouse
- Erik Osheim
- Guillaume Laforge
- Lucas Mazza
- Maxim Dikun
- Henrik Feldt
- Anton Kochkov
- Michael Allen
- JP Verkamp
- Adam Joseph Cook
- Sergey Vidyuk
- Radek Liska
- Jose Molina Colmenero
- Max Mikhailov
- Bryant Williams
- Erik Paluka
- Luke Holder
- David Mohundro
- Nicholas Blumhardt
- Christophe de Dinechin
- Taneli Vatanen
- Jen Evers-Corvina
- Kassio Borges
- Cedric Sohrauer
- Mickaël Delahaye
- Hakan Özler
- Trey Shugart
- Vincent Zurczak
- Adam Joseph Cook
- Edwin Dalorzo
- mucaho
- Dennis Titze
- Jon Evans
- Brian Quistorff
- Jonathan Suever
- Alexis Hénaut
- Chris Kiehl
- Peter Piwowarski
- Kenta Sato
- Anthony Scemama
- Taufik Nurrohman
- Pedro Oliveira
- Gu Yiling
- Thomas Applencourt
- Andrew Farmer
- Sergey Mashkov
- Raivo Laanemets
- Kenneth Fuglsang
- David Anson
- Louis Barranqueiro
- Tim Schumacher
- Lucas Werkmeister
- Dan Panzarella
- Bruno Dias
- Jay Strybis
- Guillaume Gomez
- Janis Voigtländer
- Dirk Kirsten
- MY Sun
- Vadimtro
- Benjamin Auder
- Dotan Dimet
- Manh Tuan
- Philippe Charrière
- Stefan Bechert
- Samuel Reed
- Yury Selivanov
- Tsuyusato Kitsune
- Mick MacCallum
- Kristoffer Gronlund
- Søren Enevoldsen
- Daniel Rosenwasser
- Ladislav Prskavec
- Jan Kühle
- Stefan Wienert
- Nikita Savchenko
- Stefania Mellai
- Nebuleon Fumika
- prince
- Brendan Rocks
- Raphaël Assénat
- Matt Evans
- Martin Braun
- Boris Cherny
- John Foster
- Robert Dodier
- Anthony Dugois
- Qeole
- Denis Ciccale
- Michael Johnston
- Taras
- Philipp Wolfer
- Mikko Kouhia
- Billy Quith
- Herbert Shin
- Tristano Ajmone
- Taisuke Fujimoto
- Boone Severson
- Victor Zhou
- Lars Schulna
- Jacob Childress
- Gavin Siu
- Builder's Brewery
- Sergey Bronnikov
- Joe Eli McIlvain
- Stephan Boyer
- Alex McKibben
- Daniel Gamage
- Matthew Daly
- Magnus Madsen
- Camil Staps
- Alexander Lichter
- Nicolas Le Gall
- Kenton Hamaluik
- Marvin Saignat
- Michael Rodler
- Sergey Sobko
- Hale Chan
- Matt Evans
- Kasper Andersen
- Philipp A.
- Guannan Wei
- Sam Wu
- Ike Ku
- Andres Täht
- Rene Saarsoo
- Jordi Petit
- Raphaël Parrëe
- Joël Porquet
- Alex Arslan
- Stanislav Belov
- Ivan Dementev
- Nicolas LLOBERA
- Morten Piibeleht
- Martin Clausen
highlight.js-9.12.0/docs/ 0000755 0001750 0001750 00000000000 13113427226 015522 5 ustar infinity0 infinity0 highlight.js-9.12.0/docs/_build/ 0000755 0001750 0001750 00000000000 13113427226 016760 5 ustar infinity0 infinity0 highlight.js-9.12.0/docs/_build/.gitkeep 0000644 0001750 0001750 00000000000 13113427226 020377 0 ustar infinity0 infinity0 highlight.js-9.12.0/docs/language-guide.rst 0000644 0001750 0001750 00000016463 13113427226 021144 0 ustar infinity0 infinity0 Language definition guide
=========================
Highlighting overview
---------------------
Programming language code consists of parts with different rules of parsing: keywords like ``for`` or ``if``
don't make sense inside strings, strings may contain backslash-escaped symbols like ``\"``
and comments usually don't contain anything interesting except the end of the comment.
In highlight.js such parts are called "modes".
Each mode consists of:
* starting condition
* ending condition
* list of contained sub-modes
* lexing rules and keywords
* …exotic stuff like another language inside a language
The parser's work is to look for modes and their keywords.
Upon finding, it wraps them into the markup ``...``
and puts the name of the mode ("string", "comment", "number")
or a keyword group name ("keyword", "literal", "built-in") as the span's class name.
General syntax
--------------
A language definition is a JavaScript object describing the default parsing mode for the language.
This default mode contains sub-modes which in turn contain other sub-modes, effectively making the language definition a tree of modes.
Here's an example:
::
{
case_insensitive: true, // language is case-insensitive
keywords: 'for if while',
contains: [
{
className: 'string',
begin: '"', end: '"'
},
hljs.COMMENT(
'/\\*', // begin
'\\*/', // end
{
contains: [
{
className: 'doc', begin: '@\\w+'
}
]
}
)
]
}
Usually the default mode accounts for the majority of the code and describes all language keywords.
A notable exception here is XML in which a default mode is just a user text that doesn't contain any keywords,
and most interesting parsing happens inside tags.
Keywords
--------
In the simple case language keywords are defined in a string, separated by space:
::
{
keywords: 'else for if while'
}
Some languages have different kinds of "keywords" that might not be called as such by the language spec
but are very close to them from the point of view of a syntax highlighter. These are all sorts of "literals", "built-ins", "symbols" and such.
To define such keyword groups the attribute ``keywords`` becomes an object each property of which defines its own group of keywords:
::
{
keywords: {
keyword: 'else for if while',
literal: 'false true null'
}
}
The group name becomes then a class name in a generated markup enabling different styling for different kinds of keywords.
To detect keywords highlight.js breaks the processed chunk of code into separate words — a process called lexing.
The "word" here is defined by the regexp ``[a-zA-Z][a-zA-Z0-9_]*`` that works for keywords in most languages.
Different lexing rules can be defined by the ``lexemes`` attribute:
::
{
lexemes '-[a-z]+',
keywords: '-import -export'
}
Sub-modes
---------
Sub-modes are listed in the ``contains`` attribute:
::
{
keywords: '...',
contains: [
hljs.QUOTE_STRING_MODE,
hljs.C_LINE_COMMENT,
{ ... custom mode definition ... }
]
}
A mode can reference itself in the ``contains`` array by using a special keyword ``'self``'.
This is commonly used to define nested modes:
::
{
className: 'object',
begin: '{', end: '}',
contains: [hljs.QUOTE_STRING_MODE, 'self']
}
Comments
--------
To define custom comments it is recommended to use a built-in helper function ``hljs.COMMENT`` instead of describing the mode directly, as it also defines a few default sub-modes that improve language detection and do other nice things.
Parameters for the function are:
::
hljs.COMMENT(
begin, // begin regex
end, // end regex
extra // optional object with extra attributes to override defaults
// (for example {relevance: 0})
)
Markup generation
-----------------
Modes usually generate actual highlighting markup — ```` elements with specific class names that are defined by the ``className`` attribute:
::
{
contains: [
{
className: 'string',
// ... other attributes
},
{
className: 'number',
// ...
}
]
}
Names are not required to be unique, it's quite common to have several definitions with the same name.
For example, many languages have various syntaxes for strings, comments, etc…
Sometimes modes are defined only to support specific parsing rules and aren't needed in the final markup.
A classic example is an escaping sequence inside strings allowing them to contain an ending quote.
::
{
className: 'string',
begin: '"', end: '"',
contains: [{begin: '\\\\.'}],
}
For such modes ``className`` attribute should be omitted so they won't generate excessive markup.
Mode attributes
---------------
Other useful attributes are defined in the :doc:`mode reference `.
.. _relevance:
Relevance
---------
Highlight.js tries to automatically detect the language of a code fragment.
The heuristics is essentially simple: it tries to highlight a fragment with all the language definitions
and the one that yields most specific modes and keywords wins. The job of a language definition
is to help this heuristics by hinting relative relevance (or irrelevance) of modes.
This is best illustrated by example. Python has special kinds of strings defined by prefix letters before the quotes:
``r"..."``, ``u"..."``. If a code fragment contains such strings there is a good chance that it's in Python.
So these string modes are given high relevance:
::
{
className: 'string',
begin: 'r"', end: '"',
relevance: 10
}
On the other hand, conventional strings in plain single or double quotes aren't specific to any language
and it makes sense to bring their relevance to zero to lessen statistical noise:
::
{
className: 'string',
begin: '"', end: '"',
relevance: 0
}
The default value for relevance is 1. When setting an explicit value it's recommended to use either 10 or 0.
Keywords also influence relevance. Each of them usually has a relevance of 1, but there are some unique names
that aren't likely to be found outside of their languages, even in the form of variable names.
For example just having ``reinterpret_cast`` somewhere in the code is a good indicator that we're looking at C++.
It's worth to set relevance of such keywords a bit higher. This is done with a pipe:
::
{
keywords: 'for if reinterpret_cast|10'
}
Illegal symbols
---------------
Another way to improve language detection is to define illegal symbols for a mode.
For example in Python first line of class definition (``class MyClass(object):``) cannot contain symbol "{" or a newline.
Presence of these symbols clearly shows that the language is not Python and the parser can drop this attempt early.
Illegal symbols are defined as a a single regular expression:
::
{
className: 'class',
illegal: '[${]'
}
Pre-defined modes and regular expressions
-----------------------------------------
Many languages share common modes and regular expressions. Such expressions are defined in core highlight.js code
at the end under "Common regexps" and "Common modes" titles. Use them when possible.
Contributing
------------
Follow the :doc:`contributor checklist `.
highlight.js-9.12.0/docs/release-process.rst 0000644 0001750 0001750 00000001620 13113427226 021347 0 ustar infinity0 infinity0 Release process
===============
Note: this is intended for core committers.
* Update CHANGES.md with everything interesting since the last update.
* Update version numbers using the three-part x.y.z notation everywhere:
* The header in CHANGES.md (this is where the site looks for the latest version number)
* ``"version"`` attribute in package.json
* Two places in docs/conf.py (``version`` and ``release``)
* Commit the version changes and tag the commit with the plain version number (no "v." or anything like that)
* Push the commit and the tags to master (``git push && git push --tags``)
Pushing the tag triggers the update process which can be monitored at http://highlightjs.org/api/release/
When something didn't work *and* it's fixable in code (version numbers mismatch, last minute patches, etc), simply make another release incrementing the third (revision) part of the version number.
highlight.js-9.12.0/docs/line-numbers.rst 0000644 0001750 0001750 00000004332 13113427226 020656 0 ustar infinity0 infinity0 Line numbers
============
Highlight.js' notable lack of line numbers support is not an oversight but a
feature. Following is the explanation of this policy from the current project
maintainer (hey guys!):
One of the defining design principles for highlight.js from the start was
simplicity. Not the simplicity of code (in fact, it's quite complex) but
the simplicity of usage and of the actual look of highlighted snippets on
HTML pages. Many highlighters, in my opinion, are overdoing it with such
things as separate colors for every single type of lexemes, striped
backgrounds, fancy buttons around code blocks and — yes — line numbers.
The more fancy stuff resides around the code the more it distracts a
reader from understanding it.
This is why it's not a straightforward decision: this new feature will not
just make highlight.js better, it might actually make it worse simply by
making it look more bloated in blog posts around the Internet. This is why
I'm asking people to show that it's worth it.
The only real use-case that ever was brought up in support of line numbers
is referencing code from the descriptive text around it. On my own blog I
was always solving this either with comments within the code itself or by
breaking the larger snippets into smaller ones and describing each small
part separately. I'm not saying that my solution is better. But I don't
see how line numbers are better either. And the only way to show that they
are better is to set up some usability research on the subject. I doubt
anyone would bother to do it.
Then there's maintenance. So far the core code of highlight.js is
maintained by only one person — yours truly. Inclusion of any new code in
highlight.js means that from that moment I will have to fix bugs in it,
improve it further, make it work together with the rest of the code,
defend its design. And I don't want to do all this for the feature that I
consider "evil" and probably will never use myself.
This position is `subject to discuss