Commit 75a95028 authored by Ryan LeFevre's avatar Ryan LeFevre

Start implementing more file read types

parent cdb4392a
{jspack} = require('jspack')
module.exports = class File module.exports = class File
FORMATS =
Int:
code: '>i'
length: 4
UInt:
code: '>I'
length: 4
Short:
code: '>h'
length: 2
UShort:
code: '>H'
length: 2
for own format, info of FORMATS then do (format, info) =>
@::["read#{format}"] = -> @readf(info.code, info.length)[0]
constructor: (@data) -> constructor: (@data) ->
@pos = 0 @pos = 0
...@@ -8,6 +27,8 @@ module.exports = class File ...@@ -8,6 +27,8 @@ module.exports = class File
@pos += length @pos += length
return data return data
readf: (format, len = null) -> jspack.Unpack format, @read(len or jspack.CalcLength(format))
seek: (amt, rel = false) -> if rel then @pos += amt else @pos = amt seek: (amt, rel = false) -> if rel then @pos += amt else @pos = amt
readString: (length) -> @read(length).toString() readString: (length) -> @read(length).toString()
\ No newline at end of file
...@@ -2,6 +2,7 @@ RSVP = require ('rsvp') ...@@ -2,6 +2,7 @@ RSVP = require ('rsvp')
module.exports = class Header module.exports = class Header
constructor: (@file) -> constructor: (@file) ->
@sig = null
@version = null @version = null
@channels = null @channels = null
@rows = null @rows = null
...@@ -11,6 +12,7 @@ module.exports = class Header ...@@ -11,6 +12,7 @@ module.exports = class Header
parse: -> parse: ->
new RSVP.Promise (resolve, reject) => new RSVP.Promise (resolve, reject) =>
sig = @file.readString(4) @sig = @file.readString(4)
console.log sig @version = @file.readUShort()
resolve(@) resolve(@)
\ No newline at end of file
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
"version": "0.0.1", "version": "0.0.1",
"dependencies": { "dependencies": {
"coffee-script": "~ 1.7.1", "coffee-script": "~ 1.7.1",
"rsvp": "~ 3.0.6" "rsvp": "~ 3.0.6",
"jspack": "~ 0.0.3"
}, },
"devDependencies": { "devDependencies": {
"coffeeify": "~ 0.6.0" "coffeeify": "~ 0.6.0"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment