cleanup: moving vkbeautify.js to /libs
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 16 Sep 2013 08:08:29 +0000 (10:08 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 16 Sep 2013 08:08:29 +0000 (10:08 +0200)
karma.conf.js
libs/vkbeautify.js [new file with mode: 0644]
vkbeautify.js [deleted file]

index e498786..3921f0b 100644 (file)
@@ -6,7 +6,7 @@ files = [
   REQUIRE,
   REQUIRE_ADAPTER,
   
   REQUIRE,
   REQUIRE_ADAPTER,
   
-  'vkbeautify.js',
+  'libs/vkbeautify.js',
   {pattern: 'libs/*.js', included: false},
   {pattern: 'src/**/*.js', included: false},
   {pattern: 'src/**/*.html', included: false},
   {pattern: 'libs/*.js', included: false},
   {pattern: 'src/**/*.js', included: false},
   {pattern: 'src/**/*.html', included: false},
diff --git a/libs/vkbeautify.js b/libs/vkbeautify.js
new file mode 100644 (file)
index 0000000..13cee3a
--- /dev/null
@@ -0,0 +1,358 @@
+/**
+* vkBeautify - javascript plugin to pretty-print or minify text in XML, JSON, CSS and SQL formats.
+*  
+* Version - 0.99.00.beta 
+* Copyright (c) 2012 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/vkbeautify/
+* 
+* Dual licensed under the MIT and GPL licenses:
+*   http://www.opensource.org/licenses/mit-license.php
+*   http://www.gnu.org/licenses/gpl.html
+*
+*   Pretty print
+*
+*        vkbeautify.xml(text [,indent_pattern]);
+*        vkbeautify.json(text [,indent_pattern]);
+*        vkbeautify.css(text [,indent_pattern]);
+*        vkbeautify.sql(text [,indent_pattern]);
+*
+*        @text - String; text to beatufy;
+*        @indent_pattern - Integer | String;
+*                Integer:  number of white spaces;
+*                String:   character string to visualize indentation ( can also be a set of white spaces )
+*   Minify
+*
+*        vkbeautify.xmlmin(text [,preserve_comments]);
+*        vkbeautify.jsonmin(text);
+*        vkbeautify.cssmin(text [,preserve_comments]);
+*        vkbeautify.sqlmin(text);
+*
+*        @text - String; text to minify;
+*        @preserve_comments - Bool; [optional];
+*                Set this flag to true to prevent removing comments from @text ( minxml and mincss functions only. )
+*
+*   Examples:
+*        vkbeautify.xml(text); // pretty print XML
+*        vkbeautify.json(text, 4 ); // pretty print JSON
+*        vkbeautify.css(text, '. . . .'); // pretty print CSS
+*        vkbeautify.sql(text, '----'); // pretty print SQL
+*
+*        vkbeautify.xmlmin(text, true);// minify XML, preserve comments
+*        vkbeautify.jsonmin(text);// minify JSON
+*        vkbeautify.cssmin(text);// minify CSS, remove comments ( default )
+*        vkbeautify.sqlmin(text);// minify SQL
+*
+*/
+
+(function() {
+
+function createShiftArr(step) {
+
+       var space = '    ';
+       
+       if ( isNaN(parseInt(step)) ) {  // argument is string
+               space = step;
+       } else { // argument is integer
+               switch(step) {
+                       case 1: space = ' '; break;
+                       case 2: space = '  '; break;
+                       case 3: space = '   '; break;
+                       case 4: space = '    '; break;
+                       case 5: space = '     '; break;
+                       case 6: space = '      '; break;
+                       case 7: space = '       '; break;
+                       case 8: space = '        '; break;
+                       case 9: space = '         '; break;
+                       case 10: space = '          '; break;
+                       case 11: space = '           '; break;
+                       case 12: space = '            '; break;
+               }
+       }
+
+       var shift = ['\n']; // array of shifts
+       for(ix=0;ix<100;ix++){
+               shift.push(shift[ix]+space); 
+       }
+       return shift;
+}
+
+function vkbeautify(){
+       this.step = '    '; // 4 spaces
+       this.shift = createShiftArr(this.step);
+};
+
+vkbeautify.prototype.xml = function(text,step) {
+
+       var ar = text.replace(/>\s{0,}</g,"><")
+                                .replace(/</g,"~::~<")
+                                .replace(/\s*xmlns\:/g,"~::~xmlns:")
+                                .replace(/\s*xmlns\=/g,"~::~xmlns=")
+                                .split('~::~'),
+               len = ar.length,
+               inComment = false,
+               deep = 0,
+               str = '',
+               ix = 0,
+               shift = step ? createShiftArr(step) : this.shift;
+
+               for(ix=0;ix<len;ix++) {
+                       // start comment or <![CDATA[...]]> or <!DOCTYPE //
+                       if(ar[ix].search(/<!/) > -1) { 
+                               str += shift[deep]+ar[ix];
+                               inComment = true; 
+                               // end comment  or <![CDATA[...]]> //
+                               if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) { 
+                                       inComment = false; 
+                               }
+                       } else 
+                       // end comment  or <![CDATA[...]]> //
+                       if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1) { 
+                               str += ar[ix];
+                               inComment = false; 
+                       } else 
+                       // <elm></elm> //
+                       if( /^<\w/.exec(ar[ix-1]) && /^<\/\w/.exec(ar[ix]) &&
+                               /^<[\w:\-\.\,]+/.exec(ar[ix-1]) == /^<\/[\w:\-\.\,]+/.exec(ar[ix])[0].replace('/','')) { 
+                               str += ar[ix];
+                               if(!inComment) deep--;
+                       } else
+                        // <elm> //
+                       if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) == -1 && ar[ix].search(/\/>/) == -1 ) {
+                               str = !inComment ? str += shift[deep++]+ar[ix] : str += ar[ix];
+                       } else 
+                        // <elm>...</elm> //
+                       if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) > -1) {
+                               str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
+                       } else 
+                       // </elm> //
+                       if(ar[ix].search(/<\//) > -1) { 
+                               str = !inComment ? str += shift[--deep]+ar[ix] : str += ar[ix];
+                       } else 
+                       // <elm/> //
+                       if(ar[ix].search(/\/>/) > -1 ) { 
+                               str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
+                       } else 
+                       // <? xml ... ?> //
+                       if(ar[ix].search(/<\?/) > -1) { 
+                               str += shift[deep]+ar[ix];
+                       } else 
+                       // xmlns //
+                       if( ar[ix].search(/xmlns\:/) > -1  || ar[ix].search(/xmlns\=/) > -1) { 
+                               str += shift[deep]+ar[ix];
+                       } 
+                       
+                       else {
+                               str += ar[ix];
+                       }
+               }
+               
+       return  (str[0] == '\n') ? str.slice(1) : str;
+}
+
+vkbeautify.prototype.json = function(text,step) {
+
+       var step = step ? step : this.step;
+       
+       if (typeof JSON === 'undefined' ) return text; 
+       
+       if ( typeof text === "string" ) return JSON.stringify(JSON.parse(text), null, step);
+       if ( typeof text === "object" ) return JSON.stringify(text, null, step);
+               
+       return text; // text is not string nor object
+}
+
+vkbeautify.prototype.css = function(text, step) {
+
+       var ar = text.replace(/\s{1,}/g,' ')
+                               .replace(/\{/g,"{~::~")
+                               .replace(/\}/g,"~::~}~::~")
+                               .replace(/\;/g,";~::~")
+                               .replace(/\/\*/g,"~::~/*")
+                               .replace(/\*\//g,"*/~::~")
+                               .replace(/~::~\s{0,}~::~/g,"~::~")
+                               .split('~::~'),
+               len = ar.length,
+               deep = 0,
+               str = '',
+               ix = 0,
+               shift = step ? createShiftArr(step) : this.shift;
+               
+               for(ix=0;ix<len;ix++) {
+
+                       if( /\{/.exec(ar[ix]))  { 
+                               str += shift[deep++]+ar[ix];
+                       } else 
+                       if( /\}/.exec(ar[ix]))  { 
+                               str += shift[--deep]+ar[ix];
+                       } else
+                       if( /\*\\/.exec(ar[ix]))  { 
+                               str += shift[deep]+ar[ix];
+                       }
+                       else {
+                               str += shift[deep]+ar[ix];
+                       }
+               }
+               return str.replace(/^\n{1,}/,'');
+}
+
+//----------------------------------------------------------------------------
+
+function isSubquery(str, parenthesisLevel) {
+       return  parenthesisLevel - (str.replace(/\(/g,'').length - str.replace(/\)/g,'').length )
+}
+
+function split_sql(str, tab) {
+
+       return str.replace(/\s{1,}/g," ")
+
+                               .replace(/ AND /ig,"~::~"+tab+tab+"AND ")
+                               .replace(/ BETWEEN /ig,"~::~"+tab+"BETWEEN ")
+                               .replace(/ CASE /ig,"~::~"+tab+"CASE ")
+                               .replace(/ ELSE /ig,"~::~"+tab+"ELSE ")
+                               .replace(/ END /ig,"~::~"+tab+"END ")
+                               .replace(/ FROM /ig,"~::~FROM ")
+                               .replace(/ GROUP\s{1,}BY/ig,"~::~GROUP BY ")
+                               .replace(/ HAVING /ig,"~::~HAVING ")
+                               //.replace(/ SET /ig," SET~::~")
+                               .replace(/ IN /ig," IN ")
+                               
+                               .replace(/ JOIN /ig,"~::~JOIN ")
+                               .replace(/ CROSS~::~{1,}JOIN /ig,"~::~CROSS JOIN ")
+                               .replace(/ INNER~::~{1,}JOIN /ig,"~::~INNER JOIN ")
+                               .replace(/ LEFT~::~{1,}JOIN /ig,"~::~LEFT JOIN ")
+                               .replace(/ RIGHT~::~{1,}JOIN /ig,"~::~RIGHT JOIN ")
+                               
+                               .replace(/ ON /ig,"~::~"+tab+"ON ")
+                               .replace(/ OR /ig,"~::~"+tab+tab+"OR ")
+                               .replace(/ ORDER\s{1,}BY/ig,"~::~ORDER BY ")
+                               .replace(/ OVER /ig,"~::~"+tab+"OVER ")
+
+                               .replace(/\(\s{0,}SELECT /ig,"~::~(SELECT ")
+                               .replace(/\)\s{0,}SELECT /ig,")~::~SELECT ")
+                               
+                               .replace(/ THEN /ig," THEN~::~"+tab+"")
+                               .replace(/ UNION /ig,"~::~UNION~::~")
+                               .replace(/ USING /ig,"~::~USING ")
+                               .replace(/ WHEN /ig,"~::~"+tab+"WHEN ")
+                               .replace(/ WHERE /ig,"~::~WHERE ")
+                               .replace(/ WITH /ig,"~::~WITH ")
+                               
+                               //.replace(/\,\s{0,}\(/ig,",~::~( ")
+                               //.replace(/\,/ig,",~::~"+tab+tab+"")
+
+                               .replace(/ ALL /ig," ALL ")
+                               .replace(/ AS /ig," AS ")
+                               .replace(/ ASC /ig," ASC ")     
+                               .replace(/ DESC /ig," DESC ")   
+                               .replace(/ DISTINCT /ig," DISTINCT ")
+                               .replace(/ EXISTS /ig," EXISTS ")
+                               .replace(/ NOT /ig," NOT ")
+                               .replace(/ NULL /ig," NULL ")
+                               .replace(/ LIKE /ig," LIKE ")
+                               .replace(/\s{0,}SELECT /ig,"SELECT ")
+                               .replace(/\s{0,}UPDATE /ig,"UPDATE ")
+                               .replace(/ SET /ig," SET ")
+                                                       
+                               .replace(/~::~{1,}/g,"~::~")
+                               .split('~::~');
+}
+
+vkbeautify.prototype.sql = function(text,step) {
+
+       var ar_by_quote = text.replace(/\s{1,}/g," ")
+                                                       .replace(/\'/ig,"~::~\'")
+                                                       .split('~::~'),
+               len = ar_by_quote.length,
+               ar = [],
+               deep = 0,
+               tab = this.step,//+this.step,
+               inComment = true,
+               inQuote = false,
+               parenthesisLevel = 0,
+               str = '',
+               ix = 0,
+               shift = step ? createShiftArr(step) : this.shift;;
+
+               for(ix=0;ix<len;ix++) {
+                       if(ix%2) {
+                               ar = ar.concat(ar_by_quote[ix]);
+                       } else {
+                               ar = ar.concat(split_sql(ar_by_quote[ix], tab) );
+                       }
+               }
+               
+               len = ar.length;
+               for(ix=0;ix<len;ix++) {
+                       
+                       parenthesisLevel = isSubquery(ar[ix], parenthesisLevel);
+                       
+                       if( /\s{0,}\s{0,}SELECT\s{0,}/.exec(ar[ix]))  { 
+                               ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
+                       } 
+                       
+                       if( /\s{0,}\s{0,}SET\s{0,}/.exec(ar[ix]))  { 
+                               ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
+                       } 
+                       
+                       if( /\s{0,}\(\s{0,}SELECT\s{0,}/.exec(ar[ix]))  { 
+                               deep++;
+                               str += shift[deep]+ar[ix];
+                       } else 
+                       if( /\'/.exec(ar[ix]) )  { 
+                               if(parenthesisLevel<1 && deep) {
+                                       deep--;
+                               }
+                               str += ar[ix];
+                       }
+                       else  { 
+                               str += shift[deep]+ar[ix];
+                               if(parenthesisLevel<1 && deep) {
+                                       deep--;
+                               }
+                       } 
+                       var junk = 0;
+               }
+
+               str = str.replace(/^\n{1,}/,'').replace(/\n{1,}/g,"\n");
+               return str;
+}
+
+
+vkbeautify.prototype.xmlmin = function(text, preserveComments) {
+
+       var str = preserveComments ? text
+                                                          : text.replace(/\<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\>/g,"")
+                                                                        .replace(/[ \r\n\t]{1,}xmlns/g, ' xmlns');
+       return  str.replace(/>\s{0,}</g,"><"); 
+}
+
+vkbeautify.prototype.jsonmin = function(text) {
+
+       if (typeof JSON === 'undefined' ) return text; 
+       
+       return JSON.stringify(JSON.parse(text), null, 0); 
+                               
+}
+
+vkbeautify.prototype.cssmin = function(text, preserveComments) {
+       
+       var str = preserveComments ? text
+                                                          : text.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g,"") ;
+
+       return str.replace(/\s{1,}/g,' ')
+                         .replace(/\{\s{1,}/g,"{")
+                         .replace(/\}\s{1,}/g,"}")
+                         .replace(/\;\s{1,}/g,";")
+                         .replace(/\/\*\s{1,}/g,"/*")
+                         .replace(/\*\/\s{1,}/g,"*/");
+}
+
+vkbeautify.prototype.sqlmin = function(text) {
+       return text.replace(/\s{1,}/g," ").replace(/\s{1,}\(/,"(").replace(/\s{1,}\)/,")");
+}
+
+window.vkbeautify = new vkbeautify();
+
+})();
+
diff --git a/vkbeautify.js b/vkbeautify.js
deleted file mode 100644 (file)
index 13cee3a..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-/**
-* vkBeautify - javascript plugin to pretty-print or minify text in XML, JSON, CSS and SQL formats.
-*  
-* Version - 0.99.00.beta 
-* Copyright (c) 2012 Vadim Kiryukhin
-* vkiryukhin @ gmail.com
-* http://www.eslinstructor.net/vkbeautify/
-* 
-* Dual licensed under the MIT and GPL licenses:
-*   http://www.opensource.org/licenses/mit-license.php
-*   http://www.gnu.org/licenses/gpl.html
-*
-*   Pretty print
-*
-*        vkbeautify.xml(text [,indent_pattern]);
-*        vkbeautify.json(text [,indent_pattern]);
-*        vkbeautify.css(text [,indent_pattern]);
-*        vkbeautify.sql(text [,indent_pattern]);
-*
-*        @text - String; text to beatufy;
-*        @indent_pattern - Integer | String;
-*                Integer:  number of white spaces;
-*                String:   character string to visualize indentation ( can also be a set of white spaces )
-*   Minify
-*
-*        vkbeautify.xmlmin(text [,preserve_comments]);
-*        vkbeautify.jsonmin(text);
-*        vkbeautify.cssmin(text [,preserve_comments]);
-*        vkbeautify.sqlmin(text);
-*
-*        @text - String; text to minify;
-*        @preserve_comments - Bool; [optional];
-*                Set this flag to true to prevent removing comments from @text ( minxml and mincss functions only. )
-*
-*   Examples:
-*        vkbeautify.xml(text); // pretty print XML
-*        vkbeautify.json(text, 4 ); // pretty print JSON
-*        vkbeautify.css(text, '. . . .'); // pretty print CSS
-*        vkbeautify.sql(text, '----'); // pretty print SQL
-*
-*        vkbeautify.xmlmin(text, true);// minify XML, preserve comments
-*        vkbeautify.jsonmin(text);// minify JSON
-*        vkbeautify.cssmin(text);// minify CSS, remove comments ( default )
-*        vkbeautify.sqlmin(text);// minify SQL
-*
-*/
-
-(function() {
-
-function createShiftArr(step) {
-
-       var space = '    ';
-       
-       if ( isNaN(parseInt(step)) ) {  // argument is string
-               space = step;
-       } else { // argument is integer
-               switch(step) {
-                       case 1: space = ' '; break;
-                       case 2: space = '  '; break;
-                       case 3: space = '   '; break;
-                       case 4: space = '    '; break;
-                       case 5: space = '     '; break;
-                       case 6: space = '      '; break;
-                       case 7: space = '       '; break;
-                       case 8: space = '        '; break;
-                       case 9: space = '         '; break;
-                       case 10: space = '          '; break;
-                       case 11: space = '           '; break;
-                       case 12: space = '            '; break;
-               }
-       }
-
-       var shift = ['\n']; // array of shifts
-       for(ix=0;ix<100;ix++){
-               shift.push(shift[ix]+space); 
-       }
-       return shift;
-}
-
-function vkbeautify(){
-       this.step = '    '; // 4 spaces
-       this.shift = createShiftArr(this.step);
-};
-
-vkbeautify.prototype.xml = function(text,step) {
-
-       var ar = text.replace(/>\s{0,}</g,"><")
-                                .replace(/</g,"~::~<")
-                                .replace(/\s*xmlns\:/g,"~::~xmlns:")
-                                .replace(/\s*xmlns\=/g,"~::~xmlns=")
-                                .split('~::~'),
-               len = ar.length,
-               inComment = false,
-               deep = 0,
-               str = '',
-               ix = 0,
-               shift = step ? createShiftArr(step) : this.shift;
-
-               for(ix=0;ix<len;ix++) {
-                       // start comment or <![CDATA[...]]> or <!DOCTYPE //
-                       if(ar[ix].search(/<!/) > -1) { 
-                               str += shift[deep]+ar[ix];
-                               inComment = true; 
-                               // end comment  or <![CDATA[...]]> //
-                               if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) { 
-                                       inComment = false; 
-                               }
-                       } else 
-                       // end comment  or <![CDATA[...]]> //
-                       if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1) { 
-                               str += ar[ix];
-                               inComment = false; 
-                       } else 
-                       // <elm></elm> //
-                       if( /^<\w/.exec(ar[ix-1]) && /^<\/\w/.exec(ar[ix]) &&
-                               /^<[\w:\-\.\,]+/.exec(ar[ix-1]) == /^<\/[\w:\-\.\,]+/.exec(ar[ix])[0].replace('/','')) { 
-                               str += ar[ix];
-                               if(!inComment) deep--;
-                       } else
-                        // <elm> //
-                       if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) == -1 && ar[ix].search(/\/>/) == -1 ) {
-                               str = !inComment ? str += shift[deep++]+ar[ix] : str += ar[ix];
-                       } else 
-                        // <elm>...</elm> //
-                       if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) > -1) {
-                               str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
-                       } else 
-                       // </elm> //
-                       if(ar[ix].search(/<\//) > -1) { 
-                               str = !inComment ? str += shift[--deep]+ar[ix] : str += ar[ix];
-                       } else 
-                       // <elm/> //
-                       if(ar[ix].search(/\/>/) > -1 ) { 
-                               str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];
-                       } else 
-                       // <? xml ... ?> //
-                       if(ar[ix].search(/<\?/) > -1) { 
-                               str += shift[deep]+ar[ix];
-                       } else 
-                       // xmlns //
-                       if( ar[ix].search(/xmlns\:/) > -1  || ar[ix].search(/xmlns\=/) > -1) { 
-                               str += shift[deep]+ar[ix];
-                       } 
-                       
-                       else {
-                               str += ar[ix];
-                       }
-               }
-               
-       return  (str[0] == '\n') ? str.slice(1) : str;
-}
-
-vkbeautify.prototype.json = function(text,step) {
-
-       var step = step ? step : this.step;
-       
-       if (typeof JSON === 'undefined' ) return text; 
-       
-       if ( typeof text === "string" ) return JSON.stringify(JSON.parse(text), null, step);
-       if ( typeof text === "object" ) return JSON.stringify(text, null, step);
-               
-       return text; // text is not string nor object
-}
-
-vkbeautify.prototype.css = function(text, step) {
-
-       var ar = text.replace(/\s{1,}/g,' ')
-                               .replace(/\{/g,"{~::~")
-                               .replace(/\}/g,"~::~}~::~")
-                               .replace(/\;/g,";~::~")
-                               .replace(/\/\*/g,"~::~/*")
-                               .replace(/\*\//g,"*/~::~")
-                               .replace(/~::~\s{0,}~::~/g,"~::~")
-                               .split('~::~'),
-               len = ar.length,
-               deep = 0,
-               str = '',
-               ix = 0,
-               shift = step ? createShiftArr(step) : this.shift;
-               
-               for(ix=0;ix<len;ix++) {
-
-                       if( /\{/.exec(ar[ix]))  { 
-                               str += shift[deep++]+ar[ix];
-                       } else 
-                       if( /\}/.exec(ar[ix]))  { 
-                               str += shift[--deep]+ar[ix];
-                       } else
-                       if( /\*\\/.exec(ar[ix]))  { 
-                               str += shift[deep]+ar[ix];
-                       }
-                       else {
-                               str += shift[deep]+ar[ix];
-                       }
-               }
-               return str.replace(/^\n{1,}/,'');
-}
-
-//----------------------------------------------------------------------------
-
-function isSubquery(str, parenthesisLevel) {
-       return  parenthesisLevel - (str.replace(/\(/g,'').length - str.replace(/\)/g,'').length )
-}
-
-function split_sql(str, tab) {
-
-       return str.replace(/\s{1,}/g," ")
-
-                               .replace(/ AND /ig,"~::~"+tab+tab+"AND ")
-                               .replace(/ BETWEEN /ig,"~::~"+tab+"BETWEEN ")
-                               .replace(/ CASE /ig,"~::~"+tab+"CASE ")
-                               .replace(/ ELSE /ig,"~::~"+tab+"ELSE ")
-                               .replace(/ END /ig,"~::~"+tab+"END ")
-                               .replace(/ FROM /ig,"~::~FROM ")
-                               .replace(/ GROUP\s{1,}BY/ig,"~::~GROUP BY ")
-                               .replace(/ HAVING /ig,"~::~HAVING ")
-                               //.replace(/ SET /ig," SET~::~")
-                               .replace(/ IN /ig," IN ")
-                               
-                               .replace(/ JOIN /ig,"~::~JOIN ")
-                               .replace(/ CROSS~::~{1,}JOIN /ig,"~::~CROSS JOIN ")
-                               .replace(/ INNER~::~{1,}JOIN /ig,"~::~INNER JOIN ")
-                               .replace(/ LEFT~::~{1,}JOIN /ig,"~::~LEFT JOIN ")
-                               .replace(/ RIGHT~::~{1,}JOIN /ig,"~::~RIGHT JOIN ")
-                               
-                               .replace(/ ON /ig,"~::~"+tab+"ON ")
-                               .replace(/ OR /ig,"~::~"+tab+tab+"OR ")
-                               .replace(/ ORDER\s{1,}BY/ig,"~::~ORDER BY ")
-                               .replace(/ OVER /ig,"~::~"+tab+"OVER ")
-
-                               .replace(/\(\s{0,}SELECT /ig,"~::~(SELECT ")
-                               .replace(/\)\s{0,}SELECT /ig,")~::~SELECT ")
-                               
-                               .replace(/ THEN /ig," THEN~::~"+tab+"")
-                               .replace(/ UNION /ig,"~::~UNION~::~")
-                               .replace(/ USING /ig,"~::~USING ")
-                               .replace(/ WHEN /ig,"~::~"+tab+"WHEN ")
-                               .replace(/ WHERE /ig,"~::~WHERE ")
-                               .replace(/ WITH /ig,"~::~WITH ")
-                               
-                               //.replace(/\,\s{0,}\(/ig,",~::~( ")
-                               //.replace(/\,/ig,",~::~"+tab+tab+"")
-
-                               .replace(/ ALL /ig," ALL ")
-                               .replace(/ AS /ig," AS ")
-                               .replace(/ ASC /ig," ASC ")     
-                               .replace(/ DESC /ig," DESC ")   
-                               .replace(/ DISTINCT /ig," DISTINCT ")
-                               .replace(/ EXISTS /ig," EXISTS ")
-                               .replace(/ NOT /ig," NOT ")
-                               .replace(/ NULL /ig," NULL ")
-                               .replace(/ LIKE /ig," LIKE ")
-                               .replace(/\s{0,}SELECT /ig,"SELECT ")
-                               .replace(/\s{0,}UPDATE /ig,"UPDATE ")
-                               .replace(/ SET /ig," SET ")
-                                                       
-                               .replace(/~::~{1,}/g,"~::~")
-                               .split('~::~');
-}
-
-vkbeautify.prototype.sql = function(text,step) {
-
-       var ar_by_quote = text.replace(/\s{1,}/g," ")
-                                                       .replace(/\'/ig,"~::~\'")
-                                                       .split('~::~'),
-               len = ar_by_quote.length,
-               ar = [],
-               deep = 0,
-               tab = this.step,//+this.step,
-               inComment = true,
-               inQuote = false,
-               parenthesisLevel = 0,
-               str = '',
-               ix = 0,
-               shift = step ? createShiftArr(step) : this.shift;;
-
-               for(ix=0;ix<len;ix++) {
-                       if(ix%2) {
-                               ar = ar.concat(ar_by_quote[ix]);
-                       } else {
-                               ar = ar.concat(split_sql(ar_by_quote[ix], tab) );
-                       }
-               }
-               
-               len = ar.length;
-               for(ix=0;ix<len;ix++) {
-                       
-                       parenthesisLevel = isSubquery(ar[ix], parenthesisLevel);
-                       
-                       if( /\s{0,}\s{0,}SELECT\s{0,}/.exec(ar[ix]))  { 
-                               ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
-                       } 
-                       
-                       if( /\s{0,}\s{0,}SET\s{0,}/.exec(ar[ix]))  { 
-                               ar[ix] = ar[ix].replace(/\,/g,",\n"+tab+tab+"")
-                       } 
-                       
-                       if( /\s{0,}\(\s{0,}SELECT\s{0,}/.exec(ar[ix]))  { 
-                               deep++;
-                               str += shift[deep]+ar[ix];
-                       } else 
-                       if( /\'/.exec(ar[ix]) )  { 
-                               if(parenthesisLevel<1 && deep) {
-                                       deep--;
-                               }
-                               str += ar[ix];
-                       }
-                       else  { 
-                               str += shift[deep]+ar[ix];
-                               if(parenthesisLevel<1 && deep) {
-                                       deep--;
-                               }
-                       } 
-                       var junk = 0;
-               }
-
-               str = str.replace(/^\n{1,}/,'').replace(/\n{1,}/g,"\n");
-               return str;
-}
-
-
-vkbeautify.prototype.xmlmin = function(text, preserveComments) {
-
-       var str = preserveComments ? text
-                                                          : text.replace(/\<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\>/g,"")
-                                                                        .replace(/[ \r\n\t]{1,}xmlns/g, ' xmlns');
-       return  str.replace(/>\s{0,}</g,"><"); 
-}
-
-vkbeautify.prototype.jsonmin = function(text) {
-
-       if (typeof JSON === 'undefined' ) return text; 
-       
-       return JSON.stringify(JSON.parse(text), null, 0); 
-                               
-}
-
-vkbeautify.prototype.cssmin = function(text, preserveComments) {
-       
-       var str = preserveComments ? text
-                                                          : text.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g,"") ;
-
-       return str.replace(/\s{1,}/g,' ')
-                         .replace(/\{\s{1,}/g,"{")
-                         .replace(/\}\s{1,}/g,"}")
-                         .replace(/\;\s{1,}/g,";")
-                         .replace(/\/\*\s{1,}/g,"/*")
-                         .replace(/\*\/\s{1,}/g,"*/");
-}
-
-vkbeautify.prototype.sqlmin = function(text) {
-       return text.replace(/\s{1,}/g," ").replace(/\s{1,}\(/,"(").replace(/\s{1,}\)/,")");
-}
-
-window.vkbeautify = new vkbeautify();
-
-})();
-