// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

enum VariableStringSyntax {
  none('ERROR', 'ERROR'),
  snakeCase('snake_case', 'snakeCase'),
  camelCase('camel_case', 'camelCase'),
  constantCase('constant_case', 'constantCase'),
  dotCase('dot_case', 'dotCase'),
  headerCase('header_case', 'headerCase'),
  lowerCase('lower_case', 'lowerCase'),
  pascalCase('pascal_case', 'pascalCase'),
  paramCase('param_case', 'paramCase'),
  sentenceCase('sentence_case', 'sentenceCase'),
  titleCase('title_case', 'titleCase'),
  upperCase('upper_case', 'upperCase'),
  pathCase('path_case', 'pathCase'),
  mustacheCase('mustache_case', 'mustacheCase');

  const VariableStringSyntax(this.mapKey, this.id);

  factory VariableStringSyntax.fromString(String? source) {
    for (final element in values) {
      if (element.mapKey == source || element.id == source) {
        return element;
      }
    }
    return VariableStringSyntax.none;
  }

  final String mapKey;
  final String id;
}
