view app/assets/javascripts/application.coffee @ 416:c4c8214fb0b2

Simplify dom check
author nanaya <me@myconan.net>
date Mon, 14 Sep 2015 14:48:36 +0900
parents 26c1b0b8edbe
children 080dd141898c
line wrap: on
line source

#= require jquery
#= require bootstrap
#= require highlightjs
#= require commonmark

$(document).on "click", ".js-paste-clear", (e) ->
  e.preventDefault()
  $(".js-paste-paste")
    .val("")
    .focus()


pasteText = ->
  $(".js-paste-paste").val() || $(".js-paste-pl").text()


setHash = (newLocation = window.location.pathname) ->
  return unless history.replaceState

  history.replaceState null, "", newLocation


markdownfy = (plaintext) ->
  reader = new commonmark.Parser
  writer = new commonmark.HtmlRenderer(safe: true)
  writer.render reader.parse(plaintext)


$(document).on "click", ".js-show-tab-pl", ->
  setHash()


$(document).on "click", ".js-show-tab-hl", ->
  setHash "#hl"
  $hlBox = $(".js-paste-hl")
  return if $hlBox.data("processed")

  $hlBox.text pasteText()

  highlight = -> hljs.highlightBlock($hlBox[0])
  setTimeout highlight, 0

  $hlBox.data "processed", true


$(document).on "click", ".js-show-tab-md", ->
  setHash "#md"
  $mdBox = $(".js-paste-md")
  return if $mdBox.data("processed")

  $mdBox.html markdownfy(pasteText())
  $mdBox.find("a").attr("rel", "nofollow")
  $mdBox.data "processed", true


$(document).on "click", ".js-paste-preview-md", (e) ->
  e.preventDefault()
  return if pasteText() == ""
  $(".js-paste-preview-md-box").html markdownfy(pasteText())
  $(".js-paste-preview-md-modal").modal "show"


$(document).on "ready", ->
  return unless $(".js-showing-paste").length

  format = window.location.hash.slice(1)
  $(".js-show-tab-#{format}").click()