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

如何扩展SyntaxHighlighter

xjtudll16年前 (2010-04-20)技术心得7030

    在做这个工作之前,你需要对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://www.xjtudll.cn/Exp/76/

分享给朋友:

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

布丁软件引起的桌面闪烁

问题描述: 进入桌面后,屏幕闪烁。 查找到系统日志: 错误应用程序名称: explorer.exe,版本: 6.3.9600.18231,时间戳: 0x56b8c9f1 错误模块名称: PDZipMenu64.dll,版本: 1.4.3.11014,时间戳: 0x5da4349a 异常代码: 0xc...

Xcode显示行数

Xcode显示行数

操作步骤如下: Xcode->Preferences - > text editing - > show:line numbers...

K3 wise 老单增加自定义项为下推或上拉【选单条件】

-- 老单增加自定义项选单条件,就是在下推时显示【没有符合条件的记录】,或在下游单据选单时在序时薄界面默认过滤条件单自据,这里以销售订单下推生成发货通知为例-- 步骤如下:-- 1、要用到的数据表有 -- ICTransactionType 该表反映了供需链所有单据的总体情况-- ICCl...

Android:是否需要同时申明WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 权限

Android使用过程中,免不了对存储空间进行读写,那么是否需要同时申明WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE呢? 答案是:不一定。 1、当你的APP只需要读取权限时,仅需申明READ_EXTERNAL_STORAGE; 2、当你的APP需要写入...

vs2012 与 win7 不兼容的问题

vs2012 与 win7 不兼容的问题

问题描述:安装VS2012后,打开提示与此版本的 Windows 不兼容 如下图: 一开始以为是VS2010不能安装在Win7 64bit上,后来发现有个补丁,安装好之后,就能使用了。 Update for Microsoft Visual Studio 2012 (KB2781514) http...

发表评论

访客

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