当前位置:首页 > 技术心得 > 正文内容

如何扩展SyntaxHighlighter

xjtudll17年前 (2010-04-20)技术心得9670

    在做这个工作之前,你需要对JavaScript有比较深入的了解,尤其需要熟悉正则表达式。如果网络已经存在你需要拓展的加亮库,那就不用自己搞了,直接选用。另外,如果你需要拓展的语言跟已经存在的加亮库类似,那么可以修改它。比如,C51是在C上扩展而成,所以我们可以选择修改shBrushCpp.js来获得C51的加亮库。

    本文以新增一种语言为例。

    新建一个js文件,并定义一个SyntaxHighlighter.brushes对象。

    例如:

    SyntaxHighlighter.brushes.Custom = function()
    {
    };

    SyntaxHighlighter.brushes.Custom.prototype = new SyntaxHighlighter.Highlighter();

    Custom为扩展的语言,可取其他名字。

    下面是最关键的部分,你需要建立自己的匹配规则,也就是在regexList定义段写入一些匹配规则,具体怎么搞就需要一些正则技巧了。

    例如:

    SyntaxHighlighter.brushes.Custom = function()
   {
       var funcs        = 'abs avg case cast';
       var keywords    = 'absolute action add';
       var operators    = 'all and any between cross';

       this.regexList = [
          { regex: /--(.*)$/gm,                                               css: 'comments' },
          { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,    css: 'string' },
          { regex: new RegExp(this.getKeywords(funcs), 'gmi'),                css: 'color2' },
          { regex: new RegExp(this.getKeywords(operators), 'gmi'),            css: 'color1' },
          { regex: new RegExp(this.getKeywords(keywords), 'gmi'),             css: 'keyword' }
        ];
   }; 
   SyntaxHighlighter.brushes.Custom.prototype = new SyntaxHighlighter.Highlighter();

   最后,可以定义一些别名,用于调用。

  SyntaxHighlighter.brushes.Custom = function()
  {
   ...
  };
  SyntaxHighlighter.brushes.Custom.prototype    = new SyntaxHighlighter.Highlighter();
  SyntaxHighlighter.brushes.Custom.aliases    = ['custom', 'ctm', 'ct'];

  也就是说调用的时候custom,ctm,ct将被视为同一种。

 

SyntaxHighlighter 使用

  <pre class="brush: custom">
   ...此处插入代码
  </pre>

参考资料:Developing a custom brush

http://alexgorbatchev.com/wiki/SyntaxHighlighter:Brushes:Custom

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/76/

分享给朋友:

“如何扩展SyntaxHighlighter” 的相关文章

Protel99SE添加泪滴焊盘

Protel99SE添加泪滴焊盘

在电路板设计中,为了让焊盘更加坚固,防止机械制板时焊盘与导线之间断开,常在焊盘和导线之间用铜膜布置一个过渡区,形状像泪滴,故常称做补泪滴(Teardrops)。 泪滴的放置可以执行主菜单命令 Tools->Teardrops,将弹出如图所示的 Teardrop ptions (泪滴)设置对话...

Keil查看编译后的汇编代码

Keil查看编译后的汇编代码

在使用Keil编译C51时,一般情况下,大家都不去看汇编代码。但在某些特殊情况下,查看汇编代码就是有必要了。 (1)确认C代码是否正确 (2)研究算法 查看汇编代码前的某些准备工作是必须的:你得有工程,并确定程序编译无误。在查看汇编代码前,编译一次。 编译OK后,点Debug 有可能会提示你没有...

K3老单插件控制字段显示

K3老单插件控制字段显示

https://www.cnblogs.com/youzhangcai1/p/10685778.html 【问题描述:】 我想在工业单据的插件中锁定单据头字段,但实现不了? 【解决方法:】 For i = 0 To m_BillTransfer.Head.count - 1 &n...

金蝶K3 WISE 快速登录

修改快捷方式 "C:\Program Files (x86)\Kingdee\K3ERP\k3main.exe" -LoginUser|账套号|账套密码|用户账号|用户密码...

Win7 64bit安装keyshot 0xc000007b 错误解决

 先放出keysho 3.2.36的下载地址: 32bit:http://download.keyshot.com/keyshot_w32_3.2.36.exe 64bit:http://download.keyshot.com/keyshot_w64_3.2.36.exe 和谐包下载:...

基于状态机实现的按键处理算法

基于状态机实现的按键处理算法

这篇文章写了很久了,一直没发,现在发出来吧。 关于按键的基础知识,这里就不多写了,可以参考程序匠人的《按键漫谈》 一次完整的击键过程包括:等待阶段,闭合抖动阶段,有效闭合阶段,释放抖动阶段,有效释放阶段。释放抖动阶段对于按键处理用处不大,所以这个阶段被忽略了,即按键击键包括四个状态:等待阶段,闭合抖...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。