123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- if(!dojo._hasResource["dojox.highlight.widget.Code"]){
- dojo._hasResource["dojox.highlight.widget.Code"] = true;
- dojo.provide("dojox.highlight.widget.Code");
- dojo.require("dijit._Widget");
- dojo.require("dijit._Templated");
- dojo.require("dojox.highlight");
- dojo.declare("highlight.Code",[dijit._Widget, dijit._Templated],{
- url: "",
- range:null,
- style:"",
- listType:"1",
- lang:"",
-
-
- templateString:
- '<div class="formatted" style="${style}">'+
- '<div class="titleBar"></div>'+
- '<ol type="${listType}" dojoAttachPoint="codeList" class="numbers"></ol>' +
- '<div style="display:none" dojoAttachPoint="containerNode"></div>' +
- '</div>',
-
- postCreate: function(){
- this.inherited(arguments);
- if(this.url){
-
- dojo.xhrGet({
- url: this.url,
-
- load: dojo.hitch(this,"_populate"),
- error: dojo.hitch(this,"_loadError")
- });
- }else{
-
- this._populate(this.containerNode.innerHTML);
- }
- },
-
- _populate: function(data){
-
- this.containerNode.innerHTML =
- "<pre><code class='" + this.lang + "'>" +
- data.replace(/\</g,"<") +
- "</code></pre>";
-
- dojo.query("pre > code",this.containerNode).forEach(dojox.highlight.init);
-
-
- var lines = this.containerNode.innerHTML.split("\n");
- dojo.forEach(lines,function(line,i){
-
- var li = dojo.doc.createElement('li');
-
- dojo.addClass(li, (i % 2 !== 0 ? "even" : "odd"));
- line = "<pre><code>" + line + " </code></pre>";
- line = line.replace(/\t/g," ");
- li.innerHTML = line;
- this.codeList.appendChild(li);
- },this);
-
- this._lines = dojo.query("li",this.codeList);
- this._updateView();
- },
-
- setRange: function(/* Array */range){
-
- if(dojo.isArray(range)){
- this.range = range;
- this._updateView();
- }
- },
-
- _updateView: function(){
-
- if(this.range){
- var r = this.range;
- this._lines
-
- .style({ display:"none" })
- .filter(function(n,i){
-
- return (i + 1 >= r[0] && i + 1 <= r[1]);
- })
-
- .style({ display:"" })
- ;
-
- dojo.attr(this.codeList,"start",r[0]);
- }
- },
-
- _loadError: function(error){
-
- console.warn("loading: ", this.url, " FAILED", error);
- }
- });
- }
|