/* globals Prism */ (function ($, Prism) { 'use strict'; // My plugin default options var defaultOptions = {}; function highlightIt(text, language) { return [ '
',
            '' + Prism.highlight(text, Prism.languages[language]) + '',
            '
', ].join(''); } // If my plugin is a button function buildButtonDef(trumbowyg) { return { fn: function () { var $modal = trumbowyg.openModal('Code', [ '
', ' ', '
', '
', ' ', '
', ].join('\n')), $language = $modal.find('.language'), $code = $modal.find('.code'); // Listen clicks on modal box buttons $modal.on('tbwconfirm', function () { trumbowyg.restoreRange(); trumbowyg.execCmd('insertHTML', highlightIt($code.val(), $language.val())); trumbowyg.execCmd('insertHTML', '


'); trumbowyg.closeModal(); }); $modal.on('tbwcancel', function () { trumbowyg.closeModal(); }); } }; } $.extend(true, $.trumbowyg, { // Add some translations langs: { en: { highlight: 'Code syntax highlight' } }, // Add our plugin to Trumbowyg registred plugins plugins: { highlight: { init: function (trumbowyg) { // Fill current Trumbowyg instance with my plugin default options trumbowyg.o.plugins.highlight = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.highlight || {} ); // If my plugin is a button trumbowyg.addBtnDef('highlight', buildButtonDef(trumbowyg)); } } } }); })(jQuery, Prism);