예제 #1
0
		public int Run()
		{
			var writer = XmlWriter.Create(XmlFilePath);
			writer.WriteWhitespace(Environment.NewLine);
			writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"format-html.xsl\"");
			writer.WriteWhitespace(Environment.NewLine);
			writer.WriteStartElement("messages");

			var msg = new PoMessageWriter(writer, Roundtrip);

			var fileInput = new StreamReader(PoFilePath);
			while (fileInput.Peek() >= 0)
			{
				var l = fileInput.ReadLine();
				if (l == null)
					break;

				// Continuation string?
				var m = (new Regex("^\\s*\"(.*)\"")).Match(l);
				if(m.Success)
				{
					//Debug.Assert(msg.Current != null);
					msg.Current.Add(EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString())));
					continue;
				}
				else
				{
					msg.Flush();
				}
				m = new Regex("^msgid \"(.*)\"", RegexOptions.Singleline).Match(l);
				if(m.Success)
				{
					msg.Msgid = new List<String> { EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString())) };
					msg.Current = msg.Msgid;
				}
				m = new Regex("^msgstr \"(.*)\"", RegexOptions.Singleline).Match(l);
				if (m.Success)
				{
					msg.Msgstr = new List<String> { EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString())) };
					msg.Current = msg.Msgstr;
				}

				m = new Regex("^# \\s*(.*)").Match(l);
				if (m.Success)
				{
					msg.UsrComment.Add(EscapeForXml(m.Groups[1].ToString()));
				}

				m = new Regex("^#\\.\\s*(.*)").Match(l);
				if (m.Success)
				{
					msg.DotComment.Add(EscapeForXml(m.Groups[1].ToString()));
				}

				m = new Regex("^#:\\s*(.*)").Match(l);
				if (m.Success)
				{
					msg.Reference.Add(EscapeForXml(m.Groups[1].ToString()));
				}

				m = new Regex("^#,\\s*(.*)").Match(l);
				if (m.Success)
				{
					msg.Flags.Add(EscapeForXml(m.Groups[1].ToString()));
				}

			}
			msg.Flush();
			writer.WriteWhitespace(Environment.NewLine);
			writer.WriteEndDocument();
			writer.Close();
			fileInput.Close();
			return 0;
		}
예제 #2
0
        public int Run()
        {
            var writer = XmlWriter.Create(XmlFilePath);

            writer.WriteWhitespace(Environment.NewLine);
            writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"format-html.xsl\"");
            writer.WriteWhitespace(Environment.NewLine);
            writer.WriteStartElement("messages");

            var msg = new PoMessageWriter(writer, Roundtrip);

            var fileInput = new StreamReader(PoFilePath);

            while (fileInput.Peek() >= 0)
            {
                var l = fileInput.ReadLine();
                if (l == null)
                {
                    break;
                }

                // Continuation string?
                var m = (new Regex("^\\s*\"(.*)\"")).Match(l);
                if (m.Success)
                {
                    //Debug.Assert(msg.Current != null);
                    msg.Current.Add(EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString())));
                    continue;
                }
                else
                {
                    msg.Flush();
                }
                m = new Regex("^msgid \"(.*)\"", RegexOptions.Singleline).Match(l);
                if (m.Success)
                {
                    msg.Msgid = new List <String> {
                        EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString()))
                    };
                    msg.Current = msg.Msgid;
                }
                m = new Regex("^msgstr \"(.*)\"", RegexOptions.Singleline).Match(l);
                if (m.Success)
                {
                    msg.Msgstr = new List <String> {
                        EscapeForXml(UnescapeBackslashes(m.Groups[1].ToString()))
                    };
                    msg.Current = msg.Msgstr;
                }

                m = new Regex("^# \\s*(.*)").Match(l);
                if (m.Success)
                {
                    msg.UsrComment.Add(EscapeForXml(m.Groups[1].ToString()));
                }

                m = new Regex("^#\\.\\s*(.*)").Match(l);
                if (m.Success)
                {
                    msg.DotComment.Add(EscapeForXml(m.Groups[1].ToString()));
                }

                m = new Regex("^#:\\s*(.*)").Match(l);
                if (m.Success)
                {
                    msg.Reference.Add(EscapeForXml(m.Groups[1].ToString()));
                }

                m = new Regex("^#,\\s*(.*)").Match(l);
                if (m.Success)
                {
                    msg.Flags.Add(EscapeForXml(m.Groups[1].ToString()));
                }
            }
            msg.Flush();
            writer.WriteWhitespace(Environment.NewLine);
            writer.WriteEndDocument();
            writer.Close();
            fileInput.Close();
            return(0);
        }