예제 #1
0
        public IEnumerable <EphemerisEntry> Parse(int year)
        {
            index = 0;

            for (int i = 0; i < Months.Length; i++)
            {
                GotoMonth(Months[i]);

                string line = GetNextLine();
                while (line != null)
                {
                    var entry = RowParser.Parse(year, i + 1, line, previousEntry);
                    previousEntry = entry;
                    yield return(entry);

                    line = GetNextLine();
                }
            }
        }
예제 #2
0
        public static EphemerisEntry Parse(int year, int month, string line, EphemerisEntry previousEntry)
        {
            var parser = new TokenParser(line);

            parser.ReadDayLetter();
            int    dayOfMonth   = parser.ReadNumber();
            double siderealTime = ReadSiderealTime(parser);

            var sun             = ReadSunPosition(parser, previousEntry.Sun);
            var moon            = ReadPlanetPosition(parser, previousEntry.Moon);
            var mercury         = ReadPlanetPosition(parser, previousEntry.Mercury);
            var venus           = ReadPlanetPosition(parser, previousEntry.Venus);
            var mars            = ReadPlanetPosition(parser, previousEntry.Mars);
            var jupiter         = ReadPlanetPosition(parser, previousEntry.Jupiter);
            var saturn          = ReadPlanetPosition(parser, previousEntry.Saturn);
            var uranus          = ReadPlanetPosition(parser, previousEntry.Uranus);
            var neptune         = ReadPlanetPosition(parser, previousEntry.Neptune);
            var pluto           = ReadPlanetPosition(parser, previousEntry.Pluto);
            var trueNode        = ReadPlanetPosition(parser, previousEntry.TrueNode);
            var meanNode        = ReadPlanetPosition(parser, previousEntry.MeanNone);
            var blackMoonLilith = ReadPlanetPosition(parser, previousEntry.BlackMoonLilith);
            var chiron          = ReadPlanetPosition(parser, previousEntry.Chiron);

            return(new EphemerisEntry(
                       new DateTime(year, month, dayOfMonth, 0, 0, 0, DateTimeKind.Utc),
                       siderealTime,
                       sun,
                       moon,
                       mercury,
                       venus,
                       mars,
                       jupiter,
                       saturn,
                       uranus,
                       neptune,
                       pluto,
                       trueNode,
                       meanNode,
                       blackMoonLilith,
                       chiron));
        }
예제 #3
0
 public Parser(string text, EphemerisEntry previousEntry)
 {
     lines = Regex.Split(text, "\r\n|\r|\n");
     this.previousEntry = previousEntry;
 }