Class: Lacerda::Conversion::DataStructure::Member

Inherits:
Object
  • Object
show all
Defined in:
lib/lacerda/conversion/data_structure/member.rb,
lib/lacerda/conversion/data_structure/member/type.rb

Defined Under Namespace

Classes: Type

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(member, scope) ⇒ Member

Returns a new instance of Member.



22
23
24
25
26
27
28
29
30
# File 'lib/lacerda/conversion/data_structure/member.rb', line 22

def initialize(member, scope)
  @description = member.dig('meta', 'description')
  @content = member['content']
  @name = Lacerda.underscore(@content['key']['content'])
  @attributes = member.dig('attributes', 'typeAttributes') || []
  @is_required = @attributes.include?('required')
  @type = Type.new(@content['value'], @is_required, @scope)
  @scope = scope
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/lacerda/conversion/data_structure/member.rb', line 7

def name
  @name
end

Class Method Details

.from_data_structure_content(data_structure_content, scope) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/lacerda/conversion/data_structure/member.rb', line 9

def self.from_data_structure_content(data_structure_content, scope)
  return [] if data_structure_content.nil?
  # In the case that you create a nested data structure when type == 'object', 
  # the possible_members can be just a Hash, instead of an array
  if data_structure_content.is_a?(Hash)
    data_structure_content = [data_structure_content] 
  end
  members = data_structure_content.select do |d|
    d['element'] == 'member'
  end
  members.map { |member| Member.new(member, scope) }
end

Instance Method Details

#required?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/lacerda/conversion/data_structure/member.rb', line 32

def required?
  @is_required
end

#specObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/lacerda/conversion/data_structure/member.rb', line 36

def spec
    spec = {}
    # We might have a description
    spec['description'] = @description
    spec.merge!(@type.to_hash)
    # Add the type of the array objects (if it is an array)
    spec['items'] = @type.array_type
      # If it's an object, we need recursion
    if @type.object?
      data_structure = DataStructure.new('tmp', [@content['value']], @scope).to_json
      spec['properties'] = data_structure['properties']
    end
    spec
end