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

Provide "Did you mean? task_name" suggestions if task was not found #29

Closed
wants to merge 1 commit into from
Closed

Provide "Did you mean? task_name" suggestions if task was not found #29

wants to merge 1 commit into from

Conversation

yuki24
Copy link
Member

@yuki24 yuki24 commented Feb 21, 2015

similar to #19, but also suggests task names based on the edit distance.

@@ -301,6 +321,33 @@ def get_description(task)
desc
end

# Return a value representing the "cost" of transforming str1 into str2
def levenshtein_distance(str1, str2)
Copy link
Member

Choose a reason for hiding this comment

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

We pass this method around, but I think it should be public in RubyGems, no?

Copy link
Member Author

Choose a reason for hiding this comment

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

It is. We can just include Gem::Textand call #levenshtein_distance. I think you already know it had a bug, but maybe we shouldn't worry about it?

Copy link
Member

Choose a reason for hiding this comment

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

On the other hand, Rake seems to keep a safe distance from RubyGems (maybe for a reason).

This could introduce some circular dependencies by depending on Gem itself.. and I'm not seeing anywhere besides testtask that uses it.

One could argue this method should be in a separate gem that both can require, and other people would find it useful. If that is the case, why not move it to core?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah, I've been thinking about it - providing levenshtein_distance as a stdlib of Ruby. Rubygems and Bundler already (and possibly Rake) use the Levenshtein algorithm so I think it's a good idea to move it to core. I'll file a feature request to https://bugs.ruby-lang.org.

That being said, I realized that rake still needs to have support for 1.8.7, meaning we can't just use fresh features introduced recently. Should we just not merge this for now? I don't feel comfortable forcing others to maintain code that is copy-and-pasted...

Copy link
Member

Choose a reason for hiding this comment

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

We should avoid duplication whenever possible

Copy link
Member Author

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

I don't see why we can't merge this now while we wait for ruby to have levenshtein distance.

Copy link
Member

Choose a reason for hiding this comment

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

If we merge this now I think we need to consider using Gem::Text instead of copy&paste

Copy link
Member

Choose a reason for hiding this comment

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

The necessary methods for Gem::Text don't exist for all versions of RubyGems that rake supports.

@yuki24
Copy link
Member Author

yuki24 commented Jun 16, 2015

closing this pull request as there's an ongoing discussion on https://bugs.ruby-lang.org/issues/11252. We might be able to use some of the features of did_you_mean in the near future, but I guess it's still too early to have this conversation here.

@yuki24 yuki24 closed this Jun 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants