@icarusmx/creta 1.0.17 → 1.0.19
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/bin/creta.js +65 -8
- package/lessons/lesson1-system-decomposition.js +13 -4
- package/package.json +1 -1
package/bin/creta.js
CHANGED
|
@@ -768,7 +768,21 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
768
768
|
}
|
|
769
769
|
|
|
770
770
|
console.log("Los enunciados fundamentales son un conjunto de afirmaciones que tienen el propósito de ejercitar el pensamiento orientado a objetos de los estudiantes de Creta. Escogimos estos enunciados porque creemos que exhaustan los conceptos mínimos necesarios para entender el paradigma de la programación orientada a objetos.")
|
|
771
|
-
|
|
771
|
+
|
|
772
|
+
// Wait for user to press Enter before showing the list
|
|
773
|
+
const rl = createInterface({
|
|
774
|
+
input: process.stdin,
|
|
775
|
+
output: process.stdout
|
|
776
|
+
})
|
|
777
|
+
|
|
778
|
+
await new Promise((resolve) => {
|
|
779
|
+
rl.question("\nPresiona Enter para ver los enunciados...", () => {
|
|
780
|
+
rl.close()
|
|
781
|
+
resolve()
|
|
782
|
+
})
|
|
783
|
+
})
|
|
784
|
+
|
|
785
|
+
console.clear()
|
|
772
786
|
console.log("Elige qué enunciado te gustaría explorar:")
|
|
773
787
|
console.log("")
|
|
774
788
|
|
|
@@ -789,10 +803,8 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
789
803
|
process.stdout.write('\x1b[2J')
|
|
790
804
|
process.stdout.write('\x1b[H')
|
|
791
805
|
|
|
792
|
-
console.log("
|
|
793
|
-
|
|
794
|
-
console.log("Elige qué enunciado te gustaría explorar:")
|
|
795
|
-
console.log("")
|
|
806
|
+
console.log("Elige qué enunciado te gustaría explorar:")
|
|
807
|
+
console.log("")
|
|
796
808
|
|
|
797
809
|
ENUNCIADOS.forEach((enunciado, index) => {
|
|
798
810
|
const isSelected = index === selectedIndex
|
|
@@ -842,12 +854,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
842
854
|
try {
|
|
843
855
|
const lesson1 = new Lesson1SystemDecomposition()
|
|
844
856
|
await lesson1.start()
|
|
857
|
+
await returnToMainMenu()
|
|
845
858
|
} catch (error) {
|
|
846
859
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
847
860
|
console.log("\n🚀 Próximamente:")
|
|
848
861
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
849
862
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
850
863
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
864
|
+
await returnToMainMenu()
|
|
851
865
|
}
|
|
852
866
|
} else if (enunciadoSeleccionado.id === 1) {
|
|
853
867
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -856,12 +870,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
856
870
|
try {
|
|
857
871
|
const lesson1 = new Lesson1SystemDecomposition()
|
|
858
872
|
await lesson1.start()
|
|
873
|
+
await returnToMainMenu()
|
|
859
874
|
} catch (error) {
|
|
860
875
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
861
876
|
console.log("\n🚀 Próximamente:")
|
|
862
877
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
863
878
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
864
879
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
880
|
+
await returnToMainMenu()
|
|
865
881
|
}
|
|
866
882
|
} else if (enunciadoSeleccionado.id === 2) {
|
|
867
883
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -870,12 +886,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
870
886
|
try {
|
|
871
887
|
const lesson2 = new Lesson2ObjectRequests()
|
|
872
888
|
await lesson2.start()
|
|
889
|
+
await returnToMainMenu()
|
|
873
890
|
} catch (error) {
|
|
874
891
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
875
892
|
console.log("\n🚀 Próximamente:")
|
|
876
893
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
877
894
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
878
895
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
896
|
+
await returnToMainMenu()
|
|
879
897
|
}
|
|
880
898
|
} else if (enunciadoSeleccionado.id === 3) {
|
|
881
899
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -884,12 +902,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
884
902
|
try {
|
|
885
903
|
const lesson3 = new Lesson3OnlyWay()
|
|
886
904
|
await lesson3.start()
|
|
905
|
+
await returnToMainMenu()
|
|
887
906
|
} catch (error) {
|
|
888
907
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
889
908
|
console.log("\n🚀 Próximamente:")
|
|
890
909
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
891
910
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
892
911
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
912
|
+
await returnToMainMenu()
|
|
893
913
|
}
|
|
894
914
|
} else if (enunciadoSeleccionado.id === 4) {
|
|
895
915
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -898,12 +918,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
898
918
|
try {
|
|
899
919
|
const lesson4 = new Lesson4OperationSignatures()
|
|
900
920
|
await lesson4.start()
|
|
921
|
+
await returnToMainMenu()
|
|
901
922
|
} catch (error) {
|
|
902
923
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
903
924
|
console.log("\n🚀 Próximamente:")
|
|
904
925
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
905
926
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
906
927
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
928
|
+
await returnToMainMenu()
|
|
907
929
|
}
|
|
908
930
|
} else if (enunciadoSeleccionado.id === 5) {
|
|
909
931
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -912,12 +934,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
912
934
|
try {
|
|
913
935
|
const lesson5 = new Lesson5InterfaceSet()
|
|
914
936
|
await lesson5.start()
|
|
937
|
+
await returnToMainMenu()
|
|
915
938
|
} catch (error) {
|
|
916
939
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
917
940
|
console.log("\n🚀 Próximamente:")
|
|
918
941
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
919
942
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
920
943
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
944
|
+
await returnToMainMenu()
|
|
921
945
|
}
|
|
922
946
|
} else if (enunciadoSeleccionado.id === 6) {
|
|
923
947
|
console.log(`${enunciadoSeleccionado.texto}`)
|
|
@@ -926,12 +950,14 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
926
950
|
try {
|
|
927
951
|
const lesson6 = new Lesson6InterfaceDesign()
|
|
928
952
|
await lesson6.start()
|
|
953
|
+
await returnToMainMenu()
|
|
929
954
|
} catch (error) {
|
|
930
955
|
console.error("\n❌ Error al ejecutar la lección:", error.message)
|
|
931
956
|
console.log("\n🚀 Próximamente:")
|
|
932
957
|
console.log("- Sesiones de estudio dirigidas basadas en este enunciado")
|
|
933
958
|
console.log("- Ejercicios prácticos que ilustren el concepto")
|
|
934
959
|
console.log("- Proyectos específicos para internalizar la idea")
|
|
960
|
+
await returnToMainMenu()
|
|
935
961
|
}
|
|
936
962
|
} else {
|
|
937
963
|
console.log("\n🚀 Próximamente:")
|
|
@@ -975,9 +1001,12 @@ async function startEnunciadosSelectorFallback() {
|
|
|
975
1001
|
|
|
976
1002
|
try {
|
|
977
1003
|
console.log("Los enunciados fundamentales son un conjunto de afirmaciones que tienen el propósito de ejercitar el pensamiento orientado a objetos de los estudiantes de Creta. Escogimos estos enunciados porque creemos que exhaustan los conceptos mínimos necesarios para entender el paradigma de la programación orientada a objetos.")
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1004
|
+
|
|
1005
|
+
const respuestaEnter = await askQuestion("\nPresiona Enter para ver los enunciados...")
|
|
1006
|
+
|
|
1007
|
+
console.clear()
|
|
1008
|
+
console.log("Elige qué enunciado te gustaría explorar:")
|
|
1009
|
+
console.log("")
|
|
981
1010
|
|
|
982
1011
|
ENUNCIADOS.forEach((enunciado, index) => {
|
|
983
1012
|
// Format the enunciado text with proper indentation for lists
|
|
@@ -1246,6 +1275,34 @@ async function startProyectosSelectorInteractive() {
|
|
|
1246
1275
|
})
|
|
1247
1276
|
}
|
|
1248
1277
|
|
|
1278
|
+
async function returnToMainMenu() {
|
|
1279
|
+
const rl = createInterface({
|
|
1280
|
+
input: process.stdin,
|
|
1281
|
+
output: process.stdout
|
|
1282
|
+
})
|
|
1283
|
+
|
|
1284
|
+
const askQuestion = (question) => {
|
|
1285
|
+
return new Promise((resolve) => {
|
|
1286
|
+
rl.question(question, resolve)
|
|
1287
|
+
})
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
console.log("\n🏠 ¿Qué te gustaría hacer ahora?")
|
|
1291
|
+
console.log("1. Volver al menú principal")
|
|
1292
|
+
console.log("2. Salir")
|
|
1293
|
+
|
|
1294
|
+
const respuesta = await askQuestion("\nElige una opción (1-2): ")
|
|
1295
|
+
|
|
1296
|
+
if (respuesta === '1') {
|
|
1297
|
+
rl.close()
|
|
1298
|
+
console.clear()
|
|
1299
|
+
await startMainMenu()
|
|
1300
|
+
} else {
|
|
1301
|
+
console.log("\n¡Hasta la vista! 👋")
|
|
1302
|
+
rl.close()
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1249
1306
|
async function startProyectosSelectorFallback() {
|
|
1250
1307
|
const rl = createInterface({
|
|
1251
1308
|
input: process.stdin,
|
|
@@ -94,7 +94,9 @@ export class Lesson1SystemDecomposition {
|
|
|
94
94
|
console.clear()
|
|
95
95
|
console.log("Descomposición en objetos:")
|
|
96
96
|
|
|
97
|
-
console.log("\
|
|
97
|
+
console.log("\n📄 Clase Book:")
|
|
98
|
+
console.log("━".repeat(50))
|
|
99
|
+
console.log("class Book {")
|
|
98
100
|
console.log(" constructor(title, author, isbn) {")
|
|
99
101
|
console.log(" this.title = title")
|
|
100
102
|
console.log(" this.author = author")
|
|
@@ -114,10 +116,13 @@ export class Lesson1SystemDecomposition {
|
|
|
114
116
|
console.log(" this.isLoaned = false")
|
|
115
117
|
console.log(" }")
|
|
116
118
|
console.log("}")
|
|
119
|
+
console.log("━".repeat(50))
|
|
117
120
|
|
|
118
121
|
await this.waitForEnter("\nPresiona Enter para ver User...")
|
|
119
122
|
|
|
120
|
-
console.log("\
|
|
123
|
+
console.log("\n📄 Clase User:")
|
|
124
|
+
console.log("━".repeat(50))
|
|
125
|
+
console.log("class User {")
|
|
121
126
|
console.log(" constructor(name, email, maxLoans = 3) {")
|
|
122
127
|
console.log(" this.name = name")
|
|
123
128
|
console.log(" this.email = email")
|
|
@@ -138,10 +143,13 @@ export class Lesson1SystemDecomposition {
|
|
|
138
143
|
console.log(" if (index > -1) this.currentLoans.splice(index, 1)")
|
|
139
144
|
console.log(" }")
|
|
140
145
|
console.log("}")
|
|
146
|
+
console.log("━".repeat(50))
|
|
141
147
|
|
|
142
148
|
await this.waitForEnter("\nPresiona Enter para ver Loan...")
|
|
143
149
|
|
|
144
|
-
console.log("\
|
|
150
|
+
console.log("\n📄 Clase Loan:")
|
|
151
|
+
console.log("━".repeat(50))
|
|
152
|
+
console.log("class Loan {")
|
|
145
153
|
console.log(" constructor(user, book, durationDays = 14) {")
|
|
146
154
|
console.log(" this.user = user")
|
|
147
155
|
console.log(" this.book = book")
|
|
@@ -257,12 +265,13 @@ export class Lesson1SystemDecomposition {
|
|
|
257
265
|
console.log("La descomposición en objetos es difícil porque requiere identificar")
|
|
258
266
|
console.log("las responsabilidades naturales que se deducen del sistema.")
|
|
259
267
|
|
|
260
|
-
await this.waitForEnter("\n✨ ¡Lección 1 completada! Presiona Enter para
|
|
268
|
+
await this.waitForEnter("\n✨ ¡Lección 1 completada! Presiona Enter para continuar...")
|
|
261
269
|
}
|
|
262
270
|
|
|
263
271
|
async waitForEnter(message) {
|
|
264
272
|
return new Promise((resolve) => {
|
|
265
273
|
this.rl.question(message, () => {
|
|
274
|
+
console.log("\n\n") // Add extra spacing after each interaction
|
|
266
275
|
resolve()
|
|
267
276
|
})
|
|
268
277
|
})
|