GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Kolyunya/string-processor: PHP string processing library.

BranchesTags
Open more actions menu

Latest commit

 

History

84 Commits
84 Commits

Folders and files

NameName
Last commit message
Last commit date
sources
sources
 
 
tests
tests
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
LICENSE.txt
LICENSE.txt
 
 
README.md
README.md
 
 
composer.json
composer.json
 
 
phpcs.xml
phpcs.xml
 
 
phpstan.neon
phpstan.neon
 
 
phpunit.xml
phpunit.xml
 
 

Repository files navigation

PHP string processing library

Status

Build Status Code Climate Latest Stable Version

Description

This library provides a collection of string processors.

Installation

This library is composer-enabled. The recommended way of using it in your project is to require it via composer.

composer require kolyunya/string-processor

Single processor usage

Basic usage

Each processor implements the ProcessorInterface which contains the process method:

/**
 * Processes a string and returns a processed version of the original string.
 * @param string $string A string to process.
 * @return string A processed version of the original string.
 */
public function process($string);

Construct a processor and run process($string) on it:

$processor = new Processor();
echo $processor->process($string);

Shorthand usage

You can also use a processor without even instantiating it. Each processor has a static run method.

/**
 * Processes a string and returns a processed version of the original string.
 * @param string $string A string to process.
 * @param object|array $parameters Parameters passed to the processor's constructor.
 * @return string A processed version of the original string.
 */
public static function run($string, $parameters = array());

You can pass parameters to the processor's constructor in the $parameters array. You can also pass a single parameter without wrapping it into an array.

echo KebabCaseFormatter::run('snake_case'); // Output: "snake-case"
echo Translator::run(
    'Лорем ипсум долор сит амет',
    new RuEnDictionary()
); // Output: "Lorem ipsum dolor sit amet"

Processors combination

Multiprocessor usage

There is a special processor (Multiprocessor) which allows you to combine multiple processors in one. Suppose you want to convert a string to an UPPER-KEBAB case. You can combine two processors using Multiprocessor to solve this problem.

$processor = new Multiprocessor([
    new KebabCaseFormatter(),
    new UpperCaseFormatter(),
]);
echo $processor->process('snake_case'); // Output: "SNAKE-CASE"
echo $processor->process('CamelCase'); // Output: "CAMEL-CASE"

The UpperCaseFormatter will be applied after the KebabCaseFormatter. Note that either the processors order does not matter in the first example, it actually matters in the second one.

Another common problem example is to generate URL slugs. A string should be purified from punctuation characters, converted to the kebab-case and transliterated. Combine the PunctuationStripper, the KebabCaseFormatter and the Translator using Multiprocessor.

$processor = new Multiprocessor([
    new RuEnTranslator(),
    new AlphabeticalPurifier(),
    new KebabCaseFormatter(),
]);
echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet"
echo $processor->process('Привет, Мир!'); // Output: "privet-mir"

Processors decoration

Each processor is a decorator. The ProcessorInterface contains the decorate method:

/**
 * Decorates supplied processor with the current processor.
 * @param ProcessorInterface $processor Processor to decorate.
 * @return ProcessorInterface Current processor.
 */
public function decorate(ProcessorInterface $processor);

That means that the above example can be implemented using processors decoration. The Multiprocessor usage is somewhat more readable though.

$processor =
(new RuEnTranslator())->decorate(
    (new KebabCaseFormatter())->decorate(
        (new PunctuationStripper())
    )
);
echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet"
echo $processor->process('Привет, Мир!'); // Output: "privet-mir"

Available processors

Currently the following processors are implemented:

  • Case switchers - format strings to arbitrary formats.
    • CamelCaseFormatter - formats a string to the CamelCase.
    • KebabCaseFormatter - formats a string to the kebab-case.
    • SnakeCaseFormatter - formats a string to the snake_case.
    • UpperCaseFormatter - formats a string to the UPPER CASE.
    • LowerCaseFormatter - formats a string to the lower case.
  • Translators - transliterate strings from one language to another.
    • RuEnTranslator - transliterates strings from Russian to English and the other way around.
  • Purifiers - purify strings.
    • PunctuationStripper - Strips punctuation characters.
    • AlphabeticalPurifier - Strips non-alphabetical characters.
  • Multiprocessor - combines multiple processors.

About

PHP string processing library.

Topics

camel-casekebab-casesnake-casestringstring-manipulationstring-parsingstring-processing

Resources

Readme
GPL-3.0 license
Activity

Stars

3 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.