hi simon
i've forgotten the exact case for which i committed this more general solution but i remember the general reasoning.
decorators have some very powerful properties.
at the time, i had in mind some other interesting implementations which do not descend from BaseRules. RegexRules is one of those. i never got round to adding the others. one advantage of adding a decorator was that any Rules implementation could have defaults added.
another advantage of using a decorator is that the code is simple and the performance penalty is only paid by those who want to use this feature (rather than all users). in general, i'd prefer to keep BaseRules as quick and simple as possible (whatever that means :) and add extra features into other classes.
of course, that's not to say that the BaseRules dialect shouldn't be improved or added to. if this feature is a good addition, then let's add it to the language. whether it should go into Extended or Base should be a judgement call based on the penalty (in terms of performance and complexity) verses the functionality gained.
of course, i'd like to add again that's prefer it if you left it until after i've cut the release branch. i'll need to propose a vote approving the plan first so most likely this will be thursday before all the formalities are done and i can cut the branch.
- robert
On 4 Jun 2004, at 06:22, Simon Kitching wrote:
Hi Robert,
Why exactly did you create the WithDefaultsRulesWrapper class? ie what is the "use case" that caused you to create it?
I recently tried to associate a rule with the pattern "*", with the intention that the rule would fire if-and-only-if no other rule matched the input element. It doesn't work, probably because of this line in RulesBase: if (key.startsWith("*/")) { ie "*" isn't treated as a wildcard.
Wouldn't fixing this code in RulesBase to check for "*" then provide
exactly the same functionality as the new WithDefaultsRulesWrapper class
provides?
Regards,
Simon
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
