Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit da0f12b

Browse files
committed
Move genIdent to live with Ident
1 parent 26178e2 commit da0f12b

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

src/SqlSquared/Signature.purs

+9-17
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,20 @@ import Data.Eq (class Eq1)
4141
import Data.Foldable as F
4242
import Data.HugeInt as HI
4343
import Data.HugeNum as HN
44-
import Data.Int as Int
4544
import Data.Json.Extended as EJ
4645
import Data.List as L
4746
import Data.Maybe (Maybe(..))
4847
import Data.Newtype (class Newtype)
4948
import Data.NonEmpty ((:|))
5049
import Data.Ord (class Ord1)
51-
import Data.String as S
5250
import Data.String.Gen as GenS
5351
import Data.Traversable as T
5452
import Matryoshka (Algebra, CoalgebraM, class Corecursive, embed)
5553
import SqlSquared.Path as Pt
5654
import SqlSquared.Signature.BinaryOperator (BinaryOperator(..), binopFromString, binopToString, genBinaryOperator, printBinaryOperator) as BO
5755
import SqlSquared.Signature.Case (Case(..), genCase, printCase) as CS
5856
import SqlSquared.Signature.GroupBy (GroupBy(..), genGroupBy, printGroupBy) as GB
59-
import SqlSquared.Signature.Ident (Ident(..), printIdent) as ID
57+
import SqlSquared.Signature.Ident (Ident(..), genIdent, printIdent) as ID
6058
import SqlSquared.Signature.JoinType (JoinType(..), genJoinType, joinTypeFromString, printJoinType) as JT
6159
import SqlSquared.Signature.OrderBy (OrderBy(..), genOrderBy, printOrderBy) as OB
6260
import SqlSquared.Signature.OrderType (OrderType(..), genOrderType, orderTypeFromString, printOrderType) as OT
@@ -389,8 +387,8 @@ genSqlF
389387
genSqlF genLiteral n
390388
| n < 2 =
391389
Gen.oneOf $ (Literal <$> genLiteral n) :|
392-
[ map Identifier genIdent
393-
, map Var genIdent
390+
[ map Identifier ID.genIdent
391+
, map Var ID.genIdent
394392
, pure $ Splice Nothing
395393
, pure $ SetLiteral L.Nil
396394
]
@@ -437,7 +435,7 @@ genUnop n = do
437435

438436
genInvokeFunction m l. Gen.MonadGen m CoalgebraM m (SqlF l) Int
439437
genInvokeFunction n = do
440-
name ← genIdent
438+
name ← ID.genIdent
441439
len ← Gen.chooseInt 0 $ n - 1
442440
pure $ InvokeFunction { name, args: map (const $ n - 1) $ L.range 0 len }
443441

@@ -469,7 +467,7 @@ genSwitch n = do
469467

470468
genLet m l. Gen.MonadGen m CoalgebraM m (SqlF l) Int
471469
genLet n = do
472-
ident ← genIdent
470+
ident ← ID.genIdent
473471
pure $ Let { ident
474472
, bindTo: n - 1
475473
, in_: n - 1
@@ -516,24 +514,18 @@ genSelect n = do
516514

517515
genFunctionDecl m. Gen.MonadGen m CoalgebraM m SqlDeclF Int
518516
genFunctionDecl n = do
519-
ident ← genIdent
517+
ident ← ID.genIdent
520518
len ← Gen.chooseInt 0 $ n - 1
521519
let
522520
foldFn acc _ = do
523-
arg ← genIdent
521+
arg ← ID.genIdent
524522
pure $ arg L.: acc
525523
args ← L.foldM foldFn L.Nil $ L.range 0 len
526524
pure $ FunctionDecl { ident, args, body: n - 1 }
527525

528526
genImport m a. Gen.MonadGen m MonadRec m m (SqlDeclF a)
529527
genImport = map Import Pt.genAnyDirPath
530528

531-
genIdent m. Gen.MonadGen m m ID.Ident
532-
genIdent = do
533-
start ← Gen.elements $ "a" :| S.split (S.Pattern "") "bcdefghijklmnopqrstuvwxyz"
534-
body ← map (Int.toStringAs Int.hexadecimal) (Gen.chooseInt 0 100000)
535-
pure $ ID.Ident (start <> body)
536-
537529
genDecls m. Gen.MonadGen m MonadRec m Int m (L.List (SqlDeclF Int))
538530
genDecls n = do
539531
let
@@ -568,7 +560,7 @@ genLeaf =
568560

569561
genLetP m t. Int GenSql m t
570562
genLetP n = do
571-
ident ← genIdent
563+
ident ← ID.genIdent
572564
bindTo ← genSql n
573565
in_ ← genSql n
574566
pure $ embed $ Let { ident, bindTo, in_ }
@@ -614,7 +606,7 @@ genPrimaryExprP n =
614606
, genArrayP n
615607
, genMapP n
616608
, genSpliceP n
617-
, map (embed ∘ Identifier) genIdent
609+
, map (embed ∘ Identifier) ID.genIdent
618610
]
619611

620612
genCaseP m t. Int GenSql m t

src/SqlSquared/Signature/Ident.purs

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
module SqlSquared.Signature.Ident (Ident(..), printIdent) where
1+
module SqlSquared.Signature.Ident
2+
( Ident(..)
3+
, printIdent
4+
, genIdent
5+
) where
26

37
import Prelude
48

9+
import Control.Monad.Gen as Gen
510
import Data.Generic.Rep (class Generic)
611
import Data.Generic.Rep.Show (genericShow)
12+
import Data.Int as Int
713
import Data.Newtype (class Newtype)
14+
import Data.NonEmpty ((:|))
815
import Data.Set as Set
916
import Data.String as S
1017
import Data.String.Regex as RX
@@ -31,3 +38,9 @@ identifier = RXU.unsafeRegex "^[a-z][_a-z0-9]*$" RXF.ignoreCase
3138

3239
tick RX.Regex
3340
tick = RXU.unsafeRegex "`" RXF.global
41+
42+
genIdent m. Gen.MonadGen m m Ident
43+
genIdent = do
44+
start ← Gen.elements $ "a" :| S.split (S.Pattern "") "bcdefghijklmnopqrstuvwxyz"
45+
body ← map (Int.toStringAs Int.hexadecimal) (Gen.chooseInt 0 100000)
46+
pure $ Ident (start <> body)

0 commit comments

Comments
 (0)