Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement/elm book elm review #827

Merged
merged 9 commits into from
Sep 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/on-push-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ jobs:
run: yarn check-css

- name: "Check elm-format"
uses: sparksp/elm-format-action@v1
uses: sparksp/elm-format-action@v1.0.2

- name: "Check elm-review"
uses: sparksp/elm-review-action@v1.0.4
uses: sparksp/elm-review-action@v1.0.6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: "Check elm-test"
run: yarn test

- name: Build asset
run: yarn build

- name: Check elm-book
run: cd elm-book && yarn install --production && yarn build
run: cd elm-book && yarn install --production && yarn elm-review && yarn elm-format --validate ./src/elm && yarn build
4 changes: 2 additions & 2 deletions elm-book/elm.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
"elm/html": "1.0.0",
"elm/http": "2.0.0",
"elm/json": "1.1.3",
"elm/parser": "1.1.0",
"elm/random": "1.0.0",
"elm/regex": "1.0.0",
"elm/svg": "1.0.1",
Expand All @@ -34,16 +33,17 @@
"hecrj/elm-slug": "1.0.2",
"justinmimbs/date": "3.2.1",
"krisajenkins/remotedata": "6.0.1",
"pablohirafuji/elm-syntax-highlight": "3.4.1",
"robinheghan/elm-phone-numbers": "1.0.0",
"rtfeldman/elm-iso8601-date-strings": "1.1.4",
"rtfeldman/elm-validate": "4.0.1",
"zwilias/elm-rosetree": "1.5.0"
},
"indirect": {
"elm/bytes": "1.0.8",
"elm/parser": "1.1.0",
"elm/virtual-dom": "1.0.2",
"lukewestby/elm-string-interpolate": "1.0.4",
"pablohirafuji/elm-syntax-highlight": "3.4.1",
"rtfeldman/elm-hex": "1.0.0"
}
},
Expand Down
1 change: 1 addition & 0 deletions elm-book/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
},
"dependencies": {
"autoprefixer": "^10.4.2",
"elm-review": "^2.7.4",
"focus-visible": "^5.2.0",
"postcss": "^8.4.5",
"postcss-focus-visible": "^6.0.3",
Expand Down
45 changes: 45 additions & 0 deletions elm-book/review/elm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"type": "application",
"source-directories": [
"src"
],
"elm-version": "0.19.1",
"dependencies": {
"direct": {
"elm/core": "1.0.5",
"jfmengels/elm-review": "2.9.0",
"jfmengels/elm-review-common": "1.2.2",
"jfmengels/elm-review-debug": "1.0.6",
"jfmengels/elm-review-simplify": "2.0.19",
"jfmengels/elm-review-unused": "1.1.23",
"sparksp/elm-review-camelcase": "1.1.0",
"sparksp/elm-review-imports": "1.0.1",
"stil4m/elm-syntax": "7.2.9",
"truqu/elm-review-nobooleancase": "1.0.0",
"truqu/elm-review-noleftpizza": "2.0.0",
"truqu/elm-review-noredundantconcat": "1.0.0",
"truqu/elm-review-noredundantcons": "1.0.0"
},
"indirect": {
"elm/html": "1.0.0",
"elm/json": "1.1.3",
"elm/parser": "1.1.0",
"elm/project-metadata-utils": "1.0.2",
"elm/random": "1.0.0",
"elm/time": "1.0.0",
"elm/virtual-dom": "1.0.3",
"elm-community/list-extra": "8.6.0",
"elm-explorations/test": "1.2.2",
"miniBill/elm-unicode": "1.0.2",
"pzp1997/assoc-list": "1.0.0",
"rtfeldman/elm-hex": "1.0.0",
"stil4m/structured-writer": "1.0.3"
}
},
"test-dependencies": {
"direct": {
"elm-explorations/test": "1.2.2"
},
"indirect": {}
}
}
54 changes: 54 additions & 0 deletions elm-book/review/src/ReviewConfig.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module ReviewConfig exposing (config)

{-| Do not rename the ReviewConfig module or the config function, because
`elm-review` will look for these.

To add packages that contain rules, add them to this review project using

`elm install author/packagename`

when inside the directory containing this file.

-}

