planscript 1.4.0 → 2.0.0

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.
Files changed (42) hide show
  1. package/LANGUAGE_REFERENCE.md +472 -4
  2. package/dist/ast/types.d.ts +84 -4
  3. package/dist/ast/types.d.ts.map +1 -1
  4. package/dist/cli.js +28 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/exporters/svg.d.ts +3 -0
  7. package/dist/exporters/svg.d.ts.map +1 -1
  8. package/dist/exporters/svg.js +48 -2
  9. package/dist/exporters/svg.js.map +1 -1
  10. package/dist/geometry/index.d.ts.map +1 -1
  11. package/dist/geometry/index.js +7 -0
  12. package/dist/geometry/index.js.map +1 -1
  13. package/dist/geometry/types.d.ts +7 -0
  14. package/dist/geometry/types.d.ts.map +1 -1
  15. package/dist/lowering/index.d.ts +23 -1
  16. package/dist/lowering/index.d.ts.map +1 -1
  17. package/dist/lowering/index.js +374 -28
  18. package/dist/lowering/index.js.map +1 -1
  19. package/dist/parser/grammar.d.ts +52 -5
  20. package/dist/parser/grammar.d.ts.map +1 -1
  21. package/dist/parser/grammar.js +4927 -2026
  22. package/dist/parser/grammar.js.map +1 -1
  23. package/dist/validation/index.d.ts +5 -0
  24. package/dist/validation/index.d.ts.map +1 -1
  25. package/dist/validation/index.js +215 -0
  26. package/dist/validation/index.js.map +1 -1
  27. package/examples/advanced_positioning.psc +225 -0
  28. package/examples/advanced_positioning.svg +76 -0
  29. package/examples/courtyard_house.psc +141 -0
  30. package/examples/courtyard_house.svg +93 -0
  31. package/examples/orientation.psc +141 -0
  32. package/examples/orientation.svg +88 -0
  33. package/examples/zones.psc +275 -0
  34. package/examples/zones.svg +89 -0
  35. package/package.json +1 -1
  36. package/examples/casa_moderna.psc +0 -375
  37. package/examples/casa_moderna_v2.psc +0 -406
  38. package/examples/casa_moderna_v3.psc +0 -375
  39. package/examples/casa_moderna_v5.psc +0 -397
  40. package/examples/house2.psc +0 -156
  41. package/examples/house2.svg +0 -103
  42. package/examples/house3.svg +0 -139
