コード例 #1
0
        private static CodeTreeNode ParseNode(CodeType parentCodeType, StringSegment nodeCode)
        {
            var nv    = PreHandle(parentCodeType, nodeCode);
            var name  = nv.Name;
            var value = nv.Value;

            CodeTreeNode node;

            if (CodeTreeNode.IsObject(value))
            {
                value = TrimSign(value);
                var childs = ParseNodes(CodeType.Object, value);
                node = new CodeTreeNode(name, value, CodeType.Object, childs);
            }
            else if (CodeTreeNode.IsList(value))
            {
                value = TrimSign(value);
                var childs = ParseNodes(CodeType.List, value);
                node = new CodeTreeNode(name, value, CodeType.List, childs);
            }
            else
            {
                var codeType = CodeTreeNode.GetValueType(value);
                node = new CodeTreeNode(name, value, codeType);
            }
            return(node);
        }
コード例 #2
0
        /// <summary>
        /// 预处理节点代码
        /// </summary>
        /// <param name="nodeCode"></param>
        /// <param name="name"></param>
        /// <param name="value"></param>
        private static NameAndValue PreHandle(CodeType parentCodeType, StringSegment nodeCode)
        {
            StringSegment name, value;
            var           code = nodeCode.Trim();

            if (CodeTreeNode.IsObject(code) || CodeTreeNode.IsList(code))
            {
                name  = StringSegment.Null;
                value = code;
            }
            else
            {
                int pos = code.IndexOf(':');
                if (parentCodeType == CodeType.Object)
                {
                    name  = pos == -1 ? code : code.Substring(0, pos).Trim();
                    value = pos == -1 ? StringSegment.Null : code.Substring(pos + 1).Trim();
                }
                else
                {
                    name  = pos == -1 ? StringSegment.Null : code.Substring(0, pos).Trim();
                    value = pos == -1 ? code : code.Substring(pos + 1).Trim();
                }
            }

            return(new NameAndValue(name, value));
        }
コード例 #3
0
        /// <summary>
        /// 预处理节点代码
        /// </summary>
        /// <param name="nodeCode"></param>
        /// <param name="name"></param>
        /// <param name="value"></param>
        private static NameAndValue PreHandle(CodeType parentCodeType, StringSegment nodeCode)
        {
            StringSegment name, value;
            var code = nodeCode.Trim();
            if (CodeTreeNode.IsObject(code) || CodeTreeNode.IsList(code))
            {
                name = StringSegment.Null;
                value = code;
            }
            else
            {
                var info = DeserializerUtil.Find(code, 0, ':');
                if (parentCodeType == CodeType.Object)
                {
                    name = !info.Finded ? code : code.Substring(0, info.KeyPosition).Trim();
                    value = !info.Finded ? StringSegment.Null : code.Substring(info.KeyPosition + 1).Trim();
                }
                else
                {
                    name = !info.Finded ? StringSegment.Null : code.Substring(0, info.KeyPosition).Trim();
                    value = !info.Finded ? code : code.Substring(info.KeyPosition + 1).Trim();
                }
            }

            return new NameAndValue(name, value);
        }