Class: TocDoc::Search::Result
- Inherits:
-
Object
- Object
- TocDoc::Search::Result
- Defined in:
- lib/toc_doc/models/search/result.rb
Overview
Envelope returned by where when no type: filter is given.
Wraps the raw API response and exposes typed collections for profiles and
specialities. Unlike Availability::Collection this class does
NOT include Enumerable — the dual-type nature of the result does not
lend itself to a single iteration interface.
Instance Attribute Summary collapse
-
#profiles ⇒ Array<TocDoc::Profile::Practitioner, TocDoc::Profile::Organization>
readonly
All profile results, typed as Profile::Practitioner or Profile::Organization via Profile.build.
-
#specialities ⇒ Array<TocDoc::Speciality>
readonly
All speciality results as TocDoc::Speciality instances.
Instance Method Summary collapse
-
#filter_by_type(type) ⇒ Array<TocDoc::Profile>, Array<TocDoc::Speciality>
Returns a subset of results narrowed to the given type.
-
#initialize(data) ⇒ Result
constructor
A new instance of Result.
Constructor Details
#initialize(data) ⇒ Result
Returns a new instance of Result.
21 22 23 24 |
# File 'lib/toc_doc/models/search/result.rb', line 21 def initialize(data) @profiles = build_profiles(data['profiles']) @specialities = build_specialities(data['specialities']) end |
Instance Attribute Details
#profiles ⇒ Array<TocDoc::Profile::Practitioner, TocDoc::Profile::Organization> (readonly)
All profile results, typed as Profile::Practitioner or Profile::Organization via Profile.build.
30 31 32 |
# File 'lib/toc_doc/models/search/result.rb', line 30 def profiles @profiles end |
#specialities ⇒ Array<TocDoc::Speciality> (readonly)
All speciality results as TocDoc::Speciality instances.
35 36 37 |
# File 'lib/toc_doc/models/search/result.rb', line 35 def specialities @specialities end |
Instance Method Details
#filter_by_type(type) ⇒ Array<TocDoc::Profile>, Array<TocDoc::Speciality>
Returns a subset of results narrowed to the given type.
41 42 43 44 45 46 47 48 |
# File 'lib/toc_doc/models/search/result.rb', line 41 def filter_by_type(type) case type when 'profile' then profiles when 'practitioner' then profiles.select(&:practitioner?) when 'organization' then profiles.select(&:organization?) when 'speciality' then specialities end end |