Skip to content

Commit

Permalink
Add Python builtin function highlighting (#1205)
Browse files Browse the repository at this point in the history
* Add Python builtin function highlighting

* Add builtin functions from Python 3.6

* Python: Add 'nonlocal' and 'None' keywords

* Update tests for Python

* Python: Remove duplicated builtins that are already keywords

* Run gulp
  • Loading branch information
ecterceocgan authored and Golmote committed Oct 21, 2017
1 parent f6f9cda commit 2169c99
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 12 deletions.
15 changes: 8 additions & 7 deletions components/prism-python.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Prism.languages.python= {
Prism.languages.python = {
'triple-quoted-string': {
pattern: /"""[\s\S]+?"""|'''[\s\S]+?'''/,
alias: 'string'
Expand All @@ -11,17 +11,18 @@ Prism.languages.python= {
pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
greedy: true
},
'function' : {
'function': {
pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
lookbehind: true
},
'class-name': {
pattern: /(\bclass\s+)[a-z0-9_]+/i,
lookbehind: true
},
'keyword' : /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,
'boolean' : /\b(?:True|False)\b/,
'number' : /\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
'operator' : /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,
'punctuation' : /[{}[\];(),.:]/
'keyword': /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,
'builtin':/\b(?:\_\_import\_\_|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
'boolean': /\b(?:True|False|None)\b/,
'number': /\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,
'punctuation': /[{}[\];(),.:]/
};
2 changes: 1 addition & 1 deletion components/prism-python.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion plugins/autoloader/prism-autoloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
}

// The dependencies map is built automatically with gulp
var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":"markup","bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","fsharp":"clike","glsl":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup","haxe":"clike","pug":"javascript","java":"clike","jolie":"clike","kotlin":"clike","less":"css","markdown":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":"clike","php-extras":"php","processing":"clike","protobuf":"clike","qore":"clike","jsx":["markup","javascript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup","swift":"clike","textile":"markup","twig":"markup","typescript":"javascript","vbnet":"basic","wiki":"markup"}/*]*/;
var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":"markup","bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","fsharp":"clike","glsl":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup","haxe":"clike","java":"clike","jolie":"clike","kotlin":"clike","less":"css","markdown":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":"clike","php-extras":"php","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup","swift":"clike","textile":"markup","twig":"markup","typescript":"javascript","vbnet":"basic","wiki":"markup"}/*]*/;

var lang_data = {};

Expand Down
2 changes: 1 addition & 1 deletion plugins/autoloader/prism-autoloader.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion tests/languages/python/boolean_feature.test
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
True
False
None

----------------------------------------------------

[
["boolean", "True"],
["boolean", "False"]
["boolean", "False"],
["boolean", "None"]
]

----------------------------------------------------
Expand Down
56 changes: 56 additions & 0 deletions tests/languages/python/builtin_feature.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
abs all any apply
ascii basestring bin bool
buffer bytearray bytes callable
chr classmethod cmp coerce
compile complex delattr
dict dir divmod enumerate
eval execfile file
filter float format frozenset
getattr globals hasattr hash
help hex id input
int intern isinstance issubclass
iter len list locals
long map max memoryview
min next object oct
open ord pow property
range raw_input reduce reload
repr reversed round set
setattr slice sorted staticmethod
str sum super tuple
type unichr unicode vars
xrange()
zip(
__import__


----------------------------------------------------

[
["builtin", "abs"], ["builtin", "all"], ["builtin", "any"], ["builtin", "apply"],
["builtin", "ascii"], ["builtin", "basestring"], ["builtin", "bin"], ["builtin", "bool"],
["builtin", "buffer"], ["builtin", "bytearray"], ["builtin", "bytes"], ["builtin", "callable"],
["builtin", "chr"], ["builtin", "classmethod"], ["builtin", "cmp"], ["builtin", "coerce"],
["builtin", "compile"], ["builtin", "complex"], ["builtin", "delattr"],
["builtin", "dict"], ["builtin", "dir"], ["builtin", "divmod"], ["builtin", "enumerate"],
["builtin", "eval"], ["builtin", "execfile"], ["builtin", "file"],
["builtin", "filter"], ["builtin", "float"], ["builtin", "format"], ["builtin", "frozenset"],
["builtin", "getattr"], ["builtin", "globals"], ["builtin", "hasattr"], ["builtin", "hash"],
["builtin", "help"], ["builtin", "hex"], ["builtin", "id"], ["builtin", "input"],
["builtin", "int"], ["builtin", "intern"], ["builtin", "isinstance"], ["builtin", "issubclass"],
["builtin", "iter"], ["builtin", "len"], ["builtin", "list"], ["builtin", "locals"],
["builtin", "long"], ["builtin", "map"], ["builtin", "max"], ["builtin", "memoryview"],
["builtin", "min"], ["builtin", "next"], ["builtin", "object"], ["builtin", "oct"],
["builtin", "open"], ["builtin", "ord"], ["builtin", "pow"], ["builtin", "property"],
["builtin", "range"], ["builtin", "raw_input"], ["builtin", "reduce"], ["builtin", "reload"],
["builtin", "repr"], ["builtin", "reversed"], ["builtin", "round"], ["builtin", "set"],
["builtin", "setattr"], ["builtin", "slice"], ["builtin", "sorted"], ["builtin", "staticmethod"],
["builtin", "str"], ["builtin", "sum"], ["builtin", "super"], ["builtin", "tuple"],
["builtin", "type"], ["builtin", "unichr"], ["builtin", "unicode"], ["builtin", "vars"],
["builtin", "xrange"], ["punctuation", "("], ["punctuation", ")"],
["builtin", "zip"], ["punctuation", "("],
["builtin", "__import__"]
]

----------------------------------------------------

Checks for all builtins.
4 changes: 3 additions & 1 deletion tests/languages/python/keyword_feature.test
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ for from global if
import in is lambda
pass print raise return
try while with yield
nonlocal

----------------------------------------------------

Expand All @@ -19,7 +20,8 @@ try while with yield
["keyword", "for"], ["keyword", "from"], ["keyword", "global"], ["keyword", "if"],
["keyword", "import"], ["keyword", "in"], ["keyword", "is"], ["keyword", "lambda"],
["keyword", "pass"], ["keyword", "print"], ["keyword", "raise"], ["keyword", "return"],
["keyword", "try"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"]
["keyword", "try"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"],
["keyword", "nonlocal"]
]

----------------------------------------------------
Expand Down

0 comments on commit 2169c99

Please sign in to comment.