linked_rails 0.0.4.pre.g792a1b887 → 0.0.4.pre.g92825d924

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08ba6004f613d790e9e72373ab195c75e48cfbdc0b077ef2002a4407c1e6a4fb'
4
- data.tar.gz: 40b65c9ae53172a0104b23f011f5852f105977b2f1061838cc3f70c0176b0992
3
+ metadata.gz: 2dfbd0d96709d5036bcfcb422c88bf39e1c8c006ae4a4e5d6c8dfabc7d45cbb7
4
+ data.tar.gz: b5629f658ccf27bcd7ca9605d001668f55df2d5b311ce170a20c68a7cc895057
5
5
  SHA512:
6
- metadata.gz: c2cabf624d87d9cce473d3c7ccceb278c7b00caf46532e2a71a2ab814d0d0a9b69bbeceff6a23bb9d2532f8aba654133bb2f94f420bfe8be1e201ee19bf3dcae
7
- data.tar.gz: 8d6863da3650c6261802d1045e908a4d58adda4bce0f6d5db2833677aea6a69052e2025d461ee92d6d64361c34c18dfa13dd70efcbbff03b51e965b3d60be8a4
6
+ metadata.gz: bd523b32c77f3836257b1821b0a70fe4fcd9e6ab75bf39366501e75104aed3fe92ab9a690468051aacdace53ae5b79182642d3a55147da0d409f107fa47e1e7f
7
+ data.tar.gz: 220bac95f7fc0f3ca454e4dc7e6ca9953afc60e0e8230c497c22a8751cdc78a1c654760fa57908f2b4c716b382e308a371f104b8b48db027d081f4e1db3e8f3b
@@ -98,8 +98,6 @@ module LinkedRails
98
98
  params = param.permit(:include, :iri)
99
99
  params[:iri] = URI(params[:iri])
100
100
  params
101
- rescue URI::InvalidURIError
102
- params.except(:iri)
103
101
  end
104
102
 
105
103
  def resource_response_body(iri, rack_body, status)
@@ -163,17 +161,13 @@ module LinkedRails
163
161
 
164
162
  resource_response(
165
163
  iri,
166
- body: response_from_resource_body(include, iri, resource, status),
164
+ body: include && status == 200 ? resource_body(resource) : nil,
167
165
  cache: resource_cache_control(resource.try(:cacheable?), status, resource_policy),
168
166
  language: I18n.locale,
169
167
  status: status
170
168
  )
171
169
  end
172
170
 
173
- def response_from_resource_body(include, _iri, resource, status)
174
- include && status == 200 ? resource_body(resource) : nil
175
- end
176
-
177
171
  def term_from_vocab(iri)
178
172
  vocab = Vocab.for(iri)
179
173
  tag = iri.to_s.split(vocab.to_s).last
@@ -251,7 +245,7 @@ module LinkedRails
251
245
 
252
246
  def sanitized_relative_path(iri) # rubocop:disable Metrics/AbcSize
253
247
  iri.path = "#{iri.path}/" unless iri.path&.ends_with?('/')
254
- uri = URI(LinkedRails.iri.path.chomp('/').present? ? iri.to_s.split("#{LinkedRails.iri.path}/").last : iri)
248
+ uri = URI(LinkedRails.iri.path.present? ? iri.to_s.split("#{LinkedRails.iri.path}/").last : iri)
255
249
 
256
250
  [uri.path, uri.query].compact.join('?')
257
251
  end
@@ -61,17 +61,15 @@ module LinkedRails
61
61
  end
62
62
 
63
63
  def object
64
- object_from_var || resource
64
+ @object = list.instance_exec(&@object) if @object.respond_to?(:call)
65
+
66
+ @object || resource
65
67
  end
66
68
 
67
69
  def object_iri
68
70
  object&.iri&.anonymous? ? anonymous_object_iri : object&.iri
69
71
  end
70
72
 
71
- def object_root_relative_iri
72
- RDF::URI(object_iri.to_s.split(LinkedRails.iri.to_s).second)
73
- end
74
-
75
73
  def parent
76
74
  return @parent if instance_variable_defined?(:@parent)
77
75
 
@@ -154,12 +152,6 @@ module LinkedRails
154
152
  LinkedRails.translate(:action, :label, self)
