Exemplo n.º 1
0
        private List <Sheet.SheetIdPart> parseSheetIdForSheetParts(string sheetId,
                                                                   List <SheetPartsDescriptor.PartIndex> partIndexList)
        {
            List <Sheet.SheetIdPart> SheetParts = new List <Sheet.SheetIdPart>();

            foreach (SheetPartsDescriptor.PartIndex partIndex in partIndexList)
            {
                string sheetPartLibId = partIndex.LibraryId;

                SheetPartData spd =
                    SheetSystemManager.SheetPartsManager.SheetPartDataList[sheetPartLibId];

                if (!spd.IsValid)
                {
                    continue;
                }

                int groupIdx = spd.PartPatternGroup;

                Match match = Regex.Match(sheetId, spd.PartPattern,
                                          RegexOptions.Singleline);

                if (match.Groups.Count < groupIdx)
                {
                    continue;
                }

                string result = match.Groups[groupIdx].Value.Trim();

                int len = result.Length;

                if (!validateSheetPart(result, spd))
                {
                    continue;
                }

                Sheet.SheetIdPart idPart =
                    new  Sheet.SheetIdPart(result, sheetPartLibId);

                SheetParts.Add(idPart);
            }

            return(SheetParts);
        }
Exemplo n.º 2
0
        private bool validateSheetPart(string sheetPart, SheetPartData spd)
        {
            int len = sheetPart.Length;

            if (len < spd.PartMinLen)
            {
                return(false);
            }

            if (spd.PartMaxLen > 0)             // 0 == unlimited
            {
                if (len > spd.PartMaxLen)
                {
                    return(false);
                }
            }

            return(true);
        }