From 0fc762c418e6918de5e6cfd7501b6a9276d70630 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Sun, 23 Feb 2020 22:54:43 +0300 Subject: [PATCH] meta lib refactoring: to ts; add meta builder --- src/lib/meta.js | 23 ------------------- src/lib/meta.ts | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 23 deletions(-) delete mode 100644 src/lib/meta.js create mode 100644 src/lib/meta.ts diff --git a/src/lib/meta.js b/src/lib/meta.js deleted file mode 100644 index 5cda25ab..00000000 --- a/src/lib/meta.js +++ /dev/null @@ -1,23 +0,0 @@ -export function meta(props) { - const path = props.url || '/' - const url = `https://art.shlisselburg.org${path}` - - return { - title: 'Шлиссельбургская ДХШ', - description: 'Сайт Шлиссельбургской художественной школы', - image: 'https://art.shlisselburg.org/entrance.jpg', - imageWidth: 1200, - imageHeight: 630, - - siteName: 'Шлиссельбургская Детская Художественная Школа', - locale: 'ru_RU', - type: 'website', - domain: 'art.shlisselburg.org', - twitterCard: 'summary_large_image', - twitterSite: '@', - twitterCreator: '@tmshv', - - ...props, - url, - } -} diff --git a/src/lib/meta.ts b/src/lib/meta.ts new file mode 100644 index 00000000..a4327842 --- /dev/null +++ b/src/lib/meta.ts @@ -0,0 +1,60 @@ +import { IMeta, IImage } from 'src/types' + +export function meta(props: Partial): IMeta { + const path = props.url || '/' + const url = `https://art.shlisselburg.org${path}` + + return { + title: 'Шлиссельбургская ДХШ', + description: 'Сайт Шлиссельбургской художественной школы', + image: 'https://art.shlisselburg.org/entrance.jpg', + imageWidth: 1200, + imageHeight: 630, + + siteName: 'Шлиссельбургская Детская Художественная Школа', + locale: 'ru_RU', + type: 'website', + domain: 'art.shlisselburg.org', + twitterCard: 'summary_large_image', + twitterSite: '@', + twitterCreator: '@tmshv', + + ...props, + url, + } +} + +export class MetaBuilder { + private image: IImage + private title: string + private description: string + private data: Partial + + setData(param: Partial) { + this.data = param + return this + } + + setTitle(param: string) { + this.title = param + return this + } + + setDescription(param: string) { + this.description = param + return this + } + + setImage(param: IImage) { + this.image = param + return this + } + + build() { + return meta({ + ...this.data, + title: this.title, + description: this.description, + }) + } +}