def get_h(*titles, &processor)
      raw_pages = raw(*titles, &processor)
                  .tap { |ps| ps.detect { |_, p| p['invalid'] }.tap { |_, i| i && fail(i['invalidreason']) } }
                  .reject { |_, p| p.key?('missing') }
      titles.map { |title| [title, make_page(raw_pages, title)] }.to_h
    end
def get_h(*titles, &processor)
      raw_pages = raw(*titles, &processor)
                  .tap { |ps| ps.detect { |_, p| p['invalid'] }.tap { |_, i| i && fail(i['invalidreason']) } }
                  .reject { |_, p| p.key?('missing') }
      titles.map { |title| [title, make_page(raw_pages, title)] }.to_h
    end
Same as {#get}, but returns hash of `{requested title => page}`.

 Useful quirks:
 * when requested page not existing, key will be still present in
   resulting hash (value will be `nil`);
 * when requested page redirects to another, key will still be the
   requested title. For ex., `get_h('Einstein')` will return hash
   with key 'Einstein' and page titled 'Albert Einstein'.

 This allows you to be in full control of what pages of large list
 you've received.

 @param titles [Array<String>] List of page titles to get.
 @param processor [Proc] Optional block to preprocess MediaWiktory query. Refer to
   [MediaWiktory::Actions::Query](http://www.rubydoc.info/gems/mediawiktory/MediaWiktory/Wikipedia/Actions/Query)
   for its API. Infoboxer assumes that the block returns new instance of `Query`, so be careful
   while using it.

 @return [Hash<String, Page>]