コード例 #1
0
ファイル: TableItem.cs プロジェクト: npuBug/fb2librarynet
        internal void Load(XElement xTable)
        {
            rows.Clear();
            if (xTable == null)
            {
                throw new ArgumentNullException("xTable");
            }

            if (xTable.Name.LocalName != Fb2TableElementName)
            {
                throw new ArgumentException("Element of wrong type passed", "xTable");
            }

            IEnumerable<XElement> xRows = xTable.Elements(xTable.Name.Namespace + TableRowItem.Fb2TableRowElementName);
            foreach (var row in xRows)
            {
                TableRowItem rowItem = new TableRowItem();
                try
                {
                    rowItem.Load(row);
                    Rows.Add(rowItem);
                }
                catch (Exception)
                {
                    continue;
                }
            }

            Style = null;
            XAttribute xStyle = xTable.Attribute("style");
            if ((xStyle != null) && (xStyle.Value != null))
            {
                Style = xStyle.Value;
            }

            ID = null;
            XAttribute xID = xTable.Attribute("id");
            if ((xID != null) && (xID.Value != null))
            {
                ID = xID.Value;
            }

            

        }
コード例 #2
0
ファイル: TableItem.cs プロジェクト: padarits/fb2librarynet
        internal void Load(XElement xTable)
        {
            rows.Clear();
            if (xTable == null)
            {
                throw new ArgumentNullException("xTable");
            }

            if (xTable.Name.LocalName != Fb2TableElementName)
            {
                throw new ArgumentException("Element of wrong type passed", "xTable");
            }

            IEnumerable <XElement> xRows = xTable.Elements(xTable.Name.Namespace + TableRowItem.Fb2TableRowElementName);

            foreach (var row in xRows)
            {
                TableRowItem rowItem = new TableRowItem();
                try
                {
                    rowItem.Load(row);
                    Rows.Add(rowItem);
                }
                catch (Exception)
                {
                    continue;
                }
            }

            Style = null;
            XAttribute xStyle = xTable.Attribute("style");

            if ((xStyle != null) && (xStyle.Value != null))
            {
                Style = xStyle.Value;
            }

            ID = null;
            XAttribute xID = xTable.Attribute("id");

            if ((xID != null) && (xID.Value != null))
            {
                ID = xID.Value;
            }
        }
コード例 #3
0
ファイル: RowConverterV3.cs プロジェクト: npuBug/fb2epub
        /// <summary>
        /// 
        /// </summary>
        /// <param name="tableRowItem"></param>
        /// <param name="rowConverterParams"></param>
        /// <returns></returns>
        public IHTMLItem Convert(TableRowItem tableRowItem, RowConverterParamsV3 rowConverterParams)
        {
            if (tableRowItem == null)
            {
                throw new ArgumentNullException("tableRowItem");
            }
            var tableRow = new TableRow(HTMLElementType.HTML5);

            foreach (var element in tableRowItem.Cells)
            {
                if (element is TableHeadingItem)
                {
                    var th = element as TableHeadingItem;
                    var cell = new TableHeaderCell(HTMLElementType.HTML5);
                    var paragraphConverter = new ParagraphConverterV3();
                    var cellData = paragraphConverter.Convert(th,
                        new ParagraphConverterParamsV3 { ResultType = ParagraphConvTargetEnumV3.Paragraph, Settings = rowConverterParams.Settings, StartSection = false });
                    if (cellData.SubElements() != null)
                    {
                        foreach (var subElement in cellData.SubElements())
                        {
                            cell.Add(subElement);
                        }
                    }
                    else
                    {
                        cell.Add(cellData);
                    }
                    //cell.Add(new SimpleHTML5Text { Text = th.Text });
                    if (th.ColSpan.HasValue)
                    {
                        cell.ColSpan.Value = th.ColSpan.ToString();
                    }
                    if (th.RowSpan.HasValue)
                    {
                        cell.RowSpan.Value = th.RowSpan.ToString();
                    }
                    switch (th.Align)
                    {
                        case TableAlignmentsEnum.Center:
                            cell.Align.Value = "center";
                            break;
                        case TableAlignmentsEnum.Left:
                            cell.Align.Value = "left";
                            break;
                        case TableAlignmentsEnum.Right:
                            cell.Align.Value = "right";
                            break;
                    }
                    switch (th.VAlign)
                    {
                        case TableVAlignmentsEnum.Top:
                            cell.VAlign.Value = "top";
                            break;
                        case TableVAlignmentsEnum.Middle:
                            cell.VAlign.Value = "middle";
                            break;
                        case TableVAlignmentsEnum.Bottom:
                            cell.VAlign.Value = "bottom";
                            break;
                    }
                    tableRow.Add(cell);
                }
                else if (element is TableCellItem)
                {
                    var td = element as TableCellItem;
                    var cell = new TableData(HTMLElementType.HTML5);
                    var paragraphConverter = new ParagraphConverterV3();
                    var cellData = paragraphConverter.Convert(td,
                        new ParagraphConverterParamsV3 { ResultType = ParagraphConvTargetEnumV3.Paragraph, Settings = rowConverterParams.Settings, StartSection = false });
                    if (cellData.SubElements() != null)
                    {
                        foreach (var subElement in cellData.SubElements())
                        {
                            cell.Add(subElement);
                        }
                    }
                    else
                    {
                        cell.Add(cellData);
                    }
                    //cell.Add(new SimpleHTML5Text { Text = td.Text });
                    if (td.ColSpan.HasValue)
                    {
                        cell.ColSpan.Value = td.ColSpan.ToString();
                    }
                    if (td.RowSpan.HasValue)
                    {
                        cell.RowSpan.Value = td.RowSpan.ToString();
                    }
                    switch (td.Align)
                    {
                        case TableAlignmentsEnum.Center:
                            cell.Align.Value = "center";
                            break;
                        case TableAlignmentsEnum.Left:
                            cell.Align.Value = "left";
                            break;
                        case TableAlignmentsEnum.Right:
                            cell.Align.Value = "right";
                            break;
                    }
                    switch (td.VAlign)
                    {
                        case TableVAlignmentsEnum.Top:
                            cell.VAlign.Value = "top";
                            break;
                        case TableVAlignmentsEnum.Middle:
                            cell.VAlign.Value = "middle";
                            break;
                        case TableVAlignmentsEnum.Bottom:
                            cell.VAlign.Value = "bottom";
                            break;
                    }
                    tableRow.Add(cell);
                }
                else
                {
                    // invalid structure , we ignore
                    Logger.Log.ErrorFormat("Invalid/unexpected table row sub element type : {0}", element.GetType());
                    //continue;
                }
            }
            tableRow.Align.Value = tableRowItem.Align ?? "left";
            return tableRow;
        }