wagtail代码块在wagtail中提供prismjs语法高亮显示。
wagtailcodeblock的Python项目详细描述
wagtail代码块
wagtail代码块是wagtail cms源代码的语法突出显示块。它的特点是在wagtail编辑器中实时高亮显示、前端、行编号和对prismjs主题的支持。
它使用wagtail管理和网站中的PrismJS库,并且需要jquery。
示例用法
fromwagtailcodeblock.blocksimportCodeBlockclassContentStreamBlock(StreamBlock):heading=TextBlock()paragraph=TextBlock()code=CodeBlock(label='Code')
还可以通过提供必须包含在WAGTAIL_CODE_BLOCK_LANGUAGES
设置中的语言代码来强制它使用单一语言:
code=CodeBlock(label='Bash Code',language='bash')
CMS编辑器界面的屏幕截图
安装和设置
要安装wagtail代码块,只需运行:
pip install wagtailcodeblock
并将wagtailcodeblock
添加到INSTALLED_APPS
设置:
INSTALLED_APPS=[...'wagtailcodeblock',...]
django设置
主题
wagtail代码块默认为prismjs的“coy”主题,这在wagtail的cms编辑器设计中看起来很不错。您可以通过在django设置中配置WAGTAIL_CODE_BLOCK_THEME
来选择不同的主题。Prismjs提供了几个主题:
- none:Default
- 'coy':Coy
- 'dark':Dark
- 'funky':Funky
- 'okaidia':Okaidia
- 'solarizedlight':Solarized Light
- '微光':Twilight
例如,在您想要使用日光主题中:WAGTAIL_CODE_BLOCK_THEME = 'solarizedlight'
如果要使用默认主题:WAGTAIL_CODE_BLOCK_THEME = None
可用语言
通过在django设置中配置WAGTAIL_CODE_BLOCK_LANGUAGES
,可以自定义可用语言。
默认情况下,它将使用这些语言进行设置,因为大多数用户都在python web开发社区中:
WAGTAIL_CODE_BLOCK_LANGUAGES=(('bash','Bash/Shell'),('css','CSS'),('diff','diff'),('html','HTML'),('javascript','Javascript'),('json','JSON'),('python','Python'),('scss','SCSS'),('yaml','YAML'),)
此设置中的每种语言都是prismjs代码的元组和描述性标签。如果您想使用所有可用语言,这里有一个列表:
WAGTAIL_CODE_BLOCK_LANGUAGES=(('abap','ABAP'),('abnf','Augmented Backus–Naur form'),('actionscript','ActionScript'),('ada','Ada'),('apacheconf','Apache Configuration'),('apl','APL'),('applescript','AppleScript'),('arduino','Arduino'),('arff','ARFF'),('asciidoc','AsciiDoc'),('asm6502','6502 Assembly'),('aspnet','ASP.NET (C#)'),('autohotkey','AutoHotkey'),('autoit','AutoIt'),('bash','Bash + Shell'),('basic','BASIC'),('batch','Batch'),('bison','Bison'),('bnf','Backus–Naur form + Routing Backus–Naur form'),('brainfuck','Brainfuck'),('bro','Bro'),('c','C'),('clike','C-like'),('csharp','C#'),('cpp','C++'),('cil','CIL'),('coffeescript','CoffeeScript'),('clojure','Clojure'),('crystal','Crystal'),('csp','Content-Security-Policy'),('css','CSS'),('css-extras','CSS Extras'),('d','D'),('dart','Dart'),('diff','Diff'),('django','Django/Jinja2'),('docker','Docker'),('ebnf','Extended Backus–Naur form'),('eiffel','Eiffel'),('ejs','EJS'),('elixir','Elixir'),('elm','Elm'),('erb','ERB'),('erlang','Erlang'),('fsharp','F#'),('flow','Flow'),('fortran','Fortran'),('gcode','G-code'),('gedcom','GEDCOM'),('gherkin','Gherkin'),('git','Git'),('glsl','GLSL'),('gml','GameMaker Language'),('go','Go'),('graphql','GraphQL'),('groovy','Groovy'),('haml','Haml'),('handlebars','Handlebars'),('haskell','Haskell'),('haxe','Haxe'),('hcl','HCL'),('http','HTTP'),('hpkp','HTTP Public-Key-Pins'),('hsts','HTTP Strict-Transport-Security'),('ichigojam','IchigoJam'),('icon','Icon'),('inform7','Inform 7'),('ini','Ini'),('io','Io'),('j','J'),('java','Java'),('javadoc','JavaDoc'),('javadoclike','JavaDoc-like'),('javascript','JavaScript'),('javastacktrace','Java stack trace'),('jolie','Jolie'),('jsdoc','JSDoc'),('js-extras','JS Extras'),('json','JSON'),('jsonp','JSONP'),('json5','JSON5'),('julia','Julia'),('keyman','Keyman'),('kotlin','Kotlin'),('latex','LaTeX'),('less','Less'),('liquid','Liquid'),('lisp','Lisp'),('livescript','LiveScript'),('lolcode','LOLCODE'),('lua','Lua'),('makefile','Makefile'),('markdown','Markdown'),('markup','Markup + HTML + XML + SVG + MathML'),('markup-templating','Markup templating'),('matlab','MATLAB'),('mel','MEL'),('mizar','Mizar'),('monkey','Monkey'),('n1ql','N1QL'),('n4js','N4JS'),('nand2tetris-hdl','Nand To Tetris HDL'),('nasm','NASM'),('nginx','nginx'),('nim','Nim'),('nix','Nix'),('nsis','NSIS'),('objectivec','Objective-C'),('ocaml','OCaml'),('opencl','OpenCL'),('oz','Oz'),('parigp','PARI/GP'),('parser','Parser'),('pascal','Pascal + Object Pascal'),('perl','Perl'),('php','PHP'),('phpdoc','PHPDoc'),('php-extras','PHP Extras'),('plsql','PL/SQL'),('powershell','PowerShell'),('processing','Processing'),('prolog','Prolog'),('properties','.properties'),('protobuf','Protocol Buffers'),('pug','Pug'),('puppet','Puppet'),('pure','Pure'),('python','Python'),('q','Q (kdb+ database)'),('qore','Qore'),('r','R'),('jsx','React JSX'),('tsx','React TSX'),('renpy','Ren\'py'),('reason','Reason'),('regex','Regex'),('rest','reST (reStructuredText)'),('rip','Rip'),('roboconf','Roboconf'),('ruby','Ruby'),('rust','Rust'),('sas','SAS'),('sass','Sass (Sass)'),('scss','Sass (Scss)'),('scala','Scala'),('scheme','Scheme'),('smalltalk','Smalltalk'),('smarty','Smarty'),('sql','SQL'),('soy','Soy (Closure Template)'),('stylus','Stylus'),('swift','Swift'),('tap','TAP'),('tcl','Tcl'),('textile','Textile'),('toml','TOML'),('tt2','Template Toolkit 2'),('twig','Twig'),('typescript','TypeScript'),('t4-cs','T4 Text Templates (C#)'),('t4-vb','T4 Text Templates (VB)'),('t4-templating','T4 templating'),('vala','Vala'),('vbnet','VB.Net'),('velocity','Velocity'),('verilog','Verilog'),('vhdl','VHDL'),('vim','vim'),('visual-basic','Visual Basic'),('wasm','WebAssembly'),('wiki','Wiki markup'),('xeora','Xeora + XeoraCube'),('xojo','Xojo (REALbasic)'),('xquery','XQuery'),('yaml','YAML'),)
更改日志
1.15.0.0
- 更新至prismjs 1.15.0
- 错误修复:不要关闭
Language
标签,因为它是可翻译的。
1.14.0.0
- 升级至prismjs 1.14.0
- 允许将语言代码作为属性传递,只允许使用单一语言。
- 修复wagtail和标记语法类型的
tag
类之间的css冲突。
1.11.0.0
- 升级至prismjs 1.11.0
- 更改版本号以匹配附带的Prismjs版本
- 添加对本机包含的prismjs语言的支持的修补程序[“html”、“mathml”、“svg”、“xml”]
0.4
- 支持Wagtail 2.0
0.4.1
- 升级至prismjs 1.9.0,其中包括一个补丁,我们对“coy”主题,我们使用作为默认。
0.3
- 支持Prismjs主题
0.3.1
- 一些前端问题的错误修复。更新文档。
项目维护人员
- 蒂莫西·艾伦(https://github.com/FlipperPA)
- 米尔顿·莱尼斯(https://github.com/MiltonLn)
贡献者
- 何塞·路易斯(https://github.com/SalahAdDin)
- 卢卡斯·莫斯科普斯(https://github.com/lucasmoeskops)
- 尼克·萨比基(https://github.com/NDevox)