Files
piratepoet/lib/WP
Rodrigo Primo 2e354173db Deprecated old archive filters and add new ones
Using new filters is needed as the parameters passed to the filters
changed. If we continued using the same filters, users might run into
fatal errors.

[MAILPOET-3629]
2021-09-20 14:01:34 +02:00
..

<?php

namespace MailPoet\WP;

class Readme {
  public static function parseChangelog($readmeTxt, $limit = null) {
    // Extract changelog section of the readme.txt
    preg_match('/== Changelog ==(.*?)(\n==|$)/is', $readmeTxt, $changelog);

    if (empty($changelog[1])) {
      return false;
    }

    // Get changelog entries
    $entries = preg_split('/\n(?=\=)/', trim($changelog[1]), -1, PREG_SPLIT_NO_EMPTY);

    if (empty($entries)) {
      return false;
    }

    $c = 0;
    $changelog = [];

    foreach ($entries as $entry) {
      // Locate version header and changes list
      preg_match('/=(.*?)=(.*)/s', $entry, $parts);

      if (empty($parts[1]) || empty($parts[2])) {
        return false;
      }

      $header = trim($parts[1]);
      $list = trim($parts[2]);

      // Get individual items from the list
      $list = preg_split('/(^|\n)[\* ]*/', $list, -1, PREG_SPLIT_NO_EMPTY);

      $changelog[] = [
        'version' => $header,
        'changes' => $list,
      ];

      if (++$c == $limit) {
        break;
      }
    }

    return $changelog;
  }
}