View ApplicationTexts.en.ts
const english: ApplicationTexts = { | |
standardTexts: { | |
submit: "Submit", | |
}, | |
personTexts: { | |
givenName: "First name", | |
familyName: "Last name", | |
title: "Title", | |
header: "Enter your details" | |
} |
View ApplicationTexts.ts
interface ApplicationTexts { | |
standardTexts: { | |
submit: string; | |
}; | |
personTexts: { | |
givenName: string; | |
familyName: string; | |
title: string; | |
header: string; | |
}; |
View App.tsx
export default function App() { | |
const [language, setLanguage] = useState(english); | |
return ( | |
<ApplicationTextsContext.Provider value={language}> | |
<div className="App"> | |
<MainPage /> | |
<SelectLanguage onChangeLanguage={setLanguage} /> | |
</div> | |
</ApplicationTextsContext.Provider> | |
); |
View MainPage.tsx
function MainPage() { | |
const { standardTexts, personTexts: texts } = useContext( | |
ApplicationTextsContext | |
); | |
return ( | |
<div> | |
<h2>{texts.header}</h2> | |
<div> | |
<label>{texts.givenName}:</label> | |
<input /> |
View useLoader.ts
function useLoader<T>( | |
loadingFunction: () => Promise<T>, | |
deps: DependencyList[] = [] | |
) { | |
const [data, setData] = useState<T | undefined>(); | |
const [loading, setLoading] = useState(true); | |
const [error, setError] = useState<Error | undefined>(); | |
async function reload() { | |
setData(undefined); |
View TodoList.tsx
function TodoList({ list }: { list: string }) { | |
const { data, error, loading, reload } = useLoader( | |
async () => listTodos(list), | |
[list] | |
); | |
return ( | |
<> | |
<h2>Items in {list}</h2> | |
{loading && <Spinner />} | |
{error && <ErrorView error={error} reload={reload} />} |
View GoogleForms-to-Trello.gs
var authentication = "key=a...&token=9..."; | |
var idBoard = "592...."; | |
var inboxList = "592..."; | |
var updatedLabel = "592...."; | |
function getField(itemResponses, fieldName) { | |
var titles = []; | |
for (var i in itemResponses) { | |
if (itemResponses[i].getItem().getTitle() === fieldName && itemResponses[i].getResponse().length > 0) { |
View AnnotationScanner.java
public class AnnotationScanner { | |
protected void scanForAnnotations(final String javaPackage, WebAppContext webapp) throws Exception { | |
Set<AnnotationParser.Handler> handlers = new HashSet<>(); | |
handlers.add(new WebServletAnnotationHandler(webapp)); | |
handlers.add(new WebFilterAnnotationHandler(webapp)); | |
handlers.add(new WebListenerAnnotationHandler(webapp)); | |
AnnotationParser annotationParser = new AnnotationParser(); | |
for (URL url : ((URLClassLoader) getClass().getClassLoader()).getURLs()) { |
View package.json
{ | |
"name": "promises", | |
"scripts": { | |
"test": "node node_modules/mocha/bin/mocha --watch --growl" | |
}, | |
"devDependencies": { | |
"chai": "^1.10.0", | |
"mocha": "^2.0.1" | |
}, | |
"dependencies": { |
View AppConfiguration.java
package com.johannesbrodwall.infrastructure; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.IOException; | |
import java.util.Properties; |
NewerOlder