Skip to content

Latest commit

 

History

History
254 lines (164 loc) · 6.44 KB

README.md

File metadata and controls

254 lines (164 loc) · 6.44 KB

Source Types for Sugarcube

Utility functions to deal with different types of sources for Sugarcube.

CI Status Code Coverage GitHub


@sugarcube/source-types provides utility functions for the Sugarcube Tools distribution. The utility functions can parse, normalize and verify terms in respect to the type of the source. This packages is used across various parts of the Sugarcube distribution, such as Ncube, the Sugarcube Discovery Extension and Sugarcube itself.

Contents

Installation

npm install --save @sugarcube/source-types

Usage

import {sourceType} from "@sugarcube/source-types";

sourceType("I'm gibberish"); // undefined
sourceType("https://youtube.com/watch?v=wer23edsa"); // youtube_video

API

Map source type for a term
Source type predicates
Source type parsers
Normalize terms

SourceType

A string literal type containig valid source types.

  • telegram_channel
  • twitter_tweet
  • twitter_channel
  • youtube_video
  • youtube_channel
  • http_url

sourceType

Detect the type of a source.

sourceType :: (term?: string) -> SourceType | undefined

isTelegramChannel

Check if a term is a valid Telegram channel.

isTelegramChannel :: (term?: string) -> boolean

isTwitterTweet

Check if a term is a valid Twitter tweet.

isTwitterTweet :: (term?: string) -> boolean

isTwitterFeed

Check if a term is a valid Twitter channel.

isTwitterFeed :: (term?: string) -> boolean

isYoutubeVideo

Check if a term is a valid Youtube video.

isYoutubeVideo :: (term?: string) -> boolean

isYoutubeChannel

Check if a term is a valid Youtube channel.

isYoutubeChannel :: (term?: string) -> boolean

isHttpUrl

Check if a term is a valid HTTP url.

isHttpUrl :: (term?: string) -> boolean

parseTelegramChannel

Extract a Telegram channel from a term.

parseTelegramChannel :: (term?: string) -> string | undefined
parseTelegramChannel("https://t.me/s/soscubamedia"); # soscubamedia
parseTelegramChannel("https://t.me/soscubamedia"); # soscubamedia

Channel names in the form of @soscubamedia are not valid since they are ambiguous with Twitter user handlers.

parseTweetId

Extract a tweet id from a term.

parseTweetId :: (term?: string) -> string | undefined

parseTwitterUser

Extract a Twitter user name from a term.

parseTwitterUser :: (term?: string) -> string | undefined

parseYoutubeVideo

Extract a Youtube video id from a term.

parseYoutubeVideo :: (term?: string) -> string | undefined

parseYoutubeChannel

Extract a Youtube channel id from a term.

parseYoutubeChannel :: (term?: string) -> string | undefined

parseHttpUrl

Parse a term and return a HTTP url.

parseHttpUrl :: (term?: string) -> string | undefined

normalizeTelegramChannelUrl

Parse a Telegram channel from a term and return a normalized Telegram channel URL.

normalizeTelegramChannelUrl :: (term?: string) -> string | undefined

normalizeTwitterTweetUrl

Parse a Twitter tweet id from a term and return a normalized Twitter tweet URL.

normalizeTwitterTweetUrl :: (term?: string) -> string | undefined

normalizeTwitterUserUrl

Parse a Twitter user name from a term and return a normalized Twitter feed URL.

normalizeTwitterUserUrl :: (term?: string) -> string | undefined

normalizeYoutubeVideoUrl

Parse a Youtube Video id from a term and return a normalized Youtube video URL.

normalizeYoutubeVideoUrl :: (term?: string) -> string | undefined

normalizeYoutubeChannelUrl

Parse a Youtube channel id from a term and return a normalized Youtube channel URL.

normalizeYoutubeChannelUrl :: (term?: string) -> string | undefined

normalizeHttpUrl

Turn a term into a well formed HTTP url.

normalizeHttpUrl :: (term?: string) -> string | undefined

License

GPL 3.0 licensed