155
153
  end
156
154
 
157
- def object_from_var
158
- return @object unless @object.respond_to?(:call)
159
-
160
- @object = list.instance_exec(&@object)
161
- end
162
-
163
155
  def policy_expired?
164
156
  @policy_expired ||= policy && resource_policy.try(:expired?)
165
157
  end
@@ -195,7 +187,7 @@ module LinkedRails
195
187
 
196
188
  def target_url_fallback # rubocop:disable Metrics/AbcSize
197
189
  base = (resource.try(:singular_resource?) ? resource.singular_iri : resource.iri).dup
198
- base.path = "#{base.path.chomp('/')}/#{target_path}" if target_path.present?
190
+ base.path = "#{base.path}/#{target_path}" if target_path.present?
199
191
  base.query = Rack::Utils.parse_nested_query(base.query).merge(target_query).to_param if target_query.present?
200
192
  base
201
193
  end
@@ -12,8 +12,8 @@ module LinkedRails
12
12
  alias parent action
13
13
  delegate :object, to: :action
14
14
 
15
- def root_relative_iri
16
- action.object_root_relative_iri
15
+ def iri
16
+ action.object_iri
17
17
  end
18
18
 
19
19
  class << self
@@ -30,10 +30,7 @@ module LinkedRails
30
30
 
31
31
  parent = parent_from_params!(params, user_context)
32
32
 
33
- object = parent&.object
34
- object.instance_variable_set(:@iri, parent.object_iri)
35
- object.instance_variable_set(:@root_relative_iri, parent.object_root_relative_iri)
36
- object
33
+ new(action: parent) if parent.object.anonymous_iri?
37
34
  end
38
35
  end
39
36
  end
@@ -8,9 +8,8 @@ module LinkedRails
8
8
  include LinkedRails::Model
9
9
 
10
10
  attr_accessor :collection, :filter
11
- delegate :apply_scope, :association_base, :association_class, :child_resource, :default_page_size, :display,
12
- :include_members,:parent, :policy, :total_page_count, :unfiltered_collection, :user_context,
13
- to: :collection
11
+ delegate :apply_scope, :association_base, :association_class, :default_page_size, :display, :include_members,
12
+ :parent, :policy, :total_page_count, :unfiltered_collection, :user_context, to: :collection
14
13
  delegate :count, to: :members
15
14
 
16
15
  alias id iri
@@ -43,7 +42,7 @@ module LinkedRails
43
42
  end
44
43
 
45
44
  def preview_includes
46
- include_members ? {members: {}, member_sequence: :members} : %i[member_sequence]
45
+ include_members ? {member_sequence: :members} : %i[member_sequence]
47
46
  end
48
47
 
49
48
  def title
@@ -76,19 +75,19 @@ module LinkedRails
76
75
  end
77
76
 
78
77
  def iris_from_scope?
79
- members_query.is_a?(ActiveRecord::Relation) && !polymorphic_collection?(members_query.klass)
78
+ members_query.is_a?(ActiveRecord::Relation) && !polymorphic_collection?
80
79
  end
81
80
 
82
81
  def members_array
83
82
  members_query.to_a
84
83
  end
85
84
 
86
- def polymorphic_collection?(klass)
87
- column = klass.inheritance_column
88
- polymorphic = klass.columns_hash.include?(column)
85
+ def polymorphic_collection?
86
+ column = association_class.inheritance_column
87
+ polymorphic = association_class.columns_hash.include?(column)
89
88
  return false unless polymorphic
90
89
 
91
- return true if klass.descends_from_active_record?
90
+ return true if association_class.descends_from_active_record?
92
91
 
93
92
  members_query.where_values_hash.include?(column) &&
94
93
  members_query.where_values_hash[column] != association_class.to_s
@@ -4,11 +4,7 @@ module LinkedRails
4
4
  class Form
5
5
  class Field
6
6
  class FileInput < Field
7
- attr_writer :max_size
8
-
9
- def max_size
10
- @max_size.respond_to?(:call) ? @max_size.call : @max_size
11
- end
7
+ attr_accessor :max_size
12
8
  end
13
9
  end
14
10
  end
