Looking to hire Laravel developers? Try LaraJobs

laravel-topic-normalizer maintained by jeffersongoncalves

Description
A tiny Laravel helper that merges raw topic/keyword lists (GitHub topics, composer.json + package.json keywords, Packagist keywords, …) into one slugged, deduplicated, length-filtered and capped list.
Last update
2026/06/23 13:55 (dev-master)
License
Downloads
16

Comments
comments powered by Disqus

Laravel Topic Normalizer

Laravel Topic Normalizer

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Merge raw topic / keyword lists from several sources — GitHub topics, composer.json + package.json keywords, Packagist keywords — into one clean list: slugged, deduplicated, length-filtered and capped.

Installation

composer require jeffersongoncalves/laravel-topic-normalizer

Usage

use JeffersonGoncalves\TopicNormalizer\TopicNormalizer;

$topics = TopicNormalizer::normalize(
    $repo['topics'] ?? [],          // GitHub topics
    $composer['keywords'] ?? [],    // composer.json
    $packageJson['keywords'] ?? [], // package.json
);
// => ['laravel', 'filament', 'php-package', …]  (slugged, unique, max 20)

Pass any number of lists. Non-strings are skipped; values are Str::slug()-ed, empties and over-long slugs dropped, duplicates removed, and the result capped.

Configuration

php artisan vendor:publish --tag="topic-normalizer-config"
Key Default Description
max 20 Maximum number of topics returned.
max_length 50 Slugs longer than this are dropped as junk.

Testing

composer test

License

The MIT License (MIT). Please see License File for more information.