public static function consume()

in src/markdown-extensions/YamlFrontMatterBlock.php [21:62]


  public static function consume(
    UnparsedBlocks\Context $context,
    UnparsedBlocks\Lines $lines,
  ): ?(UnparsedBlocks\Block, UnparsedBlocks\Lines) {
    $match = UnparsedBlocks\FencedCodeBlock::consume($context, $lines);
    if ($match === null) {
      return null;
    }
    list($block, $rest) = $match;
    if ($block->getInfoString() !== 'yamlmeta') {
      return null;
    }

    invariant(
      $context is BlockContext,
      'Expected context to be a %s',
      BlockContext::class,
    );

    $data = JSON\decode_as_shape(YAMLMeta::class, $block->getContent());
    $context->setYamlMeta($data);

    $messages = Vec\filter_nulls(vec[
      self::getVersionRequirementMessage($data),
      self::getLibMessage($data),
      self::getFacebookMessages($data),
    ]);

    if (C\is_empty($messages)) {
      return tuple(new UnparsedBlocks\BlockSequence(vec[]), $rest);
    }
    $messages = new UnparsedBlocks\BlockSequence($messages);

    return tuple(
      UnparsedBlocks\BlockSequence::flatten(
        new UnparsedBlocks\HTMLBlock('<div class="apiTopMessages">'),
        $messages,
        new UnparsedBlocks\HTMLBlock('</div>'),
      ),
      $rest,
    );
  }