1
1
import '../app_def.dart' ;
2
2
import '../entities/compare_result.dart' ;
3
- import '../entities/replacement.dart' ;
4
3
import '../utils.dart' ;
5
4
6
- String getUnreadableLines (String hex) {
5
+ String getUnreadableContent (String hex) {
7
6
return hex.substring (0 , hex.lastIndexOf ('02' ) + 2 );
8
7
}
9
8
10
- String getReadableLines (String hex) {
9
+ String getReadableContent (String hex) {
11
10
return hex.substring (hex.lastIndexOf ('02' ) + 3 );
12
11
}
13
12
14
13
String replaceSequences (String hex, {bool extract = true }) {
15
- for (var replacement in AppDef ().replacements) {
14
+ for (var replacement in AppDef ().replacements.entries ) {
16
15
if (extract) {
17
- hex = hex.replaceAll (replacement.pattern , replacement.replaceWith );
16
+ hex = hex.replaceAll (replacement.key , replacement.value );
18
17
} else {
19
- hex = hex.replaceAll (replacement.replaceWith , replacement.pattern );
18
+ hex = hex.replaceAll (replacement.value , replacement.key );
20
19
}
21
20
}
22
21
23
22
return hex;
24
23
}
25
24
25
+ int compareLine (String origLine, String modifLine, String sequence) {
26
+ return origLine.count (sequence) - modifLine.count (sequence);
27
+ }
28
+
26
29
CompareResult compareEdit (String original, String modified) {
27
- var lineSeparator = AppDef ().replacements[ 0 ].replaceWith ;
28
- var originalLines = original.split (lineSeparator );
29
- var modifiedLines = modified.split (lineSeparator );
30
+ var separator = AppDef ().replacements.values.first ;
31
+ var origLines = original.split (separator );
32
+ var modifLines = modified.split (separator );
30
33
31
- if (originalLines .length != modifiedLines .length) {
34
+ if (origLines .length != modifLines .length) {
32
35
return CompareResult (
33
36
success: false ,
34
37
messages: ['Number of lines does not match.' ],
@@ -40,31 +43,31 @@ CompareResult compareEdit(String original, String modified) {
40
43
var changedLines = 0 ;
41
44
var success = true ;
42
45
43
- for (var i = 0 ; i < originalLines .length; i++ ) {
44
- var originalLine = originalLines [i];
45
- var modifiedLine = modifiedLines [i];
46
+ for (var i = 0 ; i < origLines .length; i++ ) {
47
+ var origLine = origLines [i];
48
+ var modifLine = modifLines [i];
46
49
47
- for (var replacement in AppDef ().replacements) {
48
- var entity = replacement.replaceWith;
50
+ for (var toSkip in AppDef ().skipComparison) {
51
+ origLine = origLine.replaceAll (toSkip, '' );
52
+ modifLine = modifLine.replaceAll (toSkip, '' );
53
+ }
49
54
50
- if (replacement.skipComparison) {
51
- originalLine = originalLine.replaceAll (entity, '' );
52
- modifiedLine = modifiedLine.replaceAll (entity, '' );
53
- continue ;
54
- }
55
+ var replacements = AppDef ().replacements.entries.where ((entry) {
56
+ return ! AppDef ().skipComparison.contains (entry.value);
57
+ }).map ((entry) => entry.value);
55
58
56
- var name = String . fromCharCodes ( hexStringToIntList (entity));
57
- var c1 = originalLine. count (entity );
58
- var c2 = modifiedLine. count (entity );
59
+ for ( var replacement in replacements) {
60
+ var compare = compareLine (origLine, modifLine, replacement );
61
+ var name = String . fromCharCodes ( hexStringToIntList (replacement) );
59
62
60
- if (c1 != c2 ) {
61
- messages.add ('Line ${i + 1 }: found ${c1 > c2 ? 'less' : 'more' }'
63
+ if (compare != 0 ) {
64
+ messages.add ('Line ${i + 1 }: found ${compare > 0 ? 'less' : 'more' }'
62
65
' $name than expected' );
63
66
success = false ;
64
67
}
65
68
}
66
69
67
- if (originalLine != modifiedLine ) changedLines++ ;
70
+ if (origLine != modifLine ) changedLines++ ;
68
71
}
69
72
70
73
return CompareResult (
@@ -74,6 +77,11 @@ CompareResult compareEdit(String original, String modified) {
74
77
);
75
78
}
76
79
80
+ void printElapsedTime (DateTime from) {
81
+ var elapsed = DateTime .now ().difference (from);
82
+ print ('Elapsed time: ${elapsed .inMilliseconds } ms.' );
83
+ }
84
+
77
85
extension SequenceCount on String {
78
86
int count (Pattern pattern) => split (pattern).length - 1 ;
79
87
}
0 commit comments