@@ -22,6 +22,7 @@ module Node.Buffer
2222 , fill
2323 ) where
2424
25+ import Prelude
2526import Control.Monad.Eff
2627import Data.Maybe
2728import Node.Encoding
@@ -45,7 +46,7 @@ foreign import data Buffer :: *
4546instance showBuffer :: Show Buffer where
4647 show = showImpl
4748
48- foreign import showImpl " var showImpl = require('util').inspect; " :: Buffer -> String
49+ foreign import showImpl :: Buffer -> String
4950
5051-- |
5152-- Effect for buffer modification.
@@ -90,18 +91,12 @@ instance showBufferValueType :: Show BufferValueType where
9091-- |
9192-- Creates a new buffer of the specified size.
9293--
93- foreign import create
94- " function create (size) { \
95- \ return new Buffer(size); \
96- \}" :: Number -> Buffer
94+ foreign import create :: Int -> Buffer
9795
9896-- |
9997-- Creates a new buffer from an array of octets, sized to match the array.
10098--
101- foreign import fromArray
102- " function fromArray (octets) { \
103- \ return new Buffer(octets); \
104- \}" :: [Octet ] -> Buffer
99+ foreign import fromArray :: Array Octet -> Buffer
105100
106101-- |
107102-- Creates a new buffer from a string with the specified encoding, sized to
@@ -110,76 +105,40 @@ foreign import fromArray
110105fromString :: String -> Encoding -> Buffer
111106fromString str = fromStringImpl str <<< show
112107
113- foreign import fromStringImpl
114- " function fromStringImpl (str) { \
115- \ return function (encoding) { \
116- \ return new Buffer(str, encoding); \
117- \ }; \
118- \}" :: String -> String -> Buffer
108+ foreign import fromStringImpl :: String -> String -> Buffer
119109
120110-- |
121111-- Reads a numeric value from a buffer at the specified offset.
122112--
123113read :: BufferValueType -> Offset -> Buffer -> Number
124114read = readImpl <<< show
125115
126- foreign import readImpl
127- " function readImpl (ty) { \
128- \ return function (offset) { \
129- \ return function (buf) { \
130- \ return buf['read' + ty](offset); \
131- \ }; \
132- \ }; \
133- \}" :: String -> Offset -> Buffer -> Number
134-
116+ foreign import readImpl :: String -> Offset -> Buffer -> Number
135117
136118-- |
137119-- Reads a section of a buffer as a string with the specified encoding.
138120--
139121readString :: forall e . Encoding -> Offset -> Offset -> Buffer -> String
140122readString = readStringImpl <<< show
141123
142- foreign import readStringImpl
143- " function readStringImpl (enc) { \
144- \ return function (start) { \
145- \ return function (end) { \
146- \ return function (buff) { \
147- \ return buff.toString(enc, start, end); \
148- \ } \
149- \ } \
150- \ } \
151- \}" :: String -> Offset -> Offset -> Buffer -> String
124+ foreign import readStringImpl :: String -> Offset -> Offset -> Buffer -> String
152125
153126-- |
154127-- Reads the buffer as a string with the specified encoding.
155128--
156129toString :: forall e . Encoding -> Buffer -> String
157130toString = toStringImpl <<< show
158131
159- foreign import toStringImpl
160- " function toStringImpl (enc) { \
161- \ return function (buff) { \
162- \ return buff.toString(enc); \
163- \ } \
164- \}" :: String -> Buffer -> String
132+ foreign import toStringImpl :: String -> Buffer -> String
165133
166134-- |
167135-- Writes a numeric value to a buffer at the specified offset.
168136--
169137write :: forall e . BufferValueType -> Number -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
170138write = writeImpl <<< show
171139
172- foreign import writeImpl
173- " function writeImpl (ty) { \
174- \ return function (value) { \
175- \ return function (offset) { \
176- \ return function (buf) { \
177- \ buf['write' + ty](value, offset); \
178- \ return {}; \
179- \ }; \
180- \ }; \
181- \ }; \
182- \}" :: forall e . String -> Number -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
140+ foreign import writeImpl ::
141+ forall e . String -> Number -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
183142
184143-- |
185144-- Writes octets from a string to a buffer at the specified offset. Multi-byte
@@ -189,107 +148,53 @@ foreign import writeImpl
189148writeString :: forall e . Encoding -> Offset -> Number -> String -> Buffer -> Eff (buffer :: BufferWrite | e ) Number
190149writeString = writeStringImpl <<< show
191150
192- foreign import writeStringImpl
193- " function writeStringImpl (enc) { \
194- \ return function (offset) { \
195- \ return function (length) { \
196- \ return function (value) { \
197- \ return function (buff) { \
198- \ return buff.write(value, offset, length, encoding); \
199- \ }; \
200- \ }; \
201- \ }; \
202- \ }; \
203- \}" :: forall e . String -> Offset -> Number -> String -> Buffer -> Eff (buffer :: BufferWrite | e ) Number
151+ foreign import writeStringImpl ::
152+ forall e . String -> Offset -> Number -> String -> Buffer -> Eff (buffer :: BufferWrite | e ) Number
204153
205154-- |
206155-- Creates an array of octets from a buffer's contents.
207156--
208- foreign import toArray
209- " function toArray (buff) { \
210- \ return buff.toJSON(); \
211- \}" :: Buffer -> [Octet ]
157+ foreign import toArray :: Buffer -> Array Octet
212158
213159-- |
214160-- Reads an octet from a buffer at the specified offset.
215161--
216- foreign import getAtOffset
217- " function getAtOffset (buff) { \
218- \ return function (offset) { \
219- \ var octet = buff[offset]; \
220- \ return octet == null ? _ps.Data_Maybe.Nothing \
221- \ : _ps.Data_Maybe.Just(buff[i]); \
222- \ } \
223- \}" :: Offset -> Buffer -> Maybe Octet
162+ getAtOffset :: Offset -> Buffer -> Maybe Octet
163+ getAtOffset = getAtOffsetImpl Just Nothing
164+
165+ foreign import getAtOffsetImpl ::
166+ (Octet -> Maybe Octet ) -> Maybe Octet -> Offset -> Buffer -> Maybe Octet
224167
225168-- |
226169-- Writes an octet in the buffer at the specified offset.
227170--
228- foreign import setAtOffset
229- " function setAtOffset (value) { \
230- \ return function (offset) { \
231- \ return function (buff) { \
232- \ buff[offset] = value; \
233- \ return {}; \
234- \ } \
235- \ } \
236- \}" :: forall e . Octet -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
171+ foreign import setAtOffset ::
172+ forall e . Octet -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
237173
238174-- |
239175-- Returns the size of a buffer.
240176--
241- foreign import size
242- " function size (buff) { \
243- \ return buff.length; \
244- \}" :: forall e . Buffer -> Number
177+ foreign import size :: Buffer -> Number
245178
246179-- |
247180-- Concatenates a list of buffers.
248181--
249- foreign import concat
250- " function concat (buffs) { \
251- \ return Buffer.concat(buffs); \
252- \}" :: [Buffer ] -> Buffer
182+ foreign import concat :: Array Buffer -> Buffer
253183
254184-- |
255185-- Concatenates a list of buffers, combining them into a new buffer of the
256186-- specified length.
257187--
258- foreign import concat'
259- " function concat$prime (buffs) { \
260- \ return function (totalLength) { \
261- \ return Buffer.concat(buffs, totalLength); \
262- \ } \
263- \}" :: [Buffer ] -> Number -> Buffer
188+ foreign import concat' :: Array Buffer -> Number -> Buffer
264189
265190-- |
266191-- Copies a section of a source buffer into a target buffer at the specified
267192-- offset.
268193--
269- foreign import copy
270- " function copy (srcStart) { \
271- \ return function (srcEnd) { \
272- \ return function (src) { \
273- \ return function (targStart) { \
274- \ return function (targ) { \
275- \ return src.copy(targ, targStart, srcStart, strcEnd); \
276- \ } \
277- \ } \
278- \ } \
279- \ } \
280- \}" :: Offset -> Offset -> Buffer -> Offset -> Buffer -> Buffer
194+ foreign import copy :: Offset -> Offset -> Buffer -> Offset -> Buffer -> Buffer
281195
282196-- |
283197-- Fills a range in a buffer with the specified octet.
284198--
285- foreign import fill
286- " function fill (buff) { \
287- \ return function (octet) { \
288- \ return function (start) { \
289- \ return function (end) { \
290- \ buff.fill(octet, start, end); \
291- \ return {}; \
292- \ } \
293- \ } \
294- \ } \
295- \}" :: forall e . Octet -> Offset -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
199+ foreign import fill ::
200+ forall e . Octet -> Offset -> Offset -> Buffer -> Eff (buffer :: BufferWrite | e ) Unit
0 commit comments