mirror of
https://github.com/dergigi/boris.git
synced 2025-12-17 22:54:30 +01:00
- Add project structure with TypeScript, React, and Vite - Implement nostr authentication using browser extension (NIP-07) - Add NIP-51 compliant bookmark fetching and display - Create minimal UI with login and bookmark components - Integrate applesauce-core and applesauce-react libraries - Add responsive styling with dark/light mode support - Include comprehensive README with setup instructions This is a minimal MVP for a nostr bookmark client that allows users to view their bookmarks according to NIP-51 specification.
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
/**
|
|
* @import {Effects, State} from 'micromark-util-types'
|
|
*/
|
|
|
|
import { factorySpace } from 'micromark-factory-space';
|
|
import { markdownLineEnding, markdownSpace } from 'micromark-util-character';
|
|
/**
|
|
* Parse spaces and tabs.
|
|
*
|
|
* There is no `nok` parameter:
|
|
*
|
|
* * line endings or spaces in markdown are often optional, in which case this
|
|
* factory can be used and `ok` will be switched to whether spaces were found
|
|
* or not
|
|
* * one line ending or space can be detected with
|
|
* `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`
|
|
*
|
|
* @param {Effects} effects
|
|
* Context.
|
|
* @param {State} ok
|
|
* State switched to when successful.
|
|
* @returns {State}
|
|
* Start state.
|
|
*/
|
|
export function factoryWhitespace(effects, ok) {
|
|
/** @type {boolean} */
|
|
let seen;
|
|
return start;
|
|
|
|
/** @type {State} */
|
|
function start(code) {
|
|
if (markdownLineEnding(code)) {
|
|
effects.enter("lineEnding");
|
|
effects.consume(code);
|
|
effects.exit("lineEnding");
|
|
seen = true;
|
|
return start;
|
|
}
|
|
if (markdownSpace(code)) {
|
|
return factorySpace(effects, start, seen ? "linePrefix" : "lineSuffix")(code);
|
|
}
|
|
return ok(code);
|
|
}
|
|
} |