Haxe Code Cookbook
Haxe programming cookbookAbstract typesEmail address as abstract type

Email address as abstract type

Reading time: 0.5 minute

The following EmailAddress Abstract type example is based on the underlying standard String type, but sets the restriction that it can only represent a valid email address. If not, an exception will be thrown.

abstract EmailAddress(String) to String {
  static var ereg = ~/.+@.+/i;
  inline public function new(address:String) {
    if (!ereg.match(address)) throw 'EmailAddress "$address" is invalid';
    this = address.toLowerCase();
  }

  @:from inline static public function fromString(address:String) {
    return new EmailAddress(address);
  }
}

Usage

// The following works
var address:EmailAddress = 'eve@paradise.com';

// The following throws an exception
var address:EmailAddress = 'adam#paradise.com';

Learn about Haxe Abstracts here: https://haxe.org/manual/types-abstract.html


Contributors:
Ben Merckx
Mark Knol
Last modified:
Created:
Category:  Abstract types