public override Dynamic BinaryOperation(BinaryOperator _operator, Dynamic operand) { switch (_operator) { case BinaryOperator.Plus: return(new String(value + operand)); case BinaryOperator.Times: return(new String(StringUtil.Repeat(value, operand.AsInt32))); case BinaryOperator.LessThan: return(Boolean.FromBool(string.Compare(value, operand.ToString()) < 0)); case BinaryOperator.LessThanOrEqual: return(Boolean.FromBool(string.Compare(value, operand.ToString()) <= 0)); case BinaryOperator.GreaterThan: return(Boolean.FromBool(string.Compare(value, operand.ToString()) > 0)); case BinaryOperator.GreaterThanOrEqual: return(Boolean.FromBool(string.Compare(value, operand.ToString()) >= 0)); case BinaryOperator.StartsWith: return(Boolean.FromBool(value.StartsWith(operand.ToString()))); case BinaryOperator.EndsWith: return(Boolean.FromBool(value.EndsWith(operand.ToString()))); case BinaryOperator.Contains: return(Boolean.FromBool(value.Contains(operand.ToString()))); case BinaryOperator.Matches: return(Boolean.FromBool(StringUtil.GetRegex(operand.ToString()).IsMatch(value))); default: return(base.BinaryOperation(_operator, operand)); } }
protected override int UnsafeCompareTo(Dynamic other) { return(value.CompareTo(other.ToString())); }
protected override bool UnsafeEquals(Dynamic other) { return(value == other.ToString()); }