Skip to content

Instantly share code, notes, and snippets.

const HR = `
# sintaksa: regularni_izraz [dio_za_dodat]
# prva grupa u regularnom izrazu je i dio koji se brise
PFX (je|ni|ne|ho|naj|pra|is)
PFX (ne) i
SFX (i|mo|te|u) am
@rkatic
rkatic / limited.js
Last active October 16, 2023 13:26
Elegant implementation of concurrency/speed limiter.
/** @param {number} n */
function semaphore (n) {
const resolvers = []
const pushToResolvers = resolve => { resolvers.push(resolve) }
/** @type {() => (Promise<void> | void)} */
const acquire = () => {
if (--n < 0) {
import { useEffect, useLayoutEffect, useRef, useState } from 'react'
function shallowEqualArrays(a, b) {
if (a.length !== b.length) {
return false
}
for (let i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) {
return false
@rkatic
rkatic / -resourceCache.js
Last active March 9, 2023 17:12
Simple single resource cache.
const isNotExpired = x => x && x.exp >= Date.now()
export function resourceCache (get, isValid = isNotExpired, initialData = undefined) {
let data = initialData
let pending = null
return async () => {
if (pending) return pending
if (!isValid(data)) {
'use strict'
/// Circular double-linked list
class Node {
constructor () {
this.key = null
this.val = null
this.prev = this
this.next = this
}
We couldn’t find that file to show.
We couldn’t find that file to show.
const identity = x => x
/**
* Creates a predicate function to check if a value is not seen before
*
* @param {function} [by = x=>x]
* @returns {function} predicate function
*
* @example
*
@rkatic
rkatic / re.js
Last active January 19, 2021 07:29
re - raw, multi-line, auto-escaping, composable, RegExp sexy creations
'use strict'
const objToStringMethod = Object.prototype.toString
const reRegExpChar = /[\\^$.*+?()[\]{}|]/g
const reUnescapedSpaces = /(?<!\\)\s+/g
const reHasSpace = /\s/
const compact = raw => reHasSpace.test(raw) ? raw.replace(reUnescapedSpaces, '') : raw
const escape = val => String(val).replace(reRegExpChar, '\\$&')
@rkatic
rkatic / timeout.js
Last active January 19, 2021 07:33
Simple promise based timeout implementation.
function timeout (ms, x) {
return new Promise((resolve, reject) => {
let timeoutId = setTimeout(() => {
timeoutId = null
reject('timeout')
}, ms)
const onSettle = () => {
if (timeoutId != null) {
clearTimeout(timeoutId)