@icarusmx/creta 1.5.4 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/builders/MenuBuilder.js +23 -4
- package/lib/exercises/array-object-manipulation.md +1281 -0
- package/lib/exercises/git-stash-workflow.md +426 -0
- package/lib/exercises/railway-deployment.md +1185 -0
- package/lib/papers/bitcoin/bitcoin.md +92 -0
- package/lib/papers/mapreduce/mapreduce.md +476 -0
- package/lib/papers/spark/spark.md +49 -0
- package/package.json +5 -1
- package/ascii-logo.txt +0 -8
- package/codex-refactor.txt +0 -13
- package/docs/diagrams/README.md +0 -131
- package/docs/diagrams/architecture-overview.mmd +0 -71
- package/docs/diagrams/architecture.svg +0 -1
- package/docs/diagrams/ecosystem-integration.mmd +0 -49
- package/docs/diagrams/evolution-phases.mmd +0 -49
- package/docs/diagrams/output.svg +0 -1
- package/docs/diagrams/phase2-command-help-flow.mmd +0 -51
- package/docs/diagrams/user-journey.mmd +0 -78
- package/ejemplo.sh +0 -3
- package/refactor.txt +0 -581
- package/templates/sveltekit-portfolio/package.json +0 -20
- package/templates/sveltekit-portfolio/src/app.css +0 -51
- package/templates/sveltekit-portfolio/src/app.html +0 -12
- package/templates/sveltekit-portfolio/src/routes/+layout.svelte +0 -108
- package/templates/sveltekit-portfolio/src/routes/+page.svelte +0 -79
- package/templates/sveltekit-portfolio/static/favicon.png +0 -0
- package/templates/sveltekit-portfolio/svelte.config.js +0 -10
- package/templates/sveltekit-portfolio/vite.config.js +0 -10
- package/test/enunciados.test.js +0 -72
- package/test/sintaxis-menu.test.js +0 -45
- package/wea-fome-qlia.sh +0 -92
|
@@ -53,12 +53,13 @@ export class MenuBuilder {
|
|
|
53
53
|
|
|
54
54
|
renderOption(option, isSelected, index) {
|
|
55
55
|
const prefix = isSelected ? '▶ ' : ' '
|
|
56
|
+
const number = `${index + 1}.`
|
|
56
57
|
const label = option.title || option.label || `Opción ${index + 1}`
|
|
57
58
|
|
|
58
59
|
if (isSelected) {
|
|
59
|
-
console.log(`\x1b[36m${prefix}${label}\x1b[0m`)
|
|
60
|
+
console.log(`\x1b[36m${prefix}${number} ${label}\x1b[0m`)
|
|
60
61
|
} else {
|
|
61
|
-
console.log(`${prefix}${label}`)
|
|
62
|
+
console.log(`${prefix}${number} ${label}`)
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
if (option.description) {
|
|
@@ -117,10 +118,28 @@ export class MenuBuilder {
|
|
|
117
118
|
return
|
|
118
119
|
}
|
|
119
120
|
|
|
120
|
-
|
|
121
|
+
// Handle number keys (1-9)
|
|
122
|
+
const numberMatch = key.match(/^[1-9]$/)
|
|
123
|
+
if (numberMatch) {
|
|
124
|
+
const num = parseInt(key, 10)
|
|
125
|
+
const targetIndex = num - 1
|
|
126
|
+
|
|
127
|
+
// Check if the number is within range
|
|
128
|
+
if (targetIndex >= 0 && targetIndex < this.config.options.length) {
|
|
129
|
+
const choice = this.config.options[targetIndex]
|
|
130
|
+
cleanup()
|
|
131
|
+
resolve(choice)
|
|
132
|
+
return
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Arrow keys or vim-style navigation
|
|
137
|
+
if (key === '\u001b[A' || key === 'k') {
|
|
138
|
+
// Up arrow or 'k'
|
|
121
139
|
selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : this.config.options.length - 1
|
|
122
140
|
render()
|
|
123
|
-
} else if (key === '\u001b[B') {
|
|
141
|
+
} else if (key === '\u001b[B' || key === 'j') {
|
|
142
|
+
// Down arrow or 'j'
|
|
124
143
|
selectedIndex = selectedIndex < this.config.options.length - 1 ? selectedIndex + 1 : 0
|
|
125
144
|
render()
|
|
126
145
|
}
|