• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import type {INameGenerator, NameGeneratorOptions} from './INameGenerator';
17import {OrderedNameGenerator} from './OrderedNameGenerator';
18import {DisorderNameGenerator} from './DisorderNameGenerator';
19import {HexNameGenerator} from './HexNameGenerator';
20import {DictionaryNameGenerator} from './DictionaryNameGenerator';
21import {ReservedNameGenerator} from './ReservedNameGenerator';
22import {UnderlineNameGenerator} from './UnderlineNameGenerator';
23
24export enum NameGeneratorType {
25  ORDERED = 1,
26  DISORDERED = 2,
27  HEX = 3,
28  DICTIONARY = 4,
29  RESERVED_NAME = 5,
30  UNDERLINE = 6,
31}
32
33export function getNameGenerator(generatorType: NameGeneratorType, options?: NameGeneratorOptions): INameGenerator {
34  // 10 branch is max in switch
35  switch (generatorType) {
36    case NameGeneratorType.ORDERED:
37      return new OrderedNameGenerator(options);
38    case NameGeneratorType.DISORDERED:
39      return new DisorderNameGenerator(options);
40    case NameGeneratorType.HEX:
41      return new HexNameGenerator(options);
42    case NameGeneratorType.DICTIONARY:
43      return new DictionaryNameGenerator(options);
44    case NameGeneratorType.RESERVED_NAME:
45      return new ReservedNameGenerator(options);
46    case NameGeneratorType.UNDERLINE:
47      return new UnderlineNameGenerator(options);
48    default:
49      console.error('name generator type in getGenerator() is not support');
50      return new OrderedNameGenerator(options);
51  }
52}
53