Show More
Commit Description:
force log out when password change
Commit Description:
force log out when password change
References:
File last commit:
Show/Diff file:
Action:
node_modules/restructure/src/String.coffee
| 63 lines
| 1.5 KiB
| text/coffeescript
| CoffeeScriptLexer
|
r789 | {Number:NumberT} = require './Number' | |||
utils = require './utils' | ||||
class StringT | ||||
constructor: (@length, @encoding = 'ascii') -> | ||||
decode: (stream, parent) -> | ||||
length = if @length? | ||||
utils.resolveLength @length, stream, parent | ||||
else | ||||
{buffer, length, pos} = stream | ||||
while pos < length and buffer[pos] isnt 0x00 | ||||
++pos | ||||
pos - stream.pos | ||||
encoding = @encoding | ||||
if typeof encoding is 'function' | ||||
encoding = encoding.call(parent, parent) or 'ascii' | ||||
string = stream.readString(length, encoding) | ||||
if not @length? and stream.pos < stream.length | ||||
stream.pos++ | ||||
return string | ||||
size: (val, parent) -> | ||||
# Use the defined value if no value was given | ||||
unless val | ||||
return utils.resolveLength @length, null, parent | ||||
encoding = @encoding | ||||
if typeof encoding is 'function' | ||||
encoding = encoding.call(parent?.val, parent?.val) or 'ascii' | ||||
if encoding is 'utf16be' | ||||
encoding = 'utf16le' | ||||
size = Buffer.byteLength(val, encoding) | ||||
if @length instanceof NumberT | ||||
size += @length.size() | ||||
if not @length? | ||||
size++ | ||||
return size | ||||
encode: (stream, val, parent) -> | ||||
encoding = @encoding | ||||
if typeof encoding is 'function' | ||||
encoding = encoding.call(parent?.val, parent?.val) or 'ascii' | ||||
if @length instanceof NumberT | ||||
@length.encode(stream, Buffer.byteLength(val, encoding)) | ||||
stream.writeString(val, encoding) | ||||
if not @length? | ||||
stream.writeUInt8(0x00) | ||||
module.exports = StringT | ||||