class Seahorse::Model::Shapes::Structure
def compute_member_names
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
def compute_required_member_names
def compute_required_member_names @required = (definition['required'] || []).map do |orig_name| @member_names[orig_name] end end
def index_members_by_location_name
def index_members_by_location_name members.each.with_object({}) do |(name, shape), hash| hash[shape.location_name] = [name, shape] end end
def initialize(definition, options = {})
def initialize(definition, options = {}) super @members = {} @member_refs = {} @member_names = {} compute_member_names compute_required_member_names @member_names = @member_names.values end
def member(name)
-
(Shape)
-
Parameters:
-
name
(Symbol
) --
def member(name) if ref = @member_refs[name.to_sym] @members[name] ||= shape_for(ref) else raise ArgumentError, "no such member :#{name}" end end
def member?(name)
-
(Boolean)
- Returns `true` if this structure has a member with
Parameters:
-
name
(Symbol
) --
def member?(name) @member_refs.key?(name.to_sym) end
def member_by_location_name(location_name)
-
(Array
-, nil)
Parameters:
-
location_name
(String
) --
def member_by_location_name(location_name) @by_location_name ||= index_members_by_location_name @by_location_name[location_name] end
def members
-
(Enumerable
- Returns an enumerator that yields)
def members Enumerator.new do |y| member_names.map do |member_name| y.yield(member_name, member(member_name)) end end end
def payload_member
-
(Shape, nil)
-
def payload_member if payload @payload_member ||= member(payload) else nil end end