Skip to content

Commit

Permalink
Add a logic to process enum
Browse files Browse the repository at this point in the history
After this patch, `DefinitionInfoMap` can process `enum`. Other
definitions will be ignored for now.

ISSUE=#207
  • Loading branch information
romandev committed Dec 27, 2017
1 parent 1920c26 commit 8f89379
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
8 changes: 7 additions & 1 deletion generator/new_parser/definition_info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,16 @@ export interface DictionaryMemberInfo {
readonly default: TypeValue;
}

export interface EnumInfo {
readonly type: 'enum';
readonly name: string;
readonly values: TypeValue[];
}

export interface TypeValue {
readonly type: string;
readonly value: string;
}

export type InterfaceMemberInfo = OperationMemberInfo;
export type DefinitionInfo = InterfaceInfo | DictionaryInfo;
export type DefinitionInfo = InterfaceInfo | DictionaryInfo | EnumInfo;
17 changes: 16 additions & 1 deletion generator/new_parser/definition_info_map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

import {
DefinitionInfo, DictionaryInfo, InterfaceInfo
DefinitionInfo, DictionaryInfo, EnumInfo, InterfaceInfo
} from 'generator/new_parser/definition_info';

interface DefinitionInfoStore {
Expand Down Expand Up @@ -64,6 +64,18 @@ function updateDictionaryInfo(info: DictionaryInfo): void {
storedInfo.members = storedInfo.members.concat(info.members);
}

function updateEnumInfo(info: EnumInfo): void {
const storedInfo: DefinitionInfo = store[info.name];

if (storedInfo === undefined) {
store[info.name] = info;

return;
}

throw new SyntaxError('IDL defintions are duplicated');
}

function updateDefinitionInfo(info: DefinitionInfo): void {
switch (info.type) {
case 'interface':
Expand All @@ -72,6 +84,9 @@ function updateDefinitionInfo(info: DefinitionInfo): void {
case 'dictionary':
updateDictionaryInfo(info as DictionaryInfo);
break;
case 'enum':
updateEnumInfo(info as EnumInfo);
break;
default:
}
}
Expand Down

0 comments on commit 8f89379

Please sign in to comment.