197 lines
6.6 KiB
Plaintext
197 lines
6.6 KiB
Plaintext
module Main where
|
|
|
|
import Parser (Parser(..))
|
|
import DomainParser (domain, label, ldh_str, sub_eof, subdomain)
|
|
|
|
import Prelude (Unit, discard, show, ($), (<>))
|
|
|
|
import Effect (Effect)
|
|
import Effect.Console (log)
|
|
|
|
import Data.Either (Either(..))
|
|
--import Data.Maybe (Maybe(..))
|
|
--import Data.Tuple (Tuple(..))
|
|
|
|
import Data.String.CodeUnits (fromCharArray)
|
|
|
|
-- isf :: Parser Boolean
|
|
-- isf = (_ == 'f') <$> itemP
|
|
--
|
|
-- isf2 :: Parser Boolean
|
|
-- isf2 = (==) <$> itemP <*> pure 'f'
|
|
--
|
|
-- isf3 :: Parser Boolean
|
|
-- isf3 = charP 'f'
|
|
--
|
|
-- ishi :: Parser (Tuple Boolean Boolean)
|
|
-- ishi = Tuple <$> ((_ == 'h') <$> itemP) <*> ((_ == 'i') <$> itemP)
|
|
--
|
|
-- ishi2 :: Parser (Tuple Boolean Boolean)
|
|
-- ishi2 = ado
|
|
-- h <- itemP
|
|
-- i <- itemP
|
|
-- in Tuple (h == 'h') (i == 'i')
|
|
--
|
|
-- isffound :: Maybe (Tuple Boolean String) -> Effect Unit
|
|
-- isffound maybe = case maybe of
|
|
-- Nothing -> log "no more data"
|
|
-- Just (Tuple b str) -> do
|
|
-- let toprint = if b then "FOUND IT" else "not found"
|
|
-- log $ toprint <> ", rest: " <> str
|
|
|
|
logtest :: forall e v. String -> Parser e v -> String -> (v -> String) -> Effect Unit
|
|
logtest fname (Parser p) str r = do
|
|
log $ "(" <> fname <> ") parsing '" <> str <> "': "
|
|
<> case p { string: str, position: 0 } of
|
|
Left { position, error: _ } -> "failed at position " <> show position
|
|
Right { suffix, result } -> show (r result) <> " '" <> suffix.string <> "'"
|
|
|
|
id :: forall a. a -> a
|
|
id a = a
|
|
|
|
main :: Effect Unit
|
|
main = do
|
|
logtest "ldh_str" ldh_str "a12B.fl" fromCharArray
|
|
logtest "ldh_str" ldh_str "1efg.x1" fromCharArray
|
|
logtest "ldh_str" ldh_str ".qjzleb" fromCharArray
|
|
logtest "ldh_str" ldh_str "a-b.b-a" fromCharArray
|
|
logtest "ldh_str" ldh_str "" fromCharArray
|
|
|
|
log ""
|
|
|
|
logtest "label" label "example.org" id
|
|
logtest "label" label "" id
|
|
logtest "label" label "a.x" id
|
|
logtest "label" label "a2.org" id
|
|
logtest "label" label "a33.org" id
|
|
logtest "label" label "a444.org" id
|
|
logtest "label" label "a5555.org" id
|
|
logtest "label" label "a66666.org" id
|
|
logtest "label" label "a777777.org" id
|
|
logtest "label" label "a8888888.org" id
|
|
log ""
|
|
logtest "label" label "-" id
|
|
logtest "label" label "a-" id
|
|
|
|
log ""
|
|
|
|
logtest "subdomain" subdomain "example.org" id
|
|
logtest "subdomain" subdomain "" id
|
|
logtest "subdomain" subdomain "a.x" id
|
|
logtest "subdomain" subdomain "a2.org" id
|
|
logtest "subdomain" subdomain "a33.org" id
|
|
logtest "subdomain" subdomain "a444.org" id
|
|
logtest "subdomain" subdomain "a5555.org" id
|
|
logtest "subdomain" subdomain "a66666.org" id
|
|
logtest "subdomain" subdomain "a777777.org" id
|
|
logtest "subdomain" subdomain "a8888888.org" id
|
|
logtest "subdomain" subdomain "xblah.a.x" id
|
|
logtest "subdomain" subdomain "xblah.a2.org" id
|
|
logtest "subdomain" subdomain "xblah.a33.org" id
|
|
logtest "subdomain" subdomain "xblah.a444.org" id
|
|
logtest "subdomain" subdomain "xblah.a5555.org" id
|
|
logtest "subdomain" subdomain "xblah.a66666.org" id
|
|
logtest "subdomain" subdomain "xblah.a777777.org" id
|
|
logtest "subdomain" subdomain "xblah.a8888888.org" id
|
|
logtest "subdomain" subdomain "-" id
|
|
logtest "subdomain" subdomain "a-" id
|
|
|
|
log ""
|
|
|
|
logtest "sub_eof" sub_eof " " id
|
|
logtest "sub_eof" sub_eof " " id
|
|
logtest "sub_eof" sub_eof "example.org" id
|
|
logtest "sub_eof" sub_eof "" id
|
|
logtest "sub_eof" sub_eof "a.x" id
|
|
logtest "sub_eof" sub_eof "a2.org" id
|
|
logtest "sub_eof" sub_eof "a33.org" id
|
|
logtest "sub_eof" sub_eof "a444.org" id
|
|
logtest "sub_eof" sub_eof "a5555.org" id
|
|
logtest "sub_eof" sub_eof "a66666.org" id
|
|
logtest "sub_eof" sub_eof "a777777.org" id
|
|
logtest "sub_eof" sub_eof "a8888888.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a.x" id
|
|
logtest "sub_eof" sub_eof "xblah.a2.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a33.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a444.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a5555.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a66666.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a777777.org" id
|
|
logtest "sub_eof" sub_eof "xblah.a8888888.org" id
|
|
logtest "sub_eof" sub_eof "-" id
|
|
logtest "sub_eof" sub_eof "a-" id
|
|
|
|
log ""
|
|
|
|
logtest "domain" domain " " id
|
|
logtest "domain" domain " " id
|
|
logtest "domain" domain "example.org" id
|
|
logtest "domain" domain "" id
|
|
logtest "domain" domain "a.x" id
|
|
logtest "domain" domain "a2.org" id
|
|
logtest "domain" domain "a33.org" id
|
|
logtest "domain" domain "a444.org" id
|
|
logtest "domain" domain "a5555.org" id
|
|
logtest "domain" domain "a66666.org" id
|
|
logtest "domain" domain "a777777.org" id
|
|
logtest "domain" domain "a8888888.org" id
|
|
logtest "domain" domain "xblah.a.x" id
|
|
logtest "domain" domain "xblah.a2.org" id
|
|
logtest "domain" domain "xblah.a33.org" id
|
|
logtest "domain" domain "xblah.a444.org" id
|
|
logtest "domain" domain "xblah.a5555.org" id
|
|
logtest "domain" domain "xblah.a66666.org" id
|
|
logtest "domain" domain "xblah.a777777.org" id
|
|
logtest "domain" domain "xblah.a8888888.org" id
|
|
logtest "domain" domain "-" id
|
|
logtest "domain" domain "a-" id
|
|
|
|
-- log $ "parsing the first 'f' in 'fiction' (sat): " <> case parse (sat (\x -> x == 'f')) "fiction" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "failed"
|
|
--
|
|
-- log $ "parsing 'fic' in 'fiction' (string): " <> case parse (string "fic") "fiction" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "failed"
|
|
--
|
|
-- log $ "parsing ident (all first alphanum) in 'ab123-blah' (ident): " <>
|
|
-- case parse ident "ab123-blah" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "failed"
|
|
--
|
|
-- log $ "parsing integer in '-19ab' (integer): " <>
|
|
-- case parse integer "-19ab" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "failed"
|
|
|
|
-- JUST WORKS
|
|
-- isffound $ parse isf "fable"
|
|
-- isffound $ parse isf "f"
|
|
-- isffound $ parse isf "n"
|
|
-- isffound $ parse isf ""
|
|
--
|
|
-- isffound $ parse isf2 "fable"
|
|
-- isffound $ parse isf2 "f"
|
|
-- isffound $ parse isf2 "n"
|
|
-- isffound $ parse isf2 ""
|
|
|
|
-- log $ "parsing 'hi': " <> case parse ishi2 "hi" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "coudn't parse two letters"
|
|
--
|
|
-- log $ "parsing 'no': " <> case parse ishi2 "no" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "coudn't parse two letters"
|
|
--
|
|
-- log $ "parsing 'ho': " <> case parse ishi2 "ho" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "coudn't parse two letters"
|
|
--
|
|
-- log $ "parsing 'ni': " <> case parse ishi2 "ni" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "coudn't parse two letters"
|
|
--
|
|
-- log $ "parsing '': " <> case parse ishi2 "" of
|
|
-- Just (Tuple x y) -> show x <> " " <> show y
|
|
-- Nothing -> "coudn't parse two letters"
|