예제 #1
0
        public static X setClass <X>(this X e, string classes) where X : XElement
        {
            var current = e.Attr("class");

            e.attr("class", ComplexStringExtension.SetList(current, classes, ' '));
            return(e);
        }
예제 #2
0
        public static XElement removeClassName(this XElement e, string classes)
        {
            var current = e.Attr("class");

            e.attr("class", ComplexStringExtension.Remove(current, classes));
            return(e);
        }
        public void FormattedSubstitutions(string src, string datasrc, string result)
        {
            var data       = ComplexStringExtension.Parse(datasrc);
            var realresult = _si.Interpolate(src, data);

            Console.WriteLine(realresult);
            Assert.AreEqual(result, realresult);
        }
        public void ConcurentSubstitutuionsWitDefault(string src, string datasrc, string result)
        {
            var data       = ComplexStringExtension.Parse(datasrc);
            var realresult = _si.Interpolate(src, data);

            Console.WriteLine(realresult);
            Assert.AreEqual(result, realresult);
        }
예제 #5
0
        private void SetupValue(IAction action, IMvcContext context)
        {
            var paramname = Name;

            if (TargetType.IsAbstract)
            {
                return;
            }

            if (TargetType == typeof(XElement))
            {
                var val = context.GetXml(Name);
                SetDirectly(action, val);
            }
            else if (TargetType.IsArray)
            {
                object val;
                var    arr = context.GetObject(paramname);
                if (arr is Array)
                {
                    var resultArray =
                        ((IEnumerable)arr).OfType <object>().Select(_ => _.ToTargetType(TargetType.GetElementType())).ToArray();
                    var t = Array.CreateInstance(TargetType.GetElementType(), resultArray.Length);
                    Array.Copy(resultArray, t, resultArray.Length);
                    val = t;
                }
                else
                {
                    if (_bindattribute.Split)
                    {
                        var str = context.Get(paramname);
                        var a   = str.SmartSplit().Select(_ => _.ToTargetType(TargetType.GetElementType())).ToArray();
                        var t   = Array.CreateInstance(TargetType.GetElementType(), a.Length);
                        Array.Copy(a, t, a.Length);
                        val = t;
                    }
                    else
                    {
                        val = context.GetArray(TargetType.GetElementType(), paramname);
                    }
                }
                SetDirectly(action, val);
            }
            else if (typeof(IDictionary <string, string>) == TargetType)
            {
                var current = (IDictionary <string, string>)GetCurrent(action);
                if (null == current)
                {
                    current = new Dictionary <string, string>();
                    SetDirectly(action, current);
                }

                IDictionary <string, string> val;
                if (IsComplexString)
                {
                    var str = context.Get(paramname);
                    val = ComplexStringExtension.Parse(str);
                }
                else
                {
                    val = context.GetDict(paramname);
                }
                foreach (var p in val)
                {
                    current[p.Key] = p.Value;
                }
            }
            else
            {
                object val = context.Get(paramname);
                if (((string)val).IsEmpty())
                {
                    val = _bindattribute.Default;
                }
                var customBindConverter = _bindattribute as ICustomBindConverter;
                if (customBindConverter != null)
                {
                    customBindConverter.SetConverted(action, (string)val, context, SetDirectly);
                    return;
                }
                SetConverted(action, val, context);
            }
        }