From 38431710cfb1cc1ffd7297085d069be1328f083b Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Sun, 29 Aug 2021 21:49:37 +0200 Subject: Add project --- src/app.html | 13 +++++++++ src/config/i18n.js | 12 ++++++++ src/config/translations/en.json | 6 ++++ src/config/translations/es.json | 7 +++++ src/global.d.ts | 1 + src/lib/components/language_selector.svelte | 31 ++++++++++++++++++++ src/lib/components/loader.svelte | 3 ++ src/lib/components/new_prompt.svelte | 21 ++++++++++++++ src/lib/components/prompt.svelte | 16 ++++++++++ src/lib/stores/prompt.js | 45 +++++++++++++++++++++++++++++ src/routes/[locale]/[terms].svelte | 15 ++++++++++ src/routes/[locale]/__layout.svelte | 22 ++++++++++++++ src/routes/[locale]/index.svelte | 14 +++++++++ src/routes/__layout.svelte | 5 ++++ src/routes/index.svelte | 6 ++++ 15 files changed, 217 insertions(+) create mode 100644 src/app.html create mode 100644 src/config/i18n.js create mode 100644 src/config/translations/en.json create mode 100644 src/config/translations/es.json create mode 100644 src/global.d.ts create mode 100644 src/lib/components/language_selector.svelte create mode 100644 src/lib/components/loader.svelte create mode 100644 src/lib/components/new_prompt.svelte create mode 100644 src/lib/components/prompt.svelte create mode 100644 src/lib/stores/prompt.js create mode 100644 src/routes/[locale]/[terms].svelte create mode 100644 src/routes/[locale]/__layout.svelte create mode 100644 src/routes/[locale]/index.svelte create mode 100644 src/routes/__layout.svelte create mode 100644 src/routes/index.svelte (limited to 'src') diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..b624a15 --- /dev/null +++ b/src/app.html @@ -0,0 +1,13 @@ + + + + + + + + %svelte.head% + + +
%svelte.body%
+ + diff --git a/src/config/i18n.js b/src/config/i18n.js new file mode 100644 index 0000000..25ffc45 --- /dev/null +++ b/src/config/i18n.js @@ -0,0 +1,12 @@ +import { addMessages, getLocaleFromNavigator, init } from 'svelte-i18n'; + +import en from './translations/en.json'; +import es from './translations/es.json'; + +addMessages('en', en); +addMessages('es', es); + +init({ + fallbackLocale: 'en', + initialLocale: getLocaleFromNavigator() +}); diff --git a/src/config/translations/en.json b/src/config/translations/en.json new file mode 100644 index 0000000..c5c0cef --- /dev/null +++ b/src/config/translations/en.json @@ -0,0 +1,6 @@ +{ + "refresh": "Get a new prompt.", + "title": "Your prompt is:", + "loading": "Finding your prompt..." +} + diff --git a/src/config/translations/es.json b/src/config/translations/es.json new file mode 100644 index 0000000..914970b --- /dev/null +++ b/src/config/translations/es.json @@ -0,0 +1,7 @@ +{ + "refresh": "Genera un prompt nuevo.", + "title": "Tu prompt es:", + "loading": "Encontrando tu prompt..." +} + + diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..63908c6 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/lib/components/language_selector.svelte b/src/lib/components/language_selector.svelte new file mode 100644 index 0000000..e8d0c44 --- /dev/null +++ b/src/lib/components/language_selector.svelte @@ -0,0 +1,31 @@ + + + + + diff --git a/src/lib/components/loader.svelte b/src/lib/components/loader.svelte new file mode 100644 index 0000000..4309aff --- /dev/null +++ b/src/lib/components/loader.svelte @@ -0,0 +1,3 @@ + +

Loading...

diff --git a/src/lib/components/new_prompt.svelte b/src/lib/components/new_prompt.svelte new file mode 100644 index 0000000..f44ecf1 --- /dev/null +++ b/src/lib/components/new_prompt.svelte @@ -0,0 +1,21 @@ + + +
+
+ {$_('loading')} +
+
diff --git a/src/lib/components/prompt.svelte b/src/lib/components/prompt.svelte new file mode 100644 index 0000000..fbdc9ef --- /dev/null +++ b/src/lib/components/prompt.svelte @@ -0,0 +1,16 @@ + + + diff --git a/src/lib/stores/prompt.js b/src/lib/stores/prompt.js new file mode 100644 index 0000000..59df711 --- /dev/null +++ b/src/lib/stores/prompt.js @@ -0,0 +1,45 @@ +import { readable } from 'svelte/store'; +import { browser } from '$app/env'; + +const internals = { + kDataPrefix: 'http://localhost:3000/data/', + kAdjectivesPath: '/adjectives.json', + kNounsPath: '/nouns.json', + + async get(locale, path) { + + const shortLocale = locale.split('-')[0]; + const targetFile = internals.kDataPrefix + shortLocale + path; + const data = browser && sessionStorage.getItem(targetFile); + + if (data) { + return JSON.parse(data); + } + + let newData = await (await fetch(targetFile)).json(); + browser && sessionStorage.setItem(targetFile, JSON.stringify(newData)); + + return newData; + }, + + random(list) { + + return list[Math.floor(Math.random() * list.length)]; + } +}; + +export const getPrompt = function (locale) { + + return readable(null, function (set) { + + (async function() { + + const adjectives = await internals.get(locale, internals.kAdjectivesPath); + const nouns = await internals.get(locale, internals.kNounsPath); + + set(`${internals.random(nouns)}, ${internals.random(nouns)}, ${internals.random(adjectives)}`); + })(); + + return function stop() {}; + }); +}; diff --git a/src/routes/[locale]/[terms].svelte b/src/routes/[locale]/[terms].svelte new file mode 100644 index 0000000..e389a4d --- /dev/null +++ b/src/routes/[locale]/[terms].svelte @@ -0,0 +1,15 @@ + + + + diff --git a/src/routes/[locale]/__layout.svelte b/src/routes/[locale]/__layout.svelte new file mode 100644 index 0000000..29319ba --- /dev/null +++ b/src/routes/[locale]/__layout.svelte @@ -0,0 +1,22 @@ + + + + + + diff --git a/src/routes/[locale]/index.svelte b/src/routes/[locale]/index.svelte new file mode 100644 index 0000000..d8e8050 --- /dev/null +++ b/src/routes/[locale]/index.svelte @@ -0,0 +1,14 @@ + + + diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte new file mode 100644 index 0000000..fce59a3 --- /dev/null +++ b/src/routes/__layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/src/routes/index.svelte b/src/routes/index.svelte new file mode 100644 index 0000000..edd7231 --- /dev/null +++ b/src/routes/index.svelte @@ -0,0 +1,6 @@ + + + -- cgit