scratch-sb1-converter
Version:
Scratch 1 (.sb) to Scratch 2 (.sb2) conversion library for Scratch 3.0
54 lines (42 loc) • 1.24 kB
JavaScript
import {FieldObjectHeader, Header} from './fields';
import {FieldObject} from './field-object';
import {FIELD_OBJECT_CONTRUCTORS} from './types';
class TypeIterator {
constructor (valueIterator) {
this.valueIterator = valueIterator;
}
[Symbol.iterator] () {
return this;
}
next () {
const nextHeader = this.valueIterator.next();
if (nextHeader.done) {
return nextHeader;
}
const header = nextHeader.value;
const {classId} = header;
let value = header;
if (header instanceof Header) {
value = [];
for (let i = 0; i < header.size; i++) {
value.push(this.next().value);
}
}
if (
FIELD_OBJECT_CONTRUCTORS[classId] !== null ||
header instanceof FieldObjectHeader
) {
const constructor = FIELD_OBJECT_CONTRUCTORS[header.classId] || FieldObject;
value = new constructor({
classId: header.classId,
version: header.version,
fields: value
});
}
return {
value,
done: false
};
}
}
export {TypeIterator};