//
        // methods
        //

        #region public IPDFComponent GetComponent(IContentParser parser, string name)

        /// <summary>
        /// Returns a new component for the parser based on the specified tag name.
        /// </summary>
        /// <param name="parser"></param>
        /// <param name="name"></param>
        /// <returns>The instaniated component or null if the name is not recognised</returns>
        public IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
        {
            IPDFComponent           proxy = null;
            IParserComponentFactory innerfact;

            if (null != _last && _lastName == name)
            {
                proxy = _last.GetComponent(parser, name, out type);
            }
            else if (_knowntags.TryGetValue(name, out innerfact))
            {
                _last     = innerfact;
                _lastName = name;
                proxy     = innerfact.GetComponent(parser, name, out type);
            }
            else
            {
                _last     = null;
                _lastName = null;
                type      = HtmlComponentType.Unknown;
                proxy     = GetUnknownComponent(parser, name);
            }

            if (proxy is Component)
            {
                ((Component)proxy).Tag = name;
            }
            return(proxy);
        }
Ejemplo n.º 2
0
        public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
        {
            SpanBase span;

            type = HtmlComponentType.Span;
            switch (name.ToLower())
            {
            case "b":
            case "strong":
                span = new HTMLBoldSpan();
                break;

            case "i":
            case "em":
                span = new HTMLItalicSpan();
                break;

            case "u":
                span = new HTMLUnderlinedSpan();
                break;

            case ("font"):
                span = new HTMLFontSpan();
                break;

            default:
                span = new HTMLSpan();
                break;
            }
            return(span);
        }
Ejemplo n.º 3
0
        public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
        {
            type = HtmlComponentType.Body;
            HTMLBody body = new HTMLBody();

            body.ID = "html-body";
            return(body);
        }
 public SlickDealsNotifierBusiness(
     ILogger <SlickDealsNotifierBusiness> logger,
     IDealDataAccess dealDataAccess,
     IHtmlContentLoader htmlContentLoader,
     IHtmlContentParser htmlContentParser)
 {
     _logger            = logger;
     _dealDataAccess    = dealDataAccess;
     _htmlContentLoader = htmlContentLoader;
     _htmlContentParser = htmlContentParser;
 }
