named_mode: latest


import 'package:named_mode/named_mode.dart';


This library can help you to solve name-transform problem easily

Now support 5 named mode, using string "an apple" as example

  • an_apple
  • An_Apple
  • anApple
  • AnApple

Resolve named-mode of a string


NamedMode namedMode = resolveNamedMode(your_string);


NamedMode namedMode = NamedMode.parseOn(your_string);

Split a string by named-mode

use specific named-mode to split string

List<String> segments = NamedMode.an_apple.split(your_string);

or split string by resolving named-mode automatically

List<String> segments = autoSplit(your_string);

you can also specific top-level named-mode to split string recursively


string "an_bigApple_TooBig_ApplePie" can be split recursively to [an, big, Apple, Too, Big, Apple, Pie] by this code

autoSplit("an_bigApple_TooBig_ApplePie", parentNamedMode: NamedMode.AN_APPLE);

if you disable recursive then will get [an, bigApple, TooBig, ApplePie]

Combine the split strings


combineWithNamedMode(your_segments, NamedMode.an_apple);

A simple usage example:

import 'package:named_mode/named_mode.dart';

main() {
  NamedMode namedMode;

  /// you can get named mode of string
  String s1 = 'HelloWorld';
  namedMode = resolveNamedMode(s1);
  print(; // NamedMode.AnApple
  namedMode = NamedMode.parseOn(s1);
  print(; // NamedMode.AnApple

  String s2 = 'hello_world';
  namedMode = resolveNamedMode(s2);
  print(; // NamedMode.an_apple

  /// you will get unknown when parse incorrect format string
  String s3 = 'apple_Pie';
  namedMode = resolveNamedMode(s3);
  print(; // NameMode.unknown

  /// you can use simple function to translate names.
  print(renameTo__AN_APPLE(s1)); // HELLO_WORLD
  print(renameTo__An_Apple(s1)); // Hello_World
  print(renameTo__an_apple(s1)); // hello_world
  print(renameTo__AnApple(s1)); // HelloWorld
  print(renameTo__anApple(s1)); // helloWorld
  /// or select mode yourself
  print(renameToOtherMode(s1, NamedMode.anApple)); // helloWorld

  /// replace first char to upper/lower case
  print(replaceFirstChar('apple', toUpper: true)); // Apple
  print(replaceFirstChar('Banana', toUpper: false)); // banana

  /// split string by specific named mode
  var result = NamedMode.an_apple.split('this_is_a_book');
  print(result); // [this, is, a, book]
  result = NamedMode.anApple.split('thisIsABook');
  print(result); // [this, is, a, book]
  result = NamedMode.an_apple.split('thisIsABook');
  print(result); // [thisisabook]

  /// combine segments to specific named mode string
  var segments = ['this', 'is', 'a', 'book'];
  print(combineWithNamedMode(segments, NamedMode.an_apple)); // this_is_a_book
  print(combineWithNamedMode(segments, NamedMode.AN_APPLE)); // THIS_IS_A_BOOK
  print(combineWithNamedMode(segments, NamedMode.An_Apple)); // This_Is_A_Book
  print(combineWithNamedMode(segments, NamedMode.anApple)); // thisIsABook
  print(combineWithNamedMode(segments, NamedMode.AnApple)); // ThisIsABook

Features and bugs