diff --git a/.gitmodules b/.gitmodules index 890eb1b..98024b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,3 +5,6 @@ path = elm-websockets url = git@github.com:vilterp/elm-websockets.git +[submodule "elm-font-awesome"] + path = elm-font-awesome + url = git@github.com:rtfeldman/elm-font-awesome.git diff --git a/backend/Compile.hs b/backend/Compile.hs index 0607080..3f1d77c 100644 --- a/backend/Compile.hs +++ b/backend/Compile.hs @@ -2,7 +2,6 @@ {-# LANGUAGE OverloadedStrings #-} module Compile (toHtml, toJson) where -import Control.Applicative ((<$>),(<*>)) import Control.Monad (when) import qualified Data.Text as Text import qualified Text.Blaze as Blaze @@ -19,7 +18,7 @@ import qualified Elm.Utils as Utils compile :: FilePath -> IO (Either String String) compile filePath = - do result <- Utils.unwrappedRun "elm-make" [ "--yes", filePath ] + do result <- Utils.unwrappedRun "elm-make" [ "--yes", filePath, "--output=elm.js" ] case result of Left (Utils.MissingExe msg) -> return (Left msg) diff --git a/backend/Generate/Index.hs b/backend/Generate/Index.hs index ee20414..37ed6e1 100644 --- a/backend/Generate/Index.hs +++ b/backend/Generate/Index.hs @@ -11,11 +11,10 @@ import qualified Data.List as List import qualified Data.Map as Map import qualified Data.Text as Text import qualified Data.Text.IO as Text +import qualified Elm.Package as Pkg import qualified Elm.Package.Description as Desc -import qualified Elm.Package.Name as N import qualified Elm.Package.Paths as Paths import qualified Elm.Package.Solution as S -import qualified Elm.Package.Version as V import System.Directory (doesDirectoryExist, doesFileExist, getDirectoryContents) import System.FilePath ((), splitDirectories, takeExtension) @@ -35,10 +34,10 @@ data Info = Info data PackageInfo = PackageInfo - { _version :: V.Version + { _version :: Pkg.Version , _repository :: String , _summary :: String - , _dependencies :: [(N.Name, V.Version)] + , _dependencies :: [(Pkg.Name, Pkg.Version)] } diff --git a/backend/Main.hs b/backend/Main.hs index 1e891a2..8da7c22 100644 --- a/backend/Main.hs +++ b/backend/Main.hs @@ -3,17 +3,16 @@ {-# LANGUAGE OverloadedStrings #-} module Main where -import Control.Applicative ((<$>),(<|>)) +import Control.Applicative ((<|>)) import Control.Monad (guard) import Control.Monad.Trans (MonadIO(liftIO)) +import qualified Data.List as List import Data.Maybe (isJust) import qualified Data.ByteString.Char8 as BSC -import qualified Data.List as List -import qualified Data.Version as Version import qualified Elm.Compiler as Compiler +import qualified Elm.Package as Pkg import Elm.Utils ((|>)) import qualified Network.WebSockets.Snap as WSS -import Paths_elm_reactor (version) import System.Console.CmdArgs import System.Directory import System.FilePath @@ -56,7 +55,7 @@ flags = Flags ] &= versionArg [ explicit, name "version", name "v" - , summary (Version.showVersion version) + , summary (Pkg.versionToString Compiler.version) ] &= summary startupMessage @@ -85,8 +84,7 @@ main = startupMessage :: String startupMessage = - "Elm Reactor " ++ Version.showVersion version - ++ " (Elm Platform " ++ Compiler.version ++ ")" + "elm reactor " ++ Pkg.versionToString Compiler.version directoryConfig :: MonadSnap m => DirectoryConfig m @@ -178,4 +176,4 @@ staticAssets = (==>) :: a -> b -> (a,b) -(==>) = (,) \ No newline at end of file +(==>) = (,) diff --git a/elm-font-awesome b/elm-font-awesome new file mode 160000 index 0000000..f1ad500 --- /dev/null +++ b/elm-font-awesome @@ -0,0 +1 @@ +Subproject commit f1ad50059c5a2b0dbdf91c07c8101665a4f4c7d2 diff --git a/elm-package.json b/elm-package.json index 90dbdf7..794424f 100644 --- a/elm-package.json +++ b/elm-package.json @@ -6,17 +6,18 @@ "source-directories": [ "frontend", "elm-html-file", + "elm-font-awesome/src", "elm-websockets" ], "exposed-modules": [], "native-modules": true, "dependencies": { - "elm-lang/core": "2.0.0 <= v < 3.0.0", + "elm-lang/core": "3.0.0 <= v < 4.0.0", "evancz/start-app": "2.0.0 <= v < 3.0.0", - "evancz/elm-effects": "1.0.0 <= v < 2.0.0", + "evancz/elm-effects": "2.0.0 <= v < 3.0.0", "evancz/elm-html": "4.0.0 <= v < 5.0.0", - "evancz/elm-markdown": "1.1.4 <= v < 2.0.0", - "jystic/elm-font-awesome": "1.0.0 <= v < 2.0.0" + "evancz/elm-svg": "2.0.0 <= v < 3.0.0", + "evancz/elm-markdown": "2.0.0 <= v < 3.0.0" }, - "elm-version": "0.15.0 <= v < 0.16.0" + "elm-version": "0.16.0 <= v < 0.17.0" } diff --git a/elm-reactor.cabal b/elm-reactor.cabal index f8da67a..60a8af6 100644 --- a/elm-reactor.cabal +++ b/elm-reactor.cabal @@ -1,5 +1,5 @@ Name: elm-reactor -Version: 0.3.2 +Version: 0.16 Synopsis: @@ -64,14 +64,13 @@ Executable elm-reactor blaze-markup, bytestring, cmdargs, - containers >= 0.3, + containers, directory >= 1.2, - elm-compiler >= 0.15.1 && < 0.16, + elm-compiler >= 0.16 && < 0.17, elm-package, file-embed, filepath, fsnotify >= 0.2, - HTTP, mtl, process, snap-core, @@ -80,6 +79,5 @@ Executable elm-reactor text, time, transformers, - unordered-containers, websockets >= 0.9 && < 0.10, websockets-snap >= 0.8.2.1 diff --git a/frontend/Debugger.elm b/frontend/Debugger.elm index 0ffd676..34b646e 100644 --- a/frontend/Debugger.elm +++ b/frontend/Debugger.elm @@ -163,7 +163,7 @@ view addr state = Just activeState -> div [ style - [ "display" => "flex" + [ "display" => "flex" , "flex-direction" => "row" ] ] @@ -266,17 +266,17 @@ exportImport addr = update : Message -> Model -> (Model, Effects Message) update msg state = case msg of - SidebarVisible visible -> - ( { state | sidebarVisible <- visible } + SidebarVisible visible -> + ( { state | sidebarVisible = visible } , none ) - PermitSwaps permit -> - ( { state | permitSwaps <- permit } + PermitSwaps permit -> + ( { state | permitSwaps = permit } , none ) - NewServiceState serviceState -> + NewServiceState serviceState -> let logMsg = case serviceState of @@ -290,8 +290,8 @@ update msg state = Logs.NoOp in ( { state - | serviceState <- serviceState - , logsState <- fst (Logs.update logMsg state.logsState) + | serviceState = serviceState + , logsState = fst (Logs.update logMsg state.logsState) } , Effects.none ) @@ -311,7 +311,7 @@ update msg state = Nothing -> none in - ( { state | playPauseButtonState <- newState } + ( { state | playPauseButtonState = newState } , sendEffects ) @@ -330,7 +330,7 @@ update msg state = Nothing -> none in - ( { state | restartButtonState <- newState } + ( { state | restartButtonState = newState } , sendEffects ) @@ -351,7 +351,7 @@ update msg state = Nothing -> none in - ( { state | logsState <- newLogsState } + ( { state | logsState = newLogsState } , sendEffect ) @@ -369,7 +369,7 @@ update msg state = ) ConnectSocket maybeSocket -> - ( { state | swapSocket <- maybeSocket } + ( { state | swapSocket = maybeSocket } , none ) @@ -377,7 +377,7 @@ update msg state = if state.permitSwaps then case swapEvt of NewModuleEvent compiledMod -> - ( { state | errorState <- NoErrors } + ( { state | errorState = NoErrors } , Signal.send (Service.commandsMailbox ()).address (Active.Swap compiledMod) @@ -386,13 +386,13 @@ update msg state = ) CompilationErrorsEvent errs -> - ( { state | errorState <- CompilationErrors errs } + ( { state | errorState = CompilationErrors errs } , none ) else ( state, none ) - ServiceCommand serviceCmd -> + ServiceCommand serviceCmd -> ( state , Signal.send (Service.commandsMailbox ()).address serviceCmd |> Task.map (always NoOp) @@ -449,7 +449,7 @@ update msg state = ( state, sendTask |> task ) SessionInputErrorMessage error -> - ( { state | errorState <- SessionInputError error }, none ) + ( { state | errorState = SessionInputError error }, none ) CommandResponse responseMsg -> let @@ -470,12 +470,12 @@ update msg state = Active.NoOpResponse -> state.errorState in - ( { state | errorState <- newErrorState }, none ) + ( { state | errorState = newErrorState }, none ) CloseErrors -> - ( { state | errorState <- NoErrors }, none ) + ( { state | errorState = NoErrors }, none ) - NoOp -> + NoOp -> ( state, none ) diff --git a/frontend/Debugger/Active.elm b/frontend/Debugger/Active.elm index 6febd16..f4dfe60 100644 --- a/frontend/Debugger/Active.elm +++ b/frontend/Debugger/Active.elm @@ -101,10 +101,13 @@ update msg state = case msg of Command cmd -> case cmd of + NoOpCommand -> + ( state, none ) + Play -> case state.runningState of Paused pausedIdx record -> - ( { state | runningState <- Playing } + ( { state | runningState = Playing } , playFrom state.window_ state.session record pausedIdx |> task ) @@ -161,7 +164,7 @@ update msg state = |> fst |> Task.succeed in - ( { state | runningState <- Playing } + ( { state | runningState = Playing } , getRecord `Task.andThen` (\record -> playFrom state.window_ state.session record 0) @@ -285,7 +288,7 @@ update msg state = ) ) in - ( { state | runningState <- Playing } + ( { state | runningState = Playing } , initTask |> task ) @@ -319,9 +322,9 @@ update msg state = (\id -> id /= mainNodeId) in ( { state - | numFrames <- state.numFrames + 1 - , exprLogs <- newExprLogs - , nodeLogs <- newNodeLogs + | numFrames = state.numFrames + 1 + , exprLogs = newExprLogs + , nodeLogs = newNodeLogs } , none ) @@ -332,7 +335,7 @@ update msg state = Response resp -> case resp of ScrubResponse frameIdx record mainVal -> - ( { state | runningState <- Paused frameIdx record } + ( { state | runningState = Paused frameIdx record } , API.renderMain state.session mainVal |> Task.map (always NoOp) |> task @@ -340,10 +343,10 @@ update msg state = ForkResponse newSession frameIdx mainVal -> ( { state - | session <- newSession - , numFrames <- frameIdx + 1 - , exprLogs <- truncateLogs frameIdx state.exprLogs - , nodeLogs <- truncateLogs frameIdx state.nodeLogs + | session = newSession + , numFrames = frameIdx + 1 + , exprLogs = truncateLogs frameIdx state.exprLogs + , nodeLogs = truncateLogs frameIdx state.nodeLogs } , API.renderMain state.session mainVal |> Task.map (always NoOp) @@ -352,9 +355,9 @@ update msg state = SwapResponse newSession mainVal logs newRunningState -> ( { state - | session <- newSession - , runningState <- newRunningState - , exprLogs <- Dict.fromList logs + | session = newSession + , runningState = newRunningState + , exprLogs = Dict.fromList logs } , API.renderMain state.session mainVal |> Task.map (always NoOp) @@ -367,11 +370,11 @@ update msg state = (API.getSgShape newSession).mainId in ( { state - | session <- newSession - , numFrames <- numFrames - , exprLogs <- Dict.fromList exprLogs - , runningState <- Playing - , nodeLogs <- + | session = newSession + , numFrames = numFrames + , exprLogs = Dict.fromList exprLogs + , runningState = Playing + , nodeLogs = nodeLogs |> List.filter (\(nodeId, _) -> nodeId /= mainId) |> Dict.fromList @@ -382,7 +385,7 @@ update msg state = ) PausedResponse frameIdx record -> - ( { state | runningState <- Paused frameIdx record } + ( { state | runningState = Paused frameIdx record } , none ) diff --git a/frontend/Debugger/RuntimeApi.elm b/frontend/Debugger/RuntimeApi.elm index b01cc1f..73dec15 100644 --- a/frontend/Debugger/RuntimeApi.elm +++ b/frontend/Debugger/RuntimeApi.elm @@ -217,20 +217,20 @@ splitRecord idx record = JsArray.split snapshotIdx record.snapshots in ( { record - | inputHistory <- beforeHistory - , snapshots <- beforeSnaps - , pausedAt <- + | inputHistory = beforeHistory + , snapshots = beforeSnaps + , pausedAt = JsArray.get -1 beforeHistory |> Maybe.map .time |> Maybe.map (\x -> x + record.delay) |> Maybe.withDefault record.startedAt } , { record - | inputHistory <- afterHistory - , snapshots <- afterSnaps + | inputHistory = afterHistory + , snapshots = afterSnaps } ) - + -- PRETTY PRINT diff --git a/frontend/Logs.elm b/frontend/Logs.elm index a4f4c79..65332be 100644 --- a/frontend/Logs.elm +++ b/frontend/Logs.elm @@ -51,14 +51,14 @@ update msg state = CollapseLog logId collapsed -> case logId of NodeLog nodeId -> - ( { state | nodeExpansion <- + ( { state | nodeExpansion = collapseLog nodeId collapsed state.nodeExpansion } , Nothing ) ExprLog exprTag -> - ( { state | exprExpansion <- + ( { state | exprExpansion = collapseLog exprTag collapsed state.exprExpansion } , Nothing @@ -66,9 +66,9 @@ update msg state = UpdateLogs {newExprLogs, newNodeLogs} -> ( { state - | exprExpansion <- + | exprExpansion = updateExpansion state.exprExpansion newExprLogs - , nodeExpansion <- + , nodeExpansion = updateExpansion state.nodeExpansion newNodeLogs } , Nothing @@ -130,12 +130,12 @@ viewExprLog addr collapsed logId frameIdx log = colButton = span [ style - ([ "padding-right" => "5px" + ([ "padding-right" => "5px" , "font-size" => "12px" ] ++ unselectable) ] [ text <| if collapsed then "▶" else "▼" ] - in + in if collapsed then let maybeItem =