Skip to content

Instantly share code, notes, and snippets.

@JasonKleban
JasonKleban / Lens.ts
Created June 5, 2017 18:16
Typescript Functional Lens
interface MyStructure {
a: boolean;
b: number;
c: string;
d: {
e: boolean;
f: number;
g: string[];
}
}
@JasonKleban
JasonKleban / PackUtil.cs
Last active January 26, 2017 20:40
Pack/Unpack in C# - string array serialization compatible with the t-sql implementations
static class PackUtil
{
public static string Pack(string[] original)
{
return Pack(original, '|', '0', '~');
}
public static string[] Unpack(string original)
{
return Unpack(original, '|', '0', '~');
@JasonKleban
JasonKleban / Pack tests.sql
Created January 26, 2017 20:02
Pack tests
SELECT * FROM [dbo].[UnpackStrings]('|~0123|0|ABC||~0000|DEF|0', '|', '0', '~')
SELECT * FROM [dbo].[UnpackStrings]('0|', '|', '0', '~')
DECLARE @Test dbo.StringArray
PRINT '::' + [dbo].[PackStrings](@Test, '|', '0', '~') + '::'
INSERT INTO @Test (Element)
@JasonKleban
JasonKleban / PackStrings.sql
Last active January 26, 2017 20:24
Serialize a table of string values
/*
CREATE TYPE [dbo].[StringArray] AS TABLE (
ElementNumber INT IDENTITY(1,1)
,[Element] NVARCHAR(MAX)
)
*/
CREATE FUNCTION [dbo].[PackStrings]
(
@JasonKleban
JasonKleban / UnpackStrings.sql
Last active January 26, 2017 20:25
Deserialize a table of string values
CREATE FUNCTION [dbo].[UnpackStrings]
(
@original NVARCHAR(MAX)
,@delimiter NCHAR(1)
,@zed NCHAR(1)
,@escape NCHAR(1)
)
RETURNS
@Unpacked TABLE
(
@JasonKleban
JasonKleban / LiteEvent.ts
Last active January 26, 2023 06:33
TypeScript LiteEvent Events implementation
interface ILiteEvent<T> {
on(handler: { (data?: T): void }) : void;
off(handler: { (data?: T): void }) : void;
}
class LiteEvent<T> implements ILiteEvent<T> {
private handlers: { (data?: T): void; }[] = [];
public on(handler: { (data?: T): void }) : void {
this.handlers.push(handler);