lucasbrito-wdt / lexorank-php
A PHP port of LexoRank - a ranking system that uses strings to maintain ordered lists
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/lucasbrito-wdt/lexorank-php
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2026-01-20 22:07:54 UTC
README
Uma implementação em PHP do algoritmo LexoRank, usado para ordenação de itens em listas de forma eficiente.
LexoRank é um sistema de ranking usado por ferramentas como Jira e Trello para permitir reordenação eficiente de itens sem precisar atualizar todos os registros.
Instalação
Via Composer (recomendado)
composer require lucasbrito-wdt/lexorank-php
Manual
Inclua o autoloader:
require_once 'src/autoload.php';
Uso
Importando as classes
use LexoRank\LexoRank\LexoRank; use LexoRank\LexoRank\LexoRankBucket;
Criando ranks
// Rank mínimo $min = LexoRank::min(); // Rank máximo $max = LexoRank::max(); // Rank do meio $middle = LexoRank::middle(); // Rank inicial para um bucket específico $initial = LexoRank::initial(LexoRankBucket::BUCKET_0());
Parsing de strings
$rank = LexoRank::parse('0|hzzzzz:');
Gerando ranks entre dois existentes
$rank1 = LexoRank::parse('0|100000:'); $rank2 = LexoRank::parse('0|200000:'); $between = $rank1->betweenRank($rank2);
Gerando próximo/anterior
$rank = LexoRank::middle(); $next = $rank->genNext(); $prev = $rank->genPrev();
Mudando de bucket
$rank = LexoRank::middle(); $nextBucket = $rank->inNextBucket(); $prevBucket = $rank->inPrevBucket();
Comparando ranks
$rank1 = LexoRank::min(); $rank2 = LexoRank::max(); // Comparação $result = $rank1->compareTo($rank2); // -1, 0, ou 1 // Igualdade $isEqual = $rank1->equals($rank2); // true ou false
Obtendo o valor formatado
$rank = LexoRank::middle(); $formatted = $rank->format(); // "0|hzzzzz:" echo $rank; // Também funciona via __toString()
Estrutura de arquivos
php/
├── composer.json
├── README.md
├── src/
│ ├── autoload.php
│ ├── LexoRank/
│ │ ├── LexoDecimal.php
│ │ ├── LexoHelper.php
│ │ ├── LexoInteger.php
│ │ ├── LexoRank.php
│ │ └── LexoRankBucket.php
│ ├── NumeralSystems/
│ │ ├── ILexoNumeralSystem.php
│ │ ├── LexoNumeralSystem10.php
│ │ ├── LexoNumeralSystem36.php
│ │ └── LexoNumeralSystem64.php
│ └── Utils/
│ └── StringBuilder.php
└── tests/
└── LexoRankTest.php
Executando os testes
composer install
composer test
Para gerar relatório de cobertura:
composer test-coverage
Requisitos
- PHP 8.0 ou superior
Contribuindo
Contribuições são bem-vindas! Por favor, leia o arquivo CONTRIBUTING.md para mais detalhes.
Licença
MIT - veja o arquivo LICENSE para mais detalhes.