Skip to content

Commit fee7abe

Browse files
committed
Wrap package scores and identifiers in newtypes
1 parent 5bf02c2 commit fee7abe

15 files changed

+299
-275
lines changed

src/Docs/Search/App/SearchResults.purs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import Docs.Search.BrowserEngine (PartialIndex, browserSearchEngine)
66
import Docs.Search.Config (config)
77
import Docs.Search.Declarations (DeclLevel(..), declLevelToHashAnchor)
88
import Docs.Search.DocsJson (DataDeclType(..))
9-
import Docs.Search.Engine (Result(..))
9+
import Docs.Search.Engine (Result(..), packageInfoToString)
1010
import Docs.Search.Engine as Engine
1111
import Docs.Search.Extra (homePageFromRepository, (>#>))
1212
import Docs.Search.ModuleIndex (ModuleResult)
1313
import Docs.Search.PackageIndex (PackageResult)
1414
import Docs.Search.SearchResult (ResultInfo(..), SearchResult(..))
1515
import Docs.Search.TypeDecoder (Constraint(..), FunDep(..), FunDeps(..), Kind(..), QualifiedName(..), Type(..), TypeArgument(..), joinForAlls, joinRows)
1616
import Docs.Search.TypeIndex (TypeIndex)
17-
import Docs.Search.Types (ModuleName(..), packageInfoToString)
17+
import Docs.Search.Types (ModuleName(..), Identifier(..))
1818

1919
import Prelude
2020

@@ -302,9 +302,9 @@ renderSearchResult markdownIt (SearchResult result) =
302302
, HE.onClick $ const $ Just $ SearchResultClicked result.moduleName
303303
, HP.href $
304304
unwrap result.moduleName <> ".html#" <>
305-
result.hashAnchor <> ":" <> result.name
305+
result.hashAnchor <> ":" <> unwrap result.name
306306
]
307-
[ HH.text result.name ]
307+
[ HH.text $ unwrap result.name ]
308308
]
309309
]
310310

@@ -341,7 +341,7 @@ renderSearchResult markdownIt (SearchResult result) =
341341
renderResultType
342342
:: forall a rest
343343
. { info :: ResultInfo
344-
, name :: String
344+
, name :: Identifier
345345
, moduleName :: ModuleName
346346
| rest
347347
}
@@ -373,15 +373,15 @@ renderResultType result =
373373
renderValueSignature
374374
:: forall a rest
375375
. { moduleName :: ModuleName
376-
, name :: String
376+
, name :: Identifier
377377
| rest
378378
}
379379
-> Type
380380
-> Array (HH.HTML a Action)
381381
renderValueSignature result ty =
382382
[ HH.a [ makeHref ValueLevel false result.moduleName result.name
383383
, HE.onClick $ const $ Just $ SearchResultClicked result.moduleName ]
384-
[ HH.text result.name ]
384+
[ HH.text $ unwrap result.name ]
385385
, HH.text " :: "
386386
, renderType ty ]
387387

