TextMate-style syntax highlighting in PHP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Dustin Wilson e2a944cc72 More readme fixes 3 years ago
data Reorganized data folder 3 years ago
lib Started documenting the library in the readme 3 years ago
.gitignore More minor tweaks/fixes 3 years ago
LICENSE Initial commit 3 years ago
README.md More readme fixes 3 years ago
composer.json Added DOM creation 3 years ago
composer.lock Fixed injections, still trouble with php close tag 3 years ago
package.json Beginning work on language grammars 3 years ago
run Changed Pattern to Rule to be consistent with other implementations 3 years ago
yarn.lock Beginning work on language grammars 3 years ago

README.md

Lit

Lit is a multilanguage syntax highlighter written in PHP. It takes code as input and returns an HTML pre element containing the code highlighted using span elements with classes based upon tokens in the code. It is loosely based upon Atom's Highlights which is used in the Atom text editor to syntax highlight code. Atom's Highlights is in turn based upon TextMate's syntax highlighting using its concepts of scope selectors and common keywords for components of programming languages. Lit is not a port of Atom's Highlights but instead an independent implementation of what I can understand of TextMate's grammar syntax, parsing, and tokenization by analyzing other implementations. It aims to at least have feature parity or better with Atom's Highlights.

Documentation

dW\Lit\Highlight::toElement

Highlights incoming string data and outputs a PHP \DOMElement.

public static dW\Lit\Highlight::toElement(string $data, string $scopeName, ?\DOMDocument $document = null, string $encoding = 'windows-1252'): \DOMElement

Parameters

data - The input data string.
scopeName - The scope name (eg: text.html.php) of the grammar that's needed to highlight the input data.
document - An existing \DOMDocument to use as the owner document of the returned \DOMElement; if omitted one will be created instead.
encoding - If a document isn't provided an encoding may be provided for the new document; the HTML standard default windows-1252 is used if no encoding is provided.

Return Values

Returns a pre \DOMElement.

Usage

Here's an example of highlighting PHP code:

$code = <<<CODE
<?php
echo "OOK!";
?>
CODE;

$element = dW\Lit\Highlight::toElement($code, 'text.html.php');
// Use PHP DOM's DOMDocument::saveHTML method to print the highlighted markup.
$string = $element->ownerDocument->saveHTML($element);