unicode 1.1.2 copy "unicode: ^1.1.2" to clipboard
unicode: ^1.1.2 copied to clipboard

Unicode characters library auto generated from http://www.unicode.org.

example/example.dart

import 'package:unicode/blocks.dart';
import 'package:unicode/decomposer.dart';
import 'package:unicode/decomposers/circle.dart';
import 'package:unicode/decomposers/font.dart';
import 'package:unicode/decomposers/wide.dart';
import 'package:unicode/unicode.dart' as unicode;

void main(List<String> args) {
  var ch = unicode.toRune('я');
  if (unicode.isLowerCaseLetter(ch)) {
    print('${char2Str(ch)} is lowercase letter');
  }

  ch = unicode.toRune('{');
  if (unicode.isOpenPunctuation(ch)) {
    print('${char2Str(ch)} is open punctuation');
  }

  ch = unicode.toRune('©');
  if (unicode.isOtherSymbol(ch)) {
    print('${char2Str(ch)} is other symbol');
  }

  ch = unicode.toRune('ǁ');
  if (unicode.isOtherLetter(ch)) {
    print('${char2Str(ch)} is other letter');
  }

  ch = 'ソ'.c;
  final block = getUnicodeBlock(ch);
  if (block == UnicodeBlock.katakana) {
    print('${char2Str(ch)} is katakana');
  }

  ch = unicode.charToTitleCase(unicode.toRune('dž'));
  print('${char2Str(ch)} is title case of dž');

  ch = unicode.charToUpperCase(unicode.toRune('dž'));
  print('${char2Str(ch)} is upper case of dž');

  const s1 =
      '𝑻𝒉𝒆 ℚ𝕦𝕚𝕔𝕜 Brown 🅵🅾🆇 𝔍𝔲𝔪𝔭𝔢𝔡 ⓞⓥⓔⓡ ʇɥǝ 𝗟𝗮𝘇𝘆 𝙳𝚘𝚐';
  final s2 = decompose(s1, _decomposers);
  print(s1);
  print(s2);

  const s3 = "Hello, world! i am 'foo'";
  final s4 = _replaceAll(s3, '', const [
    unicode.lowerCaseLetter,
    unicode.upperCaseLetter,
    unicode.spaceSeparator,
    unicode.otherLetter,
    unicode.modifierLetter,
    unicode.titleCaseLetter,
  ]);

  print(s3);
  print(s4);
}

final _decomposer1 = LetterMappingDecomposer([
  ('ʇ'.c, 't'.c),
  ('ɥ'.c, 'h'.c),
  ('ǝ'.c, 'e'.c),
]);

final _decomposer2 = LetterCasingDecomposer([
  ('🅰'.c, '🆉'.c, 'A'.c - '🅰'.c),
]);

final _decomposers = [
  const FontDecomposer(),
  const WideDecomposer(),
  const CircleDecomposer(),
  _decomposer2,
  _decomposer1,
];

String char2Str(int c) {
  return String.fromCharCode(c);
}

String _replaceAll(String str, String replace, List<int> allowedCategories) {
  final codePoints = <int>[];
  final replaceRunes = replace.runes.toList();
  for (final rune in str.runes) {
    final category = unicode.generalCategories[rune];
    var done = false;
    for (var i = 0; i < allowedCategories.length; i++) {
      if (category == allowedCategories[i]) {
        done = true;
        codePoints.add(rune);
        break;
      }
    }

    if (!done) {
      if (replaceRunes.isNotEmpty) {
        codePoints.addAll(replaceRunes);
      }
    }
  }

  return String.fromCharCodes(codePoints);
}

extension on String {
  int get c => unicode.toRune(this);
}
7
likes
0
points
301k
downloads

Publisher

unverified uploader

Weekly Downloads

Unicode characters library auto generated from http://www.unicode.org.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

simple_sparse_list

More

Packages that depend on unicode