diff --git a/.datatables-commit-sync b/.datatables-commit-sync index 70a33991..8385b703 100644 --- a/.datatables-commit-sync +++ b/.datatables-commit-sync @@ -1 +1 @@ -1ab5a4f786ab8e1a7640221e0ac29ae61977657e +7fe7daeac5018954faa8cc11051ad35dc22a05d1 diff --git a/examples/resources/syntax/shCore.js b/examples/resources/syntax/shCore.js index 34b12d32..b47cdbc5 100644 --- a/examples/resources/syntax/shCore.js +++ b/examples/resources/syntax/shCore.js @@ -1985,6 +1985,59 @@ typeof(exports) != 'undefined' ? exports.SyntaxHighlighter = SyntaxHighlighter : })(); +;(function() +{ + // CommonJS + SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null); + + function Brush() + { + var funcs = 'abs avg case cast coalesce convert count current_timestamp ' + + 'current_user day isnull left lower month nullif replace right ' + + 'session_user space substring sum system_user upper user year'; + + var keywords = 'absolute action add after alter as asc at authorization begin bigint ' + + 'binary bit by cascade char character check checkpoint close collate ' + + 'column commit committed connect connection constraint contains continue ' + + 'create cube current current_date current_time cursor database date ' + + 'deallocate dec decimal declare default delete desc distinct double drop ' + + 'dynamic else end end-exec escape except exec execute false fetch first ' + + 'float for force foreign forward free from full function global goto grant ' + + 'group grouping having hour ignore index inner insensitive insert instead ' + + 'int integer intersect into is isolation key last level load local max min ' + + 'minute modify move name national nchar next no numeric of off on only ' + + 'open option order out output partial password precision prepare primary ' + + 'prior privileges procedure public read real references relative repeatable ' + + 'restrict return returns revoke rollback rollup rows rule schema scroll ' + + 'second section select sequence serializable set size smallint static ' + + 'statistics table temp temporary then time timestamp to top transaction ' + + 'translation trigger true truncate uncommitted union unique update values ' + + 'varchar varying view when where with work'; + + var operators = 'all and any between cross in join like not null or outer some'; + + this.regexList = [ + { regex: /--(.*)$/gm, css: 'comments' }, // one line comments + { regex: /\/\*([^\*][\s\S]*?)?\*\//gm, css: 'comments' }, // multi line comments + { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings + { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings + { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions + { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such + { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword + ]; + }; + + Brush.prototype = new SyntaxHighlighter.Highlighter(); + Brush.aliases = ['sql']; + + SyntaxHighlighter.brushes.Sql = Brush; + + // CommonJS + typeof(exports) != 'undefined' ? exports.Brush = Brush : null; +})(); + + + ;(function() { // CommonJS diff --git a/media/js/jquery.dataTables.js b/media/js/jquery.dataTables.js index 9ea93158..e2e5f1ba 100644 --- a/media/js/jquery.dataTables.js +++ b/media/js/jquery.dataTables.js @@ -1394,7 +1394,7 @@ // Are we reading last data from DOM or the data object? if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { // Read the data from the DOM - row._aData = _fnGetRowElements( settings, row.nTr ).data; + row._aData = _fnGetRowElements( settings, row ).data; } else { // Reading from data object, update the DOM @@ -1432,7 +1432,8 @@ * cells that are in the row. * * @param {object} settings DataTables settings object - * @param {node} TR element from which to read data + * @param {node|object} TR element from which to read data or existing row + * object from which to re-read the data from the cells * @returns {object} Object with two parameters: `data` the data read, in * document order, and `cells` and array of nodes (they can be useful to the * caller, so rather than needing a second traversal to get them, just return @@ -1459,33 +1460,48 @@ } }; - while ( td ) { - name = td.nodeName.toUpperCase(); + var cellProcess = function ( cell ) { + col = columns[i]; + contents = $.trim(cell.innerHTML); - if ( name == "TD" || name == "TH" ) { - col = columns[i]; - contents = $.trim(td.innerHTML); + if ( col && col._bAttrSrc ) { + o = { + display: contents + }; - if ( col && col._bAttrSrc ) { - o = { - display: contents - }; + attr( col.mData.sort, o, cell ); + attr( col.mData.type, o, cell ); + attr( col.mData.filter, o, cell ); - attr( col.mData.sort, o, td ); - attr( col.mData.type, o, td ); - attr( col.mData.filter, o, td ); - - d.push( o ); - } - else { - d.push( contents ); - } - - tds.push( td ); - i++; + d.push( o ); + } + else { + d.push( contents ); } - td = td.nextSibling; + tds.push( cell ); + i++; + }; + + if ( td ) { + // `tr` element passed in + while ( td ) { + name = td.nodeName.toUpperCase(); + + if ( name == "TD" || name == "TH" ) { + cellProcess( td ); + } + + td = td.nextSibling; + } + } + else { + // Existing row object passed in + tds = row.anCells; + + for ( var j=0, jen=tds.length ; j