-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #41 from ActiveTriples/feature/refactor-models
Refactor Models for Independence from the Rails App
- Loading branch information
Showing
38 changed files
with
534 additions
and
377 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,3 @@ | ||
## | ||
# A class to hold site-wide configuration. | ||
# @todo extract to a configuration file. | ||
class Setting | ||
class << self | ||
def config | ||
@config ||= YAML::load(File.open(config_path))[env] | ||
.with_indifferent_access | ||
end | ||
|
||
def app_root | ||
return @app_root if @app_root | ||
@app_root = Rails.root if defined?(Rails) and defined?(Rails.root) | ||
@app_root ||= APP_ROOT if defined?(APP_ROOT) | ||
@app_root ||= '.' | ||
end | ||
|
||
def env | ||
return @env if @env | ||
#The following commented line always returns "test" in a rails c production console. Unsure of how to fix this yet... | ||
#@env = ENV["RAILS_ENV"] = "test" if ENV | ||
@env ||= Rails.env if defined?(Rails) and defined?(Rails.root) | ||
@env ||= 'development' | ||
end | ||
|
||
def config_path | ||
File.join(app_root, 'config', 'ldf.yml') | ||
end | ||
|
||
def uri_endpoint | ||
Setting.config[:uri_endpoint] || 'http://localhost:3000/{?subject}' | ||
end | ||
|
||
def uri_endpoint_route | ||
if uri_endpoint.match(/^http[s]*\:\/\/.+\//) | ||
endpoint = uri_endpoint.gsub(/^http[s]*\:\/\/[^\/]+/, '') | ||
endpoint.gsub!('{?subject}', '*subject') | ||
else | ||
#FIXME: What type of error should this be? Need to unit test this as well once figured out. | ||
raise ArgumentError, 'Invalid uri endpoint url specified' | ||
end | ||
|
||
return endpoint | ||
end | ||
|
||
def uri_root | ||
Setting.config[:uri_root] || 'http://localhost:3000/#dataset' | ||
end | ||
|
||
def cache_backend | ||
Setting.config[:cache_backend][:provider] || 'marmotta' | ||
end | ||
|
||
def cache_backend_url | ||
Setting.config[:cache_backend][:url] || 'http://localhost:8988/marmotta' | ||
end | ||
|
||
def cache_backend_context | ||
Setting.config[:cache_backend][:context] || 'linked_data_fragments_unknown' | ||
end | ||
end | ||
end | ||
# An alias to LinkedDataFragments::Settings | ||
Setting = LinkedDataFragments::Settings |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
require 'linked_data_fragments/builders/control_builder' | ||
require 'linked_data_fragments/builders/dataset_builder' | ||
require 'linked_data_fragments/builders/template_builder' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
module LinkedDataFragments | ||
class ControlBuilder | ||
## | ||
# @!attribute [rw] control | ||
# @return [] | ||
# @!attribute [rw] property | ||
# @return [RDF::URI] | ||
attr_accessor :control, :property | ||
|
||
## | ||
# | ||
def initialize(control, property) | ||
@control = control | ||
@property = property | ||
end | ||
|
||
## | ||
# @return [Control] | ||
def build | ||
Control.new.tap do |t| | ||
t.variable = control | ||
t.property = property | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
module LinkedDataFragments | ||
## | ||
# A Builder for Dataset instances. | ||
# | ||
# @example Building a dataset | ||
# builder = DatasetBuilder.new | ||
# builder.uri_endpoint = HydraTemplate.new('http://example.com/{?subject}') | ||
# dataset = builder.build | ||
# | ||
# dataset.dump :ttl | ||
# # <http://localhost:3000/#dataset> a <http://www.w3.org/ns/hydra/core#Collection>, | ||
# # <http://rdfs.org/ns/void#Dataset>; | ||
# # <http://rdfs.org/ns/void#uriLookupEndpoint> "http://example.com/{?subject}"; | ||
# # <http://www.w3.org/ns/hydra/core#search> [ | ||
# # <http://www.w3.org/ns/hydra/core#mapping> [ | ||
# # <http://www.w3.org/ns/hydra/core#property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject>; | ||
# # <http://www.w3.org/ns/hydra/core#variable> "subject" | ||
# # ]; | ||
# # <http://www.w3.org/ns/hydra/core#search> "http://example.com/{?subject}" | ||
# # ] . | ||
class DatasetBuilder | ||
# @!attribute [w] | ||
# @return [HydraTemplate] | ||
attr_writer :uri_endpoint | ||
|
||
def build | ||
Dataset.new(uri_root).tap do |dataset| | ||
dataset.uri_lookup_endpoint = uri_endpoint.to_s | ||
dataset.search = template_builder.new(dataset, uri_endpoint).build | ||
|
||
uri_endpoint.controls.each do |control| | ||
dataset.search.first.mapping << | ||
control_builder.new(control, control_mapping[control]).build | ||
end | ||
end | ||
end | ||
|
||
## | ||
# @return [HydraTemplate] | ||
# @see Settings#uri_endpoint | ||
def uri_endpoint | ||
@uri_endpoint ||= | ||
LinkedDataFragments::HydraTemplate | ||
.new(Settings.uri_endpoint) | ||
end | ||
|
||
## | ||
# @return [String] a URI-like string representing the root URI | ||
# | ||
# @see Settings#uri_root | ||
def uri_root | ||
Settings.uri_root | ||
end | ||
|
||
private | ||
|
||
def template_builder | ||
TemplateBuilder | ||
end | ||
|
||
def control_builder | ||
ControlBuilder | ||
end | ||
|
||
def control_mapping | ||
{ "subject" => RDF.subject } | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
module LinkedDataFragments | ||
## | ||
# A Builder for Templates. | ||
class TemplateBuilder | ||
## | ||
# @!attribute [r] dataset_node | ||
# @return [Dataset] | ||
# @!attribute [r] uri_template | ||
# @return [String] | ||
attr_reader :dataset_node, :uri_template | ||
|
||
## | ||
# @param dataset_node [Dataset] | ||
# @param uri_template [#to_s] | ||
def initialize(dataset_node, uri_template) | ||
@dataset_node = dataset_node | ||
@uri_template = uri_template.to_s | ||
end | ||
|
||
def build | ||
Template.new(nil, dataset_node).tap do |template| | ||
template.template = self.uri_template | ||
end | ||
end | ||
end | ||
end |
Oops, something went wrong.