From 9b58b091017496dcd6f70c71edab750bbb7d567e Mon Sep 17 00:00:00 2001 From: Goldsmith42 Date: Wed, 7 Dec 2016 23:06:21 +0100 Subject: [PATCH] Definition for speakingurl (#13105) --- speakingurl/index.d.ts | 29 ++++++++++ speakingurl/speakingurl-tests.ts | 94 ++++++++++++++++++++++++++++++++ speakingurl/tsconfig.json | 19 +++++++ speakingurl/tslint.json | 1 + 4 files changed, 143 insertions(+) create mode 100644 speakingurl/index.d.ts create mode 100644 speakingurl/speakingurl-tests.ts create mode 100644 speakingurl/tsconfig.json create mode 100644 speakingurl/tslint.json diff --git a/speakingurl/index.d.ts b/speakingurl/index.d.ts new file mode 100644 index 0000000000..289c1eb033 --- /dev/null +++ b/speakingurl/index.d.ts @@ -0,0 +1,29 @@ +// Type definitions for speakingurl 10.0 +// Project: http://pid.github.io/speakingurl/ +// Definitions by: Zlatko Andonovski +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface Dictionary { + [x: string]: T; +} + +interface Options { + separator?: string; + lang?: string|boolean; + symbols?: boolean; + maintainCase?: boolean; + titleCase?: string[]|boolean; + truncate?: number; + uric?: boolean; + uricNoSlash?: boolean; + mark?: boolean; + custom?: string[]|Dictionary; +} + +declare function getSlug(input: string, options?: Options|string): string; + +declare namespace getSlug { + export function createSlug(options: Options): (input: string) => string; +} + +export = getSlug; \ No newline at end of file diff --git a/speakingurl/speakingurl-tests.ts b/speakingurl/speakingurl-tests.ts new file mode 100644 index 0000000000..76dd9f1a8d --- /dev/null +++ b/speakingurl/speakingurl-tests.ts @@ -0,0 +1,94 @@ +import getSlug = require("speakingurl"); + +let slug: string; + +// Examples from https://github.com/pid/speakingurl#usage + +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !"); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", '*'); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + separator: '_' +}); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + uric: true +}); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + uricNoSlash: true +}); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + mark: true +}); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + truncate: 20 +}); +slug = getSlug("Schöner Titel läßt grüßen!? Bel été !", { + maintainCase: true +}); +slug = getSlug("Äpfel & Birnen!", { + lang: 'de' +}); +slug = getSlug("မြန်မာ သာဓက", { + lang: 'my' +}); +slug = getSlug('މިއަދަކީ ހދ ރީތި ދވހކވ', { + lang: 'dv' +}); +slug = getSlug("Apple & Pear!", { + lang: 'en' // lang: "en" is default, just to clarify +}); +slug = getSlug('Foo & Bar * Baz', { + custom: { + '&': ' doo ' + }, + uric: true +}); +slug = getSlug('Foo ♥ Bar'); +slug = getSlug('Foo & Bar | (Baz) * Doo', { + custom: { + '*': 'Boo' + }, + mark: true +}); +slug = getSlug('Foo and Bar or Baz', { + custom: { + and: 'und', + or: '' + } +}); +slug = getSlug('[Knöpfe]', { + custom: [ + '[', + ']' + ] +}); +slug = getSlug('NEXUS4 only $299'); +slug = getSlug('NEXUS4 only €299', { + maintainCase: true +}); +slug = getSlug('Don\'t drink and drive', { + titleCase: true +}); +slug = getSlug('Don\'t drink and drive', { + titleCase: ['and'] +}); +slug = getSlug('Foo & Bar ♥ Foo < Bar', { + lang: false +}); +slug = getSlug('Foo & Bar ♥ Foo < Bar', { + symbols: false +}); +slug = getSlug('ä♥ä', { + lang: 'tr', + symbols: false +}); + +const options = { + titleCase: [ + "a", "an", "and", "as", "at", "but", + "by", "en", "for", "if", "in", "nor", + "of", "on", "or", "per", "the", "to", "vs" + ] +}; + +const mySlug = getSlug.createSlug(options); +slug = mySlug('welcome to the jungle'); \ No newline at end of file diff --git a/speakingurl/tsconfig.json b/speakingurl/tsconfig.json new file mode 100644 index 0000000000..25f6a4e79f --- /dev/null +++ b/speakingurl/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "speakingurl-tests.ts" + ] +} diff --git a/speakingurl/tslint.json b/speakingurl/tslint.json new file mode 100644 index 0000000000..377cc837d4 --- /dev/null +++ b/speakingurl/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" }