Module: LinkedRails

Defined in:
lib/linked_rails/translate.rb,
lib/linked_rails.rb,
lib/linked_rails/cache.rb,
lib/linked_rails/model.rb,
lib/linked_rails/vocab.rb,
lib/linked_rails/engine.rb,
lib/linked_rails/policy.rb,
lib/linked_rails/routes.rb,
lib/linked_rails/version.rb,
lib/linked_rails/model/iri.rb,
lib/linked_rails/rdf_error.rb,
lib/linked_rails/renderers.rb,
lib/linked_rails/controller.rb,
lib/linked_rails/iri_mapper.rb,
lib/linked_rails/serializer.rb,
app/models/linked_rails/form.rb,
lib/linked_rails/enhanceable.rb,
lib/linked_rails/model/dirty.rb,
app/models/linked_rails/widget.rb,
lib/linked_rails/model/sorting.rb,
lib/linked_rails/params_parser.rb,
app/models/linked_rails/manifest.rb,
app/models/linked_rails/ontology.rb,
app/models/linked_rails/resource.rb,
app/models/linked_rails/sequence.rb,
app/models/linked_rails/web_page.rb,
app/models/linked_rails/web_site.rb,
lib/linked_rails/model/filtering.rb,
lib/linked_rails/model/indexable.rb,
app/models/linked_rails/condition.rb,
app/models/linked_rails/form/page.rb,
app/models/linked_rails/collection.rb,
app/models/linked_rails/enum_value.rb,
app/models/linked_rails/form/field.rb,
app/models/linked_rails/form/group.rb,
app/models/linked_rails/menus/item.rb,
app/models/linked_rails/menus/list.rb,
lib/linked_rails/callable_variable.rb,
lib/linked_rails/model/collections.rb,
lib/linked_rails/model/iri_mapping.rb,
app/models/linked_rails/entry_point.rb,
app/models/linked_rails/shacl/shape.rb,
lib/linked_rails/model/enhancements.rb,
app/models/linked_rails/actions/item.rb,
app/models/linked_rails/actions/list.rb,
app/models/linked_rails/current_user.rb,
app/models/linked_rails/media_object.rb,
lib/linked_rails/model/serialization.rb,
app/models/linked_rails/creative_work.rb,
app/models/linked_rails/ontology/base.rb,
lib/linked_rails/helpers/delta_helper.rb,
app/models/linked_rails/collection/iri.rb,
app/models/linked_rails/ontology/class.rb,
app/models/linked_rails/property_query.rb,
lib/linked_rails/constraints/whitelist.rb,
app/models/linked_rails/collection/view.rb,
app/models/linked_rails/shacl/node_shape.rb,
lib/linked_rails/helpers/resource_helper.rb,
app/models/linked_rails/collection/filter.rb,
app/models/linked_rails/ontology/property.rb,
app/policies/linked_rails/sequence_policy.rb,
lib/linked_rails/controller/authorization.rb,
app/models/linked_rails/collection/sorting.rb,
app/models/linked_rails/form/field_factory.rb,
lib/linked_rails/controller/error_handling.rb,
app/models/linked_rails/collection/sortable.rb,
app/policies/linked_rails/collection_policy.rb,
app/policies/linked_rails/enum_value_policy.rb,
app/policies/linked_rails/menus/item_policy.rb,
app/policies/linked_rails/menus/list_policy.rb,
lib/linked_rails/active_response/controller.rb,
app/controllers/linked_rails/bulk_controller.rb,
app/models/linked_rails/shacl/property_shape.rb,
app/serializers/linked_rails/form_serializer.rb,
lib/linked_rails/enhancements/menuable/model.rb,
lib/linked_rails/enhancements/route_concerns.rb,
lib/linked_rails/policy/attribute_conditions.rb,
app/controllers/linked_rails/forms_controller.rb,
app/models/linked_rails/collection/filterable.rb,
app/models/linked_rails/form/field/date_input.rb,
app/models/linked_rails/form/field/file_input.rb,
app/models/linked_rails/form/field/text_input.rb,
app/policies/linked_rails/actions/item_policy.rb,
app/policies/linked_rails/actions/list_policy.rb,
lib/linked_rails/enhancements/indexable/model.rb,
lib/linked_rails/enhancements/tableable/model.rb,
app/models/linked_rails/collection/iri_mapping.rb,
app/models/linked_rails/form/field/color_input.rb,
app/models/linked_rails/form/field/email_input.rb,
app/models/linked_rails/form/field/radio_group.rb,
app/serializers/linked_rails/widget_serializer.rb,
lib/linked_rails/enhancements/actionable/model.rb,
lib/linked_rails/enhancements/creatable/action.rb,
lib/linked_rails/enhancements/updatable/action.rb,
lib/linked_rails/helpers/ontola_actions_helper.rb,
lib/linked_rails/middleware/linked_data_params.rb,
app/models/linked_rails/actions/default_actions.rb,
app/models/linked_rails/collection/filter_field.rb,
app/models/linked_rails/form/field/number_input.rb,
app/models/linked_rails/form/field/select_input.rb,
app/models/linked_rails/form/field/slider_input.rb,
lib/linked_rails/active_response/responders/rdf.rb,
lib/linked_rails/enhancements/updatable/routing.rb,
app/models/linked_rails/collection/filter_option.rb,
app/models/linked_rails/collection/infinite_view.rb,
app/policies/linked_rails/collection/view_policy.rb,
app/serializers/linked_rails/ontology_serializer.rb,
app/serializers/linked_rails/sequence_serializer.rb,
app/serializers/linked_rails/web_page_serializer.rb,
app/serializers/linked_rails/web_site_serializer.rb,
lib/linked_rails/enhancements/destroyable/action.rb,
lib/linked_rails/enhancements/singularable/model.rb,
app/controllers/linked_rails/manifests_controller.rb,
app/controllers/linked_rails/not_found_controller.rb,
app/models/linked_rails/collection/paginated_view.rb,
app/models/linked_rails/form/field/checkbox_group.rb,
app/models/linked_rails/form/field/checkbox_input.rb,
app/models/linked_rails/form/field/location_input.rb,
app/models/linked_rails/form/field/markdown_input.rb,
app/models/linked_rails/form/field/password_input.rb,
app/models/linked_rails/form/field/resource_field.rb,
app/serializers/linked_rails/condition_serializer.rb,
app/serializers/linked_rails/form/page_serializer.rb,
app/serializers/linked_rails/rdf_error_serializer.rb,
lib/generators/linked_rails/model/model_generator.rb,
lib/linked_rails/enhancements/destroyable/routing.rb,
lib/linked_rails/enhancements/menuable/serializer.rb,
app/controllers/linked_rails/ontologies_controller.rb,
app/models/linked_rails/form/field/date_time_input.rb,
app/models/linked_rails/form/field/text_area_input.rb,
app/serializers/linked_rails/collection_serializer.rb,
app/serializers/linked_rails/enum_value_serializer.rb,
app/serializers/linked_rails/form/field_serializer.rb,
app/serializers/linked_rails/form/group_serializer.rb,
app/serializers/linked_rails/menus/item_serializer.rb,
app/serializers/linked_rails/menus/list_serializer.rb,
lib/linked_rails/active_response/controller/params.rb,
lib/linked_rails/enhancements/creatable/controller.rb,
lib/linked_rails/enhancements/updatable/controller.rb,
lib/linked_rails/enhancements/updatable/serializer.rb,
app/controllers/linked_rails/enum_values_controller.rb,
app/controllers/linked_rails/menus/items_controller.rb,
app/controllers/linked_rails/menus/lists_controller.rb,
app/serializers/linked_rails/entry_point_serializer.rb,
app/serializers/linked_rails/shacl/shape_serializer.rb,
lib/linked_rails/enhancements/actionable/serializer.rb,
app/controllers/linked_rails/current_user_controller.rb,
app/models/linked_rails/form/field/association_input.rb,
app/serializers/linked_rails/actions/item_serializer.rb,
app/serializers/linked_rails/current_user_serializer.rb,
app/serializers/linked_rails/media_object_serializer.rb,
lib/linked_rails/enhancements/destroyable/controller.rb,
app/controllers/linked_rails/actions/items_controller.rb,
app/models/linked_rails/form/field/postal_range_input.rb,
app/serializers/linked_rails/creative_work_serializer.rb,
lib/generators/linked_rails/install/install_generator.rb,
lib/linked_rails/enhancements/singularable/controller.rb,
lib/linked_rails/enhancements/singularable/serializer.rb,
app/models/linked_rails/actions/default_actions/create.rb,
app/models/linked_rails/actions/default_actions/update.rb,
app/models/linked_rails/form/field/toggle_button_group.rb,
app/serializers/linked_rails/ontology/class_serializer.rb,
app/models/linked_rails/actions/default_actions/destroy.rb,
app/serializers/linked_rails/collection/view_serializer.rb,
lib/linked_rails/active_response/controller/collections.rb,
app/serializers/linked_rails/shacl/node_shape_serializer.rb,
app/serializers/linked_rails/collection/filter_serializer.rb,
app/serializers/linked_rails/ontology/property_serializer.rb,
lib/linked_rails/active_response/controller/crud_defaults.rb,
app/serializers/linked_rails/collection/sorting_serializer.rb,
app/serializers/linked_rails/shacl/property_shape_serializer.rb,
app/serializers/linked_rails/collection/filter_field_serializer.rb,
app/serializers/linked_rails/form/field/select_input_serializer.rb,
app/serializers/linked_rails/collection/filter_option_serializer.rb,
app/serializers/linked_rails/form/field/resource_field_serializer.rb,
app/serializers/linked_rails/form/field/association_input_serializer.rb,
lib/linked_rails/routes.rb

