Advertisement
Guest User

Untitled

a guest
Jun 16th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         DynaHighlight
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.3
  5. // @author       Piotr S.
  6. // @require      https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.2/babel.js
  7. // @require      https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.16.0/polyfill.js
  8. // @require      https://cdnjs.cloudflare.com/ajax/libs/keyboardjs/2.3.3/keyboard.min.js
  9. // @require      https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js
  10. // @require      https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/haskell.min.js
  11. // @require      https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/rust.min.js
  12. // @require      https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/bash.min.js
  13. // @require      https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/armasm.min.js
  14. // @require      https://raw.githubusercontent.com/wcoder/highlightjs-line-numbers.js/master/dist/highlightjs-line-numbers.min.js
  15. // @match        https://dynalist.io/d/*
  16. // ==/UserScript==
  17.  
  18.  
  19. /* jshint ignore:start */
  20. var inline_src = (<><![CDATA[
  21. /* jshint ignore:end */
  22.     /* jshint esnext: false */
  23.     /* jshint esversion: 6 */
  24.    
  25.     $("head").append ('<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/styles/railscasts.min.css">');
  26.    
  27.     let $styles = $("<style>", {id: "dynalist-hljs", "type": "text/css"});
  28.     $styles.append('td.hljs-ln-numbers { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; text-align: center; color: #ccc; border-right: 1px solid #CCC; vertical-align: top; padding-right: 5px; }');
  29.     $styles.append('td.hljs-ln-code { padding-left: 10px; }');
  30.     $('head').append($styles);
  31.    
  32.     let highlightCode = function() {
  33.         $('.node-inline-code').each(function(i, block) {
  34.             let firstLine = block.text().split('\n')[0];
  35.             if( $.inArray(firstLine, hljs.listLanguages()) >= 0 ) {
  36.                 block.addClass(firstLine);
  37.                 block.text(block.text().split("\n").slice(1).join("\n"));
  38.                 hljs.highlightBlock(block);
  39.                 hljs.lineNumbersBlock(block);
  40.             }
  41.  
  42.         });
  43.     };
  44.    
  45.     let interval = setInterval(function() {
  46.    
  47.         let doc = DYNALIST.app.get_current_app_document();
  48.    
  49.         if(doc !== null && doc.document.node_collection.available) {
  50.                        
  51.             highlightCode();
  52.    
  53.             keyboardJS.bind('ctrl + alt + h', function(e) {
  54.                 e.preventDefault();
  55.                 highlightCode();
  56.             });
  57.            
  58.             clearInterval(interval);
  59.         }
  60.    
  61.     }, 200);
  62.  
  63. /* jshint ignore:start */
  64. ]]></>).toString();
  65. var c = Babel.transform(inline_src, { presets: [ "es2015", "es2016" ] });
  66. eval(c.code);
  67. /* jshint ignore:end */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement