|  |  | @ -11,9 +11,13 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |  * |  |  |  |  * | 
			
		
	
		
		
			
				
					
					|  |  |  |  * Source on Github http://github.com/Seldaek/php-console
 |  |  |  |  * Source on Github http://github.com/Seldaek/php-console
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  */ |  |  |  |  */ | 
			
		
	
		
		
			
				
					
					|  |  |  | $(function() { |  |  |  | (function() { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     var updateStatusBar, handleKeyPress; |  |  |  |     var updateStatusBar, handleKeyPress, options; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     options = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         tab: '    ' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // updates the text of the status bar
 |  |  |  |     // updates the text of the status bar
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     updateStatusBar = function() { |  |  |  |     updateStatusBar = function() { | 
			
		
	
	
		
		
			
				
					|  |  | @ -35,12 +39,12 @@ $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |     }; |  |  |  |     }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     handleKeyPress = function(e) { |  |  |  |     handleKeyPress = function(e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         var caret, part, matches; |  |  |  |         var caret, part, matches, re; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         switch(e.keyCode) { |  |  |  |         switch(e.keyCode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 9: |  |  |  |         case 9: | 
			
		
	
		
		
			
				
					
					|  |  |  |             // add 4 spaces when tab is pressed
 |  |  |  |             // add 4 spaces when tab is pressed
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             e.preventDefault(); |  |  |  |             e.preventDefault(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             $(this).injectText("    "); |  |  |  |             $(this).injectText(options.tab); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 13: |  |  |  |         case 13: | 
			
		
	
		
		
			
				
					
					|  |  |  |             // submit form on ctrl-enter or alt-enter
 |  |  |  |             // submit form on ctrl-enter or alt-enter
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -53,7 +57,7 @@ $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |             // indent automatically the new lines
 |  |  |  |             // indent automatically the new lines
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             caret = $(this).getCaret(); |  |  |  |             caret = $(this).getCaret(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             part = $(this).val().substr(0, caret); |  |  |  |             part = $(this).val().substr(0, caret); | 
			
		
	
		
		
			
				
					
					|  |  |  |             matches = part.match(/(\n +)[^\r\n]*$/); |  |  |  |             matches = part.match(/(\n[ \t]+)[^\r\n]*$/); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             if (matches) { |  |  |  |             if (matches) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 $(this).val(function(idx, val) { |  |  |  |                 $(this).val(function(idx, val) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     return val.substring(0, caret) + matches[1] + val.substring(caret); |  |  |  |                     return val.substring(0, caret) + matches[1] + val.substring(caret); | 
			
		
	
	
		
		
			
				
					|  |  | @ -66,11 +70,12 @@ $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |             // deindent automatically on backspace
 |  |  |  |             // deindent automatically on backspace
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             caret = $(this).getCaret(); |  |  |  |             caret = $(this).getCaret(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             part = $(this).val().substr(0, caret); |  |  |  |             part = $(this).val().substr(0, caret); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (part.match(/\n( {4,})$/)) { |  |  |  |             re = new RegExp('\n[ \t]*?'+options.tab+'$'); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (part.match(re)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 $(this).val(function(idx, val) { |  |  |  |                 $(this).val(function(idx, val) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     return val.substring(0, caret - 4) + val.substring(caret); |  |  |  |                     return val.substring(0, caret - options.tab.length) + val.substring(caret); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 }); |  |  |  |                 }); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 $(this).setCaret(caret - 4); |  |  |  |                 $(this).setCaret(caret - options.tab.length); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 e.preventDefault(); |  |  |  |                 e.preventDefault(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
	
		
		
			
				
					|  |  | @ -79,6 +84,10 @@ $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |         updateStatusBar(); |  |  |  |         updateStatusBar(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     }; |  |  |  |     }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     $.console = function(settings) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         $.extend(options, settings); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |             $('textarea[name="code"]') |  |  |  |             $('textarea[name="code"]') | 
			
		
	
		
		
			
				
					
					|  |  |  |                 .keyup(updateStatusBar) |  |  |  |                 .keyup(updateStatusBar) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 .click(updateStatusBar) |  |  |  |                 .click(updateStatusBar) | 
			
		
	
	
		
		
			
				
					|  |  | @ -123,4 +132,7 @@ $(function() { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     }) |  |  |  |                     }) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .prependTo('.output'); |  |  |  |                     .prependTo('.output'); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | }); |  |  |  |         }); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | }()); |