Overview

rubocop:disable Metrics/ModuleLength

Defined Under Namespace

Modules: Actions, ActiveResponse, CallableVariable, Constraints, Controller, Enhanceable, Enhancements, Helpers, Menus, Middleware, Model, Policy, Routes, RoutingHelper, SHACL, Serializer Classes: BulkController, Cache, Collection, CollectionPolicy, CollectionSerializer, Condition, ConditionSerializer, CreativeWork, CreativeWorkSerializer, CurrentUser, CurrentUserController, CurrentUserSerializer, Engine, EntryPoint, EntryPointSerializer, EnumValue, EnumValuePolicy, EnumValueSerializer, EnumValuesController, Form, FormSerializer, FormsController, IRIMapper, InstallGenerator, Manifest, ManifestsController, MediaObject, MediaObjectSerializer, ModelGenerator, NotFoundController, OntologiesController, Ontology, OntologySerializer, ParamsParser, PropertyQuery, RDFError, RDFErrorSerializer, Renderers, Resource, Sequence, SequencePolicy, SequenceSerializer, Translate, Vocab, WebPage, WebPageSerializer, WebSite, WebSiteSerializer, Widget, WidgetSerializer

Constant Summary collapse

VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.configurable_class(parent, klass, default: nil, reader: nil) ⇒ Object