@@ -392,7 +392,7 @@ renderTypeClassSignature
392392
, arguments :: Array TypeArgument
393393
, superclasses :: Array Constraint
394394
}
395-
-> { name :: String, moduleName :: ModuleName | rest }
395+
-> { name :: Identifier, moduleName :: ModuleName | rest }
396396
-> Array (HH.HTML a Action)
397397
renderTypeClassSignature { fundeps, arguments, superclasses } { name, moduleName } =
398398
[ keyword "class"
@@ -414,7 +414,7 @@ renderTypeClassSignature { fundeps, arguments, superclasses } { name, moduleName
414414
, HE.onClick $ const $ Just $
415415
SearchResultClicked moduleName
416416
]
417-
[ HH.text name ]
417+
[ HH.text $ unwrap name ]
418418
, space
419419
] <> (
420420
Array.intercalate [ space ] $
@@ -444,10 +444,10 @@ renderTypeClassMemberSignature
444444
, typeClass :: QualifiedName
445445
, typeClassArguments :: Array TypeArgument
446446
}
447-
-> { name :: String | rest }
447+
-> { name :: Identifier | rest }
448448
-> Array (HH.HTML a Action)
449449
renderTypeClassMemberSignature { type: ty, typeClass, typeClassArguments } result =
450-
[ HH.text result.name
450+
[ HH.text $ unwrap result.name
451451
, HH.text " :: "
452452
, renderType ty
453453
]
@@ -457,15 +457,15 @@ renderDataSignature
457457
:: forall a rest
458458
. { typeArguments :: Array TypeArgument
459459
, dataDeclType :: DataDeclType }
460-
-> { name :: String | rest }
460+
-> { name :: Identifier | rest }
461461
-> Array (HH.HTML a Action)
462462
renderDataSignature { typeArguments, dataDeclType } { name } =
463463
[ keyword
464464
case dataDeclType of
465465
NewtypeDataDecl -> "newtype"
466466
DataDataDecl -> "data"
467467
, space
468-
, HH.text name
468+
, HH.text $ unwrap name
469469
, space
470470
, HH.span_ $
471471
Array.intercalate [ space ] $
@@ -478,12 +478,12 @@ renderTypeSynonymSignature
478478
. { type :: Type
479479
, arguments :: Array TypeArgument
480480
}
481-
-> { name :: String | rest }
481+
-> { name :: Identifier | rest }
482482
-> Array (HH.HTML a Action)
483483
renderTypeSynonymSignature { type: ty, arguments } { name } =
484484
[ keyword "type"
485485
, space
486-
, HH.text name
486+
, HH.text $ unwrap name
487487
, space
488488
, HH.span_ $
489489
Array.intercalate [ space ] $
@@ -499,10 +499,10 @@ renderTypeArgument :: forall a. TypeArgument -> Array (HH.HTML a Action)
499499
renderTypeArgument (TypeArgument { name, mbKind }) =
500500
case mbKind of
501501
Nothing ->
502-
[ HH.text name ]
502+
[ HH.text $ name ]
503503
Just kind ->
504504
[ HH.text "("
505-
, HH.text name
505+
, HH.text $ name
506506
, HH.text " :: "
507507
, renderKind kind
508508
, HH.text ")"
@@ -522,14 +522,14 @@ renderType = case _ of
522522

523523
TypeApp (TypeApp (TypeConstructor
524524
(QualifiedName { moduleNameParts: [ "Prim" ]
525-
, name: "Function" })) t1) t2 ->
525+
, name: Identifier "Function" })) t1) t2 ->
526526
HH.span_ [ renderType t1
527527
, syntax " -> "
528528
, renderType t2
529529
]
530530

531531
TypeApp (TypeConstructor (QualifiedName { moduleNameParts: [ "Prim" ]
532-
, name: "Record" }))
532+
, name: Identifier "Record" }))
533533
row ->
534534
renderRow false row
535535

@@ -624,7 +624,7 @@ renderRow asRow =
624624

