12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /**
- * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
- *
- * @author David Sehnal <david.sehnal@gmail.com>
- */
- import { CifWriter } from '../mol-io/writer/cif';
- import * as fs from 'fs';
- const category1fields: CifWriter.Field[] = [
- CifWriter.Field.str('f1', i => 'v' + i),
- CifWriter.Field.int('f2', i => i * i),
- CifWriter.Field.float('f3', i => Math.random()),
- ];
- const category2fields: CifWriter.Field[] = [
- CifWriter.Field.str('e1', i => 'v\n' + i),
- CifWriter.Field.int('e2', i => i * i),
- CifWriter.Field.float('e3', i => Math.random()),
- ];
- function getCat(name: string): CifWriter.Category {
- return {
- name,
- instance(ctx: { fields: CifWriter.Field[], rowCount: number }) {
- return { fields: ctx.fields, source: [{ rowCount: ctx.rowCount }] };
- }
- };
- }
- function testText() {
- const enc = CifWriter.createEncoder();
- const filter: CifWriter.Category.Filter = {
- includeCategory(cat) { return true; },
- includeField(cat, field) { return !(cat === 'cat2' && field === 'e2'); }
- };
- enc.startDataBlock('test');
- enc.setFilter(filter);
- enc.writeCategory(getCat('cat1'), [{ rowCount: 5, fields: category1fields }]);
- enc.writeCategory(getCat('cat2'), [{ rowCount: 1, fields: category2fields }]);
- console.log(enc.getData());
- }
- testText();
- function testBinary() {
- const enc = CifWriter.createEncoder({ binary: true });
- const filter: CifWriter.Category.Filter = {
- includeCategory(cat) { return true; },
- includeField(cat, field) { return !(cat === 'cat2' && field === 'e2'); }
- };
- enc.startDataBlock('test');
- enc.setFilter(filter);
- enc.writeCategory(getCat('cat1'), [{ rowCount: 5, fields: category1fields }]);
- enc.writeCategory(getCat('cat2'), [{ rowCount: 1, fields: category2fields }]);
- enc.encode();
- const data = enc.getData() as Uint8Array;
- fs.writeFileSync('e:/test/mol-star/test.bcif', Buffer.from(data));
- console.log('written binary');
- }
- testBinary();
|