/* (non-Javadoc) * @see java.lang.Object#toString() */ public override String ToString() { StringBuilder sb = new StringBuilder(); sb.Append(selector.ToString()); sb.Append(" {\n"); for (int i = 0; i < normalDeclarations.Count; i++) { if (i > 0) { sb.Append(";").Append("\n"); } CssDeclaration declaration = normalDeclarations[i]; sb.Append(" ").Append(declaration.ToString()); } for (int i = 0; i < importantDeclarations.Count; i++) { if (i > 0 || normalDeclarations.Count > 0) { sb.Append(";").Append("\n"); } CssDeclaration declaration = importantDeclarations[i]; sb.Append(" ").Append(declaration.ToString()).Append(" !important"); } sb.Append("\n}"); return(sb.ToString()); }
public virtual void ParseBase64SrcTest() { CssStyleSheet styleSheet = CssStyleSheetParser.Parse(new FileStream(sourceFolder + "srcs2.css", FileMode.Open , FileAccess.Read)); CssFontFaceRule fontFaceRule = (CssFontFaceRule)styleSheet.GetStatements()[0]; CssDeclaration src = fontFaceRule.GetProperties()[0]; NUnit.Framework.Assert.AreEqual("src", src.GetProperty(), "src expected"); String[] sources = CssFontFace.SplitSourcesSequence(src.GetExpression()); NUnit.Framework.Assert.AreEqual(8, sources.Length, "8 sources expected"); for (int i = 0; i < 6; i++) { Match m = iText.IO.Util.StringUtil.Match(CssFontFace.CssFontFaceSrc.UrlPattern, sources[i]); NUnit.Framework.Assert.IsTrue(m.Success, "Expression doesn't match pattern: " + sources[i]); } for (int i = 6; i < sources.Length; i++) { Match m = iText.IO.Util.StringUtil.Match(CssFontFace.CssFontFaceSrc.UrlPattern, sources[i]); NUnit.Framework.Assert.IsFalse(m.Success, "Expression matches pattern (though it shouldn't!): " + sources[ i]); } }
/// <summary>Puts a declaration in a styles map if the declaration is valid.</summary> /// <param name="stylesMap">the styles map</param> /// <param name="cssDeclaration">the css declaration</param> private static void PutDeclarationInMapIfValid(IDictionary <String, CssDeclaration> stylesMap, CssDeclaration cssDeclaration) { if (CssDeclarationValidationMaster.CheckDeclaration(cssDeclaration)) { stylesMap.Put(cssDeclaration.GetProperty(), cssDeclaration); } else { ILog logger = LogManager.GetLogger(typeof(ICssResolver)); logger.Warn(MessageFormatUtil.Format(iText.StyledXmlParser.LogMessageConstant.INVALID_CSS_PROPERTY_DECLARATION , cssDeclaration)); } }
public virtual void SrcPropertyTest() { String fontSrc = "web-fonts/droid-serif-invalid."; CssStyleSheet styleSheet = CssStyleSheetParser.Parse(new FileStream(sourceFolder + "srcs.css", FileMode.Open , FileAccess.Read)); CssFontFaceRule fontFaceRule = (CssFontFaceRule)styleSheet.GetStatements()[0]; CssDeclaration src = fontFaceRule.GetProperties()[0]; NUnit.Framework.Assert.AreEqual("src", src.GetProperty(), "src expected"); String[] sources = iText.IO.Util.StringUtil.Split(src.GetExpression(), ","); NUnit.Framework.Assert.AreEqual(27, sources.Length, "27 sources expected"); for (int i = 0; i < sources.Length; i++) { Match m = iText.IO.Util.StringUtil.Match(CssFontFace.CssFontFaceSrc.UrlPattern, sources[i]); NUnit.Framework.Assert.IsTrue(m.Success, "Expression doesn't match pattern: " + sources[i]); String format = iText.IO.Util.StringUtil.Group(m, CssFontFace.CssFontFaceSrc.FormatGroup); String source2 = MessageFormatUtil.Format("{0}({1}){2}", iText.IO.Util.StringUtil.Group(m, CssFontFace.CssFontFaceSrc .TypeGroup), iText.IO.Util.StringUtil.Group(m, CssFontFace.CssFontFaceSrc.UrlGroup), format != null ? MessageFormatUtil.Format(" format({0})", format) : ""); String url = CssFontFace.CssFontFaceSrc.Unquote(iText.IO.Util.StringUtil.Group(m, CssFontFace.CssFontFaceSrc .UrlGroup)); NUnit.Framework.Assert.IsTrue(url.StartsWith(fontSrc), "Invalid url: " + url); NUnit.Framework.Assert.IsTrue(format == null || CssFontFace.CssFontFaceSrc.ParseFormat(format) != CssFontFace.FontFormat .None, "Invalid format: " + format); NUnit.Framework.Assert.AreEqual(sources[i], source2, "Group check fails: "); CssFontFace.CssFontFaceSrc fontFaceSrc = CssFontFace.CssFontFaceSrc.Create(sources[i]); NUnit.Framework.Assert.IsTrue(fontFaceSrc.GetSrc().StartsWith(fontSrc), "Invalid url: " + fontSrc); String type = "url"; if (fontFaceSrc.IsLocal()) { type = "local"; } NUnit.Framework.Assert.IsTrue(sources[i].StartsWith(type), "Type '" + type + "' expected: " + sources[i]); switch (fontFaceSrc.GetFormat()) { case CssFontFace.FontFormat.OpenType: { NUnit.Framework.Assert.IsTrue(sources[i].Contains("opentype"), "Format " + fontFaceSrc.GetFormat() + " expected: " + sources[i]); break; } case CssFontFace.FontFormat.TrueType: { NUnit.Framework.Assert.IsTrue(sources[i].Contains("truetype"), "Format " + fontFaceSrc.GetFormat() + " expected: " + sources[i]); break; } case CssFontFace.FontFormat.SVG: { NUnit.Framework.Assert.IsTrue(sources[i].Contains("svg"), "Format " + fontFaceSrc.GetFormat() + " expected: " + sources[i]); break; } case CssFontFace.FontFormat.None: { NUnit.Framework.Assert.IsFalse(sources[i].Contains("format("), "Format " + fontFaceSrc.GetFormat() + " expected: " + sources[i]); break; } } } }