consolidation / comments
A tool for preserving comments, e.g. when parsing YAML files.
Installs: 5 914 734
Dependents: 12
Suggesters: 0
Security: 0
Stars: 12
Watchers: 3
Forks: 6
Open Issues: 3
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/php-code-coverage: ~2|~4
- phpunit/phpunit: ^4.8
- satooshi/php-coveralls: ^1.0
- squizlabs/php_codesniffer: ^2.8
- symfony/yaml: ^3.1
This package is auto-updated.
Last update: 2024-10-25 08:07:39 UTC
README
A tool for preserving comments, e.g. when parsing YAML files.
Component Status
Prototype.
Motivation
Do lightweight editing on YAML files and then rewrite the file without losing embedded comments.
Usage
// First step: read the file, parse the yaml, edit and dump the results.
$original_contents = file_get_contents($filepath);
$parsed_data = Yaml::parse($original_contents);
$processed_data = $this->my_processing_function($parsed_data);
$altered_contents = Yaml::dump($parsed_data, PHP_INT_MAX, 2, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK);
// Second step: collect comments from original document and inject them into result.
$commentManager = new Comments();
$commentManager->collect(explode("\n", $original_contents));
$altered_with_comments = $commentManager->inject(explode("\n", $altered_contents));
$result = implode("\n", $altered_with_comments);
Limitations
The comment manager collects groups of comment lines and associates them with the first non-blank content line that follows the comment. If there are multiple non-blank content lines that are exactly the same, then the comment lines are re-injected in the same order they appeared in the original file.
Installation
$ composer require consolidation/comments
Comparison to Existing Solutions
See Klausi's yaml_comments.