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

v1.0.0 2026-01-20 22:04 UTC

This package is auto-updated.

Last update: 2026-01-20 22:07:54 UTC


README

Latest Version Tests License PHP Version Total Downloads

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.