[Pharo-project] Ideas of AutomaticMethodCategorizer ???
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears. For now, it is doing this: defaultCategorizationRules "The order is relevant, the categorizer uses the first rule matching - DF" ^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches: 'initialize*' categorizeIn: #initialization); add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: 'has*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: '=' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'hash' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'default*' categorizeIn: #defaults); add: (MethodCategorizationRule whenSelectorMatches: 'printOn:' categorizeIn: #printing); add: (MethodCategorizationRule whenSelectorMatches: 'accept:' categorizeIn: #'visitor accepting'); add: (MethodCategorizationRule whenSelectorMatches: 'visit*:' categorizeIn: #visiting); add: (MethodCategorizationRule whenSelectorMatches: 'value' categorizeIn: #evaluating); add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule usingMostUsedCategoryInSuperClasses; add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself We should improve this guy.... ideas to add/change? Cheers Mariano
On Aug 15, 2010, at 8:55 PM, Mariano Martinez Peck wrote:
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears.
yes I would really like to have consistent categories. Now we should pay attention that the automaticmethodcategory does not do anythin when the category is * something. Stef
For now, it is doing this:
defaultCategorizationRules
"The order is relevant, the categorizer uses the first rule matching - DF"
^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches: 'initialize*' categorizeIn: #initialization);
#initialize
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: 'has*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: '=' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'hash' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'default*' categorizeIn: #defaults); add: (MethodCategorizationRule whenSelectorMatches: 'printOn:' categorizeIn: #printing); add: (MethodCategorizationRule whenSelectorMatches: 'accept:' categorizeIn: #'visitor accepting'); add: (MethodCategorizationRule whenSelectorMatches: 'visit*:' categorizeIn: #visiting); add: (MethodCategorizationRule whenSelectorMatches: 'value' categorizeIn: #evaluating); add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule usingMostUsedCategoryInSuperClasses; add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself
We should improve this guy.... ideas to add/change?
Cheers
Mariano _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
On Sun, Aug 15, 2010 at 9:12 PM, Stéphane Ducasse <stephane.ducasse@inria.fr
wrote:
On Aug 15, 2010, at 8:55 PM, Mariano Martinez Peck wrote:
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears.
yes I would really like to have consistent categories. Now we should pay attention that the automaticmethodcategory does not do anythin when the category is * something.
Stef
For now, it is doing this:
defaultCategorizationRules
"The order is relevant, the categorizer uses the first rule matching
- DF"
^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches: 'initialize*'
categorizeIn: #initialization);
#initialize
add: (MethodCategorizationRule whenSelectorMatches: 'is*'
categorizeIn: #testing);
add: (MethodCategorizationRule whenSelectorMatches: 'has*'
categorizeIn: #testing);
add: (MethodCategorizationRule whenSelectorMatches: '='
categorizeIn: #comparing);
add: (MethodCategorizationRule whenSelectorMatches: 'hash'
categorizeIn: #comparing);
add: (MethodCategorizationRule whenSelectorMatches: 'default*'
categorizeIn: #defaults);
add: (MethodCategorizationRule whenSelectorMatches: 'printOn:'
categorizeIn: #printing);
add: (MethodCategorizationRule whenSelectorMatches: 'accept:'
categorizeIn: #'visitor accepting');
add: (MethodCategorizationRule whenSelectorMatches: 'visit*:'
categorizeIn: #visiting);
add: (MethodCategorizationRule whenSelectorMatches: 'value'
categorizeIn: #evaluating);
add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule
usingMostUsedCategoryInSuperClasses;
add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself
One important thing I forgot to say is that the order is important here. Notice that the pattern rules are first and then the rules for the most used categories...this means that for example printOn: will be always in 'printing'. However, in the system most printOn: could be in 'print' category... So it is important what you want more...if specific patterns or maintain consistency with what you have in the system... cheers mariano
We should improve this guy.... ideas to add/change?
Cheers
Mariano _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
did you check is there is a safe guard when the category start with *? ?Stef
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears.
yes I would really like to have consistent categories. Now we should pay attention that the automaticmethodcategory does not do anythin when the category is * something.
Stef
For now, it is doing this:
defaultCategorizationRules
"The order is relevant, the categorizer uses the first rule matching - DF"
^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches: 'initialize*' categorizeIn: #initialization);
#initialize
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: 'has*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: '=' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'hash' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'default*' categorizeIn: #defaults); add: (MethodCategorizationRule whenSelectorMatches: 'printOn:' categorizeIn: #printing); add: (MethodCategorizationRule whenSelectorMatches: 'accept:' categorizeIn: #'visitor accepting'); add: (MethodCategorizationRule whenSelectorMatches: 'visit*:' categorizeIn: #visiting); add: (MethodCategorizationRule whenSelectorMatches: 'value' categorizeIn: #evaluating); add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule usingMostUsedCategoryInSuperClasses; add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself
One important thing I forgot to say is that the order is important here. Notice that the pattern rules are first and then the rules for the most used categories...this means that for example printOn: will be always in 'printing'. However, in the system most printOn: could be in 'print' category...
So it is important what you want more...if specific patterns or maintain consistency with what you have in the system...
cheers
mariano
We should improve this guy.... ideas to add/change?
Cheers
Mariano _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
On Mon, Aug 16, 2010 at 9:35 PM, Stéphane Ducasse <stephane.ducasse@inria.fr
wrote:
did you check is there is a safe guard when the category start with *?
This is not up to AutomaticMethodCategorizer. I mean, by code, the only defined rules are the ones that are in #defaultCategorizationRules If you want you can add more rules. For a rule you can say something like this: add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing); if you do something like this for example: add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #*Something); There will be no error in AutomaticMethodCategorizer and Something will be recognized as it were a package. More or less could happen the same with a selector that doesn't apply to any rule. For example, suppose #aFunnySelector doesn't match any rule, but there are 10 implementors in the image and the 80% of them has category *Something. Then. it will apply *Something also to that selector. That's what I understood. However, I don't think it is a big deal and we can live with that.
?Stef
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears.
yes I would really like to have consistent categories. Now we should pay attention that the automaticmethodcategory does not do anythin when the category is * something.
Stef
For now, it is doing this:
defaultCategorizationRules
"The order is relevant, the categorizer uses the first rule
matching - DF"
^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches:
'initialize*' categorizeIn: #initialization);
#initialize
add: (MethodCategorizationRule whenSelectorMatches: 'is*'
categorizeIn: #testing);
add: (MethodCategorizationRule whenSelectorMatches: 'has*'
categorizeIn: #testing);
add: (MethodCategorizationRule whenSelectorMatches: '='
categorizeIn: #comparing);
add: (MethodCategorizationRule whenSelectorMatches: 'hash'
categorizeIn: #comparing);
add: (MethodCategorizationRule whenSelectorMatches: 'default*'
categorizeIn: #defaults);
add: (MethodCategorizationRule whenSelectorMatches: 'printOn:'
categorizeIn: #printing);
add: (MethodCategorizationRule whenSelectorMatches: 'accept:'
categorizeIn: #'visitor accepting');
add: (MethodCategorizationRule whenSelectorMatches: 'visit*:'
categorizeIn: #visiting);
add: (MethodCategorizationRule whenSelectorMatches: 'value'
categorizeIn: #evaluating);
add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule
usingMostUsedCategoryInSuperClasses;
add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself
One important thing I forgot to say is that the order is important here. Notice that the pattern rules are first and then the rules for the most used categories...this means that for example printOn: will be always in 'printing'. However, in the system most printOn: could be in 'print' category...
So it is important what you want more...if specific patterns or maintain consistency with what you have in the system...
cheers
mariano
We should improve this guy.... ideas to add/change?
Cheers
Mariano _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
This is not up to AutomaticMethodCategorizer.
yes it is. The automaticCategorizer should not when it get applied to a class breaks packages
I mean, by code, the only defined rules are the ones that are in #defaultCategorizationRules If you want you can add more rules. For a rule you can say something like this:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing);
if you do something like this for example:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #*Something);
There will be no error in AutomaticMethodCategorizer and Something will be recognized as it were a package.
More or less could happen the same with a selector that doesn't apply to any rule. For example, suppose #aFunnySelector doesn't match any rule, but there are 10 implementors in the image and the 80% of them has category *Something. Then. it will apply *Something also to that selector.
That's what I understood. However, I don't think it is a big deal and we can live with that.
No! Automatic categorizer should be able to be applied system wide and not break all the packages. Stef
ok....For those who were not here hahaha. We have just talked with Stef. There is no problem because AutomaticMethodCategorizer ONLY takes into account the methods that are not yet categorized. Thus....if you have *Something it means it is already categorized...thus, it does nothing. Is it ok? Mariano On Tue, Aug 17, 2010 at 10:08 AM, Stéphane Ducasse < stephane.ducasse@inria.fr> wrote:
This is not up to AutomaticMethodCategorizer.
yes it is. The automaticCategorizer should not when it get applied to a class breaks packages
I mean, by code, the only defined rules are the ones that are in #defaultCategorizationRules If you want you can add more rules. For a rule you can say something like this:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing);
if you do something like this for example:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #*Something);
There will be no error in AutomaticMethodCategorizer and Something will be recognized as it were a package.
More or less could happen the same with a selector that doesn't apply to any rule. For example, suppose #aFunnySelector doesn't match any rule, but there are 10 implementors in the image and the 80% of them has category *Something. Then. it will apply *Something also to that selector.
That's what I understood. However, I don't think it is a big deal and we can live with that.
No! Automatic categorizer should be able to be applied system wide and not break all the packages.
Stef _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
ok....For those who were not here hahaha. We have just talked with Stef. There is no problem because AutomaticMethodCategorizer ONLY takes into account the methods that are not yet categorized. Thus....if you have *Something it means it is already categorized...thus, it does nothing.
Is it ok?
I would love to see the categorization selectively happen on methods that are already categorized. Cheers, Alexandre
Mariano
On Tue, Aug 17, 2010 at 10:08 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
This is not up to AutomaticMethodCategorizer.
yes it is. The automaticCategorizer should not when it get applied to a class breaks packages
I mean, by code, the only defined rules are the ones that are in #defaultCategorizationRules If you want you can add more rules. For a rule you can say something like this:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing);
if you do something like this for example:
add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #*Something);
There will be no error in AutomaticMethodCategorizer and Something will be recognized as it were a package.
More or less could happen the same with a selector that doesn't apply to any rule. For example, suppose #aFunnySelector doesn't match any rule, but there are 10 implementors in the image and the 80% of them has category *Something. Then. it will apply *Something also to that selector.
That's what I understood. However, I don't think it is a big deal and we can live with that.
No! Automatic categorizer should be able to be applied system wide and not break all the packages.
Stef _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
new* -> 'instance creation' write* -> 'writing' add* -> 'adding - removing' remove* -> 'adding - removing' Alexandre On 15 Aug 2010, at 14:55, Mariano Martinez Peck wrote:
Hi folks...while browsing AutomaticMethodCategorizer I found the place where the rules are defined. It is cool becuase we can add the rules we want. I am all ears.
For now, it is doing this:
defaultCategorizationRules
"The order is relevant, the categorizer uses the first rule matching - DF"
^OrderedCollection new add: MethodCategorizationRule forAccessors; add: (MethodCategorizationRule whenSelectorMatches: 'initialize*' categorizeIn: #initialization); add: (MethodCategorizationRule whenSelectorMatches: 'is*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: 'has*' categorizeIn: #testing); add: (MethodCategorizationRule whenSelectorMatches: '=' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'hash' categorizeIn: #comparing); add: (MethodCategorizationRule whenSelectorMatches: 'default*' categorizeIn: #defaults); add: (MethodCategorizationRule whenSelectorMatches: 'printOn:' categorizeIn: #printing); add: (MethodCategorizationRule whenSelectorMatches: 'accept:' categorizeIn: #'visitor accepting'); add: (MethodCategorizationRule whenSelectorMatches: 'visit*:' categorizeIn: #visiting); add: (MethodCategorizationRule whenSelectorMatches: 'value' categorizeIn: #evaluating); add: (MethodCategorizationRule whenSelectorMatches: 'test*' andClassInheritsFrom: TestCase categorizeIn: #tests); add: MethodCategorizationRule usingMostUsedCategoryInSuperClasses; add: MethodCategorizationRule usingMostUsedCategoryInImage; yourself
We should improve this guy.... ideas to add/change?
Cheers
Mariano _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
On Sun, Aug 15, 2010 at 11:28 PM, Alexandre Bergel <alexandre@bergel.eu>wrote: > new* -> 'instance creation' > write* -> 'writing' > add* -> 'adding - removing' > remove* -> 'adding - removing' > > Thanks Alexandre. Someone has more ideas? > Alexandre > > On 15 Aug 2010, at 14:55, Mariano Martinez Peck wrote: > > > Hi folks...while browsing AutomaticMethodCategorizer I found the place > where the rules are defined. It is cool becuase we can add the rules we > want. I am all ears. > > > > For now, it is doing this: > > > > > > defaultCategorizationRules > > > > "The order is relevant, the categorizer uses the first rule matching > - DF" > > > > ^OrderedCollection new > > add: MethodCategorizationRule forAccessors; > > add: (MethodCategorizationRule whenSelectorMatches: 'initialize*' > categorizeIn: #initialization); > > add: (MethodCategorizationRule whenSelectorMatches: 'is*' > categorizeIn: #testing); > > add: (MethodCategorizationRule whenSelectorMatches: 'has*' > categorizeIn: #testing); > > add: (MethodCategorizationRule whenSelectorMatches: '=' > categorizeIn: #comparing); > > add: (MethodCategorizationRule whenSelectorMatches: 'hash' > categorizeIn: #comparing); > > add: (MethodCategorizationRule whenSelectorMatches: 'default*' > categorizeIn: #defaults); > > add: (MethodCategorizationRule whenSelectorMatches: 'printOn:' > categorizeIn: #printing); > > add: (MethodCategorizationRule whenSelectorMatches: 'accept:' > categorizeIn: #'visitor accepting'); > > add: (MethodCategorizationRule whenSelectorMatches: 'visit*:' > categorizeIn: #visiting); > > add: (MethodCategorizationRule whenSelectorMatches: 'value' > categorizeIn: #evaluating); > > add: (MethodCategorizationRule > > whenSelectorMatches: 'test*' > > andClassInheritsFrom: TestCase > > categorizeIn: #tests); > > add: MethodCategorizationRule > usingMostUsedCategoryInSuperClasses; > > add: MethodCategorizationRule usingMostUsedCategoryInImage; > > yourself > > > > > > > > We should improve this guy.... ideas to add/change? > > > > Cheers > > > > Mariano > > _______________________________________________ > > Pharo-project mailing list > > Pharo-project@lists.gforge.inria.fr > > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > -- > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: > Alexandre Bergel http://www.bergel.eu > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > > > > _______________________________________________ > Pharo-project mailing list > Pharo-project@lists.gforge.inria.fr > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >
participants (3)
-
Alexandre Bergel -
Mariano Martinez Peck -
Stéphane Ducasse