/// <summary>Gets the tag worker class for a specific element node.</summary>
        /// <param name="mapping">the mapping</param>
        /// <param name="tag">the element node</param>
        /// <returns>the tag worker class</returns>
        private Type GetTagWorkerClass(TagProcessorMapping mapping, IElementNode tag)
        {
            Type   tagWorkerClass = null;
            String display        = tag.GetStyles() != null?tag.GetStyles().Get(CssConstants.DISPLAY) : null;

            if (display != null)
            {
                tagWorkerClass = mapping.GetMapping(tag.Name(), display);
            }
            if (tagWorkerClass == null)
            {
                tagWorkerClass = mapping.GetMapping(tag.Name());
            }
            return(tagWorkerClass);
        }
 /// <summary>Instantiates a new default tag worker factory.</summary>
 public DefaultTagWorkerFactory()
 {
     this.defaultMapping = DefaultTagWorkerMapping.GetDefaultTagWorkerMapping();
 }
        static DefaultTagWorkerMapping()
        {
            workerMapping = new TagProcessorMapping();
            workerMapping.PutMapping(TagConstants.A, typeof(ATagWorker));
            workerMapping.PutMapping(TagConstants.ABBR, typeof(AbbrTagWorker));
            workerMapping.PutMapping(TagConstants.ADDRESS, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.ARTICLE, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.ASIDE, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.B, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.BDI, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.BDO, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.BLOCKQUOTE, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.BODY, typeof(BodyTagWorker));
            workerMapping.PutMapping(TagConstants.BR, typeof(BrTagWorker));
            workerMapping.PutMapping(TagConstants.BUTTON, typeof(ButtonTagWorker));
            workerMapping.PutMapping(TagConstants.CAPTION, typeof(CaptionTagWorker));
            workerMapping.PutMapping(TagConstants.CENTER, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.CITE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.CODE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.COL, typeof(ColTagWorker));
            workerMapping.PutMapping(TagConstants.COLGROUP, typeof(ColgroupTagWorker));
            workerMapping.PutMapping(TagConstants.DD, typeof(LiTagWorker));
            workerMapping.PutMapping(TagConstants.DEL, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.DFN, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.DL, typeof(UlOlTagWorker));
            workerMapping.PutMapping(TagConstants.DT, typeof(LiTagWorker));
            workerMapping.PutMapping(TagConstants.EM, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.FIELDSET, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.FIGCAPTION, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.FIGURE, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.FONT, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.FOOTER, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.FORM, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.H1, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.H2, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.H3, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.H4, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.H5, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.H6, typeof(HTagWorker));
            workerMapping.PutMapping(TagConstants.HEADER, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.HR, typeof(HrTagWorker));
            workerMapping.PutMapping(TagConstants.HTML, typeof(HtmlTagWorker));
            workerMapping.PutMapping(TagConstants.I, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.IMG, typeof(ImgTagWorker));
            workerMapping.PutMapping(TagConstants.INPUT, typeof(InputTagWorker));
            workerMapping.PutMapping(TagConstants.INS, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.KBD, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.LABEL, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.LEGEND, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.LI, typeof(LiTagWorker));
            workerMapping.PutMapping(TagConstants.LINK, typeof(LinkTagWorker));
            workerMapping.PutMapping(TagConstants.MAIN, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.MARK, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.META, typeof(MetaTagWorker));
            workerMapping.PutMapping(TagConstants.NAV, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.OBJECT, typeof(ObjectTagWorker));
            workerMapping.PutMapping(TagConstants.OL, typeof(UlOlTagWorker));
            workerMapping.PutMapping(TagConstants.OPTGROUP, typeof(OptGroupTagWorker));
            workerMapping.PutMapping(TagConstants.OPTION, typeof(OptionTagWorker));
            workerMapping.PutMapping(TagConstants.P, typeof(PTagWorker));
            workerMapping.PutMapping(TagConstants.PRE, typeof(PreTagWorker));
            workerMapping.PutMapping(TagConstants.Q, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.S, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SAMP, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SECTION, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.SELECT, typeof(SelectTagWorker));
            workerMapping.PutMapping(TagConstants.SMALL, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SPAN, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.STRIKE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.STRONG, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SUB, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SUP, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SVG, typeof(SvgTagWorker));
            workerMapping.PutMapping(TagConstants.TABLE, typeof(TableTagWorker));
            workerMapping.PutMapping(TagConstants.TD, typeof(TdTagWorker));
            workerMapping.PutMapping(TagConstants.TEXTAREA, typeof(TextAreaTagWorker));
            workerMapping.PutMapping(TagConstants.TFOOT, typeof(TableFooterTagWorker));
            workerMapping.PutMapping(TagConstants.TH, typeof(ThTagWorker));
            workerMapping.PutMapping(TagConstants.THEAD, typeof(TableHeaderTagWorker));
            workerMapping.PutMapping(TagConstants.TIME, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.TITLE, typeof(TitleTagWorker));
            workerMapping.PutMapping(TagConstants.TR, typeof(TrTagWorker));
            workerMapping.PutMapping(TagConstants.TT, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.U, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.UL, typeof(UlOlTagWorker));
            workerMapping.PutMapping(TagConstants.VAR, typeof(SpanTagWorker));
            String placeholderPseudoElemName = CssPseudoElementUtil.CreatePseudoElementTagName(CssConstants.PLACEHOLDER
                                                                                               );

            workerMapping.PutMapping(placeholderPseudoElemName, typeof(PlaceholderTagWorker));
            workerMapping.PutMapping(TagConstants.UL, CssConstants.INLINE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.LI, CssConstants.INLINE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.LI, CssConstants.INLINE_BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.DD, CssConstants.INLINE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.DT, CssConstants.INLINE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.SPAN, CssConstants.BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.SPAN, CssConstants.INLINE_BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.A, CssConstants.BLOCK, typeof(ABlockTagWorker));
            workerMapping.PutMapping(TagConstants.A, CssConstants.INLINE_BLOCK, typeof(ABlockTagWorker));
            workerMapping.PutMapping(TagConstants.A, CssConstants.TABLE_CELL, typeof(ABlockTagWorker));
            workerMapping.PutMapping(TagConstants.LABEL, CssConstants.BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, CssConstants.TABLE, typeof(DisplayTableTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, CssConstants.TABLE_ROW, typeof(DisplayTableRowTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, CssConstants.INLINE, typeof(SpanTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, CssConstants.INLINE_TABLE, typeof(DisplayTableTagWorker));
            workerMapping.PutMapping(TagConstants.DIV, CssConstants.TABLE_CELL, typeof(TdTagWorker));
            // pseudo elements mapping
            String beforePseudoElemName = CssPseudoElementUtil.CreatePseudoElementTagName(CssConstants.BEFORE);
            String afterPseudoElemName  = CssPseudoElementUtil.CreatePseudoElementTagName(CssConstants.AFTER);

            workerMapping.PutMapping(beforePseudoElemName, typeof(SpanTagWorker));
            workerMapping.PutMapping(afterPseudoElemName, typeof(SpanTagWorker));
            workerMapping.PutMapping(beforePseudoElemName, CssConstants.INLINE_BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(afterPseudoElemName, CssConstants.INLINE_BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(beforePseudoElemName, CssConstants.BLOCK, typeof(DivTagWorker));
            workerMapping.PutMapping(afterPseudoElemName, CssConstants.BLOCK, typeof(DivTagWorker));
            // For now behaving like display:block in display:table case is sufficient
            workerMapping.PutMapping(beforePseudoElemName, CssConstants.TABLE, typeof(DivTagWorker));
            workerMapping.PutMapping(afterPseudoElemName, CssConstants.TABLE, typeof(DivTagWorker));
            workerMapping.PutMapping(CssPseudoElementUtil.CreatePseudoElementTagName(TagConstants.IMG), typeof(ImgTagWorker
                                                                                                               ));
            // custom elements mapping, implementation-specific
            workerMapping.PutMapping(PageCountElementNode.PAGE_COUNTER_TAG, typeof(PageCountWorker));
            workerMapping.PutMapping(PageMarginBoxContextNode.PAGE_MARGIN_BOX_TAG, typeof(PageMarginBoxWorker));
        }
Example #4
0
 /// <summary>
 /// Creates a new
 /// <see cref="DefaultCssApplierFactory"/>
 /// instance.
 /// </summary>
 public DefaultCssApplierFactory()
 {
     defaultMapping = DefaultTagCssApplierMapping.GetDefaultCssApplierMapping();
 }