Crate viewpoint_js

Crate viewpoint_js 

Source
Expand description

Compile-time validated JavaScript macro for Viewpoint.

This crate provides a js! macro that validates JavaScript syntax at compile time, similar to how serde_json::json! validates JSON. This catches JavaScript syntax errors early, before they reach the browser.

§Features

  • Compile-time validation: JavaScript syntax errors are caught during compilation
  • Rust variable interpolation: Embed Rust expressions using #{expr} syntax
  • Zero runtime overhead: Static strings when no interpolation is used
  • Clear error messages: Points to the exact location of syntax errors

§Usage

use viewpoint_js::js;
use viewpoint_js_core::ToJsValue; // Needed for interpolation

// Simple expression - produces &'static str
let code = js!{ 1 + 2 };

// Arrow function
let code = js!{ () => window.innerWidth };

// With Rust variable interpolation (requires ToJsValue in scope)
let selector = ".my-class";
let code = js!{ document.querySelector(#{selector}) };

// Multi-line function
let code = js!{
    (() => {
        const items = document.querySelectorAll('li');
        return items.length;
    })()
};

§Interpolation

Use #{expr} to embed Rust expressions into JavaScript. Values are automatically converted to JavaScript representations via the ToJsValue trait:

  • Strings are quoted and escaped
  • Numbers are inserted as-is
  • Booleans become true or false
  • Option::None becomes null

Macros§

js
A macro that validates JavaScript syntax at compile time.