Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env:
- PATH=$HOME/purescript:$PATH

install:
- export PURS_VERSION=v0.13.2
- export PURS_VERSION=v0.13.3
- wget -O $HOME/purescript.tar.gz https://github.com/purescript/purescript/releases/download/$PURS_VERSION/linux64.tar.gz
- tar -xvf $HOME/purescript.tar.gz -C $HOME/
- chmod a+x $HOME/purescript
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

New features:
- Render docs as markdown (#15)
- Show help for each CLI command.

## [0.0.4] - 2019-07-25

New features:
Expand Down
13 changes: 7 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
"CHANGELOG.md"
],
"scripts": {
"test": "spago test",
"bundle-app": "spago bundle-app -m Docs.Search.App --to dist/docs-search-app.js",
"test": "spago test && npm run check-version",
"bundle-app": "spago bundle-app --no-build --no-install -m Docs.Search.App --to dist/docs-search-app.js",
"parcel-app": "parcel build --no-source-maps --target browser --out-file dist/docs-search-app.js dist/docs-search-app.js",
"build-app": "npm run bundle-app && npm run parcel-app",
"bundle-main": "spago bundle-app -m Docs.Search.Main --to dist/main.js",
"bundle-main": "spago bundle-app --no-build --no-install -m Docs.Search.Main --to dist/main.js",
"parcel-main": "parcel build --no-source-maps --target node --bundle-node-modules --out-file dist/main.js dist/main.js",
"add-shebang": "echo \"#!/usr/bin/env node\" > dist/purescript-docs-search && cat dist/main.js >> dist/purescript-docs-search",
"chmod-main": "chmod +x dist/purescript-docs-search",
"build-main": "npm run bundle-main && npm run parcel-main && npm run add-shebang && rm dist/main.js && npm run chmod-main",
"build": "npm run build-app && npm run build-main",
"build": "spago build && npm run build-app && npm run build-main",
"build-dev": "spago build && npm run build-app && npm run bundle-main && npm run add-shebang && rm dist/main.js && npm run chmod-main",
"clean": "rm -rf dist",
"check-version": "[ \"$(./dist/purescript-docs-search version)\" = \"$npm_package_version\" ]",
"test": "spago test && npm run check-version"
"check-version": "[ \"$(./dist/purescript-docs-search version)\" = \"$npm_package_version\" ]"
},
"repository": {
"type": "git",
Expand All @@ -45,6 +45,7 @@
"dependencies": {},
"devDependencies": {
"glob": "^7.1.4",
"markdown-it": "^9.0.1",
"parcel": "^1.12.3",
"spago": "^0.8.5"
}
Expand Down
50 changes: 35 additions & 15 deletions packages.dhall
Original file line number Diff line number Diff line change
@@ -1,23 +1,13 @@
let mkPackage =
https://raw.githubusercontent.com/purescript/package-sets/psc-0.13.0-20190602/src/mkPackage.dhall sha256:0b197efa1d397ace6eb46b243ff2d73a3da5638d8d0ac8473e8e4a8fc528cf57
https://raw.githubusercontent.com/purescript/package-sets/psc-0.13.2-20190725/src/mkPackage.dhall sha256:0b197efa1d397ace6eb46b243ff2d73a3da5638d8d0ac8473e8e4a8fc528cf57

let upstream =
https://raw.githubusercontent.com/purescript/package-sets/psc-0.13.0-20190602/src/packages.dhall sha256:5da1578dd297709265715a92eda5f42989dce92e121fcc889cff669a3b997c3d
https://github.com/purescript/package-sets/releases/download/psc-0.13.3-20190827/packages.dhall sha256:93f6b11068b42eac6632d56dab659a151c231381e53a16de621ae6d0dab475ce

let overrides = {=}
let overrides = { metadata = upstream.metadata ⫽ { version = "v0.13.0" } }

let additions =
{ search-trie =
mkPackage
[ "prelude"
, "arrays"
, "ordered-collections"
, "lists"
, "foldable-traversable"
]
"https://github.com/klntsky/purescript-search-trie.git"
"fd37a12"
, halogen =
{ halogen =
mkPackage
[ "aff"
, "avar"
Expand All @@ -41,7 +31,7 @@ let additions =
, "web-uievents"
]
"https://github.com/slamdata/purescript-halogen.git"
"v5.0.0-rc.5"
"v5.0.0-rc.6"
, halogen-css =
mkPackage
[ "css", "halogen" ]
Expand Down Expand Up @@ -69,6 +59,36 @@ let additions =
[ "enums" ]
"https://github.com/Risto-Stevcev/purescript-exitcodes.git"
"v4.0.0"
, markdown-it =
mkPackage
[ "prelude", "effect", "options" ]
"https://github.com/nonbili/purescript-markdown-it.git"
"v0.4.0"
, html-parser-halogen =
mkPackage
[ "string-parsers", "generics-rep", "halogen" ]
"https://github.com/rnons/purescript-html-parser-halogen.git"
"890da763cdd2a1049ab8837e477c5ba1fcf6d4ce"
, markdown-it-halogen =
mkPackage
[ "markdown-it", "html-parser-halogen" ]
"https://github.com/nonbili/purescript-markdown-it-halogen.git"
"08c9625015bf04214be14e45230e8ce12f3fa2bf"
, bower-json =
mkPackage
[ "prelude"
, "generics-rep"
, "maybe"
, "arrays"
, "either"
, "newtype"
, "tuples"
, "foldable-traversable"
, "argonaut-codecs"
, "foreign-object"
]
"https://github.com/klntsky/purescript-bower-json.git"
"v1.0.0"
}

in upstream ⫽ overrides ⫽ additions
71 changes: 38 additions & 33 deletions spago.dhall
Original file line number Diff line number Diff line change
@@ -1,36 +1,41 @@
{ name =
"docs-search"
{ sources =
[ "src/**/*.purs", "test/**/*.purs" ]
, name =
"docs-search"
, dependencies =
[ "aff-promise"
, "argonaut-codecs"
, "argonaut-core"
, "argonaut-generic"
, "arrays"
, "console"
, "control"
, "coroutines"
, "effect"
, "foldable-traversable"
, "generics-rep"
, "halogen"
, "halogen-css"
, "lists"
, "maybe"
, "newtype"
, "node-buffer"
, "node-fs"
, "node-fs-aff"
, "node-process"
, "node-readline"
, "optparse"
, "profunctor"
, "search-trie"
, "string-parsers"
, "strings"
, "test-unit"
, "web-dom"
, "web-html"
]
[ "aff-promise"
, "argonaut-codecs"
, "argonaut-core"
, "argonaut-generic"
, "arrays"
, "bower-json"
, "console"
, "control"
, "coroutines"
, "effect"
, "foldable-traversable"
, "generics-rep"
, "halogen"
, "halogen-css"
, "lists"
, "markdown-it"
, "markdown-it-halogen"
, "maybe"
, "newtype"
, "node-buffer"
, "node-fs"
, "node-fs-aff"
, "node-process"
, "node-readline"
, "optparse"
, "profunctor"
, "search-trie"
, "string-parsers"
, "strings"
, "test-unit"
, "web-dom"
, "web-html"
]
, packages =
./packages.dhall
./packages.dhall
}
26 changes: 18 additions & 8 deletions src/Docs/Search/App.purs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
-- | This is the main module of the client-side Halogen app.
module Docs.Search.App where

import Prelude
Expand All @@ -13,6 +14,7 @@ import Effect (Effect)
import Halogen as H
import Halogen.Aff as HA
import Halogen.VDom.Driver (runUI)
import MarkdownIt as MD
import Web.DOM.Document as Document
import Web.DOM.Element as Element
import Web.DOM.Node as Node
Expand All @@ -31,10 +33,13 @@ main = do
insertStyle doc
mbContainers <- getContainers doc

-- Initialize a `markdown-it` instance (we need it to render the docs as markdown)
markdownIt <- MD.newMarkdownIt MD.Default mempty

whenJust mbContainers \ { searchField, searchResults, pageContents } -> do
HA.runHalogenAff do
sfio <- runUI SearchField.component unit searchField
srio <- runUI (SearchResults.mkComponent pageContents) unit searchResults
srio <- runUI (SearchResults.mkComponent pageContents markdownIt) unit searchResults
sfio.subscribe $
Coroutine.consumer (srio.query <<< H.tell <<< SearchResults.MessageFromSearchField)

Expand Down Expand Up @@ -68,6 +73,7 @@ insertStyle doc = do
margin-right: 0.25em;
}
"""

mbHead <-
ParentNode.querySelector (wrap "head") (Document.toParentNode doc)

Expand All @@ -78,9 +84,12 @@ insertStyle doc = do
void $ Node.appendChild (Text.toNode contents) (Element.toNode style)
void $ Node.appendChild (Element.toNode style) (Element.toNode head)

getContainers :: Document.Document -> Effect (Maybe { searchField :: HTML.HTMLElement
, searchResults :: HTML.HTMLElement
, pageContents :: Element.Element })
-- | Query the DOM for specific elements that should always be present.
getContainers
:: Document.Document
-> Effect (Maybe { searchField :: HTML.HTMLElement
, searchResults :: HTML.HTMLElement
, pageContents :: Element.Element })
getContainers doc = do
let docPN = Document.toParentNode doc
mbBanner <-
Expand All @@ -89,12 +98,13 @@ getContainers doc = do
ParentNode.querySelector (wrap ".everything-except-footer") docPN
mbContainer <-
ParentNode.querySelector (wrap ".everything-except-footer > .container") docPN
case mbBanner, mbEverything, mbContainer of
Just banner, Just everything, Just pageContents -> do
case unit of
_ | Just banner <- mbBanner
, Just everything <- mbEverything
, Just pageContents <- mbContainer -> do
search <- Document.createElement "div" doc
void $ Node.appendChild (Element.toNode search) (Element.toNode banner)
pure $ fromElement search >>= \searchField ->
fromElement everything >>= \searchResults ->
pure { searchField, searchResults, pageContents }
_, _, _ ->
pure Nothing
| otherwise -> pure Nothing
2 changes: 2 additions & 0 deletions src/Docs/Search/App/SearchField.purs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
-- | This module contains a Halogen component for search field, that emits
-- | `SearchFieldMessage`s for various events.
module Docs.Search.App.SearchField where

import Prelude
Expand Down
Loading