Ejemplo n.º 5
0
 public override void SetAttribute(IHtmlContentParser parser, IPDFComponent parsed, string componentName, string attrName, string attrValue)
 {
     if (attrName == "src")
     {
         ((Image)parsed).Source = attrValue;
     }
     else
     {
         base.SetAttribute(parser, parsed, componentName, attrName, attrValue);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="parsed"></param>
 /// <param name="componentName"></param>
 /// <param name="attrName"></param>
 /// <param name="attrValue"></param>
 public virtual void SetAttribute(IHtmlContentParser parser, IPDFComponent parsed, string componentName, string attrName, string attrValue)
 {
     if (attrName == ClassAttrName && parsed is IPDFStyledComponent)
     {
         ((IPDFStyledComponent)parsed).StyleClass = attrValue;
     }
     else if (attrName == IdAttrName)
     {
         parsed.ID = attrValue;
     }
     else if (StyleAttrNames.Contains(attrName) && parsed is IPDFStyledComponent)
     {
         this.SetStyleAttribute(parsed as IPDFStyledComponent, attrName, attrValue);
     }
 }
Ejemplo n.º 7
0
 public override void SetAttribute(IHtmlContentParser parser, IPDFComponent parsed, string componentName, string attrName, string attrValue)
 {
     if (attrName == "colspan")
     {
         int colspan;
         if (int.TryParse(attrValue, out colspan))
         {
             ((TableCell)parsed).Style.Table.CellColumnSpan = colspan;
         }
     }
     else
     {
         base.SetAttribute(parser, parsed, componentName, attrName, attrValue);
     }
 }
Ejemplo n.º 8
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.Panel;
     if (String.Equals("blockquote", name, StringComparison.OrdinalIgnoreCase))
     {
         return(new HTMLBlockQuote());
     }
     else if (String.Equals("fieldset", name, StringComparison.OrdinalIgnoreCase))
     {
         return(new HTMLFieldSet());
     }
     else if (String.Equals("legend", name, StringComparison.OrdinalIgnoreCase))
     {
         return(new HTMLLegend());
     }
     else
     {
         return(new HTMLDiv());
     }
 }
        /// <summary>
        /// Sets the parsed value provided on an attribute with the specified name to the parsed component of the provided name
        /// </summary>
        /// <param name="parser"></param>
        /// <param name="parsed"></param>
        /// <param name="componentName"></param>
        /// <param name="attrName"></param>
        /// <param name="attrValue"></param>
        public void SetAttribute(IHtmlContentParser parser, IPDFComponent parsed, string componentName, string attrName, string attrValue)
        {
            IParserComponentFactory innerfact;

            //Quick check on the last one used - as this generally follows the component creation
            if (null != _last && _lastName == componentName)
            {
                _last.SetAttribute(parser, parsed, componentName, attrName, attrValue);
            }
            else if (_knowntags.TryGetValue(componentName, out innerfact))
            {
                _last     = innerfact;
                _lastName = componentName;
                innerfact.SetAttribute(parser, parsed, componentName, attrName, attrValue);
            }
            else
            {
                //Skip the attribute
            }
        }
Ejemplo n.º 10
0
        public bool SetStyleValue(IHtmlContentParser parser, IPDFStyledComponent component, CSSStyleItemReader reader)
        {
            IParserStyleFactory found;

            if (string.IsNullOrEmpty(reader.CurrentAttribute) && reader.ReadNextAttributeName() == false)
            {
                return(false);
            }

            if (_knownStyles.TryGetValue(reader.CurrentAttribute, out found))
            {
                return(found.SetStyleValue(parser, component, reader));
            }
            else
            {
                if (null != parser && parser.IsLogging)
                {
                    parser.Context.TraceLog.Add(TraceLevel.Warning, "CSS", "Could not set the style value on attribute '" + reader.CurrentAttribute + "' as it is not a known style attribute.");
                }
            }
            return(false);
        }
Ejemplo n.º 11
0
 public override void SetAttribute(IHtmlContentParser parser, IPDFComponent parsed, string componentName, string attrName, string attrValue)
 {
     if (attrName == "href")
     {
         HTMLAnchor link = (HTMLAnchor)parsed;
         if (string.IsNullOrEmpty(attrValue))
         {
         }
         else if (attrValue.StartsWith("#"))
         {
             link.Destination = attrValue;
         }
         else
         {
             link.File = attrValue;
         }
     }
     else
     {
         base.SetAttribute(parser, parsed, componentName, attrName, attrValue);
     }
 }
        /// <summary>
        /// Returns true if the component is a container of other components or text
        /// </summary>
        /// <param name="parser"></param>
        /// <param name="component"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public bool IsContainerComponent(IHtmlContentParser parser, IPDFComponent component, string name)
        {
            bool container = false;
            IParserComponentFactory innerfact;

            if (null != _last && _lastName == name)
            {
                container = _last.IsContainerComponent(parser, component, name);
            }
            else if (_knowntags.TryGetValue(name, out innerfact))
            {
                _last     = innerfact;
                _lastName = name;
                container = _last.IsContainerComponent(parser, component, name);
            }
            else
            {
                _last     = null;
                _lastName = null;
                container = false;
            }
            return(container);
        }
Ejemplo n.º 13
0
        public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
        {
            type = HtmlComponentType.Heading;
            HeadingBase head;

            switch (name.ToLower())
            {
            case "h1":
                head = new HTMLHead1();
                break;

            case "h2":
                head = new HTMLHead2();
                break;

            case "h3":
                head = new HTMLHead3();
                break;

            case "h4":
                head = new HTMLHead4();
                break;

            case "h5":
                head = new HTMLHead5();
                break;

            case "h6":
                head = new HTMLHead6();
                break;

            default:
                head = null;
                break;
            }
            return(head);
        }
 /// <summary>
 /// Returns the default value for an unknown tag name - in this case null
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 protected virtual IPDFComponent GetUnknownComponent(IHtmlContentParser parser, string name)
 {
     return(null);
 }
Ejemplo n.º 15
0
 bool IParserStyleFactory.SetStyleValue(IHtmlContentParser parser, IPDFStyledComponent onComponent, CSSStyleItemReader reader)
 {
     return(this.SetStyleValue(onComponent.Style, reader, parser.Context));
 }
Ejemplo n.º 16
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.List;
     return(new HTMLListOrdered());
 }
Ejemplo n.º 17
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.ListItem;
     return(new HTMLListDefinitionItem());
 }
Ejemplo n.º 18
0
 /// <summary>
 /// Abstract method that inheritors implement to create and return specific types of components.
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public abstract IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type);
Ejemplo n.º 19
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.Link;
     return(new HTMLAnchor());
 }
Ejemplo n.º 20
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.Panel;
     return(new HTMLParagraph());
 }
Ejemplo n.º 21
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.HorizontalLine;
     return(new HTMLHorizontalRule());
 }
Ejemplo n.º 22
0
 public virtual bool IsContainerComponent(IHtmlContentParser parser, IPDFComponent component, string name)
 {
     return(true);
 }
Ejemplo n.º 23
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.TableCell;
     return(new HTMLTableHeaderCell());
 }
Ejemplo n.º 24
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.Image;
     return(new HTMLImage());
 }
 /// <summary>
 /// Retuns a new textual component that represents the text string provided
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="text"></param>
 /// <returns></returns>
 public virtual IPDFComponent GetTextComponent(IHtmlContentParser parser, string text)
 {
     _last     = null;
     _lastName = null;
     return(new TextLiteral(text));
 }
Ejemplo n.º 26
0
 /// <summary>
 /// Support methods for proxies
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="text"></param>
 /// <returns></returns>
 public virtual IPDFComponent GetTextComponent(IHtmlContentParser parser, string text)
 {
     return(new TextLiteral(text));
 }
Ejemplo n.º 27
0
 public override bool IsContainerComponent(IHtmlContentParser parser, IPDFComponent component, string name)
 {
     return(false);
 }
Ejemplo n.º 28
0
 public override IPDFComponent GetComponent(IHtmlContentParser parser, string name, out HtmlComponentType type)
 {
     type = HtmlComponentType.Preformatted;
     return(new HTMLPreformatted());
 }