@@ -52,7 +52,13 @@ module LinkedRails
52
52
  private
53
53
 
54
54
  def attr_column(name)
55
- model_class.column_for_attribute(name)
55
+ column_model =
56
+ if model_class.is_delegated_attribute?(name)
57
+ model_class.class_for_delegated_attribute(name)
58
+ else
59
+ model_class
60
+ end
61
+ column_model.column_for_attribute(name)
56
62
  end
57
63
 
58
64
  def attr_to_datatype # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
@@ -120,7 +120,7 @@ module LinkedRails
120
120
 
121
121
  def has_many(key, **opts)
122
122
  opts[:input_field] = Form::Field::AssociationInput
123
- opts[:max_count] ||= 99
123
+ opts[:max_count] = 99
124
124
  field(key, **opts)
125
125
  end
126
126
 
@@ -9,7 +9,9 @@ module LinkedRails
9
9
  Storage.hset(
10
10
  :persistent,
11
11
  :manifest,
12
- URL.as_href(LinkedRails.iri) => web_manifest.to_json
12
+ {
13
+ LinkedRails.iri.to_s => web_manifest.to_json
14
+ }
13
15
  )
14
16
  end
15
17
 
@@ -41,7 +43,7 @@ module LinkedRails
41
43
  def blob_preview_iri
42
44
  return unless ActiveStorage::Blob.service.present?
43
45
 
44
- "#{LinkedRails.iri(path: 'rails/active_storage/blobs/redirect')}/{signed_id}/preview"
46
+ LinkedRails.iri(path: 'rails/active_storage/blobs/redirect/{signed_id}/preview')
45
47
  end
46
48
 
47
49
  def blob_upload_iri
@@ -138,7 +140,7 @@ module LinkedRails
138
140
 
139
141
  def web_manifest_sw_section
140
142
  {
141
- src: "#{scope.chomp('/')}/sw.js",
143
+ src: "#{scope}/sw.js",
142
144
  scope: scope
143
145
  }
144
146
  end
@@ -161,19 +163,13 @@ module LinkedRails
161
163
 
162
164
  class << self
163
165
  def destroy(iri)
164
- Storage.hdel(:persistent, :manifest, URL.as_href(iri))
166
+ Storage.hdel(:persistent, :manifest, iri)
165
167
  end
166
168
 
167
169
  def move(from, to)
168
- Storage.hset(
169
- :persistent,
170
- :redirect_prefix,
171
- URL.as_href(from) => URL.as_href(to)
172
- )
170
+ data = Storage.hget(:persistent, :manifest, from)
173
171
 
174
- data = Storage.hget(:persistent, :manifest, URL.as_href(from))
175
-
176
- Storage.hset(:persistent, :manifest, URL.as_href(to), data) if data
172
+ Storage.hset(:persistent, :manifest, to, data) if data
177
173
 
178
174
  destroy(from)
179
175
  end
@@ -81,7 +81,7 @@ module LinkedRails
81
81
  parent = parent_from_params(params, user_context)
82
82
  return if parent.blank?
83
83
 
84
- parent.try(:menu_sequence)
84
+ parent.menu_sequence
85
85
  end
86
86
  end
87
87
  end
@@ -49,8 +49,9 @@ module LinkedRails
49
49
  end
50
50
 
51
51
  def menu_item(tag, options) # rubocop:disable Metrics/AbcSize
52
- return unless show_menu_item?(tag, options)
53
-
52
+ if options[:policy].present?
53
+ return unless resource_policy(options[:policy_resource]).send(options[:policy], *options[:policy_arguments])
54
+ end
54
55
  options[:label_params] ||= {}
55
56
  options[:label_params][:default] ||= ["menus.default.#{tag}".to_sym, tag.to_s.capitalize]
56
57
  options[:label] ||= default_label(tag, options)
@@ -59,10 +60,6 @@ module LinkedRails
59
60
  LinkedRails.menus_item_class.new(resource: resource, tag: tag, parent: self, **options)
60
61
  end
61
62
 
62
- def policy_verdict(policy, options)
63
- policy.send(options[:policy], *options[:policy_arguments])
64
- end
65
-
66
63
  def resource_policy(policy_resource)
67
64
  policy_resource ||= resource
