on master help sign in
Ensure that elm-server knows where the elm runtime lives. Now users do not need to worry about that. Update version numbers.
e192d53evancz
elm-server/Server.hs+15−6
@@ -6,15 +6,18 @@ import Control.Monad.Trans (MonadIO(liftIO))
6import Data.List (isPrefixOf, isSuffixOf)
6import Data.List (isPrefixOf, isSuffixOf)
7import Happstack.Server
7import Happstack.Server
8import Happstack.Server.Compression
8import Happstack.Server.Compression
9+import System.Directory (makeRelativeToCurrentDirectory)
9import System.Environment
10import System.Environment
10import qualified Language.Elm as Elm
11import qualified Language.Elm as Elm
12+import Paths_Elm
11
13
12serve :: String -> IO ()
14serve :: String -> IO ()
13serve libLoc = do
15serve libLoc = do
14− putStrLn "Elm Server 0.4.0: running at <http://localhost:8000>"
16+ putStrLn "Elm Server 0.4.0.3: running at <http://localhost:8000>"
15 simpleHTTP nullConf $ do
17 simpleHTTP nullConf $ do
16 _ <- compressedResponseFilter
18 _ <- compressedResponseFilter
17− msum [ uriRest (serveElm libLoc)
19+ msum [ uriRest serveElm
20+ , uriRest (serveLib libLoc)
18 , serveDirectory EnableBrowsing [] "."
21 , serveDirectory EnableBrowsing [] "."
19 ]
22 ]
20
23
@@ -22,20 +25,26 @@ pageTitle :: String -> String
22pageTitle fp =
25pageTitle fp =
23 reverse . takeWhile (/='/') . drop 1 . dropWhile (/='.') $ reverse fp
26 reverse . takeWhile (/='/') . drop 1 . dropWhile (/='.') $ reverse fp
24
27
25−serveElm libLoc fp = do
28+serveElm fp = do
26 let ('/':filePath) = fp
29 let ('/':filePath) = fp
27 guard (".elm" `isSuffixOf` filePath)
30 guard (".elm" `isSuffixOf` filePath)
28 content <- liftIO (readFile filePath)
31 content <- liftIO (readFile filePath)
29− ok . toResponse $ Elm.toHtml libLoc (pageTitle filePath) content
32+ ok . toResponse $ Elm.toHtml "elm-runtime.js" (pageTitle filePath) content
30
33
34+serveLib libLoc fp = do
35+ guard (fp == "/elm-runtime.js")
36+ serveFile (asContentType "application/javascript") libLoc
31
37
32main :: IO ()
38main :: IO ()
33main = getArgs >>= parse
39main = getArgs >>= parse
34
40
35parse :: [String] -> IO ()
41parse :: [String] -> IO ()
36parse ("--help":_) = putStrLn usage
42parse ("--help":_) = putStrLn usage
37−parse ("--version":_) = putStrLn "The Elm Server 0.3.5"
43+parse ("--version":_) = putStrLn "The Elm Server 0.4.0.3"
38−parse [] = serve "/elm-mini.js"
44+parse [] = do
45+ absolutePath <- getDataFileName "elm-runtime-0.4.0.3.js"
46+ runtime <- makeRelativeToCurrentDirectory absolutePath
47+ serve runtime
39parse [arg]
48parse [arg]
40 | "--runtime-location=" `isPrefixOf` arg =
49 | "--runtime-location=" `isPrefixOf` arg =
41 serve . tail $ dropWhile (/='=') arg
50 serve . tail $ dropWhile (/='=') arg
elm-server/elm-server.cabal+2−1
@@ -1,5 +1,5 @@
1Name: elm-server
1Name: elm-server
2−Version: 0.4.0
2+Version: 0.4.0.3
3Synopsis: The Elm language server.
3Synopsis: The Elm language server.
4Description: This package provides a standalone, Happstack-based Elm server.
4Description: This package provides a standalone, Happstack-based Elm server.
5
5
@@ -34,4 +34,5 @@ Executable elm-server
34 HTTP >= 4000,
34 HTTP >= 4000,
35 happstack-server == 7.0.2,
35 happstack-server == 7.0.2,
36 deepseq,
36 deepseq,
37+ directory,
37 Elm == 0.4.*
38 Elm == 0.4.*
elm/Elm.cabal+3−2
@@ -1,6 +1,6 @@
1
1
2Name: Elm
2Name: Elm
3−Version: 0.4.0.2
3+Version: 0.4.0.3
4Synopsis: The Elm language module.
4Synopsis: The Elm language module.
5Description: Elm aims to make client-side web-development more pleasant.
5Description: Elm aims to make client-side web-development more pleasant.
6 It is a statically/strongly typed, functional reactive
6 It is a statically/strongly typed, functional reactive
@@ -22,7 +22,7 @@ Category: Compiler, Language
22Build-type: Simple
22Build-type: Simple
23
23
24Extra-source-files: changelog.txt
24Extra-source-files: changelog.txt
25−Data-files: elm-runtime-0.4.0.2.js
25+Data-files: elm-runtime-0.4.0.3.js
26Cabal-version: >=1.8
26Cabal-version: >=1.8
27
27
28source-repository head
28source-repository head
@@ -32,6 +32,7 @@ source-repository head
32Library
32Library
33 exposed-modules: Language.Elm,
33 exposed-modules: Language.Elm,
34 Language.Elm.Quasi
34 Language.Elm.Quasi
35+ Paths_Elm
35 Hs-Source-Dirs: src, src/Parse, src/Types, src/Gen
36 Hs-Source-Dirs: src, src/Parse, src/Types, src/Gen
36 other-modules: Ast,
37 other-modules: Ast,
37 CompileToJS,
38 CompileToJS,
elm/elm-runtime-0.4.0.2.js → elm/elm-runtime-0.4.0.3.jsrenamed

The content is the same.

elm/src/Compiler.hs+2−2
@@ -40,11 +40,11 @@ elm = ELM { make = False &= help "automatically compile dependencies."
40 , minify = False &= help "Minify generated JavaScript"
40 , minify = False &= help "Minify generated JavaScript"
41 } &=
41 } &=
42 help "Compile Elm programs to HTML, CSS, and JavaScript." &=
42 help "Compile Elm programs to HTML, CSS, and JavaScript." &=
43− summary "The Elm Compiler v0.4.0.2, (c) Evan Czaplicki"
43+ summary "The Elm Compiler v0.4.0.3, (c) Evan Czaplicki"
44
44
45main = do
45main = do
46 args <- cmdArgs elm
46 args <- cmdArgs elm
47− mini <- getDataFileName "elm-runtime-0.4.0.2.js"
47+ mini <- getDataFileName "elm-runtime-0.4.0.3.js"
48 compileArgs mini args
48 compileArgs mini args
49
49
50compileArgs mini (ELM _ [] _ _ _ _ _ _) =
50compileArgs mini (ELM _ [] _ _ _ _ _ _) =