rubocop:disable Metrics/AbcSize



23
24
25
26
27
28
29
30
31
# File 'lib/linked_rails.rb', line 23

def self.configurable_class(parent, klass, default: nil, reader: nil) # rubocop:disable Metrics/AbcSize
  method = :"#{[parent, klass.to_s.downcase].compact.join('_')}_class"
  default ||= "LinkedRails::#{[parent&.to_s&.camelize, klass.to_s.classify].compact.join('::')}"

  mattr_writer method, default: default
  define_singleton_method reader || method do
    @model_classes[method] ||= class_variable_get("@@#{method}").constantize
  end
end

.hostObject



34
35
36
37
38
# File 'lib/linked_rails.rb', line 34

def host
  # rubocop:disable Style/ClassVars
  @@host ||= Rails.application.routes.default_url_options[:host]&.split('//')&.last || 'example.com'
  # rubocop:enable Style/ClassVars
end

.iri(opts = {}) ⇒ Object



44
45
46
# File 'lib/linked_rails.rb', line 44

def iri(opts = {})
  RDF::URI.new(**{scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(opts))
end

.schemeObject



40
41
42
# File 'lib/linked_rails.rb', line 40

def scheme
  @@scheme ||= Rails.application.routes.default_url_options[:protocol] || :http # rubocop:disable Style/ClassVars
end

.translate(*args) ⇒ Object



4
5
6
# File 'lib/linked_rails/translate.rb', line 4

def self.translate(*args)
  Translate.call(*args)
end

.translations(translation) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/linked_rails/translate.rb', line 8

def self.translations(translation)
  I18n.available_locales.map do |locale|
    I18n.with_locale(locale) do
      value = translation.call
      RDF::Literal.new(value, language: locale) if value
    end
  end.compact
end