Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Regexp.exec instead of replace for side-effects #13

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

jridgewell
Copy link
Contributor

@jridgewell jridgewell commented Aug 1, 2022

This replaces the String.p.replace uses that are only used for side-effects with a faster RegExp.p.exec loop. This avoids the string allocation of the output string, and makes it a little more clear the loop is used for side-effects.

@vercel
Copy link

vercel bot commented Aug 1, 2022

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated
hacker-news-slack-bot ✅ Ready (Inspect) Visit Preview Aug 4, 2022 at 11:44PM (UTC)

Copy link
Contributor

@steven-tey steven-tey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a couple of comments!

// actually matched, so that we can extract the appropriate keyword.
combineText(post).replace(termsRegex, (_, ...terms: string[]) => {
let match;
while ((match = termsRegex.exec(combined))) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this an equals sign = or an equality == comparison?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Equals. In this situation, the extra parens are meant to indicate that this is an intentional assignment. See https://eslint.org/docs/latest/rules/no-cond-assign

@@ -47,22 +47,22 @@ export function postScanner(teamsAndKeywords: TeamAndKeywords) {
const text = combineText(post); // combine text from post's title, text, and url
const teamsInterestedInThisPost = new Set() as Set<string>; // set of team IDs that are interested in this post

text.replace(scanner, (_, ...terms) => {
let match;
while ((match = scanner.exec(text))) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be an equality == comparison?

@leerob
Copy link
Collaborator

leerob commented Aug 2, 2022

Could we add a description so it's clear what this PR solves? 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants