Ejemplo n.º 1
0
        public void TestGetMetadataDateMeta()
        {
            HtmlParser    parser = new HtmlParser(new HtmlParserOptions());
            IHtmlDocument doc    = parser.ParseDocument(@"<html>
               <head>                    
                    <meta itemprop=""datePublished"" content=""2110-10-21"" />
               </head>
               <body></body>
               </html>");

            Assert.Equal(new DateTime(2110, 10, 21), Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "").PublicationDate);
        }
Ejemplo n.º 2
0
        public void TestGetMetadataAuthor()
        {
            HtmlParser    parser = new HtmlParser(new HtmlParserOptions());
            IHtmlDocument doc    = parser.ParseDocument(@"<html>
               <head>                    
                    <meta name=""author"" content=""Secret Man"">
               </head>
               <body></body>
               </html>");

            Assert.Equal("Secret Man", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "").Author);
        }
Ejemplo n.º 3
0
        public void TestGetMetadataSiteName()
        {
            HtmlParser    parser = new HtmlParser(new HtmlParserOptions());
            IHtmlDocument doc    = parser.ParseDocument(@"<html>
               <head>                    
                    <meta name=""og:site_name"" content=""Some Good Site""/>
               </head>
               <body></body>
               </html>");

            Assert.Equal("Some Good Site", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en").SiteName);
        }
Ejemplo n.º 4
0
        public void TestGetMetadataDescription()
        {
            HtmlParser    parser = new HtmlParser(new HtmlParserOptions());
            IHtmlDocument doc    = parser.ParseDocument(@"<html>
               <head>                   
                    <meta name=""og:description"" content=""The best article there is. Right here""/>
               </head>
               <body></body>
               </html>");

            Assert.Equal("The best article there is. Right here", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en").Excerpt);
        }
Ejemplo n.º 5
0
        public void TestGetMetadataLanguage()
        {
            var parser = new HtmlParser(new HtmlParserOptions());
            var doc    = parser.ParseDocument(@"<html>
               <head>
                    <title>Some title</title>
                    <meta http-equiv=""Content-Language"" content=""it"">
               </head>
               <body></body>
               </html>");

            Assert.Equal("it", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", new Dictionary <string, string>()).Language);
        }
Ejemplo n.º 6
0
        public void TestGetMetadataTitle()
        {
            var parser = new HtmlParser(new HtmlParserOptions());
            var doc    = parser.ParseDocument(@"<html>
               <head>
                    <title>Some title</title>
                    <meta property=""twitter:title"" content=""Some Good Idea""/>
               </head>
               <body></body>
               </html>");

            Assert.Equal("Some Good Idea", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "en", new Dictionary <string, string>()).Title);
        }
        /// <summary>
        /// It combines the min values of two localizability attributes.
        /// </summary>
        /// <param name="first">first </param>
        /// <param name="second">second</param>
        /// <returns>LocalizabilityAttribute</returns>
        private LocalizabilityAttribute CombineMinimumLocalizability(
            LocalizabilityAttribute first,
            LocalizabilityAttribute second
            )
        {
            if (first == null || second == null)
            {
                return((first == null) ? second : first);
            }

            // min of two readability enum. The less the more restrictive.
            Readability readability = (Readability)Math.Min(
                (int)first.Readability,
                (int)second.Readability
                );

            // min of two Modifiability enum. The less the more restrictive.
            Modifiability modifiability = (Modifiability)Math.Min(
                (int)first.Modifiability,
                (int)second.Modifiability
                );

            // for category, NeverLocalize < Ignore < { all others } < None
            // If both categories belong to { all others }, first.Category wins
            LocalizationCategory category = LocalizationCategory.None;

            if (first.Category == LocalizationCategory.NeverLocalize ||
                second.Category == LocalizationCategory.NeverLocalize)
            {
                category = LocalizationCategory.NeverLocalize;
            }
            else if (first.Category == LocalizationCategory.Ignore ||
                     second.Category == LocalizationCategory.Ignore)
            {
                category = LocalizationCategory.Ignore;
            }
            else
            {
                category = (first.Category != LocalizationCategory.None) ?
                           first.Category :
                           second.Category;
            }

            LocalizabilityAttribute result = new LocalizabilityAttribute(category);

            result.Readability   = readability;
            result.Modifiability = modifiability;

            return(result);
        }
Ejemplo n.º 8
0
        public void TestGetMetadataAuthorFromJsonLD()
        {
            var parser = new HtmlParser(new HtmlParserOptions());
            var doc    = parser.ParseDocument(@"<html>
               <head>                    
                    <meta name=""author"" content=""Secret Man"">
					<script type=""application/ld+json"">
					{
						""@context"": ""http://schema.org""
						,""@type"": ""Article""						
						,""author"": {
                            ""@type"": ""Person"",
                            ""name"": ""Real Author""
                        }
					}
					</script>
               </head>
               <body></body>
               </html>");

            Assert.Equal("Real Author", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", Readability.GetJSONLD(doc)).Author);
        }
Ejemplo n.º 9
0
 internal LocalizabilityGroup()
 {
     Modifiability = (Modifiability) InvalidValue;
     Readability   = (Readability) InvalidValue;
     Category      = (LocalizationCategory) InvalidValue;
 }
Ejemplo n.º 10
0
 public void TestCleanTitleNonStandardFormat()
 {
     Assert.Equal("Big title [ Wikipedia ]", Readability.CleanTitle("Big title [ Wikipedia ]", "Wikipedia"));
 }
Ejemplo n.º 11
0
 public void TestCleanTitleNoSeparator()
 {
     Assert.Equal("Big title Wikipedia", Readability.CleanTitle("Big title Wikipedia", "Wikipedia"));
 }
Ejemplo n.º 12
0
 public void TestCleanTitleMark()
 {
     Assert.Equal("Big title", Readability.CleanTitle("Big title » Wikipedia", "Wikipedia"));
 }
Ejemplo n.º 13
0
 public void TestCleanTitleBackslash()
 {
     Assert.Equal("Big title", Readability.CleanTitle("Big title / Wikipedia", "Wikipedia"));
 }
Ejemplo n.º 14
0
 public void TestCleanTitleNoSitename()
 {
     Assert.Equal("Big title ", Readability.CleanTitle("Big title ", "Wikipedia"));
 }
Ejemplo n.º 15
0
        public void TestGetMetadataFeaturedImage()
        {
            var parser = new HtmlParser(new HtmlParserOptions());
            var doc    = parser.ParseDocument(@"<html>
               <head>
                    <meta name=""weibo:article:image"" content=""https://it.wikipedia.org/static/images/project-logos/itwiki-2x.png"">
               </head>
               <body></body>
               </html>");

            Assert.Equal("https://it.wikipedia.org/static/images/project-logos/itwiki-2x.png", Readability.GetArticleMetadata(doc, new Uri("https://localhost/"), "", new Dictionary <string, string>()).FeaturedImage);
        }
Ejemplo n.º 16
0
 internal LocalizabilityGroup()
 {
     Modifiability = (Modifiability)InvalidValue;
     Readability   = (Readability)InvalidValue;
     Category      = (LocalizationCategory)InvalidValue;
 }