diff --git a/src/DomainParser.purs b/drop/DomainParser.purs similarity index 100% rename from src/DomainParser.purs rename to drop/DomainParser.purs diff --git a/makefile b/makefile index 9137ab5..f809951 100644 --- a/makefile +++ b/makefile @@ -1,7 +1,7 @@ all: build clone-generic-parser: - [ -d ../parser ] || cd .. && git clone ssh://_gitea@git.baguette.netlib.re:2299/Baguette/parser.git + [ ! -d ../parser ] && cd .. && git clone ssh://_gitea@git.baguette.netlib.re:2299/Baguette/parser.git || : build: clone-generic-parser spago build diff --git a/src/App/DomainListInterface.purs b/src/App/DomainListInterface.purs index fd1f662..41dd365 100644 --- a/src/App/DomainListInterface.purs +++ b/src/App/DomainListInterface.purs @@ -29,8 +29,9 @@ import Web.Event.Event (Event) import Bulma as Bulma import CSSClasses as C -import Parsing (runParser) -import DomainParser as DomainParser +import GenericParser (DomainError(..), parse) +import GenericParser.DomainParserRFC1035 as RFC1035 +--import GenericParser.DomainParser as DomainParser import App.LogMessage import App.Messages.DNSManagerDaemon as DNSManager @@ -264,8 +265,11 @@ handleAction = case _ of H.modify_ _ { newDomainForm { new_domain = v } } case v of "" -> H.modify_ _ { newDomainForm { error_string = Nothing } } - _ -> case runParser v DomainParser.domain of - Left error_string -> H.modify_ _ { newDomainForm { error_string = Just $ show error_string } } + _ -> case parse RFC1035.label { string: v, position: 0 } of + Left { position, error } -> + let error_string = "error " <> (show_error error) + <> " at position: " <> show position + in H.modify_ _ { newDomainForm { error_string = Just error_string } } Right _ -> H.modify_ _ { newDomainForm { error_string = Nothing } } UpdateSelectedDomain domain -> H.modify_ _ { newDomainForm { selected_domain = domain } } @@ -299,6 +303,13 @@ handleAction = case _ of H.raise $ MessageToSend message H.raise $ Log $ SimpleLog $ "[😇] Trying to add a new domain (" <> new_domain <> ")" handleAction $ HandleNewDomainInput $ INP_newdomain "" + where + show_error :: Maybe DomainError -> String + show_error Nothing = "no specific error" + show_error (Just (LabelTooLarge size)) = "LabelTooLarge (size: " <> show size <> ")" + show_error (Just (DomainTooLarge size)) = "DomainTooLarge (size: " <> show size <> ")" + show_error (Just (InvalidCharacter)) = "InvalidCharacter" + show_error (Just (EOFExpected)) = "EOFExpected" handleQuery :: forall a m. MonadAff m => Query a -> H.HalogenM State Action () Output m (Maybe a) handleQuery = case _ of