Skip to content

Commit c7e4532

Browse files
authored
Merge pull request #122 from keichi/rename-skip
Rename skip() to seek()
2 parents ac8ec20 + 2726d2c commit c7e4532

File tree

8 files changed

+29
-22
lines changed

8 files changed

+29
-22
lines changed

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ pointed by another field.
287287
input buffer. Can be a number, string or a function.
288288

289289
### saveOffset(name [,options])
290-
Save the current buffer offset as key `name`. This function is only useful when called after another function which would advance the internal buffer offset.
290+
Save the current buffer offset as key `name`. This function is only useful
291+
when called after another function which would advance the internal buffer
292+
offset.
291293

292294
```javascript
293295
var parser = new Parser()
@@ -304,14 +306,15 @@ var parser = new Parser()
304306
.saveOffset('currentOffset')
305307
// finally, use the saved offset to figure out
306308
// how many bytes we need to skip
307-
.skip(function() {
309+
.seek(function() {
308310
return this.seekOffset - this.currentOffset;
309311
})
310312
... // the parser would continue here
311313
```
312314

313-
### skip(length)
314-
Skip `length` bytes.
315+
### seek(relOffset)
316+
Move the buffer offset for `relOffset` bytes from the current position. Use a
317+
negative `relOffset` value to rewind the offset. Previously named `skip(length)`.
315318

316319
### endianess(endianess)
317320
Define what endianess to use in this parser. `endianess` can be either

example/elf32.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ var ELF32SectionHeaderTable = new Parser().array('items', {
3838
},
3939
});
4040

41-
var ELF32SectionHeaderStringTable = new Parser().skip(1).array('items', {
41+
var ELF32SectionHeaderStringTable = new Parser().seek(1).array('items', {
4242
type: new Parser().string('name', { zeroTerminated: true }),
4343
lengthInBytes: function(vars) {
4444
var shstr = vars.section_headers.items[vars.shstrndx];

example/jpg.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ var SOF0 = Parser.start()
8282
var Ignore = Parser.start()
8383
.endianess('big')
8484
.uint16('length')
85-
.skip(function() {
85+
.seek(function() {
8686
return this.length - 2;
8787
});
8888

example/mbr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var partitionTable = new Parser()
2626
.uint32le('endLBA');
2727

2828
var mbrParser = new Parser()
29-
.skip(446)
29+
.seek(446)
3030
.array('partitionTables', {
3131
type: partitionTable,
3232
length: 4,

example/tar.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ var tarHeader = new Parser()
2222
.string('devmajor', { length: 8, stripNull: true, formatter: oct2int })
2323
.string('devminor', { length: 8, stripNull: true, formatter: oct2int })
2424
.string('prefix', { length: 155, stripNull: true })
25-
.skip(12);
25+
.seek(12);
2626

2727
var tarItem = new Parser()
2828
.nest({
2929
type: tarHeader,
3030
})
31-
.skip(function() {
31+
.seek(function() {
3232
return Math.ceil(this.size / 512) * 512;
3333
});
3434

lib/binary_parser.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type ComplexTypes =
3333
| 'array'
3434
| 'choice'
3535
| 'nest'
36-
| 'skip'
36+
| 'seek'
3737
| 'pointer'
3838
| 'saveOffset'
3939
| '';
@@ -150,7 +150,7 @@ const CAPITILIZED_TYPE_NAMES: { [key in Types]: string } = {
150150
array: 'Array',
151151
choice: 'Choice',
152152
nest: 'Nest',
153-
skip: 'Skip',
153+
seek: 'Seek',
154154
pointer: 'Pointer',
155155
saveOffset: 'SaveOffset',
156156
'': '',
@@ -402,12 +402,16 @@ export class Parser {
402402
return this;
403403
}
404404

405-
skip(length: number, options: ParserOptions) {
405+
skip(length: number, options?: ParserOptions) {
406+
return this.seek(length, options);
407+
}
408+
409+
seek(relOffset: number, options?: ParserOptions) {
406410
if (options && options.assert) {
407-
throw new Error('assert option on skip is not allowed.');
411+
throw new Error('assert option on seek is not allowed.');
408412
}
409413

410-
return this.setNextParser('skip', '', { length: length });
414+
return this.setNextParser('seek', '', { length: relOffset });
411415
}
412416

413417
string(varName: string, options: ParserOptions) {
@@ -675,8 +679,8 @@ export class Parser {
675679
}
676680
size = this.options.length * elementSize;
677681

678-
// if this a skip
679-
} else if (this.type === 'skip') {
682+
// if this a seek
683+
} else if (this.type === 'seek') {
680684
size = this.options.length;
681685

682686
// if this is a nested parser
@@ -753,8 +757,8 @@ export class Parser {
753757
case 'buffer':
754758
this.generateBuffer(ctx);
755759
break;
756-
case 'skip':
757-
this.generateSkip(ctx);
760+
case 'seek':
761+
this.generateSeek(ctx);
758762
break;
759763
case 'nest':
760764
this.generateNest(ctx);
@@ -874,7 +878,7 @@ export class Parser {
874878
}
875879
}
876880

877-
private generateSkip(ctx: Context) {
881+
private generateSeek(ctx: Context) {
878882
const length = ctx.generateOption(this.options.length);
879883
ctx.pushCode(`offset += ${length};`);
880884
}

test/composite_parser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,7 @@ describe('Composite parser', function() {
10271027
.int8('a')
10281028
.int32le('b')
10291029
.string('msg', { length: 10 })
1030-
.skip(2)
1030+
.seek(2)
10311031
.array('data', {
10321032
length: 3,
10331033
type: 'int8',

test/primitive_parser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,10 @@ describe('Primitive parser', function() {
166166
big: 12345678,
167167
});
168168
});
169-
it('should skip when specified', function() {
169+
it('should seek offset', function() {
170170
var parser = Parser.start()
171171
.uint8('a')
172-
.skip(3)
172+
.seek(3)
173173
.uint16le('b')
174174
.uint32be('c');
175175

0 commit comments

Comments
 (0)