diff --git a/src/Pages/Software/elm/en/dry.md b/src/Pages/Software/elm/en/dry.md new file mode 100644 index 0000000..77a3ea0 --- /dev/null +++ b/src/Pages/Software/elm/en/dry.md @@ -0,0 +1,55 @@ +Elm - DRY +========= + +DRY means: "[Don't Repeat Yourself](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)". + +This page contains some common mistakes I make when writing Elm code and how I processed feedback afterwards to improve it. + + +```elm +let + render item = + case warning item of + Just (Error tooltip) -> + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class "icon-error" + , HtmlAttributes.title tooltip + ] + ] + -- Another case, very similar to the one above. + Just (Warning tooltip) -> + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class "icon-warning" + , HtmlAttributes.title <| getWarningTooltip tooltip + ] + ] + + Nothing -> + [ Html.text <| text item ] + +``` + +```elm +let + render item = + let + createHtml class tooltip = + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class class + , HtmlAttributes.title tooltip + ] + ] + in + case warning item of + Just (Error tooltip) -> + createHtml "icon-error" tooltip + + Just (Warning tooltip) -> + createHtml "icon-warning" (getWarningTooltip tooltip) + + Nothing -> + [ Html.text <| text item ] +``` diff --git a/src/Pages/Software/elm/en/formatting.md b/src/Pages/Software/elm/en/formatting.md index 8ad8245..649db4b 100644 --- a/src/Pages/Software/elm/en/formatting.md +++ b/src/Pages/Software/elm/en/formatting.md @@ -1,4 +1,5 @@ -## Formatting +Elm - Formatting +================ You can add a docstring to an elm function like this: diff --git a/src/Pages/Software/elm/en/main.md b/src/Pages/Software/elm/en/main.md index 2c76eba..fd536a5 100644 --- a/src/Pages/Software/elm/en/main.md +++ b/src/Pages/Software/elm/en/main.md @@ -1,4 +1,5 @@ ### Elm * [Formatting](./formatting) -* [Maybe.map](./maybemap) \ No newline at end of file +* [Maybe.map](./maybemap) +* [Don't Repeat Yourself](./dry) \ No newline at end of file diff --git a/src/Pages/Software/elm/nl/dry.md b/src/Pages/Software/elm/nl/dry.md new file mode 100644 index 0000000..aa7ac1b --- /dev/null +++ b/src/Pages/Software/elm/nl/dry.md @@ -0,0 +1,54 @@ +Elm - DRY +========= + +DRY betekent: "[Don't Repeat Yourself](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)". Ofwel, herhaal jezelf niet. + +Deze pagina bevat voorbeelden van Elm code die ik heb herschreven. + +```elm +let + render item = + case warning item of + Just (Error tooltip) -> + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class "icon-error" + , HtmlAttributes.title tooltip + ] + ] + -- Another case, very similar to the one above. + Just (Warning tooltip) -> + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class "icon-warning" + , HtmlAttributes.title <| getWarningTooltip tooltip + ] + ] + + Nothing -> + [ Html.text <| text item ] + +``` + +```elm +let + render item = + let + createHtml class tooltip = + [ Html.text <| text item + , Html.i + [ HtmlAttributes.class class + , HtmlAttributes.title tooltip + ] + ] + in + case warning item of + Just (Error tooltip) -> + createHtml "icon-error" tooltip + + Just (Warning tooltip) -> + createHtml "icon-warning" (getWarningTooltip tooltip) + + Nothing -> + [ Html.text <| text item ] +``` \ No newline at end of file diff --git a/src/Pages/Software/elm/nl/formatting.md b/src/Pages/Software/elm/nl/formatting.md index 3849b79..7e0cb9d 100644 --- a/src/Pages/Software/elm/nl/formatting.md +++ b/src/Pages/Software/elm/nl/formatting.md @@ -1,4 +1,5 @@ -## Formatting +Elm - Formatting +================ Je kunt op deze manier een docstring toevoegen aan een elm functie: diff --git a/src/Pages/Software/elm/nl/main.md b/src/Pages/Software/elm/nl/main.md index 2c76eba..fd536a5 100644 --- a/src/Pages/Software/elm/nl/main.md +++ b/src/Pages/Software/elm/nl/main.md @@ -1,4 +1,5 @@ ### Elm * [Formatting](./formatting) -* [Maybe.map](./maybemap) \ No newline at end of file +* [Maybe.map](./maybemap) +* [Don't Repeat Yourself](./dry) \ No newline at end of file diff --git a/src/Routers.js b/src/Routers.js index 7f3431f..e3fc4ae 100644 --- a/src/Routers.js +++ b/src/Routers.js @@ -8,7 +8,7 @@ export const elmRoutes = languages.map(lang => { const main = } /> // Pages within Elm. - const md = ['formatting', 'maybemap']; + const md = ['formatting', 'maybemap', 'dry']; const entries = md.map(entry => { const path = `/${lang}/software/elm/${entry}`; const mdPath = `Software/elm/${lang}/${entry}.md`;