Skip to content

Instantly share code, notes, and snippets.

View occar421's full-sized avatar
😴
Sleeping, thinking or reading

MasuqaT occar421

😴
Sleeping, thinking or reading
View GitHub Profile
const { data } = useQuery(["pets", 1], fetch(`/pets`), { map: (v) => v });
const useQuery = (key, fetcher, { map }) => {
const [payload, setPayload] = useRecoilState(cacheState(key));
const promise = payload ? Promise.resolve() : fetcher().then(setPayload);
const data = useMemo(
() => (payload ? map(payload) : undefined),
[map, payload]
);
@occar421
occar421 / jest-that.ts
Created July 9, 2022 14:21
AsymmetricMatcher to Imperative assertions.
/// <reference types="jest" />
declare namespace jest {
interface Expect {
that(fn: (target: any) => void): any;
}
interface InverseAsymmetricMatchers {
that(fn: (target: any) => void): any;
}
// Moved to https://github.com/occar421/ProgrammingContest/tree/master/templates/src/standard_io.rs , sorry!
@occar421
occar421 / brother.ts
Created April 14, 2019 11:34
typing for "brother" field in TypeScript (just a scribble); union-type for each permutation for subsets of object properties in tuple `SubsAlpha` & `type TupleAtMost3<T> = [] | SubsAlpha<T>;`
import { AssertTrue, Has, IsExact } from "conditional-type-checks";
// interface A<T1 extends { [key: string]: any }, T2 extends T1> {
// a: T1;
// // b: (keyof T2)[]; // 現実解
// b: Workaround<keyof T2>[]; // 現実解
// // b: TupleAtMost3<T2>; // 重複を防ぐようにするにはすべての組み合わせを列挙する?
// }
// interface A<T1 extends { [key: string]: any }, T2 extends T1> {
const fs = require('fs-extra');
const path = require('path');
const {spawn} = require('child_process');
(async () => {
const base = path.join(__dirname, 'sandbox');
await fs.mkdirp(base);
await fs.outputFile(path.join(base, 'foo.txt'), 'FOO');
await fs.outputFile(path.join(base, 'bar.txt'), 'BAR');
const results = await fs.readdir(base)
@occar421
occar421 / ShouldBeShouldNotBe.kt
Created April 1, 2016 12:09
actual should be { expected } and actual should not be { expected }
class SN<T>(val value: T)
class B<T>(val value: T)
infix fun <T> T.should(right: B<T>): Unit {
println("$this is ${right.value}")
}
fun <T> be(value: () -> T): B<T> {
return B(value())
}
@occar421
occar421 / event.kt
Created March 31, 2016 12:45 — forked from orangy/event.kt
C#-style events in Kotlin
class Event<T> {
private val handlers = arrayListOf<(Event<T>.(T) -> Unit)>()
operator fun plusAssign(handler: Event<T>.(T) -> Unit) { handlers.add(handler) }
operator fun invoke(value: T) { for (handler in handlers) handler(value) }
}
val e = Event<String>() // define event
fun main(args : Array<String>) {
e += { println(it) } // subscribe
@occar421
occar421 / NetLogoDsl2.kt
Created January 9, 2016 13:58
NetLogo like processing on Kotlin 2nd version (needs kotlin-reflect.kt)
fun main(args: Array<String>) {
setup()
}
inline fun <reified T : Agent> ask(noinline job: T.() -> Unit): Unit {
for (t in AgentsManager.getAgent<T>()) {
job(t)
}
}
@occar421
occar421 / NetLogoDsl.kt
Last active January 2, 2016 13:31
NetLogo like processing on Kotlin (needs kotlin-reflect.kt)
fun main(args: Array<String>) {
setup()
}
var turtles = arrayOf<Turtle>()
infix inline fun <T : Turtle> T.ask(job: T.() -> Unit): Unit = job(this)
infix inline fun <T : Turtle> Array<T>.ask(job: T.() -> Unit): Unit {
for (t in this) {
@occar421
occar421 / Razor Code Template.md
Last active February 24, 2023 06:57
Code Generator, like T4 Template, with ASP.NET Razor and Roslyn

Razor Code Template

In T4 Template, ASPX .tt files are code seeds.
In Razor Code Template, Razor .cshtml files are seeds!