diff --git a/src/index.tests.ts b/src/index.tests.ts index 366fbb7..334abad 100644 --- a/src/index.tests.ts +++ b/src/index.tests.ts @@ -10,6 +10,7 @@ import * as floatColumn from "./float-column" import * as column from "./column" import * as columnSet from "./column-set" import * as labelPart from "./label-part" +import * as label from "./label" import * as schema from "./schema" import * as index from "./index" @@ -48,6 +49,9 @@ describe(`index`, () => { describe(`label part`, () => { it(`schema`, () => expect(index.labelPart).toBe(labelPart.schema)) }) + describe(`label`, () => { + it(`schema`, () => expect(index.label).toBe(label.schema)) + }) describe(`schema`, () => { it(`schema`, () => expect(index.schema).toBe(schema.schema)) }) diff --git a/src/index.ts b/src/index.ts index 12f5d4f..e2236e0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -53,6 +53,11 @@ export { Type as LabelPart } from "./label-part" +export { + schema as label, + Type as Label +} from "./label" + export { schema as schema, Type as Schema diff --git a/src/label.tests.ts b/src/label.tests.ts new file mode 100644 index 0000000..605ee84 --- /dev/null +++ b/src/label.tests.ts @@ -0,0 +1,17 @@ +import "jasmine" +import * as label from "./label" +import * as shared from "./shared.tests" + +describe(`label`, () => { + shared.run(shared.nonArrays, value => shared.rejects( + label.schema, value, `instance`, `is not of a type(s) array` + )) + shared.run(shared.emptyArrays, value => shared.accepts(label.schema, value)) + shared.testLabelPart(label.schema, instance => [instance], `instance[0]`) + describe(`example`, () => shared.accepts(label.schema, [ + [`for_eg`, `la_run`, `mu_par`], + [], + [`just_1`], + [`long_w`, `2thetp`, `wanna_`, `depest`, `lore__`] + ])) +}) diff --git a/src/label.ts b/src/label.ts new file mode 100644 index 0000000..3ab21fb --- /dev/null +++ b/src/label.ts @@ -0,0 +1,14 @@ +import * as jsonschema from "jsonschema" +import * as labelPart from "./label-part" + +export const schema: jsonschema.Schema = { + description: `A list of chains of column identifiers which can be followed to find values which are concatenated to build a label.`, + type: `array`, + items: labelPart.schema +} + +/** + * A list of chains of column identifiers which can be followed to find values + * which are concatenated to build a label. + */ +export type Type = ReadonlyArray