Beispiel #1
0
 protected static IEnumerable <XNode> ConvertContent(object content, InlineString.Render render_options, int properties_mask)
 {
     if (content == null)
     {
         return(null);
     }
     else if (content is int)
     {
         return(new [] { new XText(content.ToString()) });
     }
     else if (content is string)
     {
         return(new [] { new XText(content as string) });
     }
     else if (content is InlineString)
     {
         return((content as InlineString).RunsWithProperties.Select(rwp =>
         {
             var s = rwp.ToString(render_options);
             if (string.IsNullOrEmpty(s))
             {
                 return null;
             }
             else
             {
                 return new XElement(D + "Span",
                                     new XAttribute("Gloss", GlossLabel[(rwp.Run is InlineText ? 0 : GlossLabelShift) + ((int)rwp.Property & properties_mask)]),
                                     s);
             }
         }));
     }
     else if (content is string[])
     {
         return(new[] { new XText(string.Join(Environment.NewLine, content as string[])) });
     }
     else
     {
         throw new Exception("Internal error");
     }
 }
Beispiel #2
0
        /// <summary>
        /// Gets a string representation of this InlineTag.
        /// </summary>
        /// <param name="options">A set of options to control the string representation.</param>
        /// <returns>The string representation.</returns>
        /// <remarks>
        /// This method of <see cref="InlineTag"/> only cares <see cref="Render.TagMask"/> flags.
        /// </remarks>
        public override string ToString(InlineString.Render options)
        {
            switch (options & InlineString.RenderTagMask)
            {
            case InlineString.Render.TagDebug:
                return(string.Format("{0}{1};{2}{3}", OPAR, Name, Id, CPAR));

            case InlineString.Render.TagNone:
                return(string.Empty);

            case InlineString.Render.TagCode:
                return(Code ?? Enclose("*"));

            case InlineString.Render.TagNumber:
                return(Enclose(Number));

            case InlineString.Render.TagDisplay:
                return(Enclose(Display, Name));

            default:
                throw new ArgumentException("options");
            }
        }
Beispiel #3
0
        public void Write(string filename, int filterindex, IEnumerable <ITransPair> pairs, IColumnDesc[] columns, InlineString.Render render)
        {
            var tmx =
                new XElement(X + "tmx",
                             new XAttribute("xmlns", X.NamespaceName),
                             new XAttribute("version", "1.4"),
                             new XElement(X + "header",
                                          new XAttribute("creationtool", "disfr"),
                                          new XAttribute("creationtoolversion", "1"),
                                          new XAttribute("segtype", "block"),
                                          new XAttribute("o-tmf", "unknown"),
                                          new XAttribute("adminlang", "en"),
                                          new XAttribute("srclang", pairs.Select(r => r.SourceLang).First(s => s != null)),
                                          new XAttribute("datatype", "unknown"),
                                          new XAttribute("creationdate", DateTime.UtcNow.ToString(@"yyyyMMdd\THHmmss\Z"))),
                             new XElement(X + "body",
                                          pairs.Select(ConvertEntry)));

            tmx.Save(filename, SaveOptions.DisableFormatting | SaveOptions.OmitDuplicateNamespaces);
        }
Beispiel #4
0
        protected static XElement CreateXmlTree(IEnumerable <ITransPair> pair, IColumnDesc[] columns, InlineString.Render render_options)
        {
            if (columns == null)
            {
                columns = DefaultColumnDesc.DefaultDescs;
            }

            // We make ins/del sections glossy only if both sections are shown (i.e., neither is hidden).
            var properties_mask = (render_options & (InlineString.Render.HideIns | InlineString.Render.HideDel)) == 0
                ? ~0
                : ~(int)(InlineProperty.Ins | InlineProperty.Del);

            return(new XElement(D + "Tree",
                                new XElement(D + "Columns",
                                             columns.Select(c => new XElement(D + "Col",
                                                                              new XAttribute("Path", c.Path),
                                                                              c.Header))),
                                pair.Select(p => new XElement(D + "Row",
                                                              columns.Select(c => new XElement(D + "Data",
                                                                                               new XAttribute("Path", c.Path),
                                                                                               ConvertContent(c.GetContent(p), render_options, properties_mask)))))));
        }
Beispiel #5
0
 public void Write(string filename, int filterindex, IEnumerable <ITransPair> pairs, IColumnDesc[] columns, InlineString.Render render)
 {
     using (var output = File.Create(filename))
     {
         var table = CreateXmlTree(pairs, columns, render);
         Transform(table, output, "xmlss");
     }
 }
Beispiel #6
0
        public void Write(string filename, int filterindex_UNUSED, IEnumerable <ITransPair> pairs, IColumnDesc[] columns, InlineString.Render render)
        {
            string tmpname = null;

            try
            {
                tmpname = CreateTempFile(Path.GetTempPath(), ".xml");
                new XmlssWriter().Write(tmpname, 0, pairs, columns, render);

                var excel = new Excel()
                {
                    Visible = false, Interactive = false, DisplayAlerts = false
                };
                try
                {
                    var book = excel.Workbooks.Open(tmpname);
                    book.SaveAs(filename, XlFileFormat.xlOpenXMLWorkbook);
                    book.Close(false);
                }
                finally
                {
                    excel.Quit();
                    excel.Dispose();
                }
            }
            finally
            {
                if (tmpname != null)
                {
                    File.Delete(tmpname);
                }
            }
        }
 public void Write(string filename, int filterindex, IEnumerable <ITransPair> pairs, IColumnDesc[] columns, InlineString.Render render)
 {
     CreateXmlTree(pairs, columns, render).Save(filename);
 }
Beispiel #8
0
 public string ToString(InlineString.Render options)
 {
     return(((int)options & (int)Property) == 0 ? Run.ToString(options) : string.Empty);
 }
Beispiel #9
0
 /// <summary>
 /// Gets a string representation of this InlineElement.
 /// </summary>
 /// <param name="options">A set of options to control the string representation.</param>
 /// <returns>The string representation.</returns>
 public abstract string ToString(InlineString.Render options);
Beispiel #10
0
 /// <summary>
 /// Gets a string representation of this InlineText.
 /// </summary>
 /// <param name="options">Not used in <see cref="InlineText.ToString(Render)"/>.</param>
 /// <returns>The string representation.</returns>
 /// <remarks>
 /// This method always returns its <see cref="Text"/>, ignoring <paramref name="options"/>.
 /// </remarks>
 public override string ToString(InlineString.Render options)
 {
     return(Text);
 }
Beispiel #11
0
        public void Write(string filename, int index, IEnumerable <ITransPair> data, IColumnDesc[] columns = null, InlineString.Render render = InlineString.RenderNormal)
        {
            // Unlike ReaderManager, WriterManager doesn't support auto-detection,
            // so the write selection is simpler.

            if (index < 0)
            {
                throw new ArgumentOutOfRangeException("index");
            }

            int adjusted_index = index;
            int i = 0;

            while (i < Writers.Count)
            {
                int count = Writers[i].FilterString.Count;
                if (adjusted_index < count)
                {
                    break;
                }
                adjusted_index -= count;
                i++;
            }

            if (i >= Writers.Count)
            {
                throw new ArgumentOutOfRangeException("index");
            }

            Writers[i].Write(filename, adjusted_index, data, columns, render);
        }