Error: Not found: 'package:recase/recase.dart',引入本地recase

This commit is contained in:
2022-06-06 02:13:18 +08:00
parent cd1a89c1b6
commit 956d70d037
3 changed files with 138 additions and 4 deletions

View File

@@ -3,7 +3,7 @@ import 'dart:convert';
import 'package:build/build.dart';
import 'package:code_builder/code_builder.dart';
import 'package:dart_style/dart_style.dart';
import 'package:recase/recase.dart';
import 'recase4.0.0/recase.dart';
import 'models.dart';
@@ -31,12 +31,12 @@ class GeneratorOptions {
return GeneratorOptions(
fontName: config['font_name'] as String,
selectionJsonPath: config['selection_json_path'] as String,
selectionJsonPath: config['selection_json_path'],
);
}
final String fontName;
final String selectionJsonPath;
final String? selectionJsonPath;
}
class IcomoonBuilder implements Builder {

134
lib/recase4.0.0/recase.dart Normal file
View File

@@ -0,0 +1,134 @@
/// An instance of text to be re-cased.
class ReCase {
final RegExp _upperAlphaRegex = RegExp(r'[A-Z]');
final symbolSet = {' ', '.', '/', '_', '\\', '-'};
late String originalText;
late List<String> _words;
ReCase(String text) {
this.originalText = text;
this._words = _groupIntoWords(text);
}
List<String> _groupIntoWords(String text) {
StringBuffer sb = StringBuffer();
List<String> words = [];
bool isAllCaps = text.toUpperCase() == text;
for (int i = 0; i < text.length; i++) {
String char = text[i];
String? nextChar = i + 1 == text.length ? null : text[i + 1];
if (symbolSet.contains(char)) {
continue;
}
sb.write(char);
bool isEndOfWord = nextChar == null ||
(_upperAlphaRegex.hasMatch(nextChar) && !isAllCaps) ||
symbolSet.contains(nextChar);
if (isEndOfWord) {
words.add(sb.toString());
sb.clear();
}
}
return words;
}
/// camelCase
String get camelCase => _getCamelCase();
/// CONSTANT_CASE
String get constantCase => _getConstantCase();
/// Sentence case
String get sentenceCase => _getSentenceCase();
/// snake_case
String get snakeCase => _getSnakeCase();
/// dot.case
String get dotCase => _getSnakeCase(separator: '.');
/// param-case
String get paramCase => _getSnakeCase(separator: '-');
/// path/case
String get pathCase => _getSnakeCase(separator: '/');
/// PascalCase
String get pascalCase => _getPascalCase();
/// Header-Case
String get headerCase => _getPascalCase(separator: '-');
/// Title Case
String get titleCase => _getPascalCase(separator: ' ');
String _getCamelCase({String separator: ''}) {
List<String> words = this._words.map(_upperCaseFirstLetter).toList();
if (_words.isNotEmpty) {
words[0] = words[0].toLowerCase();
}
return words.join(separator);
}
String _getConstantCase({String separator: '_'}) {
List<String> words = this._words.map((word) => word.toUpperCase()).toList();
return words.join(separator);
}
String _getPascalCase({String separator: ''}) {
List<String> words = this._words.map(_upperCaseFirstLetter).toList();
return words.join(separator);
}
String _getSentenceCase({String separator: ' '}) {
List<String> words = this._words.map((word) => word.toLowerCase()).toList();
if (_words.isNotEmpty) {
words[0] = _upperCaseFirstLetter(words[0]);
}
return words.join(separator);
}
String _getSnakeCase({String separator: '_'}) {
List<String> words = this._words.map((word) => word.toLowerCase()).toList();
return words.join(separator);
}
String _upperCaseFirstLetter(String word) {
return '${word.substring(0, 1).toUpperCase()}${word.substring(1).toLowerCase()}';
}
}
extension StringReCase on String {
String get camelCase => ReCase(this).camelCase;
String get constantCase => ReCase(this).constantCase;
String get sentenceCase => ReCase(this).sentenceCase;
String get snakeCase => ReCase(this).snakeCase;
String get dotCase => ReCase(this).dotCase;
String get paramCase => ReCase(this).paramCase;
String get pathCase => ReCase(this).pathCase;
String get pascalCase => ReCase(this).pascalCase;
String get headerCase => ReCase(this).headerCase;
String get titleCase => ReCase(this).titleCase;
}

View File

@@ -12,7 +12,7 @@ dependencies:
build_config: ^1.0.0
dev_dependencies:
recase: ^4.0.0
# recase: ^4.0.0
dart_style: ^2.2.3
code_builder: ^4.1.0
build_runner: ^2.1.11