mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Elm
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Elm
		
	
	
	
	
	
| 
 | |
| 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
 |