angus-sdoc 0.0.1 → 0.0.2
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.
- data/lib/angus/base.rb +11 -0
- data/lib/angus/definitions/base.rb +18 -0
- data/lib/angus/definitions/glossary.rb +52 -0
- data/lib/angus/definitions/glossary_term.rb +37 -0
- data/lib/angus/definitions/message.rb +31 -0
- data/lib/angus/definitions/operation.rb +62 -0
- data/lib/angus/definitions/proxy_operation.rb +24 -0
- data/lib/angus/definitions/representation.rb +15 -0
- data/lib/angus/definitions/representation_field.rb +51 -0
- data/lib/angus/definitions/request_element.rb +61 -0
- data/lib/angus/definitions/response_element.rb +41 -0
- data/lib/angus/definitions/service.rb +118 -0
- data/lib/angus/definitions/uri_element.rb +20 -0
- data/lib/angus/definitions_reader.rb +305 -0
- data/lib/angus/definitions_utils.rb +72 -0
- data/lib/angus/exceptions/base.rb +1 -0
- data/lib/angus/exceptions/invalid_service_message.rb +32 -0
- data/lib/angus/sdoc/html_formatter.rb +42 -0
- data/lib/angus/sdoc/json_formatter.rb +317 -0
- data/lib/angus/sdoc/templates/doc.erb +295 -0
- data/lib/angus/sdoc/templates/styles.erb +70 -0
- data/lib/angus/sdoc/version.rb +3 -3
- data/lib/angus/sdoc.rb +5 -6
- metadata +169 -26
- data/.gitignore +0 -17
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -22
- data/README.md +0 -29
- data/Rakefile +0 -1
- data/angus-sdoc.gemspec +0 -23
data/lib/angus/base.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
end
|
4
|
+
end
|
5
|
+
|
6
|
+
require_relative 'definitions/base'
|
7
|
+
require_relative 'exceptions/base'
|
8
|
+
require_relative 'definitions_reader'
|
9
|
+
require_relative 'definitions_utils'
|
10
|
+
require_relative 'sdoc/json_formatter'
|
11
|
+
require_relative 'sdoc/html_formatter'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
module Definitions
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
require_relative 'service'
|
9
|
+
require_relative 'proxy_operation'
|
10
|
+
require_relative 'representation'
|
11
|
+
require_relative 'representation_field'
|
12
|
+
require_relative 'request_element'
|
13
|
+
require_relative 'response_element'
|
14
|
+
require_relative 'uri_element'
|
15
|
+
require_relative 'operation'
|
16
|
+
require_relative 'message'
|
17
|
+
require_relative 'glossary'
|
18
|
+
require_relative 'glossary_term'
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::Glossary
|
4
|
+
|
5
|
+
# @!attribute [rw] terms
|
6
|
+
# @return [GlossaryTerm] The terms of the glossary.
|
7
|
+
attr_accessor :terms
|
8
|
+
|
9
|
+
# Initializes a new Glossary and its terms.
|
10
|
+
#
|
11
|
+
# @param [Hash<String, Hash>] terms_hash The hash contains GlossaryTerm#short_name as the key
|
12
|
+
# and a hash containing GlossaryTerm#long_name and GlossaryTerm#description as a value.
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
#
|
16
|
+
# {'Glossary Term Name' =>
|
17
|
+
# {
|
18
|
+
# 'long_name' => 'Long name of the glossary term',
|
19
|
+
# 'description' => 'Description of the glossary term'
|
20
|
+
# }
|
21
|
+
# }
|
22
|
+
def initialize(terms_hash = {})
|
23
|
+
@terms = Angus::SDoc::Definitions::GlossaryTerm.build_from_hash(terms_hash)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a hash with short name as key and the term as the value.
|
27
|
+
#
|
28
|
+
# @return [Hash<String, GlossaryTerm>]
|
29
|
+
def terms_hash
|
30
|
+
hash = {}
|
31
|
+
|
32
|
+
@terms.each do |term|
|
33
|
+
hash[term.short_name] = term
|
34
|
+
end
|
35
|
+
|
36
|
+
hash
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns a hash with long name as key and the term as the value.
|
40
|
+
#
|
41
|
+
# @return [Hash<String, GlossaryTerm>]
|
42
|
+
def terms_hash_with_long_names
|
43
|
+
hash = {}
|
44
|
+
@terms.each do |term|
|
45
|
+
hash[term.long_name] = term
|
46
|
+
end
|
47
|
+
hash
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
# @attr [String] short_name The short name of the glossary term.
|
4
|
+
# @attr [String] long_name The long name of the glossary term.
|
5
|
+
# @attr [String] description The description of the glossary term.
|
6
|
+
class Definitions::GlossaryTerm < Struct.new(:short_name, :long_name, :description)
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
# Initialize multiple GlossaryTerm using the information in the hash parameter.
|
11
|
+
#
|
12
|
+
# @param [Hash] hash The Hash contains GlossaryTerm#short_name
|
13
|
+
# as key and other Hash with the other attributes of the GlossaryTerm as a value.
|
14
|
+
#
|
15
|
+
# @return [Array<GlossaryTerm>] The list of glossary terms.
|
16
|
+
def build_from_hash(hash = {})
|
17
|
+
hash.map do |sort_name, gt|
|
18
|
+
self.new(sort_name, gt['long_name'], gt['description'])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
# Check if an object is equals to the current instance.
|
25
|
+
#
|
26
|
+
# @param [GlossaryTerm] other The object to be compared.
|
27
|
+
#
|
28
|
+
# @return [Boolean] true if all the attributes are equal and false otherwise.
|
29
|
+
def == (other)
|
30
|
+
other.kind_of?(Definitions::GlossaryTerm) &&
|
31
|
+
self.short_name == other.short_name && self.long_name == other.long_name &&
|
32
|
+
self.description == other.description
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::Message
|
4
|
+
|
5
|
+
ERROR_LEVEL = 'error'
|
6
|
+
INFO_LEVEL = 'info'
|
7
|
+
WARNING_LEVEL = 'warning'
|
8
|
+
|
9
|
+
# @!attribute [rw] level
|
10
|
+
# @return [String] the level of the message. Possible values are the *_LEVEL constants.
|
11
|
+
attr_accessor :level
|
12
|
+
|
13
|
+
# @!attribute [rw] key
|
14
|
+
# @return [String] the key of the message. It is a human readable unique identifier.
|
15
|
+
# It has to start with Mayus and it has to be camelcase.
|
16
|
+
attr_accessor :key
|
17
|
+
|
18
|
+
# @!attribute [rw] description
|
19
|
+
# @return [String] the description of the message.
|
20
|
+
attr_accessor :description
|
21
|
+
|
22
|
+
# @!attribute [rw] status_code
|
23
|
+
# @return [String] the HTTP status code of the message.
|
24
|
+
attr_accessor :status_code
|
25
|
+
|
26
|
+
# @!attribute [rw] text
|
27
|
+
# @return [String] when set this text overrides all others and is set as the message description.
|
28
|
+
attr_accessor :text
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::Operation
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the operation.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] code_name
|
10
|
+
# @return [String] the code name of the message. It is a human readable unique identifier.
|
11
|
+
# It has to start with Mayus and it has to be camelcase.
|
12
|
+
attr_accessor :code_name
|
13
|
+
|
14
|
+
# @!attribute [rw] description
|
15
|
+
# @return [String] the description of the operation.
|
16
|
+
attr_accessor :description
|
17
|
+
|
18
|
+
# @!attribute [rw] path
|
19
|
+
# @return [String] the path of the operation.
|
20
|
+
attr_accessor :path
|
21
|
+
|
22
|
+
# @!attribute [rw] method
|
23
|
+
# @return [String] the HTTP method of the operation.
|
24
|
+
attr_accessor :method
|
25
|
+
|
26
|
+
# @!attribute [rw] messages
|
27
|
+
# @return [Hash<String, Message>] the messages associated with the operation.
|
28
|
+
attr_accessor :messages
|
29
|
+
|
30
|
+
# @!attribute [rw] uri_elements
|
31
|
+
# @return [Set<UriElement>] the uri elements of the operation.
|
32
|
+
attr_accessor :uri_elements
|
33
|
+
|
34
|
+
# @!attribute [rw] request_elements
|
35
|
+
# @return [Set<RequestElement>] the request elements of the operation.
|
36
|
+
attr_accessor :request_elements
|
37
|
+
|
38
|
+
# @!attribute [rw] response_elements
|
39
|
+
# @return [Set<ResponseElement>] the response elements of the operation.
|
40
|
+
attr_accessor :response_elements
|
41
|
+
|
42
|
+
def code_name
|
43
|
+
@code_name.split('.')[-1]
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns the first message that matches the given key and level.
|
47
|
+
#
|
48
|
+
# @param [String] key The key of the message.
|
49
|
+
# @param [String] level The level of the message.
|
50
|
+
# Possible values are the *_LEVEL constants from {Message}.
|
51
|
+
#
|
52
|
+
# @return [Message] the message or nil if no one matches.
|
53
|
+
def message(key, level)
|
54
|
+
return nil if self.messages.nil?
|
55
|
+
|
56
|
+
level &&= level.downcase
|
57
|
+
self.messages.find { |message| message.key == key && message.level.downcase == level }
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::ProxyOperation
|
4
|
+
|
5
|
+
# @!attribute [rw] code_name
|
6
|
+
# @return [String] the code name of the message. It is a human readable unique identifier.
|
7
|
+
# It has to start with Mayus and it has to be camelcase.
|
8
|
+
attr_accessor :code_name
|
9
|
+
|
10
|
+
# @!attribute [rw] path
|
11
|
+
# @return [String] the path of the operation.
|
12
|
+
attr_accessor :path
|
13
|
+
|
14
|
+
# @!attribute [rw] method
|
15
|
+
# @return [String] the HTTP method of the operation.
|
16
|
+
attr_accessor :method
|
17
|
+
|
18
|
+
# @!attribute [rw] service_name
|
19
|
+
# @return [String] the service name of the operation.
|
20
|
+
attr_accessor :service_name
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::Representation
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the representation.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] fields
|
10
|
+
# @return [Array<RepresentationField>] the fields of the representation.
|
11
|
+
attr_accessor :fields
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::RepresentationField
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the representation field.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] description
|
10
|
+
# @return [String] the description of the representation field.
|
11
|
+
attr_accessor :description
|
12
|
+
|
13
|
+
# @!attribute [rw] required
|
14
|
+
# @return [Boolean] indicates if the representation field is required or not.
|
15
|
+
attr_accessor :required
|
16
|
+
|
17
|
+
# @!attribute [rw] type
|
18
|
+
# @return [String] the type of the representation field.
|
19
|
+
# This attribute is used when the representation is a single object.
|
20
|
+
attr_accessor :type
|
21
|
+
|
22
|
+
# @!attribute [rw] elements_type
|
23
|
+
# @return [String] the elements type of the representation field.
|
24
|
+
# This attribute is used when the representation is a list of objects.
|
25
|
+
attr_accessor :elements_type
|
26
|
+
|
27
|
+
# @note if the elements_type attribute is different from nil, it means that the
|
28
|
+
# representation field is a list of objects. In that case, the type parameter
|
29
|
+
# is not considered.
|
30
|
+
def initialize(name = nil, description = nil, required = nil, type = nil, elements_type = nil)
|
31
|
+
self.name= name
|
32
|
+
self.description= description
|
33
|
+
self.required= required
|
34
|
+
self.type= type
|
35
|
+
self.elements_type= elements_type
|
36
|
+
end
|
37
|
+
|
38
|
+
# Check if an object is equals to the current instance.
|
39
|
+
#
|
40
|
+
# @param [RepresentationField] other The object to be compared.
|
41
|
+
#
|
42
|
+
# @return [Boolean] true if all the attributes are equal and false otherwise.
|
43
|
+
def == (other)
|
44
|
+
other.kind_of?(Definitions::RepresentationField) &&
|
45
|
+
self.name == other.name && self.description == other.description &&
|
46
|
+
self.required == other.required && self.type == other.type && self.elements_type == other.elements_type
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::RequestElement
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the request element.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] description
|
10
|
+
# @return [String] the description of the request element.
|
11
|
+
attr_accessor :description
|
12
|
+
|
13
|
+
# @!attribute [rw] required
|
14
|
+
# @return [Boolean] indicates if the request element is required or not.
|
15
|
+
attr_accessor :required
|
16
|
+
|
17
|
+
# @!attribute [rw] type
|
18
|
+
# @return [String] the type of the request element.
|
19
|
+
attr_accessor :type
|
20
|
+
|
21
|
+
# @!attribute [rw] constraints
|
22
|
+
# @return [Array<String>] the constraints of the request element.
|
23
|
+
attr_accessor :constraints
|
24
|
+
|
25
|
+
# @!attribute [rw] valid_values
|
26
|
+
# @return [Array<String>] the valid values of the request element.
|
27
|
+
attr_accessor :valid_values
|
28
|
+
|
29
|
+
# @!attribute [rw] elements_type
|
30
|
+
# @return [String] the elements type of the request element.
|
31
|
+
attr_accessor :elements_type
|
32
|
+
|
33
|
+
|
34
|
+
def initialize(name = nil, description = nil, required = nil, type = nil,
|
35
|
+
constraints = nil, valid_values = nil, elements_type = nil)
|
36
|
+
self.name= name if name
|
37
|
+
self.description= description if description
|
38
|
+
self.required= required if required
|
39
|
+
self.type= type if type
|
40
|
+
self.constraints= constraints if constraints
|
41
|
+
self.valid_values= valid_values if valid_values
|
42
|
+
self.elements_type= elements_type if elements_type
|
43
|
+
end
|
44
|
+
|
45
|
+
# Check if an object is equals to the current instance.
|
46
|
+
#
|
47
|
+
# @param [RequestElement] other The object to be compared.
|
48
|
+
#
|
49
|
+
# @return [Boolean] true if all the attributes are equal and false otherwise.
|
50
|
+
def == (other)
|
51
|
+
other.instance_of?(Definitions::RequestElement) &&
|
52
|
+
self.name == other.name && self.description == other.description &&
|
53
|
+
self.required == other.required && self.type == other.type &&
|
54
|
+
self.constraints == other.constraints &&
|
55
|
+
self.valid_values == other.valid_values &&
|
56
|
+
self.elements_type == other.elements_type
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::ResponseElement
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the response element.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] description
|
10
|
+
# @return [String] the description of the response element.
|
11
|
+
attr_accessor :description
|
12
|
+
|
13
|
+
# @!attribute [rw] required
|
14
|
+
# @return [Boolean] indicates if the response element is required or not.
|
15
|
+
attr_accessor :required
|
16
|
+
|
17
|
+
# @!attribute [rw] type
|
18
|
+
# @return [String] the type of the response element.
|
19
|
+
attr_accessor :type
|
20
|
+
|
21
|
+
# @!attribute [rw] default
|
22
|
+
# @return [String] the default value of the response element.
|
23
|
+
attr_accessor :default
|
24
|
+
|
25
|
+
# @!attribute [rw] elements_type
|
26
|
+
# @return [String] the elements type of the response element.
|
27
|
+
attr_accessor :elements_type
|
28
|
+
|
29
|
+
def initialize(name = nil, description = nil, required = nil, type = nil, default = nil,
|
30
|
+
elements_type = nil)
|
31
|
+
@name = name
|
32
|
+
@description = description
|
33
|
+
@required = required
|
34
|
+
@type = type
|
35
|
+
@default = default
|
36
|
+
@elements_type = elements_type
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::Service
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the sevice.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] code_name
|
10
|
+
# @return [String] the service code name is a unique identifier.
|
11
|
+
# It has to be human-readable and a valid literal identifier.
|
12
|
+
attr_accessor :code_name
|
13
|
+
|
14
|
+
# @!attribute [rw] version
|
15
|
+
# @return [String] the version of the sevice.
|
16
|
+
attr_accessor :version
|
17
|
+
|
18
|
+
# @!attribute [rw] messages
|
19
|
+
# @return [Hash<String, Message>] the messages associated with the service.
|
20
|
+
attr_accessor :messages
|
21
|
+
|
22
|
+
# @!attribute [rw] operations
|
23
|
+
# @return [Set<Operation>] the operations of the service.
|
24
|
+
attr_accessor :operations
|
25
|
+
|
26
|
+
# @!attribute [rw] proxy_operations
|
27
|
+
# @return [Set<ProxyOperation>] the proxy operations of the service.
|
28
|
+
attr_accessor :proxy_operations
|
29
|
+
|
30
|
+
# @!attribute [rw] representations
|
31
|
+
# @return [Set<Representation>] the representations of the service.
|
32
|
+
attr_accessor :representations
|
33
|
+
|
34
|
+
# @!attribute [rw] glossary
|
35
|
+
# @return [Glossary] the glossary of the service.
|
36
|
+
attr_accessor :glossary
|
37
|
+
|
38
|
+
def initialize
|
39
|
+
@messages = {}
|
40
|
+
@operations = Set.new
|
41
|
+
@representations = Set.new
|
42
|
+
@glossary = Angus::SDoc::Definitions::Glossary.new
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns the message that matches the given key and level.
|
46
|
+
#
|
47
|
+
# This method searches for messages in all the operations and returns
|
48
|
+
# the first message that matches.
|
49
|
+
#
|
50
|
+
# @param [#to_s] key The key of the message.
|
51
|
+
# @param [String] level The level of the message
|
52
|
+
# Possible values are the *_LEVEL constants from {Message}
|
53
|
+
#
|
54
|
+
# @return [Message] the message or nil if no one matches.
|
55
|
+
def message(key, level)
|
56
|
+
msg = nil
|
57
|
+
|
58
|
+
@operations.find do |operation|
|
59
|
+
msg = operation.message(key.to_s, level)
|
60
|
+
end
|
61
|
+
|
62
|
+
msg
|
63
|
+
end
|
64
|
+
|
65
|
+
# Merge the following definitions:
|
66
|
+
# - Operations.
|
67
|
+
# - Representations.
|
68
|
+
# - Messages.
|
69
|
+
#
|
70
|
+
# @note This method does not merge glossary terms.
|
71
|
+
#
|
72
|
+
# @param [Service] other The service to be merged.
|
73
|
+
def merge(other)
|
74
|
+
self.operations.merge!(other.operations)
|
75
|
+
self.representations += other.representations
|
76
|
+
|
77
|
+
self.messages.merge!(other.messages)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Returns the operation definition that matches with the given operation name.
|
81
|
+
#
|
82
|
+
# @param operation_code_name The operation code name.
|
83
|
+
#
|
84
|
+
# @return [Operation] The operation.
|
85
|
+
def operation_definition(namespace, operation_code_name)
|
86
|
+
@operations[namespace].find { |operation| operation.code_name == operation_code_name }
|
87
|
+
end
|
88
|
+
|
89
|
+
# Returns the proxy operations for a given service.
|
90
|
+
# @todo Does it receives the service or the service name?
|
91
|
+
# @todo Verify if this method is being called by remote-client and if it receives
|
92
|
+
# the service name.
|
93
|
+
# @param service The service name.
|
94
|
+
# @return [Array<ProxyOperation>] The proxy operations.
|
95
|
+
def proxy_operations_for(service)
|
96
|
+
self.proxy_operations.select do |op|
|
97
|
+
op.service_name == service
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Returns a hash with the representations.
|
102
|
+
# @example
|
103
|
+
# {
|
104
|
+
# key => rollback_payment_multi,
|
105
|
+
# value => {representation}
|
106
|
+
# }
|
107
|
+
# @return [Hash<String, Representation>] The representation hash.
|
108
|
+
def representations_hash
|
109
|
+
hash = {}
|
110
|
+
@representations.each do |representation|
|
111
|
+
hash[representation.name] = representation
|
112
|
+
end
|
113
|
+
hash
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Angus
|
2
|
+
module SDoc
|
3
|
+
class Definitions::UriElement
|
4
|
+
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @return [String] the name of the uri element.
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# @!attribute [rw] description
|
10
|
+
# @return [String] the description of the uri element.
|
11
|
+
attr_accessor :description
|
12
|
+
|
13
|
+
def initialize(name = nil, description = nil)
|
14
|
+
@name = name
|
15
|
+
@description = description
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|