import NoBooleanCase
import NoDebug.Log
import NoDebug.TodoOrToString
import NoExposingEverything
import NoLeftPizza
import NoMissingTypeAnnotation
import NoModuleOnExposedNames
import NoRedundantConcat
import NoRedundantCons
import NoUnused.CustomTypeConstructorArgs
import NoUnused.CustomTypeConstructors
import NoUnused.Dependencies
import NoUnused.Exports
import NoUnused.Modules
import NoUnused.Variables
import Review.Rule as Rule exposing (Rule)
import Simplify
import UseCamelCase


config : List Rule
config =
[ NoDebug.Log.rule
, NoDebug.TodoOrToString.rule
, NoUnused.Variables.rule
, NoUnused.Modules.rule
, NoUnused.CustomTypeConstructors.rule []
, NoUnused.CustomTypeConstructorArgs.rule
, NoUnused.Dependencies.rule
, NoUnused.Exports.rule
, NoBooleanCase.rule
, NoExposingEverything.rule
, NoMissingTypeAnnotation.rule
, Simplify.rule Simplify.defaults
, NoLeftPizza.rule NoLeftPizza.Redundant
, UseCamelCase.rule UseCamelCase.default
, NoModuleOnExposedNames.rule
, NoRedundantConcat.rule
, NoRedundantCons.rule
]
|> List.map (Rule.ignoreErrorsForDirectories [ "../src/elm" ])
8 changes: 4 additions & 4 deletions elm-book/src/elm/Book/Form/Checkbox.elm
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ initModel =
type Msg
= ToggledBasicExample Bool
| ToggledErrorExample Bool
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -45,7 +45,7 @@ update msg model =
ToggledErrorExample errorExample ->
{ model | errorExample = errorExample }

BlurredField _ ->
BlurredField ->
model


