How can I load a block's subject and body, programmatically, for use in a module? I need to create an array in my custom module that contains data from multiple blocks.  something like this:

array(
  'block_1' =&gt; array(
    'subject'=&gt;'Block Subject Here',
    'body'=&gt;'Full block body html here',
  ),

  'custom_module_block' =&gt; array(
    'subject'=&gt;'Block Subject Here',
    'body'=&gt;'Full block body html here',
  ),

  'another_block_machinename' =&gt; array(
    'subject'=&gt;'Block Subject Here',
    'body'=&gt;'Full block body html here',
  ),
);


In order to do this, i need to be able to programmatically load block content, being able to access and handle each block's subject and body in order to populate my array.

Imagine the node equivalent being a simple node_load(); where you can easily access $node->title and $node->body from within the loaded node.

I'm not able to find any functions that make loading this block data possible.  Neither block_load() nor module_invoke() get me all the data I need (specifically the block subject).

So, how do I load a block's subject and body programmatically so I can use it in my custom module?
/**
 * Implements hook_block_view().
 */
function hook_block_view($delta = '') {
  $block = array();

  switch ($delta) {
    case 'block_1':

      $block['subject'] = NULL;
      $block['content'] = 'Full block body html here';
      break;

    case 'block_2':

      $block['subject'] = 'Block Subject Here';
      $block['content'] = 'Full block body html here';
      break;

    case 'block_3':

      $block['subject'] = 'Block Subject Here';
      $block['content'] = 'Full block body html here';
      break;

  }
  return $block;
}


Based on https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_view/7