class Seahorse::Model::Shapes::Structure
Attributes
member_names[R]
@return [Array<Symbol>] Returns a list of members names.
payload[R]
@return [String, nil] Returns the name of the payload member if set.
required[R]
@return [Array<Symbol>] Returns a list of required members names.
Public Class Methods
new(definition, options = {})
click to toggle source
Calls superclass method
Seahorse::Model::Shapes::Shape.new
# File lib/seahorse/model/shapes.rb, line 202 def initialize(definition, options = {}) super @members = {} @member_refs = {} @member_names = {} compute_member_names compute_required_member_names @member_names = @member_names.values end
Public Instance Methods
member(name)
click to toggle source
@param [Symbol] name @return [Shape]
# File lib/seahorse/model/shapes.rb, line 232 def member(name) if ref = @member_refs[name.to_sym] @members[name] ||= shape_for(ref) else raise ArgumentError, "no such member :#{name}" end end
member?(name)
click to toggle source
@param [Symbol] name @return [Boolean] Returns `true` if this structure has a member with
the given name.
# File lib/seahorse/model/shapes.rb, line 243 def member?(name) @member_refs.key?(name.to_sym) end
member_by_location_name(location_name)
click to toggle source
Searches the structure members for a shape with the given serialized name.
If found, the shape will be returned with its symbolized member name.
If no shape is found with the given serialized name, then nil is returned.
@example
name, shape = structure.member_by_location_name('SerializedName') name #=> :member_name shape #=> instance of Seahorse::Model::Shapes::Shape
@param [String] location_name @return [Array<Symbol,Shape>, nil]
# File lib/seahorse/model/shapes.rb, line 274 def member_by_location_name(location_name) @by_location_name ||= index_members_by_location_name @by_location_name[location_name] end
members()
click to toggle source
@return [Enumerable<Symbol,Shape>] Returns an enumerator that yields
member names and shapes.
# File lib/seahorse/model/shapes.rb, line 249 def members Enumerator.new do |y| member_names.map do |member_name| y.yield(member_name, member(member_name)) end end end
payload_member()
click to toggle source
@return [Shape, nil]
# File lib/seahorse/model/shapes.rb, line 222 def payload_member if payload @payload_member ||= member(payload) else nil end end
Private Instance Methods
compute_member_names()
click to toggle source
# File lib/seahorse/model/shapes.rb, line 287 def compute_member_names (definition['members'] || {}).each do |orig_name,ref| name = underscore(orig_name).to_sym if ref['location'] == 'headers' @member_refs[name] = ref else @member_refs[name] = { 'locationName' => orig_name }.merge(ref) end @member_names[orig_name] = name end @payload = @member_names[definition['payload']] if definition['payload'] end
compute_required_member_names()
click to toggle source
# File lib/seahorse/model/shapes.rb, line 300 def compute_required_member_names @required = (definition['required'] || []).map do |orig_name| @member_names[orig_name] end end
index_members_by_location_name()
click to toggle source
# File lib/seahorse/model/shapes.rb, line 281 def index_members_by_location_name members.each.with_object({}) do |(name, shape), hash| hash[shape.location_name] = [name, shape] end end