evalMemberExpression method

  1. @override
dynamic evalMemberExpression(
  1. MemberExpression expression,
  2. Map<String, dynamic> context
)

Implementation

@override
dynamic evalMemberExpression(
  MemberExpression expression,
  Map<String, dynamic> context,
) {
  _guardInterpolation(expression.toString());
  final cmd = expression.toString().split('.');

  if (cmd.first == 'env') {
    final envKey = cmd.last;
    final value = _prefixed(cmd, _getEnv(envKey));
    return value;
  }

  if (cmd.first == 'datetime') {
    final formats = <String, String Function(DateTime)>{
      'nowFull': (dt) {
        return '${dt.year}.${dt.month}.${dt.day}-${dt.hour}.${dt.minute}';
      },
    };

    final name = cmd.firstWhereOrNull(formats.keys.contains);
    final format = formats[name];

    if (format != null) {
      final date = format(DateTime.now());
      return _prefixed(cmd, date);
    }
    return;
  }

  if (cmd.first == 'build') {
    _guardBuildSettings();

    if (cmd[1] == 'isRelease') {
      return settings!.type == BuildType.release;
    } else if (cmd[1] == 'isProfile') {
      return settings!.type == BuildType.profile;
    } else if (cmd[1] == 'isDebug') {
      return settings!.type == BuildType.debug;
    } else if (cmd[1] == 'isNotRelease') {
      return settings!.type != BuildType.release;
    }
  }

  return super.evalMemberExpression(expression, context);
}