occi-core 4.2.2 → 4.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -201,7 +201,7 @@ module Occi
201
201
 
202
202
  text << @attributes.to_text
203
203
 
204
- @actions.each { |action| text << "\nLink: <#{self.location}?action=#{action.term}>;rel=#{action.to_s}" }
204
+ @actions.each { |action| text << "\nLink: <#{self.location}?action=#{action.term}>;rel=#{action.to_s.inspect}" }
205
205
 
206
206
  text
207
207
  end
@@ -221,7 +221,7 @@ module Occi
221
221
  header['X-OCCI-Attribute'] = attributes unless attributes.blank?
222
222
 
223
223
  links = []
224
- @actions.each { |action| links << "<#{self.location}?action=#{action.term}>;rel=#{action.to_s}" }
224
+ @actions.each { |action| links << "<#{self.location}?action=#{action.term}>;rel=#{action.to_s.inspect}" }
225
225
  header['Link'] = links.join(',') if links.any?
226
226
 
227
227
  header
@@ -77,7 +77,7 @@ module Occi
77
77
  string << ";rel=#{@rel.to_s.inspect}"
78
78
  string << ";self=#{self.location.inspect}" if self.location
79
79
 
80
- categories = [@kind] + @mixins.join(',').split(',')
80
+ categories = [@kind.type_identifier].concat(@mixins.to_a.collect { |m| m.type_identifier })
81
81
  string << ";category=#{categories.join(' ').inspect}"
82
82
 
83
83
  string << @attributes.to_string
@@ -32,7 +32,7 @@ module Occi
32
32
  # @param kind [Occi::Core::Mixin, String] Mixin or Type Identifier of a Mixin where relation should be checked.
33
33
  # @return [true,false]
34
34
  def related_to?(mixin)
35
- self.to_s == mixin.to_s || self.related.include?(mixin.to_s)
35
+ self.to_s == mixin.to_s || self.related.any? { |m| m.type_identifier == mixin.to_s }
36
36
  end
37
37
 
38
38
  def location
@@ -40,7 +40,7 @@ module Occi
40
40
  end
41
41
 
42
42
  def related
43
- self.depends.to_a.concat(self.applies.to_a).uniq
43
+ self.depends.to_a
44
44
  end
45
45
 
46
46
  # @param [Hash] options
@@ -65,7 +65,7 @@ module Occi
65
65
  # @return [Hash] hash containing the HTTP headers of the text/occi rendering
66
66
  def to_header
67
67
  header = super
68
- header['Links'] = @links.collect {|link| link.to_string }.join(',') if @links.any?
68
+ header['Link'] = @links.collect {|link| link.to_string }.join(',') if @links.any?
69
69
  header
70
70
  end
71
71
 
@@ -106,7 +106,7 @@ module Occi
106
106
  term = match[:term].downcase
107
107
  scheme = match[:scheme]
108
108
  title = match[:title]
109
- related = match[:rel].to_s.split
109
+ related = match[:rel].to_s.split(/\s+/)
110
110
 
111
111
  attributes = Occi::Core::Attributes.new
112
112
  if match[:attributes]
@@ -20,6 +20,8 @@ module Occi
20
20
  REGEXP_TYPE_IDENTIFIER = /#{REGEXP_SCHEME}#{REGEXP_TERM}/
21
21
  REGEXP_TYPE_IDENTIFIER_STRICT = /#{REGEXP_SCHEME}#{REGEXP_TERM_STRICT}/
22
22
  REGEXP_CLASS = /\b(?<!\|)action(?!\|)\b|\b(?<!\|)mixin(?!\|)\b|\b(?<!\|)kind(?!\|)\b/
23
+ REGEXP_TYPE_IDENTIFIER_LIST = /#{REGEXP_TYPE_IDENTIFIER}(\s+#{REGEXP_TYPE_IDENTIFIER})*/
24
+ REGEXP_TYPE_IDENTIFIER_LIST_STRICT = /#{REGEXP_TYPE_IDENTIFIER_STRICT}(\s+#{REGEXP_TYPE_IDENTIFIER_STRICT})*/
23
25
 
24
26
  REGEXP_ATTR_COMPONENT = /#{REGEXP_LOALPHA}(#{REGEXP_LOALPHA}|#{REGEXP_DIGIT}|-|_)*/
