[ https://jira.codehaus.org/browse/JBEHAVE-702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=288103#comment-288103 ]
Daniel Schneller commented on JBEHAVE-702: ------------------------------------------ Reading your comment I realized that my original idea was maybe a little too complicated for what I had in mind. I tried an implementation locally by introducing "@Variant"/@Variants with the same structure as "@Alias"/"@Aliases". Doing this: @Then("foo bar with $xyz") @Alias("foo bar: $xyz" @Variant("soll") public void foobar() {...} would lead to these 4 permutations all being added as candidates: foo bar with $xyz soll foo bar with $xyz foo bar: $xyz soll foo far: $xyz In Steps.java I added this method: private void addVariants(List<StepCandidate> candidates, Method method, StepType stepType, String alias, int priority) { List<String> allVariants = getVariants(method); for (String variant : allVariants) { addCandidate(candidates, method, stepType, variant + " " + alias, priority); } } which is called from each of the three blocks in listCandidates() and the two blocks in addCandidatesFromAliases(...). That way the change is very minimal and remains fully backwards compatible. I will attach my modified Steps class. > Allow injection of the "Steps" class to customize its behavior > -------------------------------------------------------------- > > Key: JBEHAVE-702 > URL: https://jira.codehaus.org/browse/JBEHAVE-702 > Project: JBehave > Issue Type: Improvement > Components: Core > Affects Versions: 3.5.4 > Reporter: Daniel Schneller > Labels: i18n, wish > > To get more natural German story texts, it would be very helpful if the > Steps.listCandidates() method could be amended. > This would allow for automatically generating slight variations of the texts > without having to specify them all as aliases. Currently I am doing this: > @Then("soll foo bar with $xyz") > @Aliases(values = { > "foo bar with $xyz", > "soll foo bar: $xyz", > "foo bar: $xyz" }) > The word "soll" is made optional this way. The reasoning behind this is that > when using "And" it is more natural to write > Then soll something else > And foo bar with $xyz > instead of > Then soll something else > And soll foo bar with $xyz > It would be very nice to not have define aliases for all these variants, > because it makes the code harder to maintain. Instead, I though I'd add this > dynamically, the same way annotated Aliases are, but it seems this > functionality would require providing a new subclass of > org.jbehave.core.steps.Steps which I cannot see how to do. > I suggest a change like this: > 1) In org.jbehave.core.steps.Steps add another call in listCandidates() after > each of the addCandidatesFromAliases(...) like > addCustomDerivedCandidates(...) with the same signature and a protected empty > default implementation. > 2) Allow configuration to specify a custom subclass of > org.jbehave.core.steps.Steps. In there custom additions to the candidates > list could be made, like the one I described. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email