68
65
  policy_resource = instance_exec(&policy_resource) if policy_resource.respond_to?(:call)
@@ -72,14 +69,6 @@ module LinkedRails
72
69
  @resource_policy[policy_resource] ||= Pundit.policy(user_context, policy_resource)
73
70
  end
74
71
 
75
- def show_menu_item?(_tag, options)
76
- return true if options[:policy].blank?
77
-
78
- policy = resource_policy(options[:policy_resource])
79
-
80
- policy_verdict(policy, options)
81
- end
82
-
83
72
  def iri_template
84
73
  base_template = resource.send(resource.try(:singular_resource?) ? :singular_iri_template : :iri_template)
85
74
 
@@ -8,7 +8,6 @@ module LinkedRails
8
8
  policy = Pundit.policy!(user_context, child_resource)
9
9
  verdict = policy.create?
10
10
  @message = policy.message
11
- @action_status = policy.action_status
12
11
  verdict
13
12
  end
14
13
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LinkedRails
4
+ module Actions
5
+ class ObjectSerializer < LinkedRails.serializer_parent_class
6
+ has_one :object, predicate: Vocab.owl.sameAs
7
+ end
8
+ end
9
+ end
@@ -17,7 +17,6 @@ module LinkedRails
17
17
  has_one :collection, predicate: Vocab.as.partOf
18
18
  has_one :unfiltered_collection, predicate: Vocab.ontola[:baseCollection]
19
19
  has_one :member_sequence, predicate: Vocab.as.items
20
- has_many :members
21
20
  end
22
21
  end
23
22
  end
@@ -8,7 +8,7 @@ module LinkedRails
8
8
  resource: iri,
9
9
  resourceType: resource_type
10
10
  }
11
- id = Storage.xadd(:stream, LinkedRails.cache_stream, entry)
11
+ id = Storage.xadd(:stream, entry)
12
12
 
13
13
  raise('No message id returned, implies failure') if id.blank?
14
14
  end
@@ -8,9 +8,7 @@ module LinkedRails
8
8
  end
9
9
 
10
10
  def invalidate_collection_delta(collection)
11
- iri = collection.is_a?(RDF::Resource) ? collection : collection.iri
12
-
13
- [Vocab.sp[:Variable], Vocab.ontola[:baseCollection], iri, delta_iri(:invalidate)]
11
+ [Vocab.sp[:Variable], Vocab.ontola[:baseCollection], collection.iri, delta_iri(:invalidate)]
14
12
  end
15
13
 
16
14
  def invalidate_parent_collections_delta(resource)
@@ -58,10 +58,7 @@ module LinkedRails
58
58
  end
59
59
 
60
60
  def new_resource_from_parent
61
- if requested_resource.is_a?(LinkedRails.collection_class) ||
62
- requested_resource.is_a?(LinkedRails.collection_view_class)
63
- return requested_resource.child_resource
64
- end
61
+ return requested_resource.child_resource if requested_resource.is_a?(Collection)
65
62
 