@@ -1,139 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="800" viewBox="0 0 1000 800">
3
- <defs>
4
- <style>
5
- .room-label { font-family: Arial, sans-serif; font-weight: 500; }
6
- </style>
7
- </defs>
8
-
9
- <!-- Background -->
10
- <rect width="1000" height="800" fill="#ffffff" />
11
-
12
- <!-- Footprint (boundary) -->
13
- <path d="M 302.58 740.00 L 697.42 740.00 L 697.42 60.00 L 302.58 60.00 Z" fill="none" stroke="#7f8c8d" stroke-width="2" stroke-dasharray="8,4" />
14
-
15
- <!-- Rooms -->
16
- <path d="M 302.58 740.00 L 434.19 740.00 L 434.19 630.32 L 302.58 630.32 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
17
- <path d="M 434.19 740.00 L 565.81 740.00 L 565.81 630.32 L 434.19 630.32 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
18
- <path d="M 565.81 740.00 L 697.42 740.00 L 697.42 630.32 L 565.81 630.32 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
19
- <path d="M 302.58 630.32 L 412.26 630.32 L 412.26 498.71 L 302.58 498.71 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
20
- <path d="M 412.26 630.32 L 697.42 630.32 L 697.42 498.71 L 412.26 498.71 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
21
- <path d="M 302.58 498.71 L 456.13 498.71 L 456.13 367.10 L 302.58 367.10 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
22
- <path d="M 456.13 498.71 L 697.42 498.71 L 697.42 367.10 L 456.13 367.10 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
23
- <path d="M 456.13 367.10 L 543.87 367.10 L 543.87 147.74 L 456.13 147.74 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
24
- <path d="M 302.58 367.10 L 456.13 367.10 L 456.13 257.42 L 302.58 257.42 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
25
- <path d="M 543.87 367.10 L 631.61 367.10 L 631.61 279.35 L 543.87 279.35 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
26
- <path d="M 302.58 257.42 L 456.13 257.42 L 456.13 147.74 L 302.58 147.74 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
27
- <path d="M 631.61 367.10 L 697.42 367.10 L 697.42 279.35 L 631.61 279.35 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
28
- <path d="M 543.87 279.35 L 697.42 279.35 L 697.42 147.74 L 543.87 147.74 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
29
- <path d="M 302.58 147.74 L 500.00 147.74 L 500.00 60.00 L 302.58 60.00 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
30
- <path d="M 500.00 147.74 L 587.74 147.74 L 587.74 60.00 L 500.00 60.00 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
31
- <path d="M 587.74 147.74 L 697.42 147.74 L 697.42 60.00 L 587.74 60.00 Z" fill="#ecf0f1" stroke="#bdc3c7" stroke-width="1" />
32
-
33
- <!-- Walls -->
34
- <line x1="434.19" y1="740.00" x2="434.19" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
35
- <line x1="302.58" y1="630.32" x2="412.26" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
36
- <line x1="412.26" y1="630.32" x2="434.19" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
37
- <line x1="565.81" y1="740.00" x2="565.81" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
38
- <line x1="434.19" y1="630.32" x2="565.81" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
39
- <line x1="565.81" y1="630.32" x2="697.42" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
40
- <line x1="412.26" y1="630.32" x2="412.26" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
41
- <line x1="302.58" y1="498.71" x2="412.26" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
42
- <line x1="412.26" y1="498.71" x2="456.13" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
43
- <line x1="456.13" y1="498.71" x2="697.42" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
44
- <line x1="456.13" y1="498.71" x2="456.13" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
45
- <line x1="302.58" y1="367.10" x2="456.13" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
46
- <line x1="456.13" y1="367.10" x2="543.87" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
47
- <line x1="543.87" y1="367.10" x2="631.61" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
48
- <line x1="631.61" y1="367.10" x2="697.42" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
49
- <line x1="543.87" y1="367.10" x2="543.87" y2="279.35" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
50
- <line x1="543.87" y1="279.35" x2="543.87" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
51
- <line x1="456.13" y1="147.74" x2="500.00" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
52
- <line x1="500.00" y1="147.74" x2="543.87" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
53
- <line x1="456.13" y1="367.10" x2="456.13" y2="257.42" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
54
- <line x1="456.13" y1="257.42" x2="456.13" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
55
- <line x1="302.58" y1="257.42" x2="456.13" y2="257.42" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
56
- <line x1="631.61" y1="367.10" x2="631.61" y2="279.35" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
57
- <line x1="543.87" y1="279.35" x2="631.61" y2="279.35" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
58
- <line x1="302.58" y1="147.74" x2="456.13" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
59
- <line x1="631.61" y1="279.35" x2="697.42" y2="279.35" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
60
- <line x1="543.87" y1="147.74" x2="587.74" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
61
- <line x1="587.74" y1="147.74" x2="697.42" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
62
- <line x1="500.00" y1="147.74" x2="500.00" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
63
- <line x1="587.74" y1="147.74" x2="587.74" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
64
- <line x1="302.58" y1="740.00" x2="434.19" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
65
- <line x1="302.58" y1="740.00" x2="302.58" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
66
- <line x1="434.19" y1="740.00" x2="565.81" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
67
- <line x1="565.81" y1="740.00" x2="697.42" y2="740.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
68
- <line x1="697.42" y1="740.00" x2="697.42" y2="630.32" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
69
- <line x1="302.58" y1="630.32" x2="302.58" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
70
- <line x1="697.42" y1="630.32" x2="697.42" y2="498.71" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
71
- <line x1="302.58" y1="498.71" x2="302.58" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
72
- <line x1="697.42" y1="498.71" x2="697.42" y2="367.10" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
73
- <line x1="302.58" y1="367.10" x2="302.58" y2="257.42" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
74
- <line x1="302.58" y1="257.42" x2="302.58" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
75
- <line x1="697.42" y1="367.10" x2="697.42" y2="279.35" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
76
- <line x1="697.42" y1="279.35" x2="697.42" y2="147.74" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
77
- <line x1="302.58" y1="60.00" x2="500.00" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
78
- <line x1="302.58" y1="147.74" x2="302.58" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
79
- <line x1="500.00" y1="60.00" x2="587.74" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
80
- <line x1="697.42" y1="147.74" x2="697.42" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
81
- <line x1="587.74" y1="60.00" x2="697.42" y2="60.00" stroke="#2c3e50" stroke-width="3" stroke-linecap="round" />
82
-
83
- <!-- Openings (doors/windows) -->
84
- <line x1="486.84" y1="740.00" x2="513.16" y2="740.00" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
85
- <line x1="313.55" y1="740.00" x2="423.23" y2="740.00" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
86
- <line x1="434.19" y1="695.03" x2="434.19" y2="675.29" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
87
- <line x1="621.74" y1="740.00" x2="641.48" y2="740.00" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
88
- <line x1="565.81" y1="695.03" x2="565.81" y2="675.29" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
89
- <line x1="483.55" y1="630.32" x2="516.45" y2="630.32" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
90
- <line x1="412.26" y1="574.39" x2="412.26" y2="554.65" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
91
- <line x1="549.35" y1="498.71" x2="604.19" y2="498.71" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
92
- <line x1="421.03" y1="498.71" x2="447.35" y2="498.71" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
93
- <line x1="456.13" y1="446.06" x2="456.13" y2="419.74" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
94
- <line x1="490.13" y1="367.10" x2="509.87" y2="367.10" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
95
- <line x1="456.13" y1="322.13" x2="456.13" y2="302.39" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
96
- <line x1="456.13" y1="212.45" x2="456.13" y2="192.71" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
97
- <line x1="543.87" y1="332.00" x2="543.87" y2="314.45" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
98
- <line x1="543.87" y1="223.42" x2="543.87" y2="203.68" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
99
- <line x1="468.19" y1="147.74" x2="487.94" y2="147.74" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
100
- <line x1="500.00" y1="113.74" x2="500.00" y2="94.00" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
101
- <line x1="587.74" y1="112.65" x2="587.74" y2="95.10" stroke="#e74c3c" stroke-width="4" stroke-linecap="round" />
102
- <line x1="335.48" y1="630.32" x2="379.35" y2="630.32" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
103
- <line x1="302.58" y1="701.61" x2="302.58" y2="668.71" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
104
- <line x1="302.58" y1="586.45" x2="302.58" y2="542.58" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
105
- <line x1="302.58" y1="454.84" x2="302.58" y2="410.97" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
106
- <line x1="302.58" y1="312.26" x2="302.58" y2="268.39" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
107
- <line x1="302.58" y1="224.52" x2="302.58" y2="180.65" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
108
- <line x1="302.58" y1="81.94" x2="302.58" y2="16.13" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
109
- <line x1="697.42" y1="698.32" x2="697.42" y2="672.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
110
- <line x1="697.42" y1="520.65" x2="697.42" y2="454.84" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
111
- <line x1="697.42" y1="410.97" x2="697.42" y2="345.16" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
112
- <line x1="697.42" y1="334.19" x2="697.42" y2="312.26" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
113
- <line x1="697.42" y1="240.97" x2="697.42" y2="186.13" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
114
- <line x1="697.42" y1="106.06" x2="697.42" y2="79.74" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
115
- <line x1="368.39" y1="60.00" x2="434.19" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
116
- <line x1="527.42" y1="60.00" x2="560.32" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
117
- <line x1="629.42" y1="60.00" x2="655.74" y2="60.00" stroke="#3498db" stroke-width="3" stroke-linecap="round" />
118
-
119
- <!-- Labels -->
120
- <text x="368.39" y="685.16" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Cochera</text>
121
- <text x="500.00" y="685.16" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Hall</text>
122
- <text x="631.61" y="685.16" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Lavadero</text>
123
- <text x="357.42" y="564.52" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Oficina</text>
124
- <text x="554.84" y="564.52" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Living</text>
125
- <text x="379.35" y="432.90" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Cocina</text>
126
- <text x="576.77" y="432.90" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Comedor</text>
127
- <text x="500.00" y="257.42" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Pasillo</text>
128
- <text x="379.35" y="312.26" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Dormitorio 2</text>
129
- <text x="587.74" y="323.23" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Baño</text>
130
- <text x="379.35" y="202.58" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Dormitorio 3</text>
131
- <text x="664.52" y="323.23" font-size="13" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Placard</text>
132
- <text x="620.65" y="213.55" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Estar Íntimo</text>
133
- <text x="401.29" y="103.87" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Suite Principal</text>
134
- <text x="543.87" y="103.87" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Vestidor</text>
135
- <text x="642.58" y="103.87" font-size="14" fill="#2c3e50" text-anchor="middle" dominant-baseline="middle" font-family="Arial, sans-serif">Baño Suite</text>
136
-
137
- <!-- Dimensions -->
138
-
139
- </svg>