Skip to content

Instantly share code, notes, and snippets.

@jashkenas
Forked from bigeasy/gist:584661
Created September 17, 2010 18:20
Show Gist options
  • Save jashkenas/584679 to your computer and use it in GitHub Desktop.
Save jashkenas/584679 to your computer and use it in GitHub Desktop.
write = (buffer) ->
offset = if arguments.length > 1 then arguments[1] else 0
length = if arguments.length > 2 then arguments[2] else buffer.length
done = false
while not done and machine isnt null and offset < length
pattern = machine.definition.pattern[machine.index]
if pattern.arrayed
loop
buffer[offset] = machine.value[machine.offset]
machine.offset += machine.increment
bytesWritten++
offset++
if machine.offset == machine.terminal
break
if offset == length
done = true
break
else
loop
buffer[offset] = Math.floor(machine.value / Math.pow(256, machine.offset)) & 0xff
machine.offset += machine.increment
bytesWritten++
offset++
if machine.offset == machine.terminal
break
if offset == length
done = true
break
if not done
if ++machine.index == machine.definition.pattern.length
machine.definition.callback.apply null, [ engine ]
machine = null
else
machine = mechanize machine.definition, machine.index, outgoing[machine.index]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment