mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Pygments highlighting rules for Solidity.
This commit is contained in:
parent
251e7aa462
commit
c7ec85754a
@ -19,7 +19,11 @@ import os
|
|||||||
# If extensions (or modules to document with autodoc) are in another directory,
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
# add these directories to sys.path here. If the directory is relative to the
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
#sys.path.insert(0, os.path.abspath('.'))
|
|
||||||
|
def setup(sphinx):
|
||||||
|
sys.path.insert(0, os.path.abspath('./utils'))
|
||||||
|
from SolidityLexer import SolidityLexer
|
||||||
|
sphinx.add_lexer('Solidity', SolidityLexer())
|
||||||
|
|
||||||
# -- General configuration ------------------------------------------------
|
# -- General configuration ------------------------------------------------
|
||||||
|
|
||||||
@ -88,7 +92,7 @@ exclude_patterns = ['_build']
|
|||||||
# The name of the Pygments (syntax highlighting) style to use.
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
pygments_style = 'sphinx'
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
highlight_language = 'javascript'
|
highlight_language = 'Solidity'
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting.
|
# A list of ignored prefixes for module index sorting.
|
||||||
#modindex_common_prefix = []
|
#modindex_common_prefix = []
|
||||||
|
85
docs/utils/SolidityLexer.py
Normal file
85
docs/utils/SolidityLexer.py
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import re
|
||||||
|
import copy
|
||||||
|
|
||||||
|
from pygments.lexer import RegexLexer, ExtendedRegexLexer, bygroups, using, \
|
||||||
|
include, this
|
||||||
|
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
||||||
|
Number, Other, Punctuation, Literal
|
||||||
|
|
||||||
|
__all__ = ['SolidityLexer']
|
||||||
|
|
||||||
|
class SolidityLexer(RegexLexer):
|
||||||
|
name = "Solidity"
|
||||||
|
aliases = ['sol', 'solidity']
|
||||||
|
filenames = ['*.sol']
|
||||||
|
mimetypes = []
|
||||||
|
flags = re.DOTALL
|
||||||
|
tokens = {
|
||||||
|
'commentsandwhitespace': [
|
||||||
|
(r'\s+', Text),
|
||||||
|
(r'<!--', Comment),
|
||||||
|
(r'///', Comment.Special, 'docstringsingle'),
|
||||||
|
(r'//.*?\n', Comment.Single),
|
||||||
|
(r'/\*\*', Comment.Special, 'docstringmulti'),
|
||||||
|
(r'/\*.*?\*/', Comment.Multiline)
|
||||||
|
],
|
||||||
|
'natspec': [
|
||||||
|
(r'@author|@dev|@notice|@return|@param|@why3|@title', Keyword),
|
||||||
|
(r'.[^@*\n]*?', Comment.Special)
|
||||||
|
],
|
||||||
|
'docstringsingle': [
|
||||||
|
(r'\n', Comment.Special, '#pop'),
|
||||||
|
include('natspec')
|
||||||
|
],
|
||||||
|
'docstringmulti': [
|
||||||
|
(r'\*/', Comment.Special, '#pop'),
|
||||||
|
include('natspec')
|
||||||
|
],
|
||||||
|
'slashstartsregex': [
|
||||||
|
include('commentsandwhitespace'),
|
||||||
|
(r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
|
||||||
|
r'([gim]+\b|\B)', String.Regex, '#pop'),
|
||||||
|
(r'(?=/)', Text, ('#pop', 'badregex')),
|
||||||
|
(r'', Text, '#pop')
|
||||||
|
],
|
||||||
|
'badregex': [
|
||||||
|
(r'\n', Text, '#pop')
|
||||||
|
],
|
||||||
|
'root': [
|
||||||
|
(r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
|
||||||
|
include('commentsandwhitespace'),
|
||||||
|
(r'\+\+|--|\*\*|~|&&|\?|:|\|\||\\(?=\n)|'
|
||||||
|
r'(<<|>>>?|==?|!=?|[-<>+*%&\|\^/])=?', Operator, 'slashstartsregex'),
|
||||||
|
(r'[{(\[;,]', Punctuation, 'slashstartsregex'),
|
||||||
|
(r'[})\].]', Punctuation),
|
||||||
|
(r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
|
||||||
|
r'throw|try|catch|finally|new|delete|typeof|instanceof|void|'
|
||||||
|
r'this|import|mapping|returns|private|public|external|internal|'
|
||||||
|
r'constant|memory|storage)\b', Keyword, 'slashstartsregex'),
|
||||||
|
(r'(var|let|with|function|event|modifier|struct|enum|contract)\b', Keyword.Declaration, 'slashstartsregex'),
|
||||||
|
(r'(bytes|string|address|uint|int|bool|byte|' +
|
||||||
|
'|'.join(
|
||||||
|
['uint%d' % (i + 8) for i in range(0, 256, 8)] +
|
||||||
|
['int%d' % (i + 8) for i in range(0, 256, 8)] +
|
||||||
|
['bytes%d' % (i + 1) for i in range(0, 32)]
|
||||||
|
) + r')\b', Keyword.Type, 'slashstartsregex'),
|
||||||
|
(r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
|
||||||
|
r'extends|final|float|goto|implements|int|interface|long|native|'
|
||||||
|
r'package|private|protected|public|short|static|super|synchronized|throws|'
|
||||||
|
r'transient|volatile)\b', Keyword.Reserved),
|
||||||
|
(r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
|
||||||
|
(r'(Array|Boolean|Date|Error|Function|Math|netscape|'
|
||||||
|
r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
|
||||||
|
r'decodeURIComponent|encodeURI|encodeURIComponent|'
|
||||||
|
r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
|
||||||
|
r'window)\b', Name.Builtin),
|
||||||
|
(r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
|
||||||
|
(r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
|
||||||
|
(r'0x[0-9a-fA-F]+', Number.Hex),
|
||||||
|
(r'[0-9]+', Number.Integer),
|
||||||
|
(r'"(\\\\|\\"|[^"])*"', String.Double),
|
||||||
|
(r"'(\\\\|\\'|[^'])*'", String.Single),
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user