Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ValidatingArrayLoader.php

function ValidatingArrayLoader::hasPackageNamingError

2 calls to ValidatingArrayLoader::hasPackageNamingError()
RootPackageLoader::load in vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php
@inheritDoc
ValidatingArrayLoader::load in vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php
@inheritDoc

File

vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php, line 459

Class

ValidatingArrayLoader
@author Jordi Boggiano <j.boggiano@seld.be>

Namespace

Composer\Package\Loader

Code

public static function hasPackageNamingError(string $name, bool $isLink = false) : ?string {
    if (PlatformRepository::isPlatformPackage($name)) {
        return null;
    }
    if (!Preg::isMatch('{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD', $name)) {
        return $name . ' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$".';
    }
    $reservedNames = [
        'nul',
        'con',
        'prn',
        'aux',
        'com1',
        'com2',
        'com3',
        'com4',
        'com5',
        'com6',
        'com7',
        'com8',
        'com9',
        'lpt1',
        'lpt2',
        'lpt3',
        'lpt4',
        'lpt5',
        'lpt6',
        'lpt7',
        'lpt8',
        'lpt9',
    ];
    $bits = explode('/', strtolower($name));
    if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) {
        return $name . ' is reserved, package and vendor names can not match any of: ' . implode(', ', $reservedNames) . '.';
    }
    if (Preg::isMatch('{\\.json$}', $name)) {
        return $name . ' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.';
    }
    if (Preg::isMatch('{[A-Z]}', $name)) {
        if ($isLink) {
            return $name . ' is invalid, it should not contain uppercase characters. Please use ' . strtolower($name) . ' instead.';
        }
        $suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name);
        $suggestName = strtolower($suggestName);
        return $name . ' is invalid, it should not contain uppercase characters. We suggest using ' . $suggestName . ' instead.';
    }
    return null;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal