Markdown Preview uses core:cancel and markdown-preview:toggle

This commit is contained in:
Corey Johnson
2012-10-22 17:17:44 -07:00
parent 421731c6a0
commit 8e417631e3
3 changed files with 30 additions and 19 deletions

View File

@@ -2,7 +2,7 @@ $ = require 'jquery'
RootView = require 'root-view'
MarkdownPreview = require 'markdown-preview'
describe "MarkdownPreview", ->
fdescribe "MarkdownPreview", ->
[rootView, markdownPreview] = []
beforeEach ->
@@ -14,41 +14,47 @@ describe "MarkdownPreview", ->
afterEach ->
rootView.deactivate()
describe "@attach", ->
it "attaches to a .md file", ->
describe "markdown-preview:toggle event", ->
it "toggles on/off a preview for a .md file", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:attach')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')?.view()
expect(rootView.find('.markdown-preview')).toExist()
expect(markdownPreview.loadHtml).toHaveBeenCalled();
markdownPreviewView.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).not.toExist()
it "attaches to a .markdown file", ->
it "displays a preview for a .markdown file", ->
rootView.open('file.markdown')
editor = rootView.getActiveEditor()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:attach')
editor.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).toExist()
expect(markdownPreview.loadHtml).toHaveBeenCalled();
it "doesn't attach to a .js file", ->
it "does not display a preview for non-markdown file", ->
rootView.open('file.js')
editor = rootView.getActiveEditor()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:attach')
editor.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).not.toExist()
expect(markdownPreview.loadHtml).not.toHaveBeenCalled();
describe "@detach", ->
it "detaches from a .md file", ->
describe "core:cancel event", ->
it "removes markdown preview", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:attach')
expect(rootView.find('.markdown-preview')).toExist()
markdownPreview.trigger('markdown-preview:detach')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')?.view()
expect(markdownPreviewView).toExist()
markdownPreviewView.trigger('core:cancel')
expect(rootView.find('.markdown-preview')).not.toExist()

View File

@@ -1,5 +1,5 @@
window.keymap.bindKeys '.editor',
'meta-P': 'markdown-preview:attach'
'meta-P': 'markdown-preview:toggle'
window.keymap.bindKeys '.markdown-preview',
'escape': 'markdown-preview:detach'
'meta-P': 'markdown-preview:toggle'

View File

@@ -15,13 +15,18 @@ class MarkdownPreview extends ScrollView
initialize: (@rootView) ->
super
@rootView.command 'markdown-preview:attach', =>
path = rootView.getActiveEditor()?.getPath()
@attach() if @isMarkdownFile(path)
@rootView.command 'markdown-preview:toggle', => @toggle()
@command 'core:cancel', => @detach()
@command 'markdown-preview:detach', => @detach()
toggle: ->
if @hasParent()
@detach()
else
@attach()
attach: ->
path = rootView.getActiveEditor()?.getPath()
return unless @isMarkdownFile(path)
@rootView.append(this)
@markdownBody.hide()
@markdownSpinner.show()