rip-lang 3.13.108 → 3.13.110

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 CHANGED
@@ -7,6 +7,12 @@ All notable changes to Rip will be documented in this file.
7
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
+ ## [Unreleased]
11
+
12
+ ### Breaking — Merge Assign Operator
13
+
14
+ - **`*>` replaces `*` for merge assignment** — The merge-assign form is now `*>target = value` (including `*>@ = props`). The old `*target = value` form is removed.
15
+
10
16
  ## [3.13.16] - 2026-02-25
11
17
 
12
18
  ### Breaking — Merge `@rip-lang/api` into `@rip-lang/server`
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.108-blue.svg" alt="Version"></a>
12
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-3.13.110-blue.svg" alt="Version"></a>
13
13
  <a href="#zero-dependencies"><img src="https://img.shields.io/badge/dependencies-ZERO-brightgreen.svg" alt="Dependencies"></a>
14
14
  <a href="#"><img src="https://img.shields.io/badge/tests-1%2C436%2F1%2C436-brightgreen.svg" alt="Tests"></a>
15
15
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a>
@@ -229,7 +229,7 @@ All use `globalThis` with `??=` — override any by redeclaring locally.
229
229
  | `not in` | `x not in arr` | Negated membership test |
230
230
  | `not of` | `k not of obj` | Negated key existence |
231
231
  | `.=` (method assign) | `x .= trim()` | `x = x.trim()` — compound method assignment |
232
- | `*` (merge assign) | `*obj = {a: 1}` | `Object.assign(obj, {a: 1})` |
232
+ | `*>` (merge assign) | `*>obj = {a: 1}` | `Object.assign(obj, {a: 1})` |
233
233
  | `or return` | `x = get() or return err` | Guard clause (Ruby-style) |
234
234
  | `?? throw` | `x = get() ?? throw err` | Nullish guard |
235
235
 
package/docs/RIP-LANG.md CHANGED
@@ -326,7 +326,7 @@ Multiple lines
326
326
  | `<` `<=` | Chained comparison | `1 < x < 10` | `(1 < x) && (x < 10)` |
327
327
  | `\|>` | Pipe | `x \|> fn` or `x \|> fn(y)` | `fn(x)` or `fn(x, y)` |
328
328
  | `.=` | Method assign | `x .= trim()` | `x = x.trim()` |
329
- | `*` | Merge assign | `*obj = {a: 1}` | `Object.assign(obj, {a: 1})` |
329
+ | `*>` | Merge assign | `*>obj = {a: 1}` | `Object.assign(obj, {a: 1})` |
330
330
  | `not in` | Not in | `x not in arr` | Negated membership test |
331
331
  | `not of` | Not of | `k not of obj` | Negated key existence |
332
332
  | `<=>` | Two-way bind | `value <=> name` | Bidirectional reactive binding (render blocks) |
@@ -535,37 +535,37 @@ str.=trim() # compact (no spaces)
535
535
  str .=trim() # mixed
536
536
  ```
537
537
 
538
- ## Merge Assignment (`*`)
538
+ ## Merge Assignment (`*>`)
539
539
 
540
540
  A Rip original. Merge properties into an existing object without repeating
541
541
  its name:
542
542
 
543
543
  ```coffee
544
- # Without * — repeat the object name or use verbose Object.assign
544
+ # Without *> — repeat the object name or use verbose Object.assign
545
545
  Object.assign config,
546
546
  host: "localhost"
547
547
  port: 3000
548
548
  debug: true
549
549
 
550
- # With * — clean and direct
551
- *config =
550
+ # With *> — clean and direct
551
+ *>config =
552
552
  host: "localhost"
553
553
  port: 3000
554
554
  debug: true
555
555
 
556
556
  # Single line
557
- *opts = {method: "POST", body: data}
557
+ *>opts = {method: "POST", body: data}
558
558
 
559
559
  # Dotted paths
560
- *el.style =
560
+ *>el.style =
561
561
  color: "red"
562
562
  fontSize: "14px"
563
563
 
564
564
  # Merge user overrides into defaults
565
- *defaults = userConfig
565
+ *>defaults = userConfig
566
566
  ```
567
567
 
568
- `*target = value` compiles to `Object.assign(target, value)`. The `*` reads
568
+ `*>target = value` compiles to `Object.assign(target, value)`. The `*>` reads
569
569
  as "spread these into" — the same concept as `...` spread but as an
570
570
  assignment. This is unique to Rip.
571
571