66
63
  parent_resource.build_child(
67
64
  controller_class,
@@ -38,7 +38,7 @@ module LinkedRails
38
38
  params = Rails.application.routes.recognize_path(iri.to_s, method: method)
39
39
 
40
40
  route_params_to_opts(params.merge(query), iri.to_s)
41
- rescue ActionController::RoutingError, SystemStackError
41
+ rescue ActionController::RoutingError
42
42
  EMPTY_IRI_OPTS.dup
43
43
  end
44
44
 
@@ -17,6 +17,8 @@ module LinkedRails
17
17
  true
18
18
  end
19
19
 
20
+ private
21
+
20
22
  def publish_create
21
23
  publish_message('io.ontola.transactions.Created')
22
24
  end
@@ -29,14 +31,14 @@ module LinkedRails
29
31
  publish_message('io.ontola.transactions.Deleted')
30
32
  end
31
33
 
32
- private
33
-
34
34
  def publish_message(type)
35
35
  LinkedRails::InvalidationStreamWorker.perform_now(type, iri.to_s, self.class.iri.to_s)
36
36
  rescue StandardError
37
37
  LinkedRails::InvalidationStreamWorker.perform_later(type, iri.to_s, self.class.iri.to_s)
38
38
  end
39
39
 
40
+ private
41
+
40
42
  def should_publish_changes
41
43
  cacheable? && !Rails.env.test?
42
44
  end
@@ -70,9 +70,7 @@ module LinkedRails
70
70
 
71
71
  module ClassMethods
72
72
  def collection_iri(**opts)
73
- fragment = opts.delete(:fragment)
74
-
75
- LinkedRails.iri(path: collection_root_relative_iri(**opts), fragment: fragment)
73
+ LinkedRails.iri(path: collection_root_relative_iri(**opts))
76
74
  end
77
75
 
78
76
  # Sets the defaults for all collections for this class.
@@ -10,7 +10,7 @@ module LinkedRails
10
10
  end
11
11
 
12
12
  def anonymous_iri?
13
- self.class < ActiveRecord::Base && new_record? && @iri.blank?
13
+ self.class < ActiveRecord::Base && new_record?
14
14
  end
15
15
 
16
16
  # @return [RDF::URI].
@@ -44,12 +44,7 @@ module LinkedRails
44
44
 
45
45
  # @return [RDF::URI]
46
46
  def root_relative_iri(**opts)
47
- return @root_relative_iri if opts.blank? && @root_relative_iri.present?
48
-
49
- root_relative_iri = RDF::URI(expand_iri_template(**iri_opts.merge(opts)))
50
- @root_relative_iri = root_relative_iri if opts.blank?
51
-
52
- root_relative_iri
47
+ RDF::URI(expand_iri_template(**iri_opts.merge(opts)))
53
48
  end
54
49
 
55
50
  # @return [String, Symbol]
@@ -67,7 +62,6 @@ module LinkedRails
67
62
  iri = root_relative_iri.dup
68
63
  iri.scheme = LinkedRails.scheme
69
64
  iri.host = LinkedRails.host
70
- iri.path = iri.path.presence || '/'
71
65
  iri
72
66
  end
73
67
 
@@ -118,13 +118,9 @@ module LinkedRails
118
118
  end
119
119
 
120
120
  def parse_attribute(klass, field_options, value)
121
- [field_options.key, parse_attribute_value(klass, field_options, value)]
122
- end
123
-
124
- def parse_attribute_value(klass, field_options, value)
125
- return nil if value == Vocab.libro[:null]
121
+ parsed_value = parse_enum_attribute(klass, field_options.key, value) || value
126
122
 
127
- (parse_enum_attribute(klass, field_options.key, value) || value).to_s
123
+ [field_options.key, parsed_value.to_s]
128
124
  end
129
125
 
130
126
  def parse_enum_attribute(klass, key, value)
@@ -137,15 +133,9 @@ module LinkedRails
137
133
 
138
134
  def parse_iri_param(iri, reflection)
139
135
  key = foreign_key_for_reflection(reflection)
140
- return unless key
136
+ value = parse_iri_param_value(iri, reflection) if key
141
137
 
142
- if iri == Vocab.libro[:null]
143
- [key, nil]
144
- else
145
- value = parse_iri_param_value(iri, reflection)
146
-
147
- [key, value.to_s] if value
148
- end
138
+ [key, value.to_s] if value
149
139
  end
150
140
 
151
141
  def parse_iri_param_value(iri, reflection)
@@ -15,10 +15,10 @@ module LinkedRails
15
15
 
16
16
  module ClassMethods
17
17
  def action_triples(object, _params)
18
- if named_object?(object) || object.try(:singular_resource?)
19
- object.try(:action_triples) || []
20
- else
18
+ if object.iri.anonymous? && !object.try(:singular_resource?)
21
19
  []
20
+ else
21
+ object.try(:action_triples) || []
22
22
  end
23
23
  end
24
24
  end
@@ -115,13 +115,7 @@ module LinkedRails
115
115
  collection_name = "#{name.to_s.singularize}_collection"
116
116
  opts[:association] ||= name
117
117
  opts[:polymorphic] ||= true
118
-
119
- action_object = opts.delete(:action_object)
120
- opts[:if] ||= -> (object) {
121
- return action_object if object.iri.try(:path)&.end_with?('/action_object')
122
-
123
- named_object?(object)
124
- }
118
+ opts[:if] ||= method(:named_object?)
125
119
 
126
120
  collection_opts = {}
127
121
  collection_opts[:page_size] = opts.delete(:page_size) if opts.key?(:page_size)
@@ -4,27 +4,26 @@ require 'redis'
4
4
 
5
5
  module LinkedRails
6
6
  class Storage
7
- REDIS_DB = {
8
- cache: LinkedRails.cache_redis_database,
9
- persistent: LinkedRails.persistent_redis_database,
10
- stream: LinkedRails.stream_redis_database
7
+ CLIENT = {
8
+ cache: Redis.new(db: LinkedRails.cache_redis_database),
9
+ persistent: Redis.new(db: LinkedRails.persistent_redis_database),
10
+ stream: Redis.new(db: LinkedRails.stream_redis_database)
11
11
  }.freeze
12
12
  KEYS = {
13
13
  manifest: 'cache:Manifest',
14
- redirect_exact: 'cache:Redirect:Exact',
15
- redirect_prefix: 'cache:Redirect:Prefix'
14
+ redirect: 'cache:Redirect'
16
15
  }.freeze
17
16
 
18
17
  class << self
19
18
  %i[xadd].each do |method|
20
19
  define_method(method) do |db, *args|
21
- Redis.new(db: REDIS_DB.fetch(db)).send(method, *args)
20
+ CLIENT.fetch(db).send(method, *args)
22
21
  end
23
22
  end
24
23
 
25
24
  %i[hset hdel hget].each do |method|
26
25
  define_method(method) do |db, key, *args|
27
- Redis.new(db: REDIS_DB.fetch(db)).send(method, KEYS.fetch(key), *args)
26
+ CLIENT.fetch(db).send(method, KEYS.fetch(key), *args)
28
27
  end
29
28
  end
30
29
  end
data/lib/linked_rails.rb CHANGED
@@ -54,10 +54,8 @@ module LinkedRails
54
54
  @@scheme ||= Rails.application.routes.default_url_options[:protocol] || :http # rubocop:disable Style/ClassVars
55
55
  end
56
56
 
57
- def iri(**args)
58
- opts = {scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(args)
59
- opts[:path] = opts[:path].presence || '/'
60
- RDF::URI.new(**opts)
57
+ def iri(**opts)
58
+ RDF::URI.new(**{scheme: LinkedRails.scheme, host: LinkedRails.host}.merge(opts))
61
59
  end
62
60
  end
63
61
 
@@ -108,5 +106,4 @@ require 'linked_rails/routes'
108
106
  require 'linked_rails/serializer'
109
107
  require 'linked_rails/translate'
110
108
  require 'linked_rails/railtie'
111
- require 'linked_rails/url'
112
109
  require 'linked_rails/storage'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.pre.g792a1b887
4
+ version: 0.0.4.pre.g92825d924
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Dingemans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-09 00:00:00.000000000 Z
11
+ date: 2022-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_response
@@ -305,6 +305,7 @@ files:
305
305
  - app/policies/linked_rails/ontology_policy.rb
306
306
  - app/policies/linked_rails/sequence_policy.rb
307
307
  - app/serializers/linked_rails/actions/item_serializer.rb
308
+ - app/serializers/linked_rails/actions/object_serializer.rb
308
309
  - app/serializers/linked_rails/collection/filter_field_serializer.rb
309
310
  - app/serializers/linked_rails/collection/filter_option_serializer.rb
310
311
  - app/serializers/linked_rails/collection/filter_serializer.rb
@@ -428,7 +429,6 @@ files:
428
429
  - lib/linked_rails/translate.rb
429
430
  - lib/linked_rails/types/iri_type.rb
430
431
  - lib/linked_rails/uri_template.rb
431
- - lib/linked_rails/url.rb
432
432
  - lib/linked_rails/version.rb
433
433
  - lib/linked_rails/vocab.rb
434
434
  - lib/nill_class_renderer.rb
@@ -1,11 +0,0 @@
1
- module LinkedRails
2
- class URL
3
- class << self
4
- def as_href(url)
5
- uri = URI(url)
6
- uri.path = uri.path.presence || '/'
7
- uri.to_s
8
- end
9
- end
10
- end
11
- end