예제 #1
0
        private static void InternalParse(PdfArrayDataType pdfArrayDataType, string s, ref int i)
        {
            i++;
            while (i < s.Length)
            {
                if (PdfStringDataType.IsStartChar(s, i))
                {
                    string item = PdfStringDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(item);
                }
                if (PdfHexStringDataType.IsStartChar(s, i))
                {
                    string item = PdfHexStringDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(item);
                }
                else if (PdfNumericDataType.IsStartChar(s, i))
                {
                    string item = PdfNumericDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(float.Parse(item, NumberFormatInfo.InvariantInfo));
                }
                else if (PdfArrayDataType.IsStartChar(s, i))
                {
                    string item = PdfArrayDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);

                    PdfArrayDataType innerPdfArrayDataType = new PdfArrayDataType();
                    InternalParse(innerPdfArrayDataType, s, ref i);
                    pdfArrayDataType.Elements.Add(innerPdfArrayDataType);
                }
                else if (s[i] == ']')
                {
                    return;
                }
                else if (s[i] == ' ')
                {
                    i++;
                }
                else
                {
                    throw new ArgumentException(string.Format("{0} is not an array", s));
                }
            }
        }