canAddTokenToEndOfSubRegion function

bool canAddTokenToEndOfSubRegion(
  1. dynamic subRegion,
  2. dynamic currentToken, {
  3. dynamic impliedHundreds,
})

Implementation

bool canAddTokenToEndOfSubRegion(subRegion, currentToken, {impliedHundreds}) {
  final tokens = subRegion.tokens;
  var prevToken = tokens[0];
  if (!prevToken) return true;

  if (prevToken['type'] == TOKEN_TYPE['MAGNITUDE'] &&
      currentToken['type'] == TOKEN_TYPE['UNIT']) return true;

  if (prevToken['type'] == TOKEN_TYPE['MAGNITUDE'] &&
      currentToken['type'] == TOKEN_TYPE['TEN']) return true;

  if (impliedHundreds &&
      subRegion['type'] == TOKEN_TYPE['MAGNITUDE'] &&
      prevToken['type'] == TOKEN_TYPE['TEN'] &&
      currentToken['type'] == TOKEN_TYPE['UNIT']) return true;

  if (impliedHundreds &&
      subRegion['type'] == TOKEN_TYPE['MAGNITUDE'] &&
      prevToken['type'] == TOKEN_TYPE['UNIT'] &&
      currentToken['type'] == TOKEN_TYPE['TEN']) return true;

  if (prevToken['type'] == TOKEN_TYPE['TEN'] &&
      currentToken['type'] == TOKEN_TYPE['UNIT']) return true;

  if (!impliedHundreds &&
      prevToken['type'] == TOKEN_TYPE['TEN'] &&
      currentToken['type'] == TOKEN_TYPE['UNIT']) return true;

  if (prevToken['type'] == TOKEN_TYPE['MAGNITUDE'] &&
      currentToken['type'] == TOKEN_TYPE['MAGNITUDE']) return true;

  if (!impliedHundreds &&
      prevToken['type'] == TOKEN_TYPE['TEN'] &&
      currentToken['type'] == TOKEN_TYPE['TEN']) return false;

  if (impliedHundreds &&
      prevToken['type'] == TOKEN_TYPE['TEN'] &&
      currentToken['type'] == TOKEN_TYPE['TEN']) return true;

  return false;
}