@@ -24,48 +24,44 @@ function dedent(text: string): string {
24
24
return text
25
25
}
26
26
27
- function testLine (
28
- line : string ,
29
- regexp : RegExp ,
30
- regionName : string ,
31
- end : boolean = false ,
32
- ) {
33
- const [ full , tag , name ] = regexp . exec ( line . trim ( ) ) || [ ]
34
-
35
- return (
36
- full
37
- && tag
38
- && name === regionName
39
- && tag . match ( end ? / ^ [ E e ] n d ? [ r R ] e g i o n $ / : / ^ [ r R ] e g i o n $ / )
40
- )
41
- }
42
-
43
27
function findRegion ( lines : Array < string > , regionName : string ) {
44
28
const regionRegexps = [
45
- / ^ \/ \/ ? # ? ( (?: e n d ) ? r e g i o n ) ( [ \w * - ] + ) $ / , // javascript, typescript, java
46
- / ^ \/ \* ? # ( (?: e n d ) ? r e g i o n ) ( [ \w * - ] + ) ? \* \/ $ / , // css, less, scss
47
- / ^ # p r a g m a ( (?: e n d ) ? r e g i o n ) ( [ \w * - ] + ) $ / , // C, C++
48
- / ^ < ! - - # ? ( (?: e n d ) ? r e g i o n ) ( [ \w * - ] + ) - - > $ / , // HTML, markdown
49
- / ^ # ( E n d R e g i o n ) ( [ \w * - ] + ) $ / , // Visual Basic
50
- / ^ : : # ( e n d r e g i o n ) ( [ \w * - ] + ) $ / , // Bat
51
- / ^ # ? ( (?: e n d ) ? r e g i o n ) ( [ \w * - ] + ) $ / , // C#, PHP, Powershell, Python, perl & misc
29
+ // javascript, typescript, java
30
+ [ / ^ \/ \/ ? # ? r e g i o n ( [ \w * - ] + ) $ / , / ^ \/ \/ ? # ? e n d r e g i o n / ] ,
31
+ // css, less, scss
32
+ [ / ^ \/ \* ? # r e g i o n ( [ \w * - ] + ) ? \* \/ $ / , / ^ \/ \* ? # e n d r e g i o n [ \s \w * - ] * \* \/ $ / ] ,
33
+ // C, C++
34
+ [ / ^ # p r a g m a r e g i o n ( [ \w * - ] + ) $ / , / ^ # p r a g m a e n d r e g i o n / ] ,
35
+ // HTML, markdown
36
+ [ / ^ < ! - - # ? r e g i o n ( [ \w * - ] + ) - - > $ / , / ^ < ! - - # ? r e g i o n [ \s \w * - ] * - - > $ / ] ,
37
+ // Visual Basic
38
+ [ / ^ # R e g i o n ( [ \w * - ] + ) $ / , / ^ # E n d R e g i o n / ] ,
39
+ // Bat
40
+ [ / ^ : : # r e g i o n ( [ \w * - ] + ) $ / , / ^ : : # e n d r e g i o n / ] ,
41
+ // C#, PHP, Powershell, Python, perl & misc
42
+ [ / ^ # ? r e g i o n ( [ \w * - ] + ) $ / , / ^ # ? e n d r e g i o n / ] ,
52
43
]
53
44
54
- let regexp = null
45
+ let endReg = null
55
46
let start = - 1
56
47
57
48
for ( const [ lineId , line ] of lines . entries ( ) ) {
58
- if ( regexp === null ) {
59
- for ( const reg of regionRegexps ) {
60
- if ( testLine ( line , reg , regionName ) ) {
49
+ if ( endReg === null ) {
50
+ for ( const [ startReg , end ] of regionRegexps ) {
51
+ const match = line . trim ( ) . match ( startReg )
52
+ if ( match && match [ 1 ] === regionName ) {
61
53
start = lineId + 1
62
- regexp = reg
54
+ endReg = end
63
55
break
64
56
}
65
57
}
66
58
}
67
- else if ( testLine ( line , regexp , regionName , true ) ) {
68
- return { start, end : lineId , regexp }
59
+ else if ( endReg . test ( line . trim ( ) ) ) {
60
+ return {
61
+ start,
62
+ end : lineId ,
63
+ regexp : endReg ,
64
+ }
69
65
}
70
66
}
71
67
0 commit comments