NDM : Cette discussion a été créé initialement suite à ce post.
DJEclipse est en version 0.0.5 : ça me semble prématuré de le juger. La première chose qui me choque dans DJEclipse et qui me fait revenir à JADClipse immédiatement malgré ses nombreux défauts : les sources ne sont pas colorisés : avec JADClipse : le source s'ouvre dans l'éditeur Java, ce qui, en plus des facilités (coloristation, folding...) permet de suivre les méthodes, remonter aux appels, etc...
PS :
Je viens de faire autre test (méthode org.mozilla.universalchardet.UniversalDetector.handlData() prise au hasard)
Source d'origine
JADClipse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 public void handleData(final byte[] buf, int offset, int length) { if (this.done) { return; } if (length > 0) { this.gotData = true; } if (this.start) { this.start = false; if (length > 3) { int b1 = buf[offset] & 0xFF; int b2 = buf[offset+1] & 0xFF; int b3 = buf[offset+2] & 0xFF; int b4 = buf[offset+3] & 0xFF; switch (b1) { case 0xEF: if (b2 == 0xBB && b3 == 0xBF) { this.detectedCharset = Constants.CHARSET_UTF_8; } break; case 0xFE: if (b2 == 0xFF && b3 == 0x00 && b4 == 0x00) { this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_3412; } else if (b2 == 0xFF) { this.detectedCharset = Constants.CHARSET_UTF_16BE; } break; case 0x00: if (b2 == 0x00 && b3 == 0xFE && b4 == 0xFF) { this.detectedCharset = Constants.CHARSET_UTF_32BE; } else if (b2 == 0x00 && b3 == 0xFF && b4 == 0xFE) { this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_2143; } break; case 0xFF: if (b2 == 0xFE && b3 == 0x00 && b4 == 0x00) { this.detectedCharset = Constants.CHARSET_UTF_32LE; } else if (b2 == 0xFE) { this.detectedCharset = Constants.CHARSET_UTF_16LE; } break; } // swich end if (this.detectedCharset != null) { this.done = true; return; } } } // if (start) end int maxPos = offset + length; for (int i=offset; i<maxPos; ++i) { int c = buf[i] & 0xFF; if ((c & 0x80) != 0 && c != 0xA0) { if (this.inputState != InputState.HIGHBYTE) { this.inputState = InputState.HIGHBYTE; if (this.escCharsetProber != null) { this.escCharsetProber = null; } if (this.probers[0] == null) { this.probers[0] = new MBCSGroupProber(); } if (this.probers[1] == null) { this.probers[1] = new SBCSGroupProber(); } if (this.probers[2] == null) { this.probers[2] = new Latin1Prober(); } } } else { if (this.inputState == InputState.PURE_ASCII && (c == 0x1B || (c == 0x7B && this.lastChar == 0x7E))) { this.inputState = InputState.ESC_ASCII; } this.lastChar = buf[i]; } } // for end CharsetProber.ProbingState st; if (this.inputState == InputState.ESC_ASCII) { if (this.escCharsetProber == null) { this.escCharsetProber = new EscCharsetProber(); } st = this.escCharsetProber.handleData(buf, offset, length); if (st == CharsetProber.ProbingState.FOUND_IT) { this.done = true; this.detectedCharset = this.escCharsetProber.getCharSetName(); } } else if (this.inputState == InputState.HIGHBYTE) { for (int i=0; i<this.probers.length; ++i) { st = this.probers[i].handleData(buf, offset, length); if (st == CharsetProber.ProbingState.FOUND_IT) { this.done = true; this.detectedCharset = this.probers[i].getCharSetName(); return; } } } else { // pure ascii // do nothing } }
DJEclipse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 public void handleData(byte[] paramArrayOfByte, int paramInt1, int paramInt2) { if (this.done) return; if (paramInt2 > 0) this.gotData = true; int k; if (this.start) { this.start = false; if (paramInt2 > 3) { i = paramArrayOfByte[paramInt1] & 0xFF; j = paramArrayOfByte[(paramInt1 + 1)] & 0xFF; k = paramArrayOfByte[(paramInt1 + 2)] & 0xFF; int l = paramArrayOfByte[(paramInt1 + 3)] & 0xFF; switch (i) { case 239: if ((j == 187) && (k == 191)) this.detectedCharset = Constants.CHARSET_UTF_8; break; case 254: if ((j == 255) && (k == 0) && (l == 0)) this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_3412; else if (j == 255) this.detectedCharset = Constants.CHARSET_UTF_16BE; break; case 0: if ((j == 0) && (k == 254) && (l == 255)) this.detectedCharset = Constants.CHARSET_UTF_32BE; else if ((j == 0) && (k == 255) && (l == 254)) this.detectedCharset = Constants.CHARSET_X_ISO_10646_UCS_4_2143; break; case 255: if ((j == 254) && (k == 0) && (l == 0)) this.detectedCharset = Constants.CHARSET_UTF_32LE; else if (j == 254) this.detectedCharset = Constants.CHARSET_UTF_16LE; } if (this.detectedCharset != null) { this.done = true; return; } } } int i = paramInt1 + paramInt2; for (int j = paramInt1; j < i; ++j) { k = paramArrayOfByte[j] & 0xFF; if (((k & 0x80) != 0) && (k != 160)) { if (this.inputState == InputState.HIGHBYTE) continue; this.inputState = InputState.HIGHBYTE; if (this.escCharsetProber != null) this.escCharsetProber = null; if (this.probers[0] == null) this.probers[0] = new MBCSGroupProber(); if (this.probers[1] == null) this.probers[1] = new SBCSGroupProber(); if (this.probers[2] != null) continue; this.probers[2] = new Latin1Prober(); } else { if ((this.inputState == InputState.PURE_ASCII) && (((k == 27) || ((k == 123) && (this.lastChar == 126))))) this.inputState = InputState.ESC_ASCII; this.lastChar = paramArrayOfByte[j]; } } CharsetProber.ProbingState localProbingState; if (this.inputState == InputState.ESC_ASCII) { if (this.escCharsetProber == null) this.escCharsetProber = new EscCharsetProber(); localProbingState = this.escCharsetProber.handleData(paramArrayOfByte, paramInt1, paramInt2); if (localProbingState != CharsetProber.ProbingState.FOUND_IT) return; this.done = true; this.detectedCharset = this.escCharsetProber.getCharSetName(); } else { if (this.inputState != InputState.HIGHBYTE) return; for (k = 0; k < this.probers.length; ++k) { localProbingState = this.probers[k].handleData(paramArrayOfByte, paramInt1, paramInt2); if (localProbingState != CharsetProber.ProbingState.FOUND_IT) continue; this.done = true; this.detectedCharset = this.probers[k].getCharSetName(); return; } } }
Intéressant de voir que le code produit par DJCompiler semble à première vue compilable contrairement à celui produit par JADClipse manisfestement non compilable sans modification (par contre, bof, le recyclage de n5, même si ça compile mieux)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 public void handleData(byte[] arrby, int n, int n2) { int n3; int n4; int n5; if (this.done) { return; } if (n2 > 0) { this.gotData = true; } if (this.start) { this.start = false; if (n2 > 3) { n5 = arrby[n] & 255; n3 = arrby[n + 1] & 255; n4 = arrby[n + 2] & 255; int n6 = arrby[n + 3] & 255; switch (n5) { case 239: { if (n3 != 187 || n4 != 191) break; this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_8; break; } case 254: { if (n3 == 255 && n4 == 0 && n6 == 0) { this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_X_ISO_10646_UCS_4_3412; break; } if (n3 != 255) break; this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_16BE; break; } case 0: { if (n3 == 0 && n4 == 254 && n6 == 255) { this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_32BE; break; } if (n3 != 0 || n4 != 255 || n6 != 254) break; this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_X_ISO_10646_UCS_4_2143; break; } case 255: { if (n3 == 254 && n4 == 0 && n6 == 0) { this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_32LE; break; } if (n3 != 254) break; this.detectedCharset = org.mozilla.universalchardet.Constants.CHARSET_UTF_16LE; } } if (this.detectedCharset != null) { this.done = true; return; } } } n5 = n + n2; for (n3 = n; n3 < n5; ++n3) { n4 = arrby[n3] & 255; if ((n4 & 128) != 0 && n4 != 160) { if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE) continue; this.inputState = org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE; if (this.escCharsetProber != null) { this.escCharsetProber = null; } if (this.probers[0] == null) { this.probers[0] = new org.mozilla.universalchardet.prober.MBCSGroupProber(); } if (this.probers[1] == null) { this.probers[1] = new org.mozilla.universalchardet.prober.SBCSGroupProber(); } if (this.probers[2] != null) continue; this.probers[2] = new org.mozilla.universalchardet.prober.Latin1Prober(); continue; } if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.PURE_ASCII && (n4 == 27 || n4 == 123 && this.lastChar == 126)) { this.inputState = org.mozilla.universalchardet.UniversalDetector$InputState.ESC_ASCII; } this.lastChar = arrby[n3]; } if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.ESC_ASCII) { org.mozilla.universalchardet.prober.CharsetProber$ProbingState probingState; if (this.escCharsetProber == null) { this.escCharsetProber = new org.mozilla.universalchardet.prober.EscCharsetProber(); } if ((probingState = this.escCharsetProber.handleData(arrby, n, n2)) == org.mozilla.universalchardet.prober.CharsetProber$ProbingState.FOUND_IT) { this.done = true; this.detectedCharset = this.escCharsetProber.getCharSetName(); } } else if (this.inputState == org.mozilla.universalchardet.UniversalDetector$InputState.HIGHBYTE) { for (n4 = 0; n4 < this.probers.length; ++n4) { org.mozilla.universalchardet.prober.CharsetProber$ProbingState probingState = this.probers[n4].handleData(arrby, n, n2); if (probingState != org.mozilla.universalchardet.prober.CharsetProber$ProbingState.FOUND_IT) continue; this.done = true; this.detectedCharset = this.probers[n4].getCharSetName(); return; } } }
Partager