Skip to content

fix: normalize hyphens in kebabcase - #13796

Open
eeshsaxena wants to merge 1 commit into
stdlib-js:developfrom
eeshsaxena:fix/kebabcase-hyphen-normalization
Open

fix: normalize hyphens in kebabcase#13796
eeshsaxena wants to merge 1 commit into
stdlib-js:developfrom
eeshsaxena:fix/kebabcase-hyphen-normalization

Conversation

@eeshsaxena

Copy link
Copy Markdown

Description

This pull request:

  • fixes @stdlib/string/base/kebabcase to normalize hyphens. The RE_SPECIAL regular expression omitted the hyphen, unlike the equivalent snakecase, camelcase, and constantcase implementations. As a result, inputs mixing hyphens and whitespace produced runs of hyphens: kebabcase( 'foo - bar' ) returned 'foo---bar' instead of 'foo-bar', and 'foo--bar' was left unchanged. Adding the hyphen to RE_SPECIAL makes hyphens behave as word separators and collapse consistently with the other case utilities. The non-base @stdlib/string/kebabcase delegates to this implementation, so it is fixed as well.

Related Issues

None.

Questions

No.

Other

All existing kebabcase tests still pass; added regression tests for 'foo - bar' and 'foo--bar'.

Checklist

  • Read, understood, and followed the contributing guidelines.

AI Assistance

  • Yes

  • Reverify Code fix using opus 5


@stdlib-js/reviewers

The `RE_SPECIAL` regular expression in `@stdlib/string/base/kebabcase`
omitted the hyphen, unlike the equivalent `snakecase`, `camelcase`, and
`constantcase` implementations. As a result, inputs mixing hyphens and
whitespace produced runs of hyphens, e.g. `kebabcase( 'foo - bar' )`
returned `'foo---bar'` instead of `'foo-bar'`, and `'foo--bar'` was left
unchanged. Add the hyphen to `RE_SPECIAL` so hyphens are treated as word
separators and collapsed like the other cases. Adds regression tests.
@eeshsaxena
eeshsaxena requested a review from a team July 31, 2026 06:32
@stdlib-bot

Copy link
Copy Markdown
Contributor

👋 Hi there! 👋

And thank you for opening your first pull request! We will review it shortly. 🏃 💨

Getting Started

Next Steps

  1. A project maintainer will approve GitHub Actions workflows for your PR.
  2. All CI checks must pass before your submission can be fully reviewed.
  3. You'll need to address any failures in linting or unit tests.

Running Tests Locally

You can use make to run any of the CI commands locally from the root directory of the stdlib repository:

# Run tests for all packages in the math namespace:
make test TESTS_FILTER=".*/@stdlib/math/.*"

# Run benchmarks for a specific package:
make benchmark BENCHMARKS_FILTER=".*/@stdlib/math/base/special/sin/.*"

If you haven't heard back from us within two weeks, please ping us by tagging the "reviewers" team in a comment on this PR.

If you have any further questions while waiting for a response, please join our Zulip community to chat with project maintainers and other community members.

We appreciate your contribution!

Documentation Links

@stdlib-bot

Copy link
Copy Markdown
Contributor

Hello! Thank you for your contribution to stdlib.

We noticed that the contributing guidelines acknowledgment is missing from your pull request. Here's what you need to do:

  1. Please read our contributing guidelines.

  2. Update your pull request description to include this checked box:

    - [x] Read, understood, and followed the [contributing guidelines](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md)

This acknowledgment confirms that you've read the guidelines, which include:

  • The developer's certificate of origin
  • Your agreement to license your contributions under the project's terms

We can't review or accept contributions without this acknowledgment.

Thank you for your understanding and cooperation. We look forward to reviewing your contribution!

@stdlib-bot stdlib-bot added First-time Contributor A pull request from a contributor who has never previously committed to the project repository. Needs Review A pull request which needs code review. labels Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

First-time Contributor A pull request from a contributor who has never previously committed to the project repository. Needs Review A pull request which needs code review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants