The issue is likely with the rule = rule line, as Elm sees that as a
recursive variable definition which has known bugs (
https://github.com/elm-lang/elm-compiler/issues/873). You should just be
able to take that line out, there's no need to re-declare a variable with
the same name as an argument.
On Tuesday, 19 July 2016 16:59:04 UTC+10, Andreas Kobler wrote:
>
> Hi all
>
> Just started to play around with elm and very eager to get more fluid. I
> picked a silly POC scenario of a rule composer: basically you have regex
> rules and want to edit/test them in a form. When applying a regex and
> showing the replace output in an input field, I face an "undefined". Below
> you see the isolated part forcing my observation while applying the rule
> directly in init.
>
> Unfortunately I could really not trace down to the root of this happening.
> Is somebody able to tell me:
> - What I am doing wrong? Why does there an "undefined" appear? (wenn
> executing my own "replace" function in the REPL it works fine as expected)
> - How do you guys debug such behaviour?
>
> Here my silly example:
>
>
> module RuleTest exposing (..)
>
>
> import Html.App
> import Html exposing (..)
> import Html.Attributes exposing (..)
> import Regex
>
>
> main : Platform.Program Basics.Never
> main =
> Html.App.program
> { init = init
> , view = viewRuleTest
> , update = update
> , subscriptions = \_ -> Sub.none
> }
>
>
> type alias Rule =
> { regex : String
> , substitution : String
> }
>
>
> type alias RuleTest =
> { rule : Rule
> , input : String
> , output : String
> , matched : Bool
> }
>
>
> type Msg
> = StartTest String
>
>
>
>
> -- init
> init : (RuleTest, Cmd Msg)
> init =
> ( apply "reg1" (Rule "reg1" "sub1")
> , Cmd.none
> )
>
>
> -- update
> update : Msg -> RuleTest -> (RuleTest, Cmd Msg)
> update msg ruleTest =
> case msg of
>
>
> StartTest input ->
> ( apply input ruleTest.rule, Cmd.none )
>
>
>
>
> apply : String -> Rule -> RuleTest
> apply input rule =
> let
> output = replace rule.regex rule.substitute input
> matched = input /= output
> rule = rule
> in
> RuleTest rule input output True
>
>
> replace : String -> String -> String -> String
> replace regex substitute input =
> Regex.replace Regex.All (Regex.regex regex) (\_ -> substitute) input
>
>
> viewRuleTest : RuleTest -> Html Msg
> viewRuleTest ruleTest =
> div []
> [ label [] [ text "Pattern" ]
> , input [ Html.Attributes.value ruleTest.rule.regex, disabled True ]
> []
> , label [] [ text "Substitution" ]
> , input [ Html.Attributes.value ruleTest.rule.substitution, disabled
> True ] []
> , label [] [ text "Input" ]
> , input [ Html.Attributes.value ruleTest.input, disabled True ] []
> , label [] [ text "Output" ]
> , input [ Html.Attributes.value ruleTest.output, disabled True ] []
> , label [] [ text "matched" ]
> , input [ type' "checkbox", checked ruleTest.matched ] []
> ]
>
>
> Environment:
> elm repl --version
> 0.17.1
> OSX 10.11.3
>
> {
> "version": "1.0.0",
> "summary": "helpful summary of your project, less than 80 characters",
> "repository": "https://github.com/user/project.git",
> "license": "BSD3",
> "source-directories": [
> "."
> ],
> "exposed-modules": [],
> "dependencies": {
> "elm-lang/core": "4.0.1 <= v < 5.0.0",
> "elm-lang/html": "1.1.0 <= v < 2.0.0"
> },
> "elm-version": "0.17.1 <= v < 0.18.0"
> }
>
>
> Thanks for any advice!
>
> Best, Andi
>
>
>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.