diff --git a/lib/jekyll/helper/rdf_generator_helper.rb b/lib/jekyll/helper/rdf_generator_helper.rb index 761a9d1c..635df922 100644 --- a/lib/jekyll/helper/rdf_generator_helper.rb +++ b/lib/jekyll/helper/rdf_generator_helper.rb @@ -128,7 +128,7 @@ def create_page(site, resource, mapper) if(page.complete) changes = false site.pages.map!{|old_page| - if (File.join(old_page.dir, old_page.name) == File.join(page.dir, page.name)) + if (old_page.url == page.url) changes||=true page.assimilate_page(old_page) page diff --git a/lib/jekyll/helper/rdf_page_helper.rb b/lib/jekyll/helper/rdf_page_helper.rb index a9289764..8eb1fed6 100644 --- a/lib/jekyll/helper/rdf_page_helper.rb +++ b/lib/jekyll/helper/rdf_page_helper.rb @@ -32,6 +32,11 @@ def re_init_as_rdf(resource, mapper) resource.page = self resource.site = @site @site.data['resources'] << resource + @url = resource.page_url + #page_url reflects the url given by the uri of that site + #Jekyll on the other hand renders .html in each url belonging to an html (also converted ones like .md) + @url << ".html" unless (@url.length == 0) || (@url[-1].eql? "/") + @url = "/" + @url unless (@url.length > 0)&&(@url[0].eql? "/") #by default jekyll renders with a leading / end def self.prepare_resource resource, mapper diff --git a/test/cases/MergeFeatureLayoutRoute/Bart.html b/test/cases/MergeFeatureLayoutRoute/Bart.html new file mode 100644 index 00000000..bd560158 --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/Bart.html @@ -0,0 +1,5 @@ +--- +title: "Barts Skating page" +--- + +I really like skating diff --git a/test/cases/MergeFeatureLayoutRoute/Gemfile b/test/cases/MergeFeatureLayoutRoute/Gemfile new file mode 100644 index 00000000..d032c7f7 --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' +group :jekyll_plugins do + gem 'jekyll-rdf', :path => '../../../' +end diff --git a/test/cases/MergeFeatureLayoutRoute/_config.yml b/test/cases/MergeFeatureLayoutRoute/_config.yml new file mode 100644 index 00000000..74b30e2a --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_config.yml @@ -0,0 +1,13 @@ +baseurl: "/instance" +url: "http://example.org/" +# Build settings + +plugins: +- jekyll-rdf +jekyll_rdf: + path: "_data/knowledge-base.ttl" + restriction: "SELECT ?resourceUri WHERE {?resourceUri ?p ?o}" + default_template: "default" + class_template_mappings: + "http://xmlns.com/foaf/0.1/Person": "person" + diff --git a/test/cases/MergeFeatureLayoutRoute/_data/Prefixes.pref b/test/cases/MergeFeatureLayoutRoute/_data/Prefixes.pref new file mode 100644 index 00000000..d5fa8afd --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_data/Prefixes.pref @@ -0,0 +1,3 @@ +PREFIX xsd: +PREFIX foaf: +PREFIX eg: diff --git a/test/cases/MergeFeatureLayoutRoute/_data/knowledge-base.ttl b/test/cases/MergeFeatureLayoutRoute/_data/knowledge-base.ttl new file mode 100644 index 00000000..aaba656b --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_data/knowledge-base.ttl @@ -0,0 +1,7 @@ +@prefix xsd: . +@prefix foaf: . +@prefix eg: . + +eg:Bart a foaf:Person . +eg:Bart foaf:age "15"^^xsd:int . +eg:Bart foaf:name "Bart" . diff --git a/test/cases/MergeFeatureLayoutRoute/_layouts/bart_layout.html b/test/cases/MergeFeatureLayoutRoute/_layouts/bart_layout.html new file mode 100644 index 00000000..0aa38690 --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_layouts/bart_layout.html @@ -0,0 +1,21 @@ +--- +layout: default_bart +--- + +
+
+ name: +
+ {{page.rdf | rdf_property: "foaf:name"}} +
+
+ age: +
+ {{page.rdf | rdf_property: "foaf:age"}} +
+ +
+ begin bart content + {{ content }} + end bart content +
diff --git a/test/cases/MergeFeatureLayoutRoute/_layouts/default.html b/test/cases/MergeFeatureLayoutRoute/_layouts/default.html new file mode 100644 index 00000000..0df2c8dc --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_layouts/default.html @@ -0,0 +1,16 @@ +--- +--- + + + + Default: {{ page.title }} + + +
+

This is made with jekyll-rdf

+ begin default content + {{content}} + end default content +
+ + diff --git a/test/cases/MergeFeatureLayoutRoute/_layouts/default_bart.html b/test/cases/MergeFeatureLayoutRoute/_layouts/default_bart.html new file mode 100644 index 00000000..3919cf19 --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_layouts/default_bart.html @@ -0,0 +1,16 @@ +--- +--- + + + + {{ page.title }} + + +
+

This is made with jekyll-rdf

+ begin default_bart content + {{content}} + end default_bart content +
+ + diff --git a/test/cases/MergeFeatureLayoutRoute/_layouts/person.html b/test/cases/MergeFeatureLayoutRoute/_layouts/person.html new file mode 100644 index 00000000..9c9bca90 --- /dev/null +++ b/test/cases/MergeFeatureLayoutRoute/_layouts/person.html @@ -0,0 +1,21 @@ +--- +layout: default +rdf_prefix_path: _data/Prefixes.pref +--- +
+
+ name: +
+ {{page.rdf | rdf_property: "foaf:name"}} +
+
+ age: +
+ {{page.rdf | rdf_property: "foaf:age"}} +
+ +
+ begin person content + {{content}} + end person content +
diff --git a/test/cases/MergeFeaturePageRoute/Bart.html b/test/cases/MergeFeaturePageRoute/Bart.html new file mode 100644 index 00000000..72afa9ba --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/Bart.html @@ -0,0 +1,6 @@ +--- +title: "Barts Skating page" +layout: bart_layout +--- + +I really like skating diff --git a/test/cases/MergeFeaturePageRoute/Gemfile b/test/cases/MergeFeaturePageRoute/Gemfile new file mode 100644 index 00000000..d032c7f7 --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' +group :jekyll_plugins do + gem 'jekyll-rdf', :path => '../../../' +end diff --git a/test/cases/MergeFeaturePageRoute/_config.yml b/test/cases/MergeFeaturePageRoute/_config.yml new file mode 100644 index 00000000..896fc47e --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_config.yml @@ -0,0 +1,11 @@ +baseurl: "/instance" +url: "http://example.org/" +plugins: +- jekyll-rdf +jekyll_rdf: + path: "_data/knowledge-base.ttl" + restriction: "SELECT ?resourceUri WHERE {?resourceUri ?p ?o}" + default_template: "default" + class_template_mappings: + "http://xmlns.com/foaf/0.1/Person": "person" + diff --git a/test/cases/MergeFeaturePageRoute/_data/Prefixes.pref b/test/cases/MergeFeaturePageRoute/_data/Prefixes.pref new file mode 100644 index 00000000..f59c9317 --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_data/Prefixes.pref @@ -0,0 +1,5 @@ +PREFIX rdf: +PREFIX rdfs: +PREFIX xsd: +PREFIX foaf: +PREFIX eg: diff --git a/test/cases/MergeFeaturePageRoute/_data/knowledge-base.ttl b/test/cases/MergeFeaturePageRoute/_data/knowledge-base.ttl new file mode 100644 index 00000000..aaba656b --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_data/knowledge-base.ttl @@ -0,0 +1,7 @@ +@prefix xsd: . +@prefix foaf: . +@prefix eg: . + +eg:Bart a foaf:Person . +eg:Bart foaf:age "15"^^xsd:int . +eg:Bart foaf:name "Bart" . diff --git a/test/cases/MergeFeaturePageRoute/_layouts/bart_layout.html b/test/cases/MergeFeaturePageRoute/_layouts/bart_layout.html new file mode 100644 index 00000000..0aa38690 --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_layouts/bart_layout.html @@ -0,0 +1,21 @@ +--- +layout: default_bart +--- + +
+
+ name: +
+ {{page.rdf | rdf_property: "foaf:name"}} +
+
+ age: +
+ {{page.rdf | rdf_property: "foaf:age"}} +
+ +
+ begin bart content + {{ content }} + end bart content +
diff --git a/test/cases/MergeFeaturePageRoute/_layouts/default.html b/test/cases/MergeFeaturePageRoute/_layouts/default.html new file mode 100644 index 00000000..0df2c8dc --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_layouts/default.html @@ -0,0 +1,16 @@ +--- +--- + + + + Default: {{ page.title }} + + +
+

This is made with jekyll-rdf

+ begin default content + {{content}} + end default content +
+ + diff --git a/test/cases/MergeFeaturePageRoute/_layouts/default_bart.html b/test/cases/MergeFeaturePageRoute/_layouts/default_bart.html new file mode 100644 index 00000000..3919cf19 --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_layouts/default_bart.html @@ -0,0 +1,16 @@ +--- +--- + + + + {{ page.title }} + + +
+

This is made with jekyll-rdf

+ begin default_bart content + {{content}} + end default_bart content +
+ + diff --git a/test/cases/MergeFeaturePageRoute/_layouts/person.html b/test/cases/MergeFeaturePageRoute/_layouts/person.html new file mode 100644 index 00000000..9c9bca90 --- /dev/null +++ b/test/cases/MergeFeaturePageRoute/_layouts/person.html @@ -0,0 +1,21 @@ +--- +layout: default +rdf_prefix_path: _data/Prefixes.pref +--- +
+
+ name: +
+ {{page.rdf | rdf_property: "foaf:name"}} +
+
+ age: +
+ {{page.rdf | rdf_property: "foaf:age"}} +
+ +
+ begin person content + {{content}} + end person content +
diff --git a/test/test_rdf_main_generator.rb b/test/test_rdf_main_generator.rb index 334b3779..a7b3261b 100644 --- a/test/test_rdf_main_generator.rb +++ b/test/test_rdf_main_generator.rb @@ -33,63 +33,31 @@ class TestRdfTemplateMapper < Test::Unit::TestCase end end - context "create_page from rdf_main_generator" do - setup do - @resources_to_templates = { - "http://www.ifi.uio.no/INF3580/simpsons/Homer" => "homer", - "http://placeholder.host.plh/placeholder#Placeholder" => "Placeholder", - "this://should/merge/merge" => "merge", - "this://should/also/merge/merge" => "merge", - "this://should/not/merge/merge" => "nMerge", - "this://should/be/copied/merge/merge" => "nil" - } - @classes_to_templates = { - "http://xmlns.com/foaf/0.1/Person" => "person", - "http://pcai042.informatik.uni-leipzig.de/~dtp16#SpecialPerson" => "SpecialPerson", - "http://pcai042.informatik.uni-leipzig.de/~dtp16#AnotherSpecialPerson" => "AnotherSpecialPerson" - } - @default_template = "default" - res_helper.global_site = true - @resource1 = res_helper.basic_resource("http://www.ifi.uio.no/INF3580/simpsons/Homer") - @resource2 = res_helper.basic_resource("http://www.ifi.uio.no/INF3580/simpsons/Maggie") - @resource3 = res_helper.basic_resource("http://resource3") - res_helper.global_site = false - @mapper = Jekyll::RdfTemplateMapper.new(@resources_to_templates, @classes_to_templates, @default_template, sparql) - @config = Jekyll.configuration(TestHelper::TEST_OPTIONS) - @site = Jekyll::Site.new(@config) - @site.data['resources'] = [] - @site.layouts["homer"] = Jekyll::Layout.new(@site, @site.source, "homer.html") - @site.layouts["person"] = Jekyll::Layout.new(@site, @site.source, "person.html") - @site.layouts["default"] = Jekyll::Layout.new(@site, @site.source, "default.html") - @site.layouts["merge"] = Jekyll::Layout.new(@site, File.join(@site.source, "_layouts"), "merge.html") - @site.layouts["merge"].content = "outer part of a merged page \n {{ content }}" - @site.layouts["nMerge"] = Jekyll::Layout.new(@site, File.join(@site.source, "_layouts"), "nMerge.html") - @site.layouts["nMerge"].content = "an unmerged page \n {{ content }}" - @site.layouts["nil"] = Jekyll::Layout.new(@site, File.join(@site.source, "_layouts"), "nil.html") - @site.layouts["nil"].content = "this is nil content" - @site.pages = [] - end - - should "assimilate already existing pages if they share the same path" do - @site.pages << Jekyll::Page.new(@site, @site.source, "rdfsites/this/should", "merge.html") - @site.pages.last.content = "this is the first normal part" - @site.pages << Jekyll::Page.new(@site, @site.source, "rdfsites/this/should/also", "merge.html") - @site.pages.last.content = "this is the second normal part" - @site.pages << Jekyll::Page.new(@site, @site.source, "rdfsites/this/should/wont", "merge.html") - @site.pages.last.content = "this is the third normal part" - @site.pages << Jekyll::Page.new(@site, @site.source, "rdfsites/this/should/be/copied", "merge.html") - @site.pages.last.content = "this should be the only line in this file" - @site.pages.last.data['layout'] = "" - create_page(@site, Jekyll::JekyllRdf::Drops::RdfResource.new("this://should/merge/merge"), @mapper) - create_page(@site, Jekyll::JekyllRdf::Drops::RdfResource.new("this://should/also/merge/merge"), @mapper) - create_page(@site, Jekyll::JekyllRdf::Drops::RdfResource.new("this://should/not/merge/merge"), @mapper) - create_page(@site, Jekyll::JekyllRdf::Drops::RdfResource.new("this://should/be/copied/merge/merge"), @mapper) - assert (@site.pages.length.eql? 5), "The page count should be 4 it was #{@site.pages.length}" - assert (!!(@site.pages[0].content =~ /outer part of a merged page \n this is the first normal part/)), "content should be:>>>>>\nouter part of a merged page \n this is the first normal part\nbut was:>>>>>\n#{@site.pages[0].content}" - assert (!!(@site.pages[1].content =~ /outer part of a merged page \n this is the second normal part/)), "content should be:>>>>>\nouter part of a merged page \n this is the second normal part\nbut was:>>>>>\n#{@site.pages[1].content}" - assert (!!(@site.pages[2].content =~ /this is the third normal part/)), "content should be:>>>>>\nthis is the third normal part\nbut was:>>>>>\n#{@site.pages[2].content}" - assert (!!(@site.pages[4].content =~ /an unmerged page/)), "content should be:>>>>>\nan unmerged page\nbut was:>>>>>\n#{@site.pages[4].content}" - assert (!!(@site.pages[3].content =~ /this should be the only line in this file/)), "This page should only contain >>>this should be the only line in this file<<<\ncontained: #{@site.pages[3].content}" + context "the Merge Feature of jekyll-rdf" do + should "create a page that takes the layout defined in the page" do + @source = File.join(File.dirname(__FILE__), "cases/MergeFeaturePageRoute") + config = Jekyll.configuration(YAML.load_file(File.join(@source, '_config.yml')).merge!({'source' => @source, 'destination' => File.join(@source, "_site")})) + site = Jekyll::Site.new(config) + site.process + + s = File.read(File.join(@source,"_site/Bart.html")) + assert (s.include? 'Barts Skating page'), "does not contain the right title" + assert (s.include? 'begin bart content'), "does not contain the right template" + assert (s.include? 'I really like skating'), "does not contain the core page" + assert (!(s.include? 'begin person content')), "does contain the wrong template" + end + + should "create a page that uses the layout of the resource if the page does not have a layout" do + @source = File.join(File.dirname(__FILE__), "cases/MergeFeatureLayoutRoute") + config = Jekyll.configuration(YAML.load_file(File.join(@source, '_config.yml')).merge!({'source' => @source, 'destination' => File.join(@source, "_site")})) + site = Jekyll::Site.new(config) + site.process + + s = File.read(File.join(@source,"_site/Bart.html")) + assert (s.include? 'Default: Barts Skating page'), "does not contain the right title" + assert (!(s.include? 'begin bart content')), "does contain the wrong template" + assert (s.include? 'I really like skating'), "does not contain the core page" + assert (s.include? 'begin person content'), "does not contain the right template" end end diff --git a/test/test_rdf_template_mapper.rb b/test/test_rdf_template_mapper.rb index c63c2393..4d4c10ce 100644 --- a/test/test_rdf_template_mapper.rb +++ b/test/test_rdf_template_mapper.rb @@ -5,6 +5,7 @@ class TestRdfTemplateMapper < Test::Unit::TestCase graph = RDF::Graph.load(File.join(TestHelper::TEST_OPTIONS['source'], TestHelper::TEST_OPTIONS['jekyll_rdf']['path'])) sparql = SPARQL::Client.new(graph) res_helper = ResourceHelper.new(sparql) + Jekyll::JekyllRdf::Helper::RdfHelper::sparql = sparql context "the class extraction" do should "extract classes from the given source" do answer = search_for_classes(sparql) @@ -85,6 +86,7 @@ class TestRdfTemplateMapper < Test::Unit::TestCase "http://pcai042.informatik.uni-leipzig.de/~dtp16#AnotherSpecialPerson" => "AnotherSpecialPerson" } default_template = "default" + Jekyll::JekyllRdf::Helper::RdfHelper::sparql = sparql @mapper = Jekyll::RdfTemplateMapper.new(resources_to_templates, classes_to_templates, default_template, sparql) end