/enumerated

Dart package with utilities around dart enums

Primary LanguageDartMIT LicenseMIT

pub package package publisher build

The enumerated package adds additional functionality around dart enums. One main aspect of this package is the EnumSet.

Features

  • EnumSet - A Set implementation especially for enums.
  • EnumSet provides additional functionalities and more efficient implementations for specific set operations.

Getting started

Add the package to your pubspec.yaml:

 enumerated: ^0.1.1

In your dart file, import the library:

import 'package:enumerated/enumerated.dart';

Usage

Creating an EnumSet:

In order to create an EnumSet you can choose from one of the following factory methods:

  • EnumSet.of(List, Iterable): Creates an EnumSet with the given values.
  • EnumSet.noneOf(List): Creates an empty EnumSet.
  • EnumSet.allOf(List): Creates an EnumSet with all values of the given enum.
  • EnumSet.complementOf(EnumSet): Creates an EnumSet with all values which are not contained in the other EnumSet
enum Numbers {one, two, three;}
var set1 = EnumSet.of(Numbers.values, [Numbers.one]);
var set2 = EnumSet.noneOf(Numbers.values);
var set3 = EnumSet.allOf(Numbers.values);
var set4 = EnumSet.complementOf(set1);

Note that for every factory method other than complementOf you need to provide the full list of possible enum values as first parameter.

Adding and removing data:

set1.add(Numbers.two);
set1.addAll(set3);
set1.remove(Numbers.one);
set1.removeAll(set3);

Other useful functionalities:

  • fill(): Will add all enum values to the set.
set1.fill();
  • complement(): Will return a new EnumSet with all values which are not contained in the current set.
set1.complement();
  • copy(): Creates a exact copy of the current set.
set1.copy();

Additional information

If you have ideas for this package or want to help develop it yourself, don't hesitate to open an issue or create a pull request. I am grateful for any help!