rip-lang 1.4.2 → 1.4.4
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/CHANGELOG.md +40 -0
- package/README.md +258 -1171
- package/docs/dist/rip.browser.js +74 -68
- package/docs/dist/rip.browser.min.js +147 -142
- package/docs/dist/rip.browser.min.js.br +0 -0
- package/package.json +1 -1
- package/src/codegen.js +20 -4
- package/src/compiler.js +90 -47
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,46 @@ All notable changes to Rip will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.4] - 2025-11-08
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **S-expression formatter - Clean room rebuild**
|
|
12
|
+
- Complete rewrite of `formatSExpr()` with clear, simple rules
|
|
13
|
+
- Fixed indentation hierarchy: children ALWAYS indented more than parents
|
|
14
|
+
- Fixed method chaining indentation (`.` operator in call heads)
|
|
15
|
+
- Multi-line heads now properly re-indented to maintain hierarchy
|
|
16
|
+
- Block nodes always expand children on separate lines
|
|
17
|
+
- Removed all column-based continuation complexity
|
|
18
|
+
- +89 lines added, -52 lines removed (net +37 for clarity)
|
|
19
|
+
|
|
20
|
+
- **INLINE_FORMS cleanup**
|
|
21
|
+
- Removed legacy MUMPS cruft (tag, entryref, lock-*, newline, etc.)
|
|
22
|
+
- Organized by category with aligned comments
|
|
23
|
+
- Added `new` to inline forms for compact constructor calls
|
|
24
|
+
- Clear documentation of what belongs and why
|
|
25
|
+
|
|
26
|
+
### Improved
|
|
27
|
+
- S-expression output is now beautifully formatted with perfect hierarchy
|
|
28
|
+
- Method chaining like `s.replace().trim()` displays correctly
|
|
29
|
+
- Simple constructors stay compact: `(new (Date))`
|
|
30
|
+
- Complex constructors expand naturally: `(new (Set (...)))`
|
|
31
|
+
|
|
32
|
+
All 938 tests passing (100%) ✅
|
|
33
|
+
|
|
34
|
+
## [1.4.3] - 2025-11-07
|
|
35
|
+
|
|
36
|
+
### Refactored
|
|
37
|
+
- **Convert generateNot to s-expression approach** - Following Rip philosophy!
|
|
38
|
+
- Check operand TYPE at s-expression level (not regex on generated code)
|
|
39
|
+
- Handles primitives: `!1`, `!x`, `!true` (clean output without extra parens)
|
|
40
|
+
- Handles property access: `!obj.prop`, `!arr[0]` (clean output)
|
|
41
|
+
- Conservative for complex expressions: `!(a + b)` (keeps parens)
|
|
42
|
+
- Simple, maintainable logic (~26 lines)
|
|
43
|
+
- Follows philosophy from Issues #46 (flattenBinaryChain) and #49 (unwrapComprehensionIIFE)
|
|
44
|
+
- **Work at IR level, not string level!**
|
|
45
|
+
|
|
46
|
+
All 938 tests passing (100%) ✅
|
|
47
|
+
|
|
8
48
|
## [1.4.2] - 2025-11-07
|
|
9
49
|
|
|
10
50
|
### Fixed
|