consolidation/comments

A tool for preserving comments, e.g. when parsing YAML files.

Maintainers

👁 greg.1.anderson

Package info

github.com/consolidation/comments

pkg:composer/consolidation/comments

Statistics

Installs: 7 805 737

Dependents: 12

Suggesters: 0

Stars: 12

Open Issues: 3

2.0.0 2024-12-15 10:45 UTC

Requires

  • php: >=8.2

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 02e08ce0a16c82a53ecfe0d6317ca64b5ec1eae8

  • Greg Anderson <greg.1.anderson.woop@greenknowe.org>

This package is auto-updated.

Last update: 2026-06-15 14:39:39 UTC


README

A tool for preserving comments, e.g. when parsing YAML files.

👁 Build Status
👁 Windows Build
👁 Scrutinizer Code Quality
👁 Coverage Status
👁 License

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.