occi-core 5.0.0.beta.5 → 5.0.0.beta.6
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 +4 -4
- data/.travis.yml +4 -5
- data/Rakefile +4 -1
- data/lib/occi/core/renderers/json/base.rb +2 -2
- data/lib/occi/core/renderers/json/collection.rb +15 -6
- data/lib/occi/core/renderers/text/base.rb +4 -0
- data/lib/occi/core/renderers/text/collection.rb +18 -10
- data/lib/occi/core/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa9a61e70441d1bb4ab60fab3f894e2d3086c1f9
|
4
|
+
data.tar.gz: f8ecee4038e193c81a46dd410e474e8e82f4eaaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc42e510f55fb2f60baaeef56e223bc4d4a4e70f6e715a5e8dae91ed63bef410120a43ca56620eb53656c8aa65ed9fda11e4a06d6dcc48823c854482115de128
|
7
|
+
data.tar.gz: 56318eebcada2880af308767c224f362e03a514c743bd0ba1f3963467269a5f1aafd04b74f52d2acc935547a6e58fa9f0f6cebb51a95f66b0592765335e92896
|
data/.travis.yml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 2.2.
|
5
|
-
- 2.3.
|
6
|
-
- 2.4.
|
4
|
+
- 2.2.7
|
5
|
+
- 2.3.4
|
6
|
+
- 2.4.1
|
7
7
|
- ruby-head
|
8
8
|
|
9
9
|
matrix:
|
@@ -14,13 +14,12 @@ matrix:
|
|
14
14
|
branches:
|
15
15
|
only:
|
16
16
|
- master
|
17
|
-
- 4.3.x
|
18
17
|
- next
|
19
18
|
|
20
19
|
env:
|
21
20
|
- ON_TRAVIS_CI=yes
|
22
21
|
|
23
|
-
install: 'gem install bundler -v ">= 1.
|
22
|
+
install: 'gem install bundler -v ">= 1.15" && bundle install --retry=10'
|
24
23
|
|
25
24
|
script: 'bundle exec rake acceptance'
|
26
25
|
|
data/Rakefile
CHANGED
@@ -12,7 +12,10 @@ task spec: 'rcov:all'
|
|
12
12
|
|
13
13
|
Gem::Tasks.new(build: { tar: true, zip: true }, sign: { checksum: true, pgp: false })
|
14
14
|
|
15
|
-
|
15
|
+
desc 'Execute rubocop -D'
|
16
|
+
RuboCop::RakeTask.new(:rubocop) do |t|
|
17
|
+
t.options = ['-D'] # display cop name
|
18
|
+
end
|
16
19
|
|
17
20
|
YARD::Rake::YardocTask.new do |t|
|
18
21
|
t.stats_options = ['--list-undoc']
|
@@ -18,8 +18,8 @@ module Occi
|
|
18
18
|
# Shortcuts to interesting object attributes, always prefixed with `object_`
|
19
19
|
DELEGATED = %i[
|
20
20
|
respond_to? send source target summary kind parent action
|
21
|
-
attributes actions mixins depends applies
|
22
|
-
links action_instances
|
21
|
+
attributes actions mixins depends applies rel empty?
|
22
|
+
categories entities resources links action_instances
|
23
23
|
].freeze
|
24
24
|
delegate(*DELEGATED, to: :object, prefix: true)
|
25
25
|
|
@@ -14,12 +14,11 @@ module Occi
|
|
14
14
|
class Collection < Model
|
15
15
|
# :nodoc:
|
16
16
|
def render_hash
|
17
|
-
return {} if object_empty?
|
18
|
-
return super if object.only_categories?
|
17
|
+
return {} if object_empty? || object.only_categories?
|
19
18
|
|
20
|
-
if
|
19
|
+
if ent_no_ai?
|
21
20
|
render_entities_hash
|
22
|
-
elsif
|
21
|
+
elsif ai_no_ent?
|
23
22
|
render_action_instances_hash
|
24
23
|
else
|
25
24
|
raise Occi::Core::Errors::RenderingError, 'Cannot render mixed collection to JSON'
|
@@ -29,10 +28,10 @@ module Occi
|
|
29
28
|
# :nodoc:
|
30
29
|
def render_entities_hash
|
31
30
|
hsh = {}
|
32
|
-
|
31
|
+
if object_resources.any?
|
33
32
|
hsh[:resources] = object_resources.collect { |r| Resource.new(r, options).render_hash }
|
34
33
|
end
|
35
|
-
|
34
|
+
if object_links.any?
|
36
35
|
hsh[:links] = object_links.collect { |r| Link.new(r, options).render_hash }
|
37
36
|
end
|
38
37
|
hsh
|
@@ -45,6 +44,16 @@ module Occi
|
|
45
44
|
end
|
46
45
|
ActionInstance.new(object_action_instances.first, options).render_hash
|
47
46
|
end
|
47
|
+
|
48
|
+
# :nodoc:
|
49
|
+
def ent_no_ai?
|
50
|
+
object_entities.any? && object_action_instances.empty?
|
51
|
+
end
|
52
|
+
|
53
|
+
# :nodoc:
|
54
|
+
def ai_no_ent?
|
55
|
+
object_action_instances.any? && object_entities.empty?
|
56
|
+
end
|
48
57
|
end
|
49
58
|
end
|
50
59
|
end
|
@@ -18,6 +18,10 @@ module Occi
|
|
18
18
|
|
19
19
|
attr_accessor :object, :options
|
20
20
|
|
21
|
+
# Shortcuts to interesting object attributes, always prefixed with `object_`
|
22
|
+
DELEGATED = %i[send empty? categories entities resources links action_instances].freeze
|
23
|
+
delegate(*DELEGATED, to: :object, prefix: true)
|
24
|
+
|
21
25
|
# Constructs a renderer instance for the given
|
22
26
|
# object.
|
23
27
|
#
|
@@ -16,12 +16,11 @@ module Occi
|
|
16
16
|
#
|
17
17
|
# @return [String] textual representation of Object
|
18
18
|
def render_plain
|
19
|
-
return '' if object.
|
20
|
-
return super if object.only_categories?
|
19
|
+
return '' if object_empty? || object.only_categories?
|
21
20
|
|
22
|
-
if
|
21
|
+
if ent_no_ai?
|
23
22
|
prepare_instances 'entities'
|
24
|
-
elsif
|
23
|
+
elsif ai_no_ent?
|
25
24
|
prepare_instances 'action_instances'
|
26
25
|
else
|
27
26
|
raise Occi::Core::Errors::RenderingError,
|
@@ -34,12 +33,11 @@ module Occi
|
|
34
33
|
#
|
35
34
|
# @return [Hash] textual representation of Object for headers
|
36
35
|
def render_headers
|
37
|
-
return {} if object.
|
38
|
-
return super if object.only_categories?
|
36
|
+
return {} if object_empty? || object.only_categories?
|
39
37
|
|
40
|
-
if
|
38
|
+
if ent_no_ai?
|
41
39
|
prepare_instances 'entities'
|
42
|
-
elsif
|
40
|
+
elsif ai_no_ent?
|
43
41
|
prepare_instances 'action_instances'
|
44
42
|
else
|
45
43
|
raise Occi::Core::Errors::RenderingError,
|
@@ -51,12 +49,22 @@ module Occi
|
|
51
49
|
|
52
50
|
# :nodoc:
|
53
51
|
def prepare_instances(type)
|
54
|
-
if
|
52
|
+
if object_send(type).count > 1
|
55
53
|
raise Occi::Core::Errors::RenderingError,
|
56
54
|
"Cannot render collection with multiple #{type.tr('_', ' ')} to text"
|
57
55
|
end
|
58
56
|
|
59
|
-
Occi::Core::Renderers::TextRenderer.render
|
57
|
+
Occi::Core::Renderers::TextRenderer.render object_send(type).first, options
|
58
|
+
end
|
59
|
+
|
60
|
+
# :nodoc:
|
61
|
+
def ent_no_ai?
|
62
|
+
object_entities.any? && object_action_instances.empty?
|
63
|
+
end
|
64
|
+
|
65
|
+
# :nodoc:
|
66
|
+
def ai_no_ent?
|
67
|
+
object_action_instances.any? && object_entities.empty?
|
60
68
|
end
|
61
69
|
end
|
62
70
|
end
|
data/lib/occi/core/version.rb
CHANGED
@@ -3,7 +3,7 @@ module Occi
|
|
3
3
|
MAJOR_VERSION = 5 # Major update constant
|
4
4
|
MINOR_VERSION = 0 # Minor update constant
|
5
5
|
PATCH_VERSION = 0 # Patch/Fix version constant
|
6
|
-
STAGE_VERSION = 'beta.
|
6
|
+
STAGE_VERSION = 'beta.6'.freeze # use `nil` for production releases
|
7
7
|
|
8
8
|
unless defined?(::Occi::Core::VERSION)
|
9
9
|
VERSION = [
|
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: 5.0.0.beta.
|
4
|
+
version: 5.0.0.beta.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boris Parak
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-07-
|
13
|
+
date: 2017-07-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|
@@ -571,7 +571,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
571
571
|
version: 1.3.1
|
572
572
|
requirements: []
|
573
573
|
rubyforge_project:
|
574
|
-
rubygems_version: 2.6.
|
574
|
+
rubygems_version: 2.6.12
|
575
575
|
signing_key:
|
576
576
|
specification_version: 4
|
577
577
|
summary: The rOCCI toolkit
|