Example #1
0
        public static EdiFile FromStream(Stream stream)
        {
            TextReader reader = new StreamReader(stream, Encoding.GetEncoding(1252));

            EdiFile  ediFile = new EdiFile();
            EdiTable ediSet  = null;

            while (true)
            {
                string line = reader.ReadLine();

                if (line == null)
                {
                    break;
                }

                if (String.IsNullOrWhiteSpace(line))
                {
                }
                else if (line.StartsWith("@"))
                {
                    Match match = Regex.Match(line, @"\@(?<name>[a-zA-Z]+)\s*\(((?<header>[a-zA-Z0-9]+)(\,\s|\)))+");

                    if (match.Success)
                    {
                        ediSet = new EdiTable(match.Groups["name"].Value);

                        foreach (Capture header in match.Groups["header"].Captures)
                        {
                            ediSet.AddHeader(header.Value);
                        }

                        ediFile.Add(ediSet);
                    }
                }
                else
                {
                    Match match = Regex.Match(line, @"(\""(?<value>[^\""]*)\""\s*)*");

                    if (match.Success)
                    {
                        EdiRow row = new EdiRow();

                        int i = 0;
                        foreach (Capture c in match.Groups["value"].Captures)
                        {
                            String v = c.Value;

                            if (String.IsNullOrWhiteSpace(v))
                            {
                                v = null;
                            }

                            row[ediSet.Headers[i]] = v;
                            i++;
                        }

                        ediSet.Add(row);
                    }
                }
            }


            reader.Close();

            return(ediFile);
        }
Example #2
0
 internal void Add(EdiTable ediSet)
 {
     sets.Add(ediSet);
 }