aboutsummaryrefslogtreecommitdiff
path: root/samples/Elm/Basic.elm
diff options
context:
space:
mode:
Diffstat (limited to 'samples/Elm/Basic.elm')
-rw-r--r--samples/Elm/Basic.elm127
1 files changed, 127 insertions, 0 deletions
diff --git a/samples/Elm/Basic.elm b/samples/Elm/Basic.elm
new file mode 100644
index 0000000..ea6f61c
--- /dev/null
+++ b/samples/Elm/Basic.elm
@@ -0,0 +1,127 @@
+
+import List (intercalate,intersperse)
+import Website.Skeleton
+import Website.ColorScheme
+
+addFolder folder lst =
+ let add (x,y) = (x, folder ++ y ++ ".elm") in
+ let f (n,xs) = (n, map add xs) in
+ map f lst
+
+elements = addFolder "Elements/"
+ [ ("Primitives",
+ [ ("Text" , "HelloWorld")
+ , ("Images", "Image")
+ , ("Fitted Images", "FittedImage")
+ , ("Videos", "Video")
+ , ("Markdown", "Markdown")
+ ])
+ , ("Formatting",
+ [ ("Size" , "Size")
+ , ("Opacity" , "Opacity")
+ , ("Text" , "Text")
+ , ("Typeface", "Typeface")
+ ])
+ , ("Layout",
+ [ ("Simple Flow", "FlowDown1a")
+ , ("Flow Down" , "FlowDown2")
+ , ("Layers" , "Layers")
+ , ("Positioning", "Position")
+ , ("Spacers" , "Spacer")
+ ])
+ , ("Collage", [ ("Lines" , "Lines")
+ , ("Shapes" , "Shapes")
+ , ("Sprites" , "Sprite")
+ , ("Elements" , "ToForm")
+ , ("Colors" , "Color")
+ , ("Textures" , "Texture")
+ , ("Transforms", "Transforms")
+ ])
+ ]
+
+
+functional = addFolder "Functional/"
+ [ ("Recursion",
+ [ ("Factorial" , "Factorial")
+ , ("List Length", "Length")
+ , ("Zip" , "Zip")
+ , ("Quick Sort" , "QuickSort")
+ ])
+ , ("Functions",
+ [ ("Anonymous Functions", "Anonymous")
+ , ("Application" , "Application")
+ , ("Composition" , "Composition")
+ , ("Infix Operators" , "Infix")
+ ])
+ , ("Higher-Order",
+ [ ("Map" , "Map")
+ , ("Fold" , "Sum")
+ , ("Filter" , "Filter")
+ , ("ZipWith", "ZipWith")
+ ])
+ , ("Data Types",
+ [ ("Maybe", "Maybe")
+ , ("Boolean Expressions", "BooleanExpressions")
+ , ("Tree", "Tree")
+ ])
+ ]
+
+reactive = addFolder "Reactive/"
+ [ ("Mouse", [ ("Position", "Position")
+ , ("Presses" , "IsDown")
+ , ("Clicks" , "CountClicks")
+ , ("Position+Image", "ResizeYogi")
+ , ("Position+Collage" , "Transforms")
+ -- , ("Hover" , "IsAbove")
+ ])
+ ,("Keyboard",[ ("Keys Down" , "KeysDown")
+ , ("Key Presses", "CharPressed")
+ ])
+ , ("Window", [ ("Size", "ResizePaint")
+ , ("Centering", "Centering")
+ ])
+ , ("Time", [ ("Before and After", "Between")
+ , ("Every" , "Every")
+ , ("Clock" , "Clock")
+ ])
+ , ("Input", [ ("Text Fields", "TextField")
+ , ("Passwords" , "Password")
+ , ("Check Boxes", "CheckBox")
+ , ("String Drop Down", "StringDropDown")
+ , ("Drop Down", "DropDown")
+ ])
+ , ("Random", [ ("Randomize", "Randomize") ])
+ , ("HTTP", [ ("Zip Codes", "ZipCodes") ])
+ , ("Filters",[ ("Sample", "SampleOn")
+ , ("Keep If", "KeepIf")
+ , ("Drop Repeats", "DropRepeats")
+ ])
+ ]
+
+example (name, loc) = Text.link ("/edit/examples/" ++ loc) (toText name)
+toLinks (title, links) =
+ flow right [ width 130 (text $ toText " " ++ italic (toText title))
+ , text (intercalate (bold . Text.color accent4 $ toText " · ") $ map example links)
+ ]
+
+insertSpace lst = case lst of { x:xs -> x : spacer 1 5 : xs ; [] -> [] }
+
+subsection w (name,info) =
+ flow down . insertSpace . intersperse (spacer 1 1) . map (width w) $
+ (text . bold $ toText name) : map toLinks info
+
+words = [markdown|
+
+### Basic Examples
+
+Each example listed below focuses on a single function or concept.
+These examples demonstrate all of the basic building blocks of Elm.
+
+|]
+
+content w =
+ words : map (subsection w) [ ("Display",elements), ("React",reactive), ("Compute",functional) ]
+
+exampleSets w = flow down . map (width w) . intersperse (plainText " ") $ content w
+
+main = lift (skeleton exampleSets) Window.width