Modernize markdown-preview package with package.cson

This commit is contained in:
Kevin Sawicki
2013-02-07 19:27:07 -08:00
committed by Corey Johnson & Kevin Sawicki
parent ab385e8d38
commit df962afe0e
4 changed files with 31 additions and 38 deletions

View File

@@ -1,9 +0,0 @@
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class MarkdownPreview extends DeferredAtomPackage
loadEvents: ['markdown-preview:toggle']
instanceClass: 'markdown-preview/src/markdown-preview-view'
onLoadEvent: (event, instance) -> instance.toggle()

View File

@@ -5,19 +5,19 @@ $ = require 'jquery'
module.exports =
class MarkdownPreviewView extends ScrollView
@activate: (rootView, state) ->
@instance = new this(rootView)
@activate: ->
@instance = new MarkdownPreviewView
@content: (rootView) ->
@content: ->
@div class: 'markdown-preview', tabindex: -1, =>
@div class: 'markdown-body', outlet: 'markdownBody'
initialize: (@rootView) ->
initialize: ->
super
@editor = @rootView.getActiveEditor()
@subscribe @editor, 'focus', => @detach() unless @detaching
@command 'core:cancel', => @detach() unless @detaching
rootView.command 'markdown-preview:toggle', => @toggle()
@on 'blur', => @detach() unless document.activeElement is this[0]
@command 'core:cancel', => @detach()
toggle: ->
if @hasParent()
@@ -27,22 +27,23 @@ class MarkdownPreviewView extends ScrollView
attach: ->
return unless @isMarkdownFile(@getActivePath())
@rootView.append(this)
rootView.append(this)
@markdownBody.html(@getLoadingHtml())
@loadHtml()
@focus()
detach: ->
return if @detaching
@detaching = true
super
@rootView.focus()
rootView.focus()
@detaching = false
getActivePath: ->
@editor.getPath()
rootView.getActiveEditor()?.getPath()
getActiveText: ->
@editor.getText()
rootView.getActiveEditor()?.getText()
getErrorHtml: (error) ->
$$$ ->
@@ -76,4 +77,4 @@ class MarkdownPreviewView extends ScrollView
@markdownBody.html(html) if @hasParent()
isMarkdownFile: (path) ->
fs.isMarkdownExtension(fs.extension(path))
path and fs.isMarkdownExtension(fs.extension(path))

View File

@@ -0,0 +1,3 @@
'main': 'lib/markdown-preview-view'
'activationEvents':
'markdown-preview:toggle': '.editor'

View File

@@ -1,12 +1,12 @@
$ = require 'jquery'
RootView = require 'root-view'
MarkdownPreview = require 'markdown-preview/src/markdown-preview-view'
MarkdownPreview = require 'markdown-preview/lib/markdown-preview-view'
describe "MarkdownPreview", ->
[rootView, markdownPreview] = []
beforeEach ->
rootView = new RootView(require.resolve('fixtures/markdown'))
atom.loadPackage("markdown-preview")
spyOn(MarkdownPreview.prototype, 'loadHtml')
afterEach ->
rootView.deactivate()
@@ -15,44 +15,37 @@ describe "MarkdownPreview", ->
it "toggles on/off a preview for a .md file", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')?.view()
expect(rootView.find('.markdown-preview')).toExist()
expect(markdownPreview.loadHtml).toHaveBeenCalled();
expect(markdownPreviewView.loadHtml).toHaveBeenCalled()
markdownPreviewView.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).not.toExist()
it "displays a preview for a .markdown file", ->
rootView.open('file.markdown')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).toExist()
expect(markdownPreview.loadHtml).toHaveBeenCalled();
markdownPreviewView = rootView.find('.markdown-preview')?.view()
expect(markdownPreviewView.loadHtml).toHaveBeenCalled()
it "does not display a preview for non-markdown file", ->
rootView.open('file.js')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).not.toExist()
expect(markdownPreview.loadHtml).not.toHaveBeenCalled();
expect(MarkdownPreview.prototype.loadHtml).not.toHaveBeenCalled()
describe "core:cancel event", ->
it "removes markdown preview", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')?.view()
@@ -62,14 +55,19 @@ describe "MarkdownPreview", ->
describe "when the editor receives focus", ->
it "removes the markdown preview view", ->
rootView.attachToDom()
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')
expect(markdownPreviewView).toExist()
editor.focus()
expect(markdownPreviewView).toExist()
expect(rootView.find('.markdown-preview')).not.toExist()
describe "when no editor is open", ->
it "does not attach", ->
expect(rootView.getActiveEditor()).toBeFalsy()
rootView.trigger('markdown-preview:toggle')
expect(rootView.find('.markdown-preview')).not.toExist()