25
27
  REGEXP_ATTRIBUTE_NAME = /#{REGEXP_ATTR_COMPONENT}(\.#{REGEXP_ATTR_COMPONENT})*/
@@ -44,7 +46,7 @@ module Occi
44
46
  ";\\s*scheme=\"(?<scheme>#{REGEXP_SCHEME})#{REGEXP_TERM}?\"" << # scheme (mandatory)
45
47
  ";\\s*class=\"?(?<class>#{REGEXP_CLASS})\"?" << # class (mandatory)
46
48
  "(;\\s*title=\"(?<title>#{REGEXP_QUOTED_STRING})\")?" << # title (optional)
47
- "(;\\s*rel=\"(?<rel>#{REGEXP_TYPE_IDENTIFIER})\")?"<< # rel (optional)
49
+ "(;\\s*rel=\"(?<rel>#{REGEXP_TYPE_IDENTIFIER_LIST})\")?"<< # rel (optional)
48
50
  "(;\\s*location=\"(?<location>#{URI::URI_REF})\")?" << # location (optional)
49
51
  "(;\\s*attributes=\"(?<attributes>#{REGEXP_ATTRIBUTE_LIST})\")?" << # attributes (optional)
50
52
  "(;\\s*actions=\"(?<actions>#{REGEXP_ACTION_LIST})\")?" << # actions (optional)
@@ -53,7 +55,7 @@ module Occi
53
55
  ";\\s*scheme=\"(?<scheme>#{REGEXP_SCHEME})\"" << # scheme (mandatory)
54
56
  ";\\s*class=\"(?<class>#{REGEXP_CLASS})\"" << # class (mandatory)
55
57
  "(;\\s*title=\"(?<title>#{REGEXP_QUOTED_STRING})\")?" << # title (optional)
56
- "(;\\s*rel=\"(?<rel>#{REGEXP_TYPE_IDENTIFIER_STRICT})\")?"<< # rel (optional)
58
+ "(;\\s*rel=\"(?<rel>#{REGEXP_TYPE_IDENTIFIER_LIST_STRICT})\")?"<< # rel (optional)
57
59
  "(;\\s*location=\"(?<location>#{URI::URI_REF})\")?" << # location (optional)
58
60
  "(;\\s*attributes=\"(?<attributes>#{REGEXP_ATTRIBUTE_LIST})\")?" << # attributes (optional)
59
61
  "(;\\s*actions=\"(?<actions>#{REGEXP_ACTION_LIST_STRICT})\")?" << # actions (optional)
data/lib/occi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Occi
2
- VERSION = "4.2.2" unless defined?(::Occi::VERSION)
2
+ VERSION = "4.2.3" unless defined?(::Occi::VERSION)
3
3
  end
@@ -145,7 +145,7 @@ X-OCCI-Attribute: occi.core.id="baf1"|
145
145
  Category: mymixin;scheme="http://example.com/mynamespace#";class="mixin"
146
146
  X-OCCI-Attribute: occi.core.id="baf1"
147
147
  X-OCCI-Attribute: occi.core.title="TestTitle"
148
- Link: </TestLoc/1?action=testaction>;rel=http://schemas.ogf.org/occi/core/entity/action#testaction|
148
+ Link: </TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entity/action#testaction"|
149
149
  expect(entity.to_text).to eq(expected)
150
150
  end
151
151
  end
@@ -168,7 +168,7 @@ Link: </TestLoc/1?action=testaction>;rel=http://schemas.ogf.org/occi/core/entity
168
168
  expected = Hashie::Mash.new
169
169
  expected['Category'] = 'entity;scheme="http://schemas.ogf.org/occi/core#";class="kind",mymixin;scheme="http://example.com/mynamespace#";class="mixin"'
170
170
  expected['X-OCCI-Attribute'] = 'occi.core.id="baf1",occi.core.title="TestTitle"'
171
- expected['Link'] = '</TestLoc/1?action=testaction>;rel=http://schemas.ogf.org/occi/core/entity/action#testaction'
171
+ expected['Link'] = '</TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entity/action#testaction"'
172
172
 
173
173
  expect(entity.to_header).to eql(expected)
174
174
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: occi-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -276,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
276
  version: '0'
277
277
  segments:
278
278
  - 0
279
- hash: 118686830744215401
279
+ hash: 3508725164324827292
280
280
  requirements: []
281
281
  rubyforge_project:
282
282
  rubygems_version: 1.8.25