instance static method

EntityAnnotation instance(
  1. Map annotation
)

Implementation

static EntityAnnotation instance(Map<dynamic, dynamic> annotation) {
  var entities = <Entity>[];

  for (dynamic entity in annotation['entities']) {
    var type = entity['type'];
    var raw = entity['raw'];
    switch (type) {
      case Entity.TYPE_ADDRESS:
        entities.add(AddressEntity(raw));
        break;
      case Entity.TYPE_URL:
        entities.add(UrlEntity(raw));
        break;
      case Entity.TYPE_PHONE:
        entities.add(PhoneEntity(raw));
        break;
      case Entity.TYPE_EMAIL:
        entities.add(EmailEntity(raw));
        break;
      case Entity.TYPE_DATE_TIME:
        entities.add(DateTimeEntity(raw.toString(),
            entity['dateTimeGranularity'], entity['timestamp']));
        break;
      case Entity.TYPE_FLIGHT_NUMBER:
        entities
            .add(FlightNumberEntity(raw, entity['code'], entity['number']));
        break;
      case Entity.TYPE_IBAN:
        entities.add(IbanEntity(raw, entity['iban'], entity['code']));
        break;
      case Entity.TYPE_ISBN:
        entities.add(IsbnEntity(raw, entity['isbn']));
        break;
      case Entity.TYPE_MONEY:
        entities.add(MoneyEntity(raw, entity['fraction'], entity['integer'],
            entity['unnormalized']));
        break;
      case Entity.TYPE_PAYMENT_CARD:
        entities
            .add(PaymentCardEntity(raw, entity['network'], entity['number']));
        break;
      case Entity.TYPE_TRACKING_NUMBER:
        entities.add(
            TrackingNumberEntity(raw, entity['carrier'], entity['number']));
        break;
      default:
    }
  }

  return EntityAnnotation._(
      annotation['start'], annotation['end'], annotation['text'], entities);
}