- Fixed issue where passing null or false for a match name would result in a runtime error
- Fixed issue where strings were not correctly highlighted following a comma
$was not correctly highlighted all the time
- Fixed crash if you do not include an inherited language in your build/page
- Fixed issue where html boolean attributes with dashes were not correctly highlighted
- Fixed issue where comments following certain strings did not highlight correctly
- Updated keyword matching to not match function calls
- Updated language grammars for golang to use proper scopes and added tests
- Added SQL language grammar
- Added async and await keywords to C# grammar
- Added ability to remove languages dynamically using
- Refactored the regex matching code to no longer process matches recursively (see #197 for more information). Should also make everything a bit faster.
Rainbow 2.0 is basically a complete rewrite from the ground up. Here is a summary of most of the changes
Updated code highlighting to use webworkers to prevent the main thread from being blocked while processing code blocks
Added support for Node.js
Rainbow.colorSyncmethod for synchronous highlighting (only for node.js)
Refactored source code into ES6 modules (using buble + rollup for compilation)
Updated unit tests to run via Karma
Updated themes to use SASS to share common logic
Added SASS mixin to make it easy to add custom rules to specific languages
Updated themes to wait until code is highlighted before displaying it to prevent a flash of unstyled content (FOUC)
Added a preload animation for when the code takes some time to highlight
Updated code highlighting for each block to be self contained. Previously there was a global state that led to some obscure bugs.
Fixed race condition where calling
Rainbow.colorcall is running could cause some strange behavior
Added ability for a language to extend any other language.
For example you could add a language grammar for
jsxthat inherits all the rules from
Updated build process to run using gulp to simplify creating custom packages
Updated build to use Uglify instead of closure compiler
Added ability to defer highlighting so it does not happen immediately on page load
Backwards incompatible changes
Rainbow.extendto no longer extend
genericpatterns by default
This means that passing
trueas the second argument is no longer needed. Instead if you pass a language as the second argument the rules will extend that language.
Dropped support for older versions of Chrome/Firefox/IE.
Check README.md for list of supported browsers.