Expand Down Expand Up @@ -78,7 +78,7 @@ view model =
in
Form.Checkbox.view options
{ onCheck = ToggledBasicExample
, onBlur = BlurredField "basic-example-checkbox"
, onBlur = BlurredField
, value = model.basicExample
, error = Html.text ""
, hasError = False
Expand All @@ -97,7 +97,7 @@ viewWithError model =
in
Form.Checkbox.view options
{ onCheck = ToggledErrorExample
, onBlur = BlurredField "example-with-error-checkbox"
, onBlur = BlurredField
, value = model.errorExample
, error = Book.Helpers.viewError [] True (Just "Something went wrong")
, hasError = True
Expand Down
56 changes: 1 addition & 55 deletions elm-book/src/elm/Book/Form/DatePicker.elm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Book.Form.DatePicker exposing (Model, Msg, chapter, initModel, updateSharedState)
module Book.Form.DatePicker exposing (Model, chapter, initModel)

import Book.Helpers
import Date
Expand Down Expand Up @@ -32,64 +32,10 @@ initModel =
-- UPDATE


type Msg
= NoOp
| GotRelativeDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg
| GotAbsoluteDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg
| GotErrorDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg


type alias SharedState x =
{ x | datepickerModel : Model }


updateSharedState : Msg -> SharedState x -> ( SharedState x, Cmd Msg )
updateSharedState msg sharedState =
let
model =
sharedState.datepickerModel
in
case msg of
NoOp ->
( sharedState, Cmd.none )

GotRelativeDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.relative
in
( { sharedState | datepickerModel = { model | relative = newModel } }
, Cmd.map (GotRelativeDatePickerMsg options viewConfig) subCmd
)

GotAbsoluteDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.absolute
in
( { sharedState | datepickerModel = { model | absolute = newModel } }
, Cmd.map (GotAbsoluteDatePickerMsg options viewConfig) subCmd
)

GotErrorDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.withError
in
( { sharedState | datepickerModel = { model | withError = newModel } }
, Cmd.map (GotErrorDatePickerMsg options viewConfig) subCmd
)



-- CHAPTER

Expand Down
2 changes: 1 addition & 1 deletion elm-book/src/elm/Book/Form/File.elm
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ viewSideBySide :
-> { image : String, error : Maybe String }
-> Html (ElmBook.Msg x)
viewSideBySide options { image, error } =
Html.div [ Html.Attributes.class "grid grid-cols-2 gap-4" ]
Html.div [ class "grid grid-cols-2 gap-4" ]
[ Form.File.view
(options
|> Form.File.withLabel "Without image selected"
Expand Down
17 changes: 5 additions & 12 deletions elm-book/src/elm/Book/Form/Radio.elm
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type Msg
= SelectedFruit (Maybe Fruit)
| SelectedVerticalFruit (Maybe Fruit)
| SelectedErrorFruit (Maybe Fruit)
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -50,7 +50,7 @@ update msg model =
SelectedErrorFruit errorFruit ->
{ model | selectedErrorFruit = errorFruit }

BlurredField _ ->
BlurredField ->
model


Expand All @@ -66,13 +66,6 @@ updateSharedState msg sharedState =
defaultOptions : { id : String } -> Form.Radio.Options (Maybe Fruit) msg
defaultOptions { id } =
let
allOptions =
Book.Helpers.allFruits
|> List.map
(\fruit ->
( Just fruit, Html.text (Book.Helpers.fruitToString fruit) )
)

addOptions radio =
List.foldl
(\fruit ->
Expand All @@ -99,7 +92,7 @@ view model =
in
Form.Radio.view options
{ onSelect = SelectedFruit
, onBlur = BlurredField "fruit-picker-radio"
, onBlur = BlurredField
, value = model.selectedFruit
, error = Html.text ""
, hasError = False
Expand All @@ -115,7 +108,7 @@ viewVertical model =
in
Form.Radio.view options
{ onSelect = SelectedVerticalFruit
, onBlur = BlurredField "fruit-picker-vertical-radio"
, onBlur = BlurredField
, value = model.selectedVerticalFruit
, error = Html.text ""
, hasError = False
Expand Down Expand Up @@ -151,7 +144,7 @@ viewWithError model =
in
Form.Radio.view options
{ onSelect = SelectedErrorFruit
, onBlur = BlurredField "fruit-picker-error-radio"
, onBlur = BlurredField
, value = model.selectedErrorFruit
, error = Book.Helpers.viewError [] True (Just "Something went wrong")
, hasError = True
Expand Down
18 changes: 1 addition & 17 deletions elm-book/src/elm/Book/Form/RichText.elm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Book.Form.RichText exposing (Model, Msg, chapter, initModel, updateSharedState)
module Book.Form.RichText exposing (Model, Msg, chapter, initModel)

import Book.Helpers
import ElmBook.Actions as Actions
Expand Down Expand Up @@ -35,22 +35,6 @@ type alias SharedState x =
{ x | richTextModel : Model }


updateSharedState : Msg -> SharedState x -> ( SharedState x, Cmd Msg )
updateSharedState msg sharedState =
case msg of
GotRichTextMsg subMsg ->
let
( newModel, subCmd ) =
Form.RichText.update subMsg sharedState.richTextModel
in
( { sharedState | richTextModel = newModel }
, Cmd.map GotRichTextMsg subCmd
)

NoOp ->
( sharedState, Cmd.none )


update : Msg -> Form.RichText.Model -> ( Form.RichText.Model, Cmd Msg )
update msg richtextModel =
case msg of
Expand Down
8 changes: 4 additions & 4 deletions elm-book/src/elm/Book/Form/Select.elm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ initModel =
type Msg
= SelectedFruit Fruit
| SelectedFruitWithError Fruit
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -44,7 +44,7 @@ update msg model =
SelectedFruitWithError fruit ->
{ model | selectedFruitWithError = fruit }

BlurredField _ ->
BlurredField ->
model


Expand Down Expand Up @@ -86,7 +86,7 @@ viewBasic model =
in
Form.Select.view options
{ onSelect = SelectedFruit
, onBlur = BlurredField "fruit-picker-example"
, onBlur = BlurredField
, value = model.selectedFruit
, error = Html.text ""
, hasError = False
Expand Down Expand Up @@ -125,7 +125,7 @@ viewWithError error model =
in
Form.Select.view options
{ onSelect = SelectedFruitWithError
, onBlur = BlurredField "fruit-error-example"
, onBlur = BlurredField
, value = model.selectedFruitWithError
, error = Book.Helpers.viewError [] True (Just error)
, hasError = True
Expand Down
Loading