コード例 #1
0
        private static Value _md5(FlowController flow, Value[] arguments)
        {
            stringConverter.SetContext(flow);
            var stringValue = stringConverter.EvaluateToString(arguments[0]);

            if (stringValue == null)
            {
                return(flow.OutSet.AnyStringValue);
            }

            var phpBytes = new PhpBytes(stringValue.Value);

            Debug.Assert(arguments.Length > 0);

            if (arguments.Length > 1)
            {
                booleanConverter.SetContext(flow.OutSet.Snapshot);
                var isRawOutput = booleanConverter.EvaluateToBoolean(arguments[1]);

                if ((isRawOutput == null) || isRawOutput.Value)
                {
                    // TODO: Implement precisely
                    return(flow.OutSet.AnyStringValue);
                }
            }

            return(flow.OutSet.CreateString(PhpHash.MD5(phpBytes)));
        }
コード例 #2
0
        bool ToBoolean(SnapshotBase snapshot, Value value, bool defaultValue)
        {
            var converter = new BooleanConverter(snapshot);
            var result    = converter.EvaluateToBoolean(value);

            if (result != null)
            {
                return(result.Value);
            }
            else
            {
                return(defaultValue);
            }
        }
コード例 #3
0
        /// <summary>
        /// Gets the condition result.
        /// </summary>
        /// <returns>see <see cref="PossibleValues"/> for details of possible result.</returns>
        PossibleValues GetConditionResult(FlowOutputSet flowOutputSet, MemoryEntry evaluatedPart)
        {
            var converter = new BooleanConverter(flowOutputSet.Snapshot);
            var value     = converter.EvaluateToBoolean(evaluatedPart);

            if (value == null)
            {
                return(PossibleValues.Unknown);
            }
            else if (value.Value)
            {
                return(PossibleValues.OnlyTrue);
            }
            else
            {
                return(PossibleValues.OnlyFalse);
            }
        }
コード例 #4
0
        /// <summary>
        /// Gets the condition result.
        /// </summary>
        /// <returns>see <see cref="PossibleValues"/> for details of possible result.</returns>
        private PossibleValues GetConditionResult(ConditionForm conditionForm, FlowOutputSet flowOutputSet, MemoryEntry evaluatedPart)
        {
            var converter = new BooleanConverter(flowOutputSet.Snapshot);
            var value     = converter.EvaluateToBoolean(evaluatedPart);

            if (value == null)
            {
                return(PossibleValues.Unknown);
            }

            var flipResult = (conditionForm == ConditionForm.None) ? true : false;

            if (value.Value ^ flipResult)
            {
                return(PossibleValues.OnlyTrue);
            }
            else
            {
                return(PossibleValues.OnlyFalse);
            }
        }