Buffer.getMode returns the ace mode based on the url.

This commit is contained in:
Corey Johnson
2011-12-19 16:26:55 -08:00
parent c679df770b
commit a72fb416f8
2 changed files with 22 additions and 1 deletions

View File

@@ -45,5 +45,13 @@ describe 'Buffer', ->
buffer = new Buffer
expect(-> buffer.save()).toThrow()
describe "getMode", ->
describe "when given a url", ->
it "sets 'mode' based on the file extension", ->
buffer = new Buffer 'something.js'
expect(buffer.getMode().name).toBe 'javascript'
describe "when no url is given", ->
it "sets 'mode' to text mode", ->
buffer = new Buffer 'something'
expect(buffer.getMode().name).toBe 'text'

View File

@@ -11,6 +11,7 @@ class Buffer
fs.read(@url)
else
""
@aceDocument = new Document text
getText: ->
@@ -19,6 +20,18 @@ class Buffer
setText: (text) ->
@aceDocument.setValue text
getMode: ->
return @mode if @mode
extension = @url.split('/').pop().split('.').pop()
modeName = switch extension
when "js" then "javascript"
else "text"
@mode = new (require("ace/mode/#{modeName}").Mode)
@mode.name = modeName
@mode
save: ->
if not @url then throw new Error("Tried to save buffer with no url")
fs.write @url, @getText()