Mercurial > zeropaste
view app/javascript/src/main.coffee @ 479:b493db1f40b0
Validate format
author | nanaya <me@nanaya.pro> |
---|---|
date | Sat, 10 Oct 2020 18:16:12 +0900 |
parents | 46ed68bf9918 |
children |
line wrap: on
line source
import 'bootstrap' import hljs from 'highlight.js' import * as commonmark from 'commonmark' #= require jquery #= require bootstrap/transition #= require bootstrap/collapse #= require bootstrap/modal #= require bootstrap/tab #= require highlightjs #= require commonmark $(document).on "click", ".js-paste-clear", (e) -> e.preventDefault() $(".js-paste-paste") .val("") .focus() loadLanguageItems = -> $languageSelectBox = $("#paste_language") return unless $languageSelectBox.length for language in hljs.listLanguages().sort() $languageSelectBox.append $("<option />", value: language, text: language) markdownfy = (plaintext) -> reader = new commonmark.Parser writer = new commonmark.HtmlRenderer(safe: true) writer.render reader.parse(plaintext) pasteText = -> $(".js-paste-paste").val() || $(".js-paste-pl").text() highlightText = -> $hlBox = $(".js-paste-hl") return if $hlBox.attr("data-processed") == "1" $hlBox.text pasteText() highlight = -> hljs.highlightBlock($hlBox[0]) setTimeout highlight, 0 $hlBox.attr "data-processed", "1" markdownText = -> $mdBox = $(".js-paste-md") return if $mdBox.attr("data-processed") == "1" $mdBox.html markdownfy(pasteText()) $mdBox.find("a").attr("rel", "nofollow") $mdBox.attr "data-processed", "1" setHash = (e) -> return unless history.replaceState newLocation = "##{e.currentTarget.getAttribute("data-mode")}" if newLocation == "#pl" newLocation = window.location.pathname history.replaceState null, "", newLocation showPreview = (e) -> e.preventDefault() return if pasteText() == "" $(".js-paste-preview-md-box").html markdownfy(pasteText()) $(".js-paste-preview-md-modal").modal "show" switchToCurrentHash = -> return if $(".js-showing-paste").length == 0 format = window.location.hash.slice(1) return unless format in ['pl', 'hl', 'md'] $(".js-show-tab[data-mode=#{format}]").click() $ loadLanguageItems $ switchToCurrentHash $(document).on "click", ".js-paste-preview-md", showPreview $(document).on "click", ".js-show-tab[data-mode=hl]", highlightText $(document).on "click", ".js-show-tab[data-mode=md]", markdownText $(document).on "click", ".js-show-tab", setHash