Skip to content

Instantly share code, notes, and snippets.

@mitchallen
mitchallen / parser.js
Created December 30, 2021 14:42
A less readable but more efficient parser
// Author: Mitch Allen
// File: parser.js
import { readFileSync } from 'fs';
import Ajv from 'ajv';
const ajv = new Ajv();
export function parser(inputFile, schemaFile) {
@mitchallen
mitchallen / bad.json
Created December 29, 2021 19:43
JSON bad input schema example
{
"foox": 1,
"bar": "abc"
}
@mitchallen
mitchallen / good.json
Created December 29, 2021 19:36
JSON input schema example
{
"foo": 1,
"bar": "abc"
}
@mitchallen
mitchallen / schema.json
Created December 29, 2021 19:24
Example JSON Schema
{
"type": "object",
"properties": {
"foo": {
"type": "integer"
},
"bar": {
"type": "string"
}
},
@mitchallen
mitchallen / index.js
Last active December 30, 2021 14:14
JSON parser main function example
// Author: Mitch Allen
// File: index.js
import { parser } from './parser.js';
function main() {
let args = process.argv.slice(2);
if (args.length < 2) {
@mitchallen
mitchallen / parser.js
Created December 29, 2021 18:47
JSON parser and validator
// Author: Mitch Allen
// File: parser.js
import { readFileSync } from 'fs';
import Ajv from 'ajv';
const ajv = new Ajv();
export function parser( inputFile, schemaFile ) {
@mitchallen
mitchallen / index.js
Created December 28, 2021 18:37
Zero Based Counter that Wraps
function createZeroBasedCounter( options = {} ) {
// zero based
// increment automatically wraps
let {
cursor = 0,
limit = 5, // [0..(limit -1)]
@mitchallen
mitchallen / index.js
Created December 24, 2021 10:19
JavaScript object getter and setter
function factory() {
let value = 42;
return {
get price() { return value },
set price( p ) {
value = p;
}
}
@mitchallen
mitchallen / index.js
Last active December 24, 2021 09:47
JavaScript Clone Object
// Author: Mitch Allen
// Project: js-clone
// File: index.js
// 1. Define a nicer log function
let stringify = (obj) => console.log(JSON.stringify(obj,null,2));
// 2. Define a source object
let alpha = { name: "Alpha", value: 100 };
// File: UseDropdownInput.tsx
// Author: Mitch Allen
import {FormControl, InputLabel, Select, Input, FormHelperText, SelectChangeEvent, MenuItem} from "@mui/material";
import {ReactNode, useCallback, useState} from "react";
/*
// App()