Skip to content

Commit

Permalink
0.19 upgrade: replace open listing with documented variables
Browse files Browse the repository at this point in the history
  • Loading branch information
avh4 committed May 17, 2018
1 parent e7e7757 commit 90bf524
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 12 deletions.
49 changes: 37 additions & 12 deletions src/ElmFormat/Render/Box.hs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import qualified AST.Variable
import qualified Cheapskate.Types as Markdown
import qualified Control.Monad as Monad
import qualified Data.Char as Char
import qualified Data.Foldable as Foldable
import qualified Data.List as List
import qualified Data.Map.Strict as Map
import qualified Data.Maybe as Maybe
Expand Down Expand Up @@ -176,25 +177,38 @@ formatModuleHeader elmVersion modu =
header =
AST.Module.header modu

documentedVars =
AST.Module.docs modu
|> RA.drop
|> fmap Foldable.toList
|> Maybe.fromMaybe []
|> concatMap extractDocs

extractDocs block =
case block of
Markdown.ElmDocs vars ->
fmap Text.unpack (concat vars)
_ -> []

moduleLine =
case elmVersion of
Elm_0_16 ->
formatModuleLine_0_16 header

Elm_0_17 ->
formatModuleLine elmVersion header
formatModuleLine elmVersion documentedVars header

Elm_0_18 ->
formatModuleLine elmVersion header
formatModuleLine elmVersion documentedVars header

Elm_0_18_Upgrade ->
formatModuleLine elmVersion header
formatModuleLine elmVersion documentedVars header

Elm_0_19 ->
formatModuleLine elmVersion header
formatModuleLine elmVersion documentedVars header

Elm_0_19_Upgrade ->
formatModuleLine elmVersion header
formatModuleLine elmVersion documentedVars header

docs =
fmap (formatModuleDocs elmVersion) $ RA.drop $ AST.Module.docs modu
Expand Down Expand Up @@ -274,8 +288,8 @@ formatModuleLine_0_16 header =
]


formatModuleLine :: ElmVersion -> AST.Module.Header -> Box
formatModuleLine elmVersion header =
formatModuleLine :: ElmVersion -> [String] -> AST.Module.Header -> Box
formatModuleLine elmVersion documentedVars header =
let
tag =
case AST.Module.srcTag header of
Expand All @@ -293,11 +307,22 @@ formatModuleLine elmVersion header =
[ line $ keyword "module" ]

exports list =
case formatListing (formatDetailedListing elmVersion) $ list of
Just listing ->
listing
_ ->
pleaseReport "UNEXPECTED MODULE DECLARATION" "empty listing"
let
finalValue =
case (elmVersion, list, documentedVars) of
(Elm_0_19_Upgrade, AST.Variable.OpenListing (AST.Commented pre () post), first:rest) ->
AST.Variable.ExplicitListing
(AST.Module.DetailedListing
((LowercaseIdentifier first, AST.Commented pre () post):(rest |> fmap (\v -> (LowercaseIdentifier v, AST.Commented [] () []))) |> Map.fromList)
Map.empty
Map.empty
)
False
_ -> list
in
case formatListing (formatDetailedListing elmVersion) finalValue of
Just listing -> listing
_ -> pleaseReport "UNEXPECTED MODULE DECLARATION" "empty listing"

formatSetting (k, v) =
formatRecordPair elmVersion "=" (line . formatUppercaseIdentifier elmVersion) (k, v, False)
Expand Down
1 change: 1 addition & 0 deletions tests/run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ checkUpgrade 0.19 Elm-0.19/RemoveBasicsUncurry.elm
checkUpgrade 0.19 Elm-0.19/ConvertBasicsRem.elm
checkUpgrade 0.19 Elm-0.19/ConvertHtmlAttributesStyle.elm
checkUpgrade 0.19 Elm-0.19/ConvertHtmlAttributesStyleAltImport.elm
checkUpgrade 0.19 Elm-0.19/ListExports.elm

checkGood 0.18 Simple.elm
checkGood 0.18 AllSyntax/0.18/AllSyntax.elm
Expand Down
16 changes: 16 additions & 0 deletions tests/test-files/transform/Elm-0.19/ListExports.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module ListExports exposing (..)

{-|
@docs a
# Heading
@docs X
@docs b, c
-}

a = 1
b = 2
c = 3
25 changes: 25 additions & 0 deletions tests/test-files/transform/Elm-0.19/ListExports.formatted.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module ListExports exposing (X, a, b, c)

{-|
@docs a
# Heading
@docs X
@docs b, c
-}


a =
1


b =
2


c =
3

0 comments on commit 90bf524

Please sign in to comment.