예제 #1
0
        public override void parseBlocks(string input)
        {
            DelimiterText = getInternalBlockText(DELIMITER, input);
            ParameterText = getInternalBlockText(PARAMETERS, input);
            CreationText  = getInternalBlockText(TEXT, input);

            //Parse Delimiter
            Delimiter = new String[] { ProgramNode.loadString(DelimiterText) };
            //Parse Parameter Text
            VarList = ParameterText.Split(ProgramNode.NEWLINE, StringSplitOptions.RemoveEmptyEntries).Select(x => ProgramNode.loadString(x)).ToList();
        }
예제 #2
0
        /// <summary>
        /// If the parameter text is of the form
        /// separator char, then entries, returns the number of parameters
        /// </summary>
        /// <returns></returns>
        protected List <string> Parameters()
        {
            var ans = new List <string>();

            if (!string.IsNullOrEmpty(ParameterText))
            {
                var sep   = ParameterText[0];
                var words = ParameterText.Split(new[] { sep });
                ans.AddRange(words);
            }
            return(ans);
        }
예제 #3
0
    public bool TryGetTextParameter(string name, out string value)
    {
        foreach (Parameter param in m_parameters)
        {
            if (param.m_name == name)
            {
                ParameterText pt = param as ParameterText;

                if (pt != null)
                {
                    value = pt.m_text;
                    return(true);
                }
            }
        }

        value = null;
        return(false);
    }
예제 #4
0
    public bool TryGetTextParameters(string name, out string[] values)
    {
        List <string> foundValues = new List <string>();

        foreach (Parameter param in m_parameters)
        {
            if (param.m_name == name)
            {
                ParameterText pt = param as ParameterText;

                if (pt != null)
                {
                    foundValues.Add(pt.m_text);
                }
            }
        }

        values = foundValues.ToArray();
        return(foundValues.Count > 0);
    }
예제 #5
0
    private string EncodeParameterItem(Parameter item)
    {
        string data = "";

        if (item is ParameterGroup)
        {
            if (m_mode == TransfluentMethodMode.GET)
            {
                Debug.LogError("TransfluentUtility: GET methods do not support POST parameter arrays!\nParameter group '" + item.m_name + "' was discarded");
            }
            if (m_mode == TransfluentMethodMode.POST)
            {
                ParameterGroup group = item as ParameterGroup;
                for (int i = 0; i < group.m_parameters.Count; i++)
                {
                    if (i > 0)
                    {
                        data += "&";
                    }
                    data += EncodeParameterItem(group.m_parameters[i]);
                }
            }
        }
        if (item is ParameterValue)
        {
            ParameterValue value = item as ParameterValue;
            data += value.m_name + "=" + value.m_value;
        }
        if (item is ParameterText)
        {
            ParameterText text = item as ParameterText;
            data += text.m_name + "=" + WWW.EscapeURL(text.m_text);
        }

        return(data);
    }
        public override void parseBlocks(string input)
        {
            DelimiterText   = getInternalBlockText(DELIMITER, input);
            ParameterText   = getInternalBlockText(PARAMETERS, input);
            ConditionalText = getInternalBlockText(CONDITIONALS, input);
            CreationText    = getInternalBlockText(TEXT, input);

            //Parse Delimiter
            Delimiter = new String[] { ProgramNode.loadString(DelimiterText) };
            //Parse Parameter Text
            VarList = ParameterText.Split(ProgramNode.NEWLINE, StringSplitOptions.RemoveEmptyEntries).Select(x => ProgramNode.loadString(x)).ToList();

            var cSplit = ConditionalText.Split(ProgramNode.NEWLINE, StringSplitOptions.RemoveEmptyEntries).Select(x => ProgramNode.loadString(x)).ToList();

            Conditionals = new List <Conditional>();

            Conditional workingConditional = new Conditional();

            foreach (String line in cSplit)
            {
                if (workingConditional.varName.Length == 0)
                {
                    //Set the varname to the first line
                    workingConditional.varName = line;
                    continue;
                }
                else if (line.Contains(NEXT))
                {
                    //This is a NEXT Statement, to advance the variable
                    Conditionals.Add(workingConditional);
                    workingConditional = new Conditional();
                    continue;
                }
                else
                {
                    //The format of the line:
                    //VAR_LOOKUP | CONDITION | VAR_VALUE
                    String[] cLineSplit = line.Split(ProgramNode.BAR, StringSplitOptions.RemoveEmptyEntries);
                    if (cLineSplit.Length >= 2)
                    {
                        //Size 2 is allowed, because text can be blank
                        if (VarList.Contains(cLineSplit[0]))
                        {
                            workingConditional.varLookups.Add(VarList.IndexOf(cLineSplit[0]));
                        }
                        else
                        {
                            //Attempt to parse this as an integer
                            workingConditional.varLookups.Add(ProgramNode.loadInt(cLineSplit[0]));
                        }

                        //Attept to load condition

                        Condition c = Condition.loadCondition(cLineSplit[1]);
                        workingConditional.conditions.Add(c);

                        String result = "";
                        if (cLineSplit.Length >= 3)
                        {
                            result = ProgramNode.loadString(cLineSplit[2]);
                        }
                        workingConditional.values.Add(result);
                    }
                }
            }
        }