示例#1
0
 private static void EndRead()
 {
     schemeStyle = null;
     readerStyle = null;
     tempComments.Clear();
     tempOptionalValues.Clear();
     tempSectionName = null;
     tempExceptions.Clear();
 }
示例#2
0
        public static IniConfig ReadFromString(string iniString, IniSchemeStyle schemeStyle = null, IniReaderStyle readerStyle = null)
        {
            if (string.IsNullOrEmpty(iniString))
            {
                return(null);
            }

            IniReader.schemeStyle = schemeStyle ?? new IniSchemeStyle();
            IniReader.readerStyle = readerStyle ?? new IniReaderStyle();
            cachedComments.Clear();
            cachedOptionalValues.Clear();
            cachedSectionName = null;

            textBuffer.Text = iniString;
            IniConfig    iniConfig = new IniConfig();
            IniLineRange iniLine   = new IniLineRange();

            int lineStartIndex = 0;

            while (textBuffer.ReadLine(lineStartIndex, ref iniLine))
            {
                lineStartIndex = iniLine.End + 1;
                if (textBuffer.IsContentWhitespace(iniLine))
                {
                    continue;
                }
                if (ProcessCommentLine(iniLine))
                {
                    continue;
                }
                if (ProcessSection(iniLine, out var section))
                {
                    iniConfig.AddSection(section);
                    section.Comments.AddRange(cachedComments);
                    cachedComments.Clear();
                    continue;
                }
                if (ProcessOptionalValue(iniLine))
                {
                    continue;
                }
                if (ProcessProperty(iniLine, out var property))
                {
                    property.Comments.AddRange(cachedComments);
                    property.OptionalValues.AddRange(cachedOptionalValues);

                    var s = iniConfig.GetSection(cachedSectionName);
                    s.AddProperty(property);
                    continue;
                }
            }

            return(iniConfig);
        }
示例#3
0
 private static void BeginRead()
 {
     if (schemeStyle == null)
     {
         schemeStyle = new IniSchemeStyle();
     }
     if (readerStyle == null)
     {
         readerStyle = new IniReaderStyle();
     }
     tempComments.Clear();
     tempOptionalValues.Clear();
     tempSectionName = null;
     tempExceptions.Clear();
 }
示例#4
0
        public static IniData ReadFromString(string iniString, IniSchemeStyle schemeStyle = null, IniReaderStyle readerStyle = null)
        {
            IniReader.schemeStyle = schemeStyle;
            IniReader.readerStyle = readerStyle;

            BeginRead();

            IniData iniData = new IniData();

            IniTextBuffer stringBuffer = new IniTextBuffer(iniString);

            while (stringBuffer.ReadLine())
            {
                try
                {
                    ProcessLine(stringBuffer, iniData);
                }
                catch (Exception e)
                {
                    tempExceptions.Add(e);

                    if (readerStyle.ThrowExceptionsOnError)
                    {
                        EndRead();

                        throw;
                    }
                }
            }

            if (tempExceptions.Count > 0)
            {
                iniData = null;
            }

            EndRead();

            return(iniData);
        }