// From https://docs.hhvm.com/hack/XHP/introduction (MIT licensed)

use namespace Facebook\XHP\Core as x;
use type Facebook\XHP\HTML\{XHPHTMLHelpers, a, form};


final xhp class a_post extends x\element {
// ^ type.qualifier
//     ^ type.qualifier
//                        ^ keyword
  use XHPHTMLHelpers;

  attribute string href @required;
  //                      ^ attribute
  attribute string target;
  // ^ keyword

  <<__Override>>
  protected async function renderAsync(): Awaitable<x\node> {
    $id = $this->getID();

    $anchor = <a>{$this->getChildren()}</a>;
                                    // ^ tag.delimiter
                                    // ^ tag
    $form = (
      <form
        id={$id}
        method="post"
        action={$this->:href}
        target={$this->:target}
        class="postLink">
        {$anchor}
      </form>
    );

    $anchor->setAttribute(
      'onclick',
      'document.getElementById("'.$id.'").submit(); return false;',
    );
    $anchor->setAttribute('href', '#');
    //        ^ method.call

    return $form;
  }
}