Mercurial > zeropaste
changeset 442:1fc5ddcde386
Some refactors
author | nanaya <me@myconan.net> |
---|---|
date | Thu, 10 Nov 2016 21:58:25 +0900 |
parents | 69fe27a8b147 |
children | be849fa80505 |
files | app/assets/javascripts/application.coffee app/views/pastes/show.html.erb |
diffstat | 2 files changed, 37 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/app/assets/javascripts/application.coffee Thu Nov 10 21:50:27 2016 +0900 +++ b/app/assets/javascripts/application.coffee Thu Nov 10 21:58:25 2016 +0900 @@ -13,14 +13,12 @@ .focus() -pasteText = -> - $(".js-paste-paste").val() || $(".js-paste-pl").text() - +loadLanguageItems = -> + $languageSelectBox = $("#paste_language") + return unless $languageSelectBox.length -setHash = (newLocation = window.location.pathname) -> - return unless history.replaceState - - history.replaceState null, "", newLocation + for language in hljs.listLanguages().sort() + $languageSelectBox.append $("<option />", value: language, text: language) markdownfy = (plaintext) -> @@ -29,50 +27,58 @@ writer.render reader.parse(plaintext) -$(document).on "click", ".js-show-tab-pl", -> - setHash() +pasteText = -> + $(".js-paste-paste").val() || $(".js-paste-pl").text() -$(document).on "click", ".js-show-tab-hl", -> - setHash "#hl" +highlightText = -> $hlBox = $(".js-paste-hl") - return if $hlBox.data("processed") + return if $hlBox.attr("data-processed") == "1" $hlBox.text pasteText() highlight = -> hljs.highlightBlock($hlBox[0]) setTimeout highlight, 0 - $hlBox.data "processed", true + $hlBox.attr "data-processed", "1" -$(document).on "click", ".js-show-tab-md", -> - setHash "#md" +markdownText = -> $mdBox = $(".js-paste-md") - return if $mdBox.data("processed") + return if $mdBox.attr("data-processed") == "1" $mdBox.html markdownfy(pasteText()) $mdBox.find("a").attr("rel", "nofollow") - $mdBox.data "processed", true + $mdBox.attr "data-processed", "1" -$(document).on "click", ".js-paste-preview-md", (e) -> +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" -$(document).on "ready", -> +switchToCurrentHash = -> return unless $(".js-showing-paste").length format = window.location.hash.slice(1) - $(".js-show-tab-#{format}").click() + $(".js-show-tab[data-mode=#{format}]").click() -$(document).on "ready", -> - $languageSelectBox = $("#paste_language") - return unless $languageSelectBox.length - - for language in hljs.listLanguages().sort() - $languageSelectBox.append $("<option />", value: language, text: language) +$ 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
--- a/app/views/pastes/show.html.erb Thu Nov 10 21:50:27 2016 +0900 +++ b/app/views/pastes/show.html.erb Thu Nov 10 21:58:25 2016 +0900 @@ -9,10 +9,13 @@ ].each do |el| %> <li role="presentation" class="<%= "active" if el[:active] %>"> <%= link_to el[:title], "##{el[:target]}", - :data => { :toggle => "tab" }, + :data => { + :mode => el[:target], + :toggle => "tab" + }, :aria => { :controls => el[:target] }, :role => "tab", - :class => "js-show-tab-#{el[:target]}" + :class => "js-show-tab" %> </li> <% end %>