diff --git a/src/mol-io/reader/ccp4/parser.ts b/src/mol-io/reader/ccp4/parser.ts index 43cc24a8302bba97fc893f7eaee26ebcdabfb277..d48c343e5a63e4df3623551bd71b0f95f9aff4ce 100644 --- a/src/mol-io/reader/ccp4/parser.ts +++ b/src/mol-io/reader/ccp4/parser.ts @@ -6,7 +6,7 @@ import { Task, RuntimeContext } from 'mol-task'; import { Ccp4File, Ccp4Header } from './schema' -import Result from '../result' +import { ReaderResult as Result } from '../result' import { FileHandle } from '../../common/file-handle'; async function parseInternal(file: FileHandle, ctx: RuntimeContext): Promise<Result<Ccp4File>> { diff --git a/src/mol-io/reader/cif/binary/parser.ts b/src/mol-io/reader/cif/binary/parser.ts index 8a5f0ea1a8133aed0254577b2791d75952042183..4cf3ae57f882844f856d28612a943fd7a3515179 100644 --- a/src/mol-io/reader/cif/binary/parser.ts +++ b/src/mol-io/reader/cif/binary/parser.ts @@ -7,7 +7,7 @@ import * as Data from '../data-model' import { EncodedCategory, EncodedFile } from '../../../common/binary-cif' import Field from './field' -import Result from '../../result' +import { ReaderResult as Result } from '../../result' import decodeMsgPack from '../../../common/msgpack/decode' import { Task } from 'mol-task' diff --git a/src/mol-io/reader/cif/text/parser.ts b/src/mol-io/reader/cif/text/parser.ts index 3ee75e270731600d06f6ab72b39d9359c1227f06..96ce544721bb5f9e4f4991dd751c9f89af55db55 100644 --- a/src/mol-io/reader/cif/text/parser.ts +++ b/src/mol-io/reader/cif/text/parser.ts @@ -25,7 +25,7 @@ import * as Data from '../data-model' import Field from './field' import { Tokens, TokenBuilder } from '../../common/text/tokenizer' -import Result from '../../result' +import { ReaderResult as Result } from '../../result' import { Task, RuntimeContext, chunkedSubtask } from 'mol-task' /** diff --git a/src/mol-io/reader/common/text/tokenizer.ts b/src/mol-io/reader/common/text/tokenizer.ts index 523bb90617941b88d113a4919c8064dec4bbd472..e88b68dd5abf4644b16f55e40cbf5988111c1d78 100644 --- a/src/mol-io/reader/common/text/tokenizer.ts +++ b/src/mol-io/reader/common/text/tokenizer.ts @@ -8,7 +8,9 @@ import { chunkedSubtask, RuntimeContext } from 'mol-task' -export interface Tokenizer { +export { Tokenizer } + +interface Tokenizer { data: string, position: number, @@ -25,7 +27,7 @@ export interface Tokens { indices: ArrayLike<number> } -export function Tokenizer(data: string): Tokenizer { +function Tokenizer(data: string): Tokenizer { return { data, position: 0, @@ -36,7 +38,7 @@ export function Tokenizer(data: string): Tokenizer { }; } -export namespace Tokenizer { +namespace Tokenizer { export function getTokenString(state: Tokenizer) { return state.data.substring(state.tokenStart, state.tokenEnd); } @@ -269,6 +271,4 @@ export namespace TokenBuilder { indices: new Uint32Array(size) } } -} - -export default Tokenizer \ No newline at end of file +} \ No newline at end of file diff --git a/src/mol-io/reader/csv/parser.ts b/src/mol-io/reader/csv/parser.ts index d5bc68535344ff6c9d7aed63445b26e19a9220c7..779aca07b045e50631dc32f38e73581710a26914 100644 --- a/src/mol-io/reader/csv/parser.ts +++ b/src/mol-io/reader/csv/parser.ts @@ -8,7 +8,7 @@ import { Tokens, TokenBuilder, Tokenizer } from '../common/text/tokenizer' import * as Data from './data-model' import Field from './field' -import Result from '../result' +import { ReaderResult as Result } from '../result' import { Task, RuntimeContext, chunkedSubtask, } from 'mol-task' const enum CsvTokenType { diff --git a/src/mol-io/reader/dsn6/parser.ts b/src/mol-io/reader/dsn6/parser.ts index a77c968662036b64dab1f21d0df9a90edd3d117d..35416d7a82ec686f5846ce84eabacc448ced77d3 100644 --- a/src/mol-io/reader/dsn6/parser.ts +++ b/src/mol-io/reader/dsn6/parser.ts @@ -6,7 +6,7 @@ import { Task, RuntimeContext } from 'mol-task'; import { Dsn6File, Dsn6Header } from './schema' -import Result from '../result' +import { ReaderResult as Result } from '../result' import { FileHandle } from '../../common/file-handle'; function parseBrixHeader(str: string): Dsn6Header { diff --git a/src/mol-io/reader/gro/parser.ts b/src/mol-io/reader/gro/parser.ts index 6183a9a5fee6e887e889b4bd6efd4cec5b3de42b..0367a3ee8bbb27a676679345d9d7551edbd9fdbe 100644 --- a/src/mol-io/reader/gro/parser.ts +++ b/src/mol-io/reader/gro/parser.ts @@ -6,10 +6,10 @@ */ import { Column } from 'mol-data/db' -import Tokenizer from '../common/text/tokenizer' +import { Tokenizer } from '../common/text/tokenizer' import FixedColumn from '../common/text/column/fixed' import * as Schema from './schema' -import Result from '../result' +import { ReaderResult as Result } from '../result' import { Task, RuntimeContext } from 'mol-task' interface State { diff --git a/src/mol-io/reader/mol2/parser.ts b/src/mol-io/reader/mol2/parser.ts index 297e1502618329594b0966427649ba7b014aaa87..45e0b6ccadd52d2f34723f3307ddc484414cf247 100644 --- a/src/mol-io/reader/mol2/parser.ts +++ b/src/mol-io/reader/mol2/parser.ts @@ -15,7 +15,7 @@ import { Column } from 'mol-data/db' import { TokenBuilder, Tokenizer } from '../common/text/tokenizer' import TokenColumn from '../common/text/column/token' import * as Schema from './schema' -import Result from '../result' +import { ReaderResult as Result } from '../result' import { Task, RuntimeContext, chunkedSubtask } from 'mol-task' const { skipWhitespace, eatValue, markLine, getTokenString, readLine } = Tokenizer; diff --git a/src/mol-io/reader/obj/parser.ts b/src/mol-io/reader/obj/parser.ts index 046143b305b51530b1e8d0e1cad7f8cb097fa50c..a8b113a33d0c88f5af90189e79359df8b5f097ae 100644 --- a/src/mol-io/reader/obj/parser.ts +++ b/src/mol-io/reader/obj/parser.ts @@ -4,7 +4,7 @@ * @author Alexander Rose <alexander.rose@weirdbyte.de> */ -import Result from '../result' +import { ReaderResult as Result } from '../result' import { Task, RuntimeContext } from 'mol-task' import { Mesh } from 'mol-geo/geometry/mesh/mesh'; diff --git a/src/mol-io/reader/pdb/parser.ts b/src/mol-io/reader/pdb/parser.ts new file mode 100644 index 0000000000000000000000000000000000000000..4936fe9c9f8675e136424ef62c479e4a95cbf8a7 --- /dev/null +++ b/src/mol-io/reader/pdb/parser.ts @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +import { PdbFile } from './schema'; +import { Task } from 'mol-task'; +import { ReaderResult } from '../result'; +import { Tokenizer } from '../common/text/tokenizer'; + +export function parse(data: string): Task<ReaderResult<PdbFile>> { + return Task.create('Parse PDB', async ctx => ReaderResult.success({ lines: await Tokenizer.readAllLinesAsync(data, ctx) })); +} \ No newline at end of file diff --git a/src/mol-io/reader/pdb/schema.ts b/src/mol-io/reader/pdb/schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..d5ab679056ff8c8dc50fd974e8aeaae359e49f86 --- /dev/null +++ b/src/mol-io/reader/pdb/schema.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author David Sehnal <david.sehnal@gmail.com> + */ + +import { Tokens } from '../common/text/tokenizer'; + +export interface PdbFile { + lines: Tokens +} \ No newline at end of file diff --git a/src/mol-io/reader/result.ts b/src/mol-io/reader/result.ts index 4eb76dd373929b858e09e2de3d7f649abd078f86..255ae0c9eac4e20d0068d2c266db1fa47e696b8c 100644 --- a/src/mol-io/reader/result.ts +++ b/src/mol-io/reader/result.ts @@ -5,7 +5,7 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -type ReaderResult<T> = Success<T> | Error +type ReaderResult<T> = ReaderResult.Success<T> | ReaderResult.Error namespace ReaderResult { export function error<T>(message: string, line = -1): ReaderResult<T> { @@ -15,28 +15,28 @@ namespace ReaderResult { export function success<T>(result: T, warnings: string[] = []): ReaderResult<T> { return new Success<T>(result, warnings); } -} -export class Error { - isError: true = true; + export class Error { + isError: true = true; - toString() { - if (this.line >= 0) { - return `[Line ${this.line}] ${this.message}`; + toString() { + if (this.line >= 0) { + return `[Line ${this.line}] ${this.message}`; + } + return this.message; } - return this.message; - } - constructor( - public message: string, - public line: number) { + constructor( + public message: string, + public line: number) { + } } -} -export class Success<T> { - isError: false = false; + export class Success<T> { + isError: false = false; - constructor(public result: T, public warnings: string[]) { } + constructor(public result: T, public warnings: string[]) { } + } } -export default ReaderResult \ No newline at end of file +export { ReaderResult } \ No newline at end of file