コード例 #1
0
        public void GetInfobox_WikiTextIsNullOrWhiteSpace_ShouldReturnNull(string input)
        {
            // Arrange
            var parser = new InfoboxParser(mockedCommons);

            // Act
            var result = parser.GetInfobox(input);

            // Assert
            Assert.Null(result);
        }
コード例 #2
0
        public void ShouldReturnOneRecord_WhenInfoboxWithOneKeyValuePairPassed()
        {
            var infoboxParser = new InfoboxParser();

            var infobox = "{name=testName}";
            var result = infoboxParser.GetKeyValue(infobox).ToList();

            Assert.AreEqual(result.Count(), 1);
            Assert.AreEqual(result[0].Key, "name");
            Assert.AreEqual(result[0].Value, "testName");
        }
コード例 #3
0
        public void ShouldNotReturnRecord_WhenInfoboxHasNoValue()
        {
            var infoboxParser = new InfoboxParser();

            var infobox = "{name=|name2=testName2}";
            var result = infoboxParser.GetKeyValue(infobox).ToList();

            Assert.AreEqual(result.Count(), 1);
            Assert.AreEqual(result[0].Key, "name2");
            Assert.AreEqual(result[0].Value, "testName2");
        }
コード例 #4
0
        public void GetInfobox_WikiTextContainsInfoboxForBothWorlds_ShouldReturnMultipleResults()
        {
            // Arrange
            var input = "{{Infobox Buildings Old and New World";

            var parser = new InfoboxParser(mockedCommons);

            // Act
            var result = parser.GetInfobox(input);

            // Assert
            Assert.Equal(2, result.Count);
        }
コード例 #5
0
        public void GetInfobox_WikiTextContainsInfobox_ShouldReturnSingleResult()
        {
            // Arrange
            var input = "{{Infobox Buildings";

            var parser = new InfoboxParser(mockedCommons);

            // Act
            var result = parser.GetInfobox(input);

            // Assert
            Assert.Single(result);
        }
コード例 #6
0
        public void ShouldReturnRecordsWithBracersAsValue_WhenInfoboxContainsNestedSquareBracketsInValue()
        {
            var infoboxParser = new InfoboxParser();

            var infobox = "{name=testName|name2=testName2[[nestedName=nestedTestName|nestedName2=nestedTestName2]]}";
            var result = infoboxParser.GetKeyValue(infobox).ToList();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(result[0].Key, "name");
            Assert.AreEqual(result[0].Value, "testName");
            Assert.AreEqual(result[1].Key, "name2");
            Assert.AreEqual(result[1].Value, "testName2[[nestedName=nestedTestName|nestedName2=nestedTestName2]]");
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: jansivans/wikiParser
 static void Main(string[] args)
 {
     if (args.Length != 0 && File.Exists(args[0]))
     {
         var infoboxParser = new InfoboxParser();
         var parseType = args.Length > 1 ? args[1] : "json";
         var infoboxes = new List<Infobox>();
         using (StreamWriter writer = new StreamWriter("output.txt"))
         {
             foreach (var infobox in infoboxParser.GetInfoboxFromWikiDump(args[0]))
             {
                 if (parseType == "json")
                 {
                     writer.WriteLine(JsonConvert.SerializeObject(infobox, Formatting.Indented));
                 }
                 else if (parseType == "triplestore")
                 {
                     writer.WriteLine(infobox.ArticleName + "\tINFOBOX_NAME\t" + infobox.Name);
                     foreach (var record in infobox.Records)
                     {
                         writer.WriteLine(infobox.ArticleName + "\t" + record.Property + "\t" + record.Value);
                     }
                 }
                 else if (parseType == "mappings")
                 {
                     var properties = new List<string>();
                     var infoboxName = infobox.Name;
                     var existedInfobox = infoboxes.FirstOrDefault(i => i.Name == infoboxName);
                     var existed = existedInfobox != null;
                     if (existedInfobox == null)
                     {
                         existedInfobox = new Infobox();
                         existedInfobox.Name = infoboxName;
                         existedInfobox.Records = new List<InfoboxRecord>();
                     }
                     foreach (var record in infobox.Records)
                     {
                         var existedProp = existedInfobox.Records.FirstOrDefault(p => p.Property == record.Property);
                         existedProp = new InfoboxRecord();
                         existedProp.Property = record.Property;
                         existedInfobox.Records.Add(existedProp);
                     }
                     if (!existed)
                     {
                         infoboxes.Add(existedInfobox);
                     }
                 }
             }
             if (parseType == "mappings")
             {
                 foreach (var infobox in infoboxes)
                 {
                     var properties = infobox.Records.Select(s => s.Property);
                     properties = properties.Distinct().ToList();
                     writer.WriteLine("{{ TemplateMapping | mapToClass = " + infobox.Name + " | mappings = ");
                     foreach (var property in properties)
                     {
                         writer.WriteLine("{{ PropertyMapping | templateProperty = " + property + " | ontologyProperty =  }}");
                     }
                     writer.WriteLine("}}");
                 }
             }
         }
     }
 }
コード例 #8
0
        public void ShouldReturnTwoRecords_WhenInfoboxWithTwoKeyValuePairsPassed()
        {
            var infoboxParser = new InfoboxParser();

            var infobox = "{name=testName|name2=testName2}";
            var result = infoboxParser.GetKeyValue(infobox).ToList();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(result[0].Key, "name");
            Assert.AreEqual(result[0].Value, "testName");
            Assert.AreEqual(result[1].Key, "name2");
            Assert.AreEqual(result[1].Value, "testName2");
        }