# niddle **Repository Path**: mirrors_umijs/niddle ## Basic Information - **Project Name**: niddle - **Description**: A super fast nodejs addon for html parsing and manipulation written in rust. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-20 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # niddle A super fast Node.js addon for HTML parsing and manipulation, written in Rust. ## Features - High-performance DOM parsing and manipulation - Exposes a simple JavaScript API via NAPI-RS - Designed for both server-side and CLI HTML processing - Written in Rust for speed and safety ## Installation ```bash yarn add niddle # or npm install niddle ``` ## Usage ```js const { parse } = require('niddle'); const html = '
Hello
'; const root = parse(html); const mainDiv = root.select('#main'); mainDiv.append('

World

'); console.log(mainDiv.outerHtml()); //
Hello

World

``` ## API Documentation ### `parse(html: string): NodeRepr` Parses an HTML string and returns a `NodeRepr` instance representing the root node. #### Parameters - `html` (string): The HTML content to parse. #### Returns - `NodeRepr`: The parsed root node. --- ### `NodeRepr` Class Represents a DOM node and provides various manipulation methods. #### Methods - **append(content: string | NodeRepr): void** - Appends a new node or HTML string as a child. - **appendSequence(nodes: NodeRepr[]): void** - Appends multiple nodes. - **clone(): NodeRepr** - Clones the current node (not including descendants). - **cloneRecursive(): NodeRepr** - Clones the node and all descendants. - **getAttribute(name: string): string** - Gets an attribute value by name. - **getAttributes(): Record** - Gets all attributes as a key-value object. - **getChildren(): NodeRepr[]** - Returns all child nodes. - **innerHtml(): string** - Gets the HTML content of all descendants. - **insertAfter(node: NodeRepr): void** - Inserts the current node after the specified node. - **insertBefore(node: NodeRepr): void** - Inserts the current node before the specified node. - **insertSequenceAfter(nodes: NodeRepr[]): void** - Inserts multiple nodes after the current node. - **insertSequenceBefore(nodes: NodeRepr[]): void** - Inserts multiple nodes before the current node. - **outerHtml(): string** - Gets the HTML content including the node itself. - **prepend(content: string | NodeRepr): void** - Prepends a new node or HTML string as a child. - **prependSequence(nodes: NodeRepr[]): void** - Prepends multiple nodes. - **remove(): void** - Removes the node from the DOM. - **removeAllAttributes(): void** - Removes all attributes from the node. - **removeAttribute(name: string): void** - Removes an attribute by name. - **select(selectors: string): NodeRepr** - Selects the first node matching the selector. - **selectAll(selectors: string): NodeRepr[]** - Selects all nodes matching the selector. - **setAttribute(name: string, value: string): void** - Sets an attribute value. - **setAttributes(attrs: Record): void** - Sets multiple attributes. - **text(): string** - Gets the text content of the node. #### Example ```js const { parse } = require('niddle'); const root = parse('
hello world
'); const div = root.select('div'); console.log(div.getAttribute('id')); // "foo" console.log(div.text()); // "hello world" div.setAttribute('title', 'my-title'); console.log(div.outerHtml()); //
hello world
``` ## Contributing ```bash yarn install yarn build yarn test ``` ## Benchmark ```bash cargo benchmark yarn benchmark ``` --- For more usage examples and advanced API, see the source code and benchmarks in the repository.