Skip to content

Instantly share code, notes, and snippets.

@NathanSweet
Last active August 29, 2015 14:02
Show Gist options
  • Select an option

  • Save NathanSweet/72a9f769a4884b2aa15d to your computer and use it in GitHub Desktop.

Select an option

Save NathanSweet/72a9f769a4884b2aa15d to your computer and use it in GitHub Desktop.

Revisions

  1. NathanSweet revised this gist May 31, 2014. 1 changed file with 8 additions and 1 deletion.
    9 changes: 8 additions & 1 deletion generic.php
    Original file line number Diff line number Diff line change
    @@ -67,7 +67,14 @@ public function __construct() {
    // JavaScript
    'function',
    // Lua
    'local', 'not', 'then', 'end', 'nil', 'pairs', 'ipairs',
    'local', 'not', 'then', 'end', 'nil', 'pairs', 'ipairs', 'and', 'or',
    // C
    'typedef', 'auto', 'extern', 'goto', 'register', 'signed', 'sizeof', 'struct', 'union', 'unsigned',
    // C++
    'alignas', 'alignof', 'and_eq', 'asm', 'bitand', 'bitor', 'char16_t', 'char32_t', 'compl', 'constexpr',
    'const_cast', 'decltype', 'delete', 'dynamic_cast', 'explicit', 'export', 'friend', 'inline', 'mutable',
    'noexcept', 'not_eq', 'nullptr', 'or_eq', 'reinterpret_cast', 'static_assert', 'static_cast', 'template',
    'thread_local', 'typeid', 'typename', 'wchar_t', 'xor', 'xor_eq',
    ),
    'preprocessor' => '/#(?:if|else|elif|endif|define|undef|warning|error|line|region|endregion|include|import)[^\r\n]*/',
    ),
  2. NathanSweet created this gist May 31, 2014.
    33 changes: 33 additions & 0 deletions code.css
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    .code {
    font-family: Consolas, 'Lucida Console', monospace;
    font-size: 85%;
    line-height: 1.5em;
    color: #000;
    border: 1px solid #DBDBDB;
    padding: 0.5em;
    margin-bottom: 1.25em;
    white-space: nowrap;
    max-height: 600px;
    background-color: #F5F5F5;
    overflow: auto;
    }
    .code .comment {
    color: #00a452;
    font-style: italic;
    }
    .code .identifier {
    color: #000080;
    }
    .code .keyword {
    color: #000080;
    font-weight: bold;
    }
    .code .method, .code .ctor {
    font-weight: bold;
    }
    .code .operator {
    color: #0000ff;
    }
    .code .string {
    color: #408080;
    }
    87 changes: 87 additions & 0 deletions generic.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,87 @@
    <?php

    // Highlights most languages reasonably: Java, C#, JavaScript, AS3, C, C++, Lua
    class GenericLanguage extends HyperLanguage {
    public function __construct() {
    $this->setInfo(array(
    parent::NAME => 'Generic',
    parent::VERSION => '0.1',
    parent::AUTHOR => array(
    parent::NAME => 'Nathan Sweet', // based Konrad Rudolph's csharp.php!
    parent::WEBSITE => 'esotericsoftware.com',
    parent::EMAIL => '[email protected]'
    )
    ));

    $this->setExtensions(array('java', 'cs', 'js', 'as', 'c', 'cpp', 'lua'));

    $this->setCaseInsensitive(false);

    $this->addStates(array(
    'init' => array(
    'string',
    'char',
    'number',
    'comment',
    'keyword' => array('', 'preprocessor'),
    'method',
    'ctor',
    'function',
    'operator',
    'type',
    'identifier',
    'whitespace',
    ),
    ));

    $this->addRules(array(
    'whitespace' => Rule::ALL_WHITESPACE,
    'operator' => '/[-+*\/%&|^!~=<>?{}()\[\].,:;]|&&|\|\||<<|>>|[-=!<>+*\/%&|^]=|<<=|>>=|->/',
    'string' => Rule::C_DOUBLEQUOTESTRING,
    'char' => Rule::C_SINGLEQUOTESTRING,
    'number' => Rule::C_NUMBER,
    'comment' => '#(//|--)(?:[^/].*?)?(\n|\z)|/\*.*?\*/#s',
    'keyword' => array(
    array(
    // C#
    'abstract', 'break', 'case', 'catch', 'checked', 'class',
    'const', 'continue', 'default', 'delegate', 'do', 'else',
    'enum', 'explicit', 'extern', 'finally', 'fixed',
    'for', 'foreach', 'goto', 'if', 'implicit', 'in', 'interface',
    'internal', 'lock', 'namespace', 'operator', 'out', 'override',
    'params', 'private', 'protected', 'public', 'readonly', 'ref',
    'return', 'sealed', 'static', 'struct', 'switch', 'throw',
    'try', 'unchecked', 'unsafe', 'using', 'var', 'virtual',
    'volatile', 'while',
    'bool', 'byte', 'char', 'decimal', 'double', 'float', 'int',
    'long', 'object', 'sbyte', 'short', 'string', 'uint', 'ulong',
    'ushort', 'void',
    'base', 'false', 'null', 'this', 'true',
    'as', 'is', 'new', 'sizeof', 'stackallock', 'typeof',
    // Java
    'extends', 'throws', 'implements',
    'final', 'native', 'synchronized',
    'transient', 'assert',
    'package', 'strictfp', 'super',
    'import', 'boolean', 'instanceof',
    // JavaScript
    'function',
    // Lua
    'local', 'not', 'then', 'end', 'nil', 'pairs', 'ipairs',
    ),
    'preprocessor' => '/#(?:if|else|elif|endif|define|undef|warning|error|line|region|endregion|include|import)[^\r\n]*/',
    ),
    'method' => '/(?<=\.)\s*([a-zA-Z][^\s\.\(:]+)(?=\s*\()/',
    'ctor' => '/(?<=new)\s+([a-zA-Z][^\s\(:]+)(?=\s*\()/',
    'function' => '/([a-zA-Z][^\s\.\(:]+)(?=\s*\()/',
    'type' => '/@?(sp)?[A-Z][a-z0-9_]*/',
    'identifier' => '/@?[a-z_][a-z0-9_]*/i',
    ));

    $this->addMappings(array(
    'whitespace' => '',
    ));
    }
    }

    ?>