Skip to content

Instantly share code, notes, and snippets.

View hwangtan's full-sized avatar
👍
Not bad

jacob_hwang hwangtan

👍
Not bad
View GitHub Profile
@hwangtan
hwangtan / queue.js
Last active September 14, 2022 14:34
the exam of the FP book of the queue
const createQueue = (worker) => {
const queue = [];
const working = false;
const run = () => {
if (working || queue.length === 0) return;
working = true;
const { data, callback } = queue.shift();
worker(data, (...args) => {
@hwangtan
hwangtan / History|-10267ce9|entries.json
Last active August 1, 2022 13:58
Visual Studio Code Settings Sync Gist
{"version":1,"resource":"file:///Users/wjhwang/Documents/workspace/baeminmart-front/client/src/utils/date/index.ts","entries":[{"id":"uDgd.ts","timestamp":1659057591928},{"id":"mdQp.ts","timestamp":1659057742950},{"id":"qqIS.ts","source":"undoRedo.source","timestamp":1659057774967},{"id":"w0DV.ts","timestamp":1659057829108}]}
type ValueType = 'ARRAY' | 'OBJECT';
type LinkedLisType = null | {
parentKey: string;
type: ValueType | undefined;
node: [string, any][];
linkedList: LinkedLisType;
};
const isObject = (value: unknown) => /Object/.test(Object.prototype.toString.call(value));
const HTMLRegExp = {
OPEN_TAG: /^\s*<([\w]|\w.+?)\s*>/,
ATTRIBUTES:/([\w|-]+)*[^\s|\"|\=]/g,
OPEN_TAG_IN_SLASH: /[/]$/,
CLOSE_TAG: /^\s*<[/]([\w]|\w.+?)\s*>/,
DATA_PROPERTY_KEY: /[-]\w/g,
TEXT_NODE: /(.*?)<:?/,
}
const UNPAIRED_TAGS = ['br', 'hr', 'img', 'meta', 'link', 'input'];
const Element = new (class {
#regExp = {
number: /^\s*,?(\d+)\s*,?/,
date: /^\s*,?"(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)"\s*,?/,
string: /^\s*,?"(\w+)"\s*,?/,
boolean: /^\s*,?(true|false)\s*,?/,
};
parse(v) {
@hwangtan
hwangtan / json_stringify.js
Last active April 26, 2021 13:35
json_stringify.js
const Escape = new (class {
#data = [
[/[\r\n\l]/g, "\\n"],
[/"/g, '\\"'],
[/\t/g, "\\t"],
];
replace = (v) => {
for (let i = 0; i < this.#data.length; i = i + 1)
v = v.replace.apply(v, this.#data[i]);
return v;
const Escape = new (class {
#data = [
[/[\r\n\l]/g, "\\n"],
[/"/g, '\\"'],
[/\t/g, "\\t"],
];
replace = (v) => {
for (let i = 0; i < this.#data.length; i = i + 1)
v = v.replace.apply(v, this.#data[i]);
return v;
@hwangtan
hwangtan / nested_array_stringify.js
Last active April 12, 2021 15:06
nested_array_stringify.js
const Escape = (() => {
const data = [
[/[\r\n\l]/g, "\\n"],
[/"/g, '\\"'],
[/\t/g, "\\t"],
];
const replace = (v) => {
for (let i = 0; i < data.length; i = i + 1) v = v.replace.apply(v, data[i]);
return v;
};
const appendSeparator = (v, begin, end) => {
if (!begin) {
v = "[" + v;
}
if (begin && begin <= end) {
v = "," + v;
}
if (begin == end) {
v = v + "]";
}
@hwangtan
hwangtan / for-loop.js
Last active March 29, 2021 14:42
cs89_ch1
const sum = (arr) => {
let acc = 0;
for (let i = arr.length - 1; i >= 0; i--) acc += arr[i];
return acc;
};
console.log(sum([]))
console.log(sum([1]))
console.log(sum([1,2]))
console.log(sum([1,2,3]))