예제 #1
0
        /// <summary>
        /// 解析外部依赖条件(Import)
        /// </summary>
        private void ParseImport(Line line)
        {
            string[] strs = line.Content.Split(new string[] { " ", "\"", ";" }, StringSplitOptions.RemoveEmptyEntries);
            if (strs.Length > 1 && strs[0].Equals("import"))
            {
                string import = strs[1];
                if (import.Equals(FileName))
                {
                    throw new ProtoBufferException(string.Format("不能添加自己作为依赖条件。{0}", line.ToString()));
                }

                bool find = false;
                foreach (ProtoBufferFile file in Dic.Files)
                {
                    if (file.FileName.EndsWith(import))
                    {
                        Import.Add(file);
                        find = true;
                        break;
                    }
                }

                if (!find)
                {
                    throw new ProtoBufferException(string.Format("添加外部依赖条件错误:{0}", line.ToString()));
                }
            }
            else
            {
                throw new ProtoBufferException(string.Format("不能解析依赖条件:{0}", line.ToString()));
            }
        }
        public OBO_Header(List <KeyValuePair <string, string> > data = null)
        {
            if (data != null)
            {
                foreach (var datum in data)
                {
                    switch (datum.Key.ToLower())
                    {
                    case "format-version":
                        FormatVersion = datum.Value;
                        break;

                    case "data-version":
                        DataVersion = datum.Value;
                        break;

                    case "version":
                        Version = datum.Value;
                        break;

                    case "date":
                        Date = datum.Value;
                        break;

                    case "saved-by":
                        SavedBy = datum.Value;
                        break;

                    case "auto-generated-by":
                        AutoGeneratedBy = datum.Value;
                        break;

                    case "import":
                        Import.Add(datum.Value);
                        break;

                    case "subsetdef":
                        SubsetDef.Add(datum.Value);
                        break;

                    case "synonymtypedef":
                        SynonymTypeDef.Add(datum.Value);
                        break;

                    case "default-namespace":
                        DefaultNamespace = datum.Value;
                        break;

                    case "idspace":
                        IdSpace.Add(datum.Value);
                        break;

                    case "default-relationship-id-prefix":
                        DefaultRelationshipIdPrefix.Add(datum.Value);
                        break;

                    case "id-mapping":
                        IdMapping.Add(datum.Value);
                        break;

                    case "remark":
                        Remark.Add(datum.Value);
                        break;

                    default:
                        Other.Add(datum);
                        break;
                    }
                }
            }
        }