예제 #1
0
        /// <summary>
        /// Parse a query string
        /// </summary>
        /// <param name="reader">string to parse</param>
        /// <param name="parameters">Parameter collection to fill</param>
        /// <returns>A collection</returns>
        /// <exception cref="ArgumentNullException"><c>reader</c> is <c>null</c>.</exception>
        public void Parse(TextReader reader, IParameterCollection parameters)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            var canRun = true;
            while (canRun)
            {
                var result = reader.ReadToEnd("&=");
                var name = Uri.UnescapeDataString(result.Value);
                switch (result.Delimiter)
                {
                    case '&':
                        parameters.Add(name, string.Empty);
                        break;
                    case '=':
                        result = reader.ReadToEnd("&");
                        parameters.Add(name, Uri.UnescapeDataString(result.Value));
                        break;
                    case char.MinValue:
                        // EOF = no delimiter && no value
                        if (!string.IsNullOrEmpty(name))
                            parameters.Add(name, string.Empty);
                        break;
                }

                canRun = result.Delimiter != char.MinValue;
            }
        }
예제 #2
0
        /// <summary>
        /// Parse string
        /// </summary>
        /// <param name="value">contains "a=b,c=d" etc</param>
        /// <param name="target">Collection to fill with the values</param>
        public void Parse(string value, IParameterCollection target)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            var index  = 0;
            var lastCh = char.MinValue;

            var name   = "";
            var oldPos = 0;

            while (index < value.Length)
            {
                var ch = value[index];
                switch (ch)
                {
                case '=':
                    if (lastCh != '\\')
                    {
                        name   = value.Substring(oldPos, index - oldPos).Trim(' ');
                        oldPos = index + 1;
                    }
                    break;

                case ',':
                    if (lastCh != '\\')
                    {
                        target.Add(name, value.Substring(oldPos, index - oldPos).Trim(' ', '"'));
                        name   = "";
                        oldPos = index + 1;
                    }
                    break;
                }
                lastCh = value[index];
                ++index;
            }

            if (name != "")
            {
                target.Add(name, value.Substring(oldPos).Trim(' ', '"'));
            }
        }
예제 #3
0
        public void Parse(string value, IParameterCollection target)
        {
            int index = 0;
            var lastCh = char.MinValue;

            var name = "";
            int oldPos = 0;
            while (index < value.Length)
            {
                var ch = value[index];
                switch (ch)
                {
                    case '=':
                        if (lastCh != '\\')
                        {
                            name = value.Substring(oldPos, index - oldPos).Trim(' ');
                            oldPos = index + 1;
                        }
                        break;
                    case ',':
                        if (lastCh != '\\')
                        {
                            target.Add(name, value.Substring(oldPos, index - oldPos).Trim(' ', '"'));
                            oldPos = index + 1;
                        }
                        break;
                }
                lastCh = value[index];
                ++index;
            }
        }
예제 #4
0
        public void Parse(string value, IParameterCollection target)
        {
            int index  = 0;
            var lastCh = char.MinValue;

            var name   = "";
            int oldPos = 0;

            while (index < value.Length)
            {
                var ch = value[index];
                switch (ch)
                {
                case '=':
                    if (lastCh != '\\')
                    {
                        name   = value.Substring(oldPos, index - oldPos).Trim(' ');
                        oldPos = index + 1;
                    }
                    break;

                case ',':
                    if (lastCh != '\\')
                    {
                        target.Add(name, value.Substring(oldPos, index - oldPos).Trim(' ', '"'));
                        oldPos = index + 1;
                    }
                    break;
                }
                lastCh = value[index];
                ++index;
            }
        }
        /// <summary>
        /// Parse string
        /// </summary>
        /// <param name="value">contains "a=b,c=d" etc</param>
        /// <param name="target">Collection to fill with the values</param>
        public void Parse(string value, IParameterCollection target)
        {
            if (value == null) throw new ArgumentNullException("value");
            if (target == null) throw new ArgumentNullException("target");

            var index = 0;
            var lastCh = char.MinValue;

            var name = "";
            var oldPos = 0;
            while (index < value.Length)
            {
                var ch = value[index];
                switch (ch)
                {
                    case '=':
                        if (lastCh != '\\')
                        {
                            name = value.Substring(oldPos, index - oldPos).Trim(' ');
                            oldPos = index + 1;
                        }
                        break;
                    case ',':
                        if (lastCh != '\\')
                        {
                            target.Add(name, value.Substring(oldPos, index - oldPos).Trim(' ', '"'));
                            name = "";
                            oldPos = index + 1;
                        }
                        break;
                }
                lastCh = value[index];
                ++index;
            }

            if (name != "")
            {
                target.Add(name, value.Substring(oldPos).Trim(' ', '"'));
            }
        }
예제 #6
0
        public IParameterCollection GetViewParams(string cshtmlId)
        {
            string json_params          = GetString(cshtmlId, false);
            IParameterCollection Params = Util.DeserializeParams(json_params);

            if (Params.Contains("cshtml"))
            {
                string view_name = GetViewName(Params["cshtml"].Value.ToString());
                Params.Remove("cshtml");
                Params.Add("view_name", view_name);
            }
            return(Params);
        }
예제 #7
0
        /// <summary>
        /// Parse a query string
        /// </summary>
        /// <param name="reader">string to parse</param>
        /// <param name="parameters">Parameter collection to fill</param>
        /// <returns>A collection</returns>
        /// <exception cref="ArgumentNullException"><c>reader</c> is <c>null</c>.</exception>
        public void Parse(TextReader reader, IParameterCollection parameters)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            var canRun = true;

            while (canRun)
            {
                var result = reader.ReadToEnd("&=");
                var name   = WebUtility.UrlDecode(result.Value);
                switch (result.Delimiter)
                {
                case '&':
                    parameters.Add(name, string.Empty);
                    break;

                case '=':
                    result = reader.ReadToEnd("&");
                    parameters.Add(name, WebUtility.UrlDecode(result.Value));
                    break;

                case char.MinValue:
                    // EOF = no delimiter && no value
                    if (!string.IsNullOrEmpty(name))
                    {
                        parameters.Add(name, string.Empty);
                    }
                    break;
                }

                canRun = result.Delimiter != char.MinValue;
            }
        }
예제 #8
0
        /// <summary>
        /// Adds a parameter to the iCalendar object.
        /// </summary>
        public virtual void AddParameter(string name, string value)
        {
            var p = new CalendarParameter(name, value);

            Parameters.Add(p);
        }
예제 #9
0
 /*----------------------------------------------------------------------------------------*/
 #region Public Methods: Constructor Arguments
 /// <summary>
 /// Adds a transient value for the constructor argument with the specified name.
 /// </summary>
 /// <param name="name">The name of the argument.</param>
 /// <param name="value">The value to inject.</param>
 public ParameterCollectionBuilder ConstructorArgument(string name, object value)
 {
     _collection.Add(new ConstructorArgumentParameter(name, value));
     return(this);
 }