NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
(function () { 'use strict'; // ==UserScript== // @name oujs - JsBeautify // @namespace https://openuserjs.org/users/Marti // @description Beautifies the Source Code Page // @copyright 2014+, Marti Martz (https://openuserjs.org/users/Marti) // @contributor Chris Holland (https://github.com/Zren) // @license CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt // @version 0.3.6eol // @icon https://gravatar.com/avatar/7ff58eb098c23feafa72e0b4cd13f396?s=48 // @homepageURL https://github.com/Martii/UserScripts/tree/master/src/oujs/JsBeautify // @homepageURL https://openuserjs.org/scripts/Marti/oujs_-_JsBeautify // @supportURL https://openuserjs.org/scripts/Marti/oujs_-_JsBeautify/issues // @updateURL https://openuserjs.org/meta/Marti/oujs_-_JsBeautify.meta.js // @downloadURL https://openuserjs.org/install/Marti/oujs_-_JsBeautify.min.user.js // @include https://openuserjs.org/scripts/*/*/source // @include https://openuserjs.org/libs/*/*/source // @include https://openuserjs.org/user/add/scripts/new // @include https://openuserjs.org/user/add/lib/new // @include http://openuserjs.org/scripts/*/*/source // @include http://openuserjs.org/libs/*/*/source // @include http://openuserjs.org/user/add/scripts/new // @include http://openuserjs.org/user/add/lib/new // @include http://localhost:8080/scripts/*/*/source // @include http://localhost:8080/libs/*/*/source // @include http://localhost:8080/user/add/scripts/new // @include http://localhost:8080/user/add/lib/new // @require https://raw.githubusercontent.com/beautify-web/js-beautify/master/js/lib/beautify.js // @grant none // ==/UserScript== alert([ 'WHO: That would be you!', 'WHAT: oujs - JsBeautify is EOL and has been integrated into the site.', 'WHERE: Somewhere around the globe.', 'WHEN: Now perhaps to avoid this naggy alert box.', 'WHY: From what I can tell Greasemonkey 4.x via Firefox 57+ no longer has access to page scripts which is where the Ace editor resides.', '', 'HOW: Please uninstall from your .user.js engine at your earliest convenience.', '', 'Many thanks to all of you that have been using this script and favored it. :)' ].join('\n')); return; function beautify(aE) { return js_beautify(aE.replace(/[“”]/g, '"').replace(/\t/g, ' '), { indent_size: 2, indent_char: ' ', max_preserve_newlines: 2, brace_style: 'end-expand', unescape_strings: true, space_after_anon_function: true }) + '\n'; } var rawSource = ace.edit('editor').getSession().getValue(), isBlocking, hasChanged = false ; ace.edit('editor').getSession().on('change', function (aE) { if (isBlocking) return; if (!hasChanged) { hasChanged = true; var submit_codeNode = document.querySelector('button#submit_code'); if (submit_codeNode) { submit_codeNode.classList.remove('btn-success'); submit_codeNode.classList.add('btn-warning'); } var ace_gutterLayer = document.querySelector('.ace_gutter-layer'); if (ace_gutterLayer) { ace_gutterLayer.classList.add('btn-warning'); } } var beautifyNodeInput = document.querySelector('#beautify'); if (beautifyNodeInput) { beautifyNodeInput.classList.remove('active'); } }); var hookNode = document.querySelector('div.container-fluid div.row div.col-md-12, div.container-fluid div.row div.col-sm-8'); if (hookNode) { var beautifyNodeInput = document.createElement('input'); beautifyNodeInput.classList.add('btn'); beautifyNodeInput.classList.add('btn-success'); beautifyNodeInput.id = 'beautify'; beautifyNodeInput.setAttribute('value', 'Beautify'); beautifyNodeInput.type = 'button'; beautifyNodeInput.addEventListener('click', function (aE) { var thisNode = document.querySelector('pre#editor'); if (thisNode) { var submit_codeNode = document.querySelector('button#submit_code'); var ace_gutterLayer = document.querySelector('.ace_gutter-layer'); if (aE.target.classList.contains('active') && !hasChanged) { isBlocking = true; ace.edit('editor').getSession().setValue(rawSource); aE.target.classList.remove('active'); isBlocking = false; if (submit_codeNode) { submit_codeNode.classList.add('btn-success'); submit_codeNode.classList.remove('btn-warning'); } if (ace_gutterLayer) { ace_gutterLayer.classList.remove('btn-warning'); } } else { isBlocking = true; if (!hasChanged) aE.target.classList.add('active'); ace.edit('editor').getSession().setValue(beautify(hasChanged ? ace.edit('editor').getSession().getValue() : rawSource)); isBlocking = false; if (submit_codeNode) { submit_codeNode.classList.remove('btn-success'); submit_codeNode.classList.add('btn-warning'); } if (ace_gutterLayer) { ace_gutterLayer.classList.add('btn-warning'); } } aE.target.blur(); } }); var wrappedNodeInput = document.createElement('input'); wrappedNodeInput.classList.add('btn'); wrappedNodeInput.classList.add('btn-success'); wrappedNodeInput.id = 'wrap'; wrappedNodeInput.setAttribute('value', 'Wrap'); wrappedNodeInput.type = 'button'; wrappedNodeInput.addEventListener('click', function (aE) { var thisNode = document.querySelector('pre#editor'); if (thisNode) { if (ace.edit('editor').getSession().getUseWrapMode()) { ace.edit('editor').getSession().setUseWrapMode(false); aE.target.classList.remove('active'); } else { ace.edit('editor').getSession().setUseWrapMode(true); aE.target.classList.add('active'); } aE.target.blur(); } }); var toolbarNodeDiv = document.createElement('div'); toolbarNodeDiv.classList.add('btn-toolbar'); toolbarNodeDiv.appendChild(wrappedNodeInput); toolbarNodeDiv.appendChild(beautifyNodeInput); hookNode.appendChild(toolbarNodeDiv); } })();