625625
( Array.intercalate [ HH.text ", " ] $ Array.fromFoldable $ rows <#>
626626
\entry ->
627-
[ HH.span_ [ HH.text $ entry.row <> " :: "
627+
[ HH.span_ [ HH.text $ unwrap entry.row <> " :: "
628628
, renderType entry.ty ] ]
629629
) <>
630630

@@ -637,7 +637,7 @@ renderRow asRow =
637637
closing = if asRow then " )" else " }"
638638

639639
primRecord :: QualifiedName
640-
primRecord = QualifiedName { moduleNameParts: [ "Prim" ], name: "Record" }
640+
primRecord = QualifiedName { moduleNameParts: [ "Prim" ], name: Identifier "Record" }
641641

642642

643643
renderConstraint
@@ -658,13 +658,13 @@ renderQualifiedName
658658
-> HH.HTML a Action
659659
renderQualifiedName isInfix level (QualifiedName { moduleNameParts, name })
660660
= if isBuiltIn then
661-
HH.text name
661+
HH.text $ unwrap name
662662
else
663663
HH.a [ HE.onClick $ const $ Just $
664664
SearchResultClicked $ moduleName
665665
, makeHref level isInfix moduleName name
666666
]
667-
[ HH.text name ]
667+
[ HH.text $ unwrap name ]
668668
where
669669
moduleName = ModuleName $ Array.intercalate "." $ moduleNameParts
670670
isBuiltIn = moduleNameParts !! 0 == Just "Prim"
@@ -686,13 +686,13 @@ makeHref
686686
. DeclLevel
687687
-> Boolean
688688
-> ModuleName
689-
-> String
689+
-> Identifier
690690
-> HH.IProp ( href :: String | rest ) t
691691
makeHref level isInfix moduleName name =
692692
HP.href $
693693
unwrap moduleName <> ".html#" <>
694694
declLevelToHashAnchor level <> ":" <>
695-
if isInfix then "type (" <> name <> ")" else name
695+
if isInfix then "type (" <> unwrap name <> ")" else unwrap name
696696

697697

698698
keyword

src/Docs/Search/Declarations.purs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Docs.Search.DocsJson (ChildDeclType(..), ChildDeclaration(..), DeclType(.
44
import Docs.Search.Score (Scores, getPackageScore, getPackageScoreForPackageName)
55
import Docs.Search.SearchResult (ResultInfo(..), SearchResult(..))
66
import Docs.Search.TypeDecoder (Constraint(..), QualifiedName(..), Type(..), Kind, joinForAlls)
7-
import Docs.Search.Types (ModuleName(..), PackageName(..), PackageInfo(..))
7+
import Docs.Search.Types (ModuleName(..), PackageName(..), PackageInfo(..), Identifier(..))
88

99
import Prelude
1010

@@ -83,14 +83,14 @@ resultsForDeclaration scores moduleName indexEntry@(Declaration entry) =
8383
case mkInfo declLevel indexEntry of
8484
Nothing -> mempty
8585
Just info' ->
86-
let result = SearchResult { name: title
86+
let result = SearchResult { name: Identifier title
8787
, comments
8888
, hashAnchor: declLevelToHashAnchor declLevel
8989
, moduleName
9090
, sourceSpan
9191
, packageInfo
9292
, score:
93-
fromMaybe 0 $ getPackageScoreForPackageName scores <$> mbPackageName
93+
fromMaybe zero $ getPackageScoreForPackageName scores <$> mbPackageName
9494
, info: info'
9595
}
9696
in
@@ -219,7 +219,7 @@ resultsForChildDeclaration scores packageInfo moduleName parentResult
219219
child@(ChildDeclaration { title, info, comments, mbSourceSpan })
220220
| Just resultInfo <- mkChildInfo parentResult child =
221221
{ path: title
222-
, result: SearchResult { name: title
222+
, result: SearchResult { name: Identifier title
223223
, comments
224224
-- `ChildDeclaration`s are always either data
225225
-- constructors, type class members or instances.

src/Docs/Search/Engine.purs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Docs.Search.PackageIndex (PackageIndex, PackageResult)
55
import Docs.Search.Score (Scores)
66
import Docs.Search.SearchResult (SearchResult, typeOfResult)
77
import Docs.Search.TypeQuery (TypeQuery(..), parseTypeQuery, penalty)
8-
import Docs.Search.Types (PackageInfo(..), PackageName(..), ModuleName(..))
8+
import Docs.Search.Types (PackageInfo(..), ModuleName(..), PackageName(..), PackageScore)
99

1010
import Prelude
1111

@@ -66,7 +66,7 @@ data Result
6666
| MdlResult ModuleResult
6767

6868

69-
getResultScore :: Result -> Int
69+
getResultScore :: Result -> PackageScore
7070
getResultScore (DeclResult r) = (unwrap r).score
7171
getResultScore (TypeResult r) = (unwrap r).score
7272
getResultScore (PackResult r) = r.score
@@ -88,8 +88,8 @@ getResultModuleName (MdlResult r) = r.name
8888

8989

9090
getResultName :: Result -> String
91-
getResultName (DeclResult r) = (unwrap r).name
92-
getResultName (TypeResult r) = (unwrap r).name
91+
getResultName (DeclResult r) = unwrap (unwrap r).name
92+
getResultName (TypeResult r) = unwrap (unwrap r).name
9393
getResultName (PackResult r) = unwrap r.name
9494
getResultName (MdlResult r) = unwrap r.name
9595

@@ -158,3 +158,10 @@ sortByDistance
158158
-> Array SearchResult
159159
sortByDistance typeQuery =
160160
Array.sortWith (map (penalty typeQuery) <<< typeOfResult)
161+
162+
163+
packageInfoToString :: PackageInfo -> String
164+
packageInfoToString (Package (PackageName p)) = p
165+
packageInfoToString Builtin = "<builtin>"
166+
packageInfoToString LocalPackage = "<local package>"
167+
packageInfoToString UnknownPackage = "<unknown package>"

0 commit comments

Comments
 (0)