snakeCase property

JsonCraftFormatter get snakeCase

Implementation

static JsonCraftFormatter get snakeCase => JsonCraftFormatter(
      name: 'snakeCase',
      formatter: (value, param, getValue) {
        // Primeiro converte espaços e hífens para underscore
        String result = value.replaceAll(RegExp(r'[\s-]+'), '_');

        // Depois adiciona underscore antes de letras maiúsculas
        result = result.replaceAllMapped(RegExp(r'([a-z])([A-Z])'), (match) {
          return '${match.group(1)}_${match.group(2)}';
        });

        return result
            .toLowerCase()
            .replaceAll(RegExp(r'^_+'), '')
            .replaceAll(RegExp(r'_+'), '_');
      },
    );