الكود
إتقان استخدام الكود في ملفات MDX
يستخدم opendocs مكتبة rehype-pretty-code
للتعامل مع الكود داخل ملفات MDX. يتيح لك ذلك تخصيص طريقة عرض الكود بدرجة كبيرة!
لمزيد من المعلومات، راجع الوثائق الرسمية والأمثلة!
العناوين
مثال:
import { App } from './App';الكود:
```js title="apps/web/src/index.tsx"
import { App } from './App';
```تمييز الكود
مثال:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}الكود:
```js
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```تمييز الكود داخل السطر
مثال:
نتيجة [1, 2, 3].join('-') هي '1-2-3'.
الكود:
The result of `[1, 2, 3].join('-'){:js}` is `'1-2-3'{:js}`.تمييز الكود داخل السطر مع فهم السياق
على سبيل المثال، إذا كان لديك مقطع الكود التالي:
function getStringLength(str) {
return str.length;
}عندما نشير إلى getStringLength بوصفها دالة،
يمكننا تلوينها على هذا الأساس. وينطبق الأمر نفسه على function، أو
str مقابل str، إلخ. يتيح ذلك
ربط الكود داخل السطر دلالياً بأقرب كتلة كود يشير إليها.
الكود:
When we refer to `getStringLength{:.entity.name.function}` as a function,
we can color it as such. Same with `function{:.keyword}`, or
`str{:.variable.parameter}` vs. `str{:.variable.other.object}`, etc. This allows
semantically link inline code to the nearest block of code it refers to.تمييز الكلمات
مثال:
relative w-full pl-12 rounded-lg borderالكود:
```css /pl-12/ /border/
relative w-full pl-12 rounded-lg border
```تمييز الأسطر
مثال:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}الكود:
```js {2-4,6}
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```ترقيم الأسطر
مثال:
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}الكود:
```js showLineNumbers
module.exports = {
theme: {
extend: {
colors: {
warning: "hsl(var(--warning))",
"warning-foreground": "hsl(var(--warning-foreground))",
},
},
},
}
```Diff
مثال:
const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)الكود:
```diff
const alertVariants = cva(
- "relative w-full rounded-lg border",
+ "relative w-full pl-12 rounded-lg border"
)
```تمييز ANSI
مثال:
vite v5.0.0 dev server running at:
> Local: http://localhost:3000/
> Network: use `--host` to expose
ready in 125ms.
8:38:02 PM [vite] hmr update /src/App.jsxANSI داخل السطر: > Local: http://localhost:3000/
الكود:
```ansi
[0;36m vite v5.0.0[0;32m dev server running at:[0m
> Local: [0;36mhttp://localhost:[0;36;1m3000[0;36m/[0m
> Network: [0;2muse `--host` to expose[0m
[0;36mready in 125ms.[0m
[0;2m8:38:02 PM[0m [0;36;1m[vite][0m [0;32mhmr update [0;2m/src/App.jsx
```
Inline ANSI: `> Local: [0;36mhttp://localhost:[0;36;1m3000[0;36m/[0m{:ansi}`تمييز مجموعات الكلمات حسب المعرّف
ضع معرّفاً بعد # بعد الكلمات.
يتيح لك ذلك تلوين الأحرف بشكل مختلف اعتماداً على المعرّف المحدد.
مثال:
const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");الكود:
```js /age/#v /name/#v /setAge/#s /setName/#s /50/#i /"Taylor"/#i
const [age, setAge] = useState(50);
const [name, setName] = useState("Taylor");
```لتغيير الأنماط أو إضافة أنماط جديدة:
[data-chars-id='v'] {
@apply !text-pink-300 bg-rose-800/50 font-bold;
}