Skip to content

Commit 21485f3

Browse files
committed
feat: allow other block
1 parent c992ac6 commit 21485f3

File tree

8 files changed

+64
-47
lines changed

8 files changed

+64
-47
lines changed

eslint.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ export default antfu(
1717
'yaml/indent': 'off',
1818
},
1919
},
20+
ignores: ['**/playground/**'],
2021
},
2122
)

playground/src/components/Comp.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
<template>
2+
<div>
3+
<slot :id="`${id}`" />
4+
<slot name="bottom" v-bind="{ foo: id }" />
5+
</div>
6+
</template>
7+
18
<script setup lang="ts">
29
const { id } = defineProps<{ id: number }>()
310
411
defineSlots<{
512
default: (props: { id: string }) => any
613
bottom: (props: { foo: number }) => any
714
}>()
8-
</script>
9-
10-
<template>
11-
<div>
12-
<slot :id="`${id}`" />
13-
<slot name="bottom" v-bind="{ foo: id }" />
14-
</div>
15-
</template>
15+
</script>

playground/vite.config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ export default defineConfig({
1818
propsDestructure: true,
1919
},
2020
}),
21-
vueJsx: vueJsx(),
21+
vueJsx: vueJsx({
22+
transformOn: true
23+
}),
2224
},
2325
}),
2426

src/index.ts

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ let macro = await select({
2424
{ value: 'jsx-directive' },
2525
{ value: 'setup-sfc' },
2626
{ value: 'short-v-model' },
27+
{ value: 'define-slots' },
2728
],
2829
},
2930
)
@@ -41,19 +42,6 @@ if (macro === 'jsx-directive') {
4142
})
4243
}
4344

44-
let defineSlots = 'define-slots'
45-
if (['jsx-directive', 'setup-sfc'].includes(macro)) {
46-
defineSlots = await select({
47-
message: chalk.green(
48-
`Which define-slots macro do you want to use?`,
49-
),
50-
choices: [
51-
{ value: 'define-slots' },
52-
{ value: 'define-short-slots' },
53-
],
54-
})
55-
}
56-
5745
if (macro === 'short-v-model') {
5846
macro = await select({
5947
message: chalk.green(
@@ -76,22 +64,24 @@ const files = await glob(`${targetDirectory}/**/*.vue`, {
7664
].filter(Boolean),
7765
})
7866

67+
async function useTsx(cb = () => {}) {
68+
await $`${sg} scan -c ${config}.yml -U --filter '^setup-sfc start' ${targetDirectory}`
69+
await $`${sg} scan -c ${config}.yml -U --filter '^setup-sfc end' ${targetDirectory}`
70+
await cb()
71+
await $`${sg} scan -c ${config}-tsx.yml -U --filter '^setup-sfc clean' ${targetDirectory}`
72+
}
73+
7974
if (['jsx-directive', 'setup-sfc'].includes(macro)) {
8075
await $`${sg} scan -c ${config}.yml -U --filter '^v-' ${targetDirectory}`
81-
8276
await $`${sg} scan -c ${config}.yml -U --filter '^${macro === 'setup-sfc' ? 'export-render' : render}' ${targetDirectory}`
8377

84-
await $`${sg} scan -c ${config}.yml -U --filter '^setup-sfc' ${targetDirectory}`
85-
86-
await $`${sg} scan -c ${config}-tsx.yml -U --filter '^v-' ${targetDirectory}`
87-
88-
if (defineSlots === 'define-short-slots')
89-
await $`${sg} scan -c ${config}-tsx.yml -U --filter 'define-short-slots' ${targetDirectory}`
78+
await useTsx(() => $`${sg} scan -c ${config}-tsx.yml -U --filter '^v-' ${targetDirectory}`)
9079

9180
if (macro === 'setup-sfc')
9281
await Promise.all(files.map(async file => fs.move(file, `${file.slice(0, -3)}setup.tsx`)))
93-
else
94-
await $`${sg} scan -c ${config}-tsx.yml -U --filter '^sfc$' ${targetDirectory}`
82+
}
83+
else if (macro === 'define-slots') {
84+
await useTsx(() => $`${sg} scan -c ${config}-tsx.yml -U --filter '^define-slots' ${targetDirectory}`)
9585
}
9686
else {
9787
await $`${sg} scan -c ${config}.yml -U --filter ^${macro} ${targetDirectory}`

src/rules/define-slots.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ rule:
4545
follows:
4646
kind: tag_name
4747
regex: ^slot$
48-
4948
fix: |-
5049
5150
---
@@ -67,7 +66,7 @@ fix: |-
6766
6867
---
6968

70-
id: define-short-slots
69+
id: define-slots
7170
language: vueTsx
7271
rule:
7372
kind: type_annotation

src/rules/setup-sfc.yml

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,45 @@
1-
id: setup-sfc
1+
id: setup-sfc start comment
22
language: vue
33
rule:
44
kind: script_element
55
has:
6-
kind: raw_text
7-
pattern: $A
6+
kind: start_tag
7+
pattern: $START
8+
precedes:
9+
kind: raw_text
10+
pattern: $RAW
11+
precedes:
12+
kind: end_tag
13+
pattern: $END
814
inside:
915
kind: fragment
1016
fix: |-
11-
$A
17+
$START*/
18+
$RAW/*$END
19+
20+
---
21+
22+
id: setup-sfc end comment
23+
language: vue
24+
rule:
25+
kind: fragment
26+
pattern: $A
27+
fix: /*$A*/
28+
29+
---
30+
31+
id: setup-sfc clean comment
32+
language: vueTsx
33+
rule:
34+
kind: comment
35+
regex: /\*</?script|<script.*>\*/$
36+
pattern: $A
37+
inside:
38+
kind: program
39+
transform:
40+
B:
41+
substring:
42+
startChar: 2
43+
endChar: -2
44+
source: $A
45+
fix: $B

src/rules/sfc.yml

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/sgconfig.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ aliasLanguages:
88
extensions: [vue]
99
vueTsx:
1010
aliasOf: tsx
11-
extensions: [vue]
11+
extensions: []

0 commit comments

Comments
 (0)