import r from 'restructure';

const resolved = Promise.resolve();

export default class Subset {
  constructor(font) {
    this.font = font;
    this.glyphs = [];
    this.mapping = {};

    // always include the missing glyph
    this.includeGlyph(0);
  }

  includeGlyph(glyph) {
    if (typeof glyph === 'object') {
      glyph = glyph.id;
    }

    if (this.mapping[glyph] == null) {
      this.glyphs.push(glyph);
      this.mapping[glyph] = this.glyphs.length - 1;
    }

    return this.mapping[glyph];
  }

  encodeStream() {
    let s = new r.EncodeStream();

    resolved.then(() => {
      this.encode(s);
      return s.end();
    });

    return s;
  }
}
