Commit 6231a7a188b8972e16d98f4c00eca35c0f6b09ea

Authored by Victor Costa
2 parents 2cbe945b 8243971d

Merge branch 'virtuoso_integration' into stable

plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
... ... @@ -18,15 +18,21 @@ class VirtuosoPlugin::TriplesManagement
18 18 def update_triple(graph_uri, from_triple, to_triple)
19 19 from_subject = from_triple[:subject]
20 20 from_predicate = from_triple[:predicate]
21   - from_object = from_triple[:object]
  21 + from_object = format_triple_term(from_triple[:object])
22 22  
23 23 to_subject = to_triple[:subject]
24 24 to_predicate = to_triple[:predicate]
25   - to_object = to_triple[:object]
  25 + to_object = format_triple_term(to_triple[:object])
26 26  
27   - query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> '#{from_object}' } INSERT { <#{to_subject}> <#{to_predicate}> '#{to_object}' }"
  27 + query = "WITH <#{graph_uri}> DELETE { <#{from_subject}> <#{from_predicate}> #{from_object} } INSERT { <#{to_subject}> <#{to_predicate}> #{to_object} }"
28 28  
29 29 plugin.virtuoso_client.query(query)
30 30 end
31 31  
  32 + protected
  33 +
  34 + def format_triple_term(term)
  35 + term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'"
  36 + end
  37 +
32 38 end
... ...
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
... ... @@ -8,8 +8,18 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
8 8 _('Triples template')
9 9 end
10 10  
  11 + def self.initial_template
  12 + '
  13 + {% for row in results %}
  14 + <div>
  15 + {{row}}
  16 + </div>
  17 + {% endfor %}
  18 + '
  19 + end
  20 +
11 21 settings_items :query, :type => :string
12   - settings_items :template, :type => :string
  22 + settings_items :template, :type => :string, :default => initial_template
13 23 settings_items :stylesheet, :type => :string
14 24  
15 25 attr_accessible :query, :template, :stylesheet
... ... @@ -28,7 +38,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
28 38 def template_content
29 39 begin
30 40 results = plugin.virtuoso_client.query(query)
31   - liquid_template = Liquid::Template.parse("{% for row in results %}#{template}{% endfor %}")
  41 + liquid_template = Liquid::Template.parse(template)
32 42 page = liquid_template.render('results' => results)
33 43 transform_html(page)
34 44 rescue => ex
... ...
plugins/virtuoso/test/unit/triples_template_test.rb
... ... @@ -12,7 +12,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
12 12 article.stubs(:plugin).returns(mock)
13 13 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
14 14 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}])
15   - article.template = "{{row.var}}"
  15 + article.template = "{% for row in results %}{{row.var}}{% endfor %}"
16 16  
17 17 assert_match /Hello World/, article.template_content
18 18 end
... ... @@ -21,7 +21,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
21 21 article.stubs(:plugin).returns(mock)
22 22 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
23 23 article.plugin.virtuoso_client.expects(:query).raises(RuntimeError.new)
24   - article.template = "{{row.var}}"
  24 + article.template = "{% for row in results %}{{row.var}}{% endfor %}"
25 25  
26 26 assert_equal "Failed to process the template", article.template_content
27 27 end
... ... @@ -30,7 +30,7 @@ class TriplesTemplateTest &lt; ActiveSupport::TestCase
30 30 article.stubs(:plugin).returns(mock)
31 31 article.plugin.expects(:virtuoso_client).at_least_once.returns(mock)
32 32 article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}])
33   - article.template = "<p>{{row.var}}</p>"
  33 + article.template = "{% for row in results %}<p>{{row.var}}</p>{% endfor %}"
34 34 article.stylesheet = "p {color: red}"
35 35  
36 36 content = article.template_content
... ...