This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/sites/all/libraries/ckeditor/plugins/codesnippetgeshi/plugin.js

191 lines
5.1 KiB
JavaScript

/**
* @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license
*/
/**
* @fileOverview Rich code snippets for CKEditor using GeSHi syntax highlighter (http://qbnz.com/highlighter/).
*/
'use strict';
( function() {
CKEDITOR.plugins.add( 'codesnippetgeshi', {
requires: 'ajax,codesnippet',
init: function( editor ) {
var writer = new CKEDITOR.htmlParser.basicWriter(),
geSHiHighlighter = new CKEDITOR.plugins.codesnippet.highlighter( {
languages: languages,
highlighter: function( code, language, callback ) {
// AJAX data to be sent in the request.
var requestConfig = JSON.stringify( {
lang: language,
html: code
} );
// We need to pass an empty string if config.codesnippet is not defined,
// because CKEDITOR#getUrl expects a String.
CKEDITOR.ajax.post( CKEDITOR.getUrl( editor.config.codeSnippetGeshi_url || '' ), requestConfig, 'application/json', function( highlighted ) {
// If no response is given it means that we have i.e. 404, so we'll set
// empty content.
if ( !highlighted ) {
callback( '' );
return;
}
var fragment = CKEDITOR.htmlParser.fragment.fromHtml( highlighted || '' );
// GeSHi returns <pre> as a top-most element. Since <pre> is
// already a part of the widget, consider children only.
fragment.children[ 0 ].writeChildrenHtml( writer );
// Return highlighted code.
callback( writer.getHtml( true ) );
} );
}
} );
editor.plugins.codesnippet.setHighlighter( geSHiHighlighter );
}
} );
// A list of default languages supported by GeSHi.
var languages = {
// abap: 'ABAP',
// actionscript: 'ActionScript',
// ada: 'Ada',
apache: 'Apache Configuration',
// applescript: 'AppleScript',
// asm: 'Assembly',
// asp: 'Active Server Pages (ASP)',
// autoit: 'AutoIt',
bash: 'Bash',
// basic4gl: 'Basic4GL',
// bf: 'Brainfuck',
// blitzbasic: 'Blitz BASIC',
// bnf: 'Backus-Naur Form',
// c: 'C',
// c_mac: 'C (Mac)',
// caddcl: 'AutoCAD DCL',
// cadlisp: 'AutoLISP',
// cfdg: 'CFDG',
// cfm: 'ColdFusion Markup Language',
// cil: 'Common Intermediate Language (CIL)',
// cobol: 'COBOL',
// 'cpp-qt': 'C++ (Qt toolkit)',
// cpp: 'C++',
// csharp: 'C#',
css: 'CSS',
// d: 'D',
// delphi: 'Delphi',
diff: 'Diff',
// div: 'DIV',
dos: 'DOS batch',
// dot: 'DOT',
// eiffel: 'Eiffel',
// fortran: 'Fortran',
// freebasic: 'FreeBASIC',
// gambas: 'Gambas',
// genero: 'Genero',
// gettext: 'GNU internationalization (i18n) library',
// glsl: 'OpenGL Shading Language (GLSL)',
// gml: 'Game Maker Language (GML)',
// gnuplot: 'gnuplot',
// groovy: 'Groovy',
// haskell: 'Haskell',
// hq9plus: 'HQ9+',
html4strict: 'HTML',
html5: 'HTML5',
// idl: 'Uno IDL',
// ini: 'INI',
// inno: 'Inno',
// intercal: 'INTERCAL',
// io: 'Io',
java: 'Java',
// java5: 'Java(TM) 2 Platform Standard Edition 5.0',
javascript: 'JavaScript',
// kixtart: 'KiXtart',
// klonec: 'Klone C',
// klonecpp: 'Klone C++',
// latex: 'LaTeX',
// lisp: 'Lisp',
// lolcode: 'LOLCODE',
// lotusscript: 'LotusScript',
// lua: 'Lua',
// Code: 'Language',
// m68k: 'Motorola 68000 Assembler',
// make: 'make',
// matlab: 'MATLAB M',
// mirc: 'mIRC scripting language',
// mxml: 'MXML',
// mpasm: 'Microchip Assembler',
mysql: 'MySQL',
// nsis: 'Nullsoft Scriptable Install System (NSIS)',
// objc: 'Objective-C',
// 'ocaml-brief': 'OCaml',
// ocaml: 'OCaml',
// oobas: 'OpenOffice.org Basic',
// oracle8: 'Oracle 8 SQL',
// oracle11: 'Oracle 11 SQL',
// pascal: 'Pascal',
// per: 'per',
// perl: 'Perl',
// 'php-brief': 'PHP',
php: 'PHP',
// pixelbender: 'Pixel Bender',
// plsql: 'PL/SQL',
// povray: 'Persistence of Vision Raytracer',
// powershell: 'Windows PowerShell',
// progress: 'OpenEdge Advanced Business Language',
// prolog: 'Prolog',
// providex: 'ProvideX',
// python: 'Python',
// qbasic: 'QBasic/QuickBASIC',
// rails: 'Rails',
// reg: 'Windows Registry',
// robots: 'robots.txt',
// rsplus: 'R',
ruby: 'Ruby',
// sas: 'SAS',
// scala: 'Scala',
// scheme: 'Scheme',
// scilab: 'Scilab',
// sdlbasic: 'SdlBasic',
// smalltalk: 'Smalltalk',
// smarty: 'Smarty',
// sql: 'SQL',
// tcl: 'Tcl',
// teraterm: 'Tera Term',
text: 'Text / Data',
// thinbasic: 'thinBasic',
// tsql: 'Transact-SQL',
// typoscript: 'TypoScript',
// vala: 'Vala',
// vb: 'Visual Basic',
// vbnet: 'Visual Basic .NET',
// verilog: 'Verilog',
// vhdl: 'VHDL',
// vim: 'Vimscript',
// visualfoxpro: 'Visual FoxPro',
// visualprolog: 'Visual Prolog',
// whitespace: 'Whitespace',
// winbatch: 'Winbatch',
xml: 'XML',
// xorg_conf: 'Xorg.conf',
// xpp: 'X++',
z80: 'ZiLOG Z80 Assembler'
};
} )();
/**
* Sets GeSHi URL which, once queried with Ajax, will return highlighted code.
*
* Check the [Code Snippet GeSHi documentation](#!/guide/dev_codesnippetgeshi) for
* more information.
*
* config.codeSnippetGeshi_url = 'http:\/\/example.com\/geshi\/colorize.php';
*
* @cfg {String} [codeSnippetGeshi_url=null]
* @member CKEDITOR.config
*/