I was investigating what would need to be done to implement camel-case code assist for the Scala plugin when I ran across the following gem in CharOperation (Eclipse JDT):
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean samePartCount) { /* !!!!!!!!!! WARNING !!!!!!!!!! * The content of this method has been fully copied to * SearchPattern#camelCaseMatch(String, int, int, String, int, int, boolean). * * So, if current method is modified, do NOT forget to copy again its content * to SearchPattern corresponding method! */
And in SearchPattern:
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) { /* !!!!!!!!!! WARNING !!!!!!!!!! * The algorithm of this method has been entirely copied from * CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean). * Array lengths have been replaced with call to {@link String#length()} and * array direct access have been replaced with call to {@link String#charAt(int)}. * * So, do NOT modify this method directly to fix any bug but modify first the * corresponding CharOperation method and do the copy again to be sure that * these two methods are kept synchronized. */
I am sure there is a reason why this was done, but how ugly…
Update: At least JDT made it easy to implement what I wanted.
errr…. how many lines is the duplicated code?
Hi Antony,
The whole method has about 120 lines including comments.
Ismael