initial commit! meowie!!
This commit is contained in:
commit
e5f495348e
|
@ -0,0 +1,10 @@
|
||||||
|
/bower_components/
|
||||||
|
/node_modules/
|
||||||
|
/.pulp-cache/
|
||||||
|
/output/
|
||||||
|
/generated-docs/
|
||||||
|
/.psc-package/
|
||||||
|
/.psc*
|
||||||
|
/.purs*
|
||||||
|
/.psa*
|
||||||
|
/.spago
|
|
@ -0,0 +1,110 @@
|
||||||
|
{-
|
||||||
|
Welcome to your new Dhall package-set!
|
||||||
|
|
||||||
|
Below are instructions for how to edit this file for most use
|
||||||
|
cases, so that you don't need to know Dhall to use it.
|
||||||
|
|
||||||
|
## Warning: Don't Move This Top-Level Comment!
|
||||||
|
|
||||||
|
Due to how `dhall format` currently works, this comment's
|
||||||
|
instructions cannot appear near corresponding sections below
|
||||||
|
because `dhall format` will delete the comment. However,
|
||||||
|
it will not delete a top-level comment like this one.
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
Most will want to do one or both of these options:
|
||||||
|
1. Override/Patch a package's dependency
|
||||||
|
2. Add a package not already in the default package set
|
||||||
|
|
||||||
|
This file will continue to work whether you use one or both options.
|
||||||
|
Instructions for each option are explained below.
|
||||||
|
|
||||||
|
### Overriding/Patching a package
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Change a package's dependency to a newer/older release than the
|
||||||
|
default package set's release
|
||||||
|
- Use your own modified version of some dependency that may
|
||||||
|
include new API, changed API, removed API by
|
||||||
|
using your custom git repo of the library rather than
|
||||||
|
the package set's repo
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
where `entityName` is one of the following:
|
||||||
|
- dependencies
|
||||||
|
- repo
|
||||||
|
- version
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with packageName.entityName = "new value"
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Example:
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with halogen.version = "master"
|
||||||
|
with halogen.repo = "https://example.com/path/to/git/repo.git"
|
||||||
|
|
||||||
|
with halogen-vdom.version = "v4.0.0"
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Add packages that aren't already included in the default package set
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
where `<version>` is:
|
||||||
|
- a tag (i.e. "v4.0.0")
|
||||||
|
- a branch (i.e. "master")
|
||||||
|
- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977")
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with new-package-name =
|
||||||
|
{ dependencies =
|
||||||
|
[ "dependency1"
|
||||||
|
, "dependency2"
|
||||||
|
]
|
||||||
|
, repo =
|
||||||
|
"https://example.com/path/to/git/repo.git"
|
||||||
|
, version =
|
||||||
|
"<version>"
|
||||||
|
}
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Example:
|
||||||
|
-------------------------------
|
||||||
|
let upstream = --
|
||||||
|
in upstream
|
||||||
|
with benchotron =
|
||||||
|
{ dependencies =
|
||||||
|
[ "arrays"
|
||||||
|
, "exists"
|
||||||
|
, "profunctor"
|
||||||
|
, "strings"
|
||||||
|
, "quickcheck"
|
||||||
|
, "lcg"
|
||||||
|
, "transformers"
|
||||||
|
, "foldable-traversable"
|
||||||
|
, "exceptions"
|
||||||
|
, "node-fs"
|
||||||
|
, "node-buffer"
|
||||||
|
, "node-readline"
|
||||||
|
, "datetime"
|
||||||
|
, "now"
|
||||||
|
]
|
||||||
|
, repo =
|
||||||
|
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||||
|
, version =
|
||||||
|
"v7.0.0"
|
||||||
|
}
|
||||||
|
-------------------------------
|
||||||
|
-}
|
||||||
|
let upstream =
|
||||||
|
https://github.com/purescript/package-sets/releases/download/psc-0.14.0-20210308/packages.dhall sha256:5a86da7913f6c84adc2efacfad49ca135af8f62235e7270d9b952a8dda3c4b47
|
||||||
|
|
||||||
|
in upstream
|
|
@ -0,0 +1,9 @@
|
||||||
|
{-
|
||||||
|
Welcome to a Spago project!
|
||||||
|
You can edit this file as you like.
|
||||||
|
-}
|
||||||
|
{ name = "my-project"
|
||||||
|
, dependencies = [ "console", "effect", "lists", "psci-support", "strings" ]
|
||||||
|
, packages = ./packages.dhall
|
||||||
|
, sources = [ "src/**/*.purs", "test/**/*.purs" ]
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
import Effect (Effect)
|
||||||
|
import Effect.Console (log)
|
||||||
|
import Data.String.Common (joinWith, trim)
|
||||||
|
import Data.String.CodeUnits (length)
|
||||||
|
import Data.Array (replicate, mapWithIndex)
|
||||||
|
import Data.Array (length) as Array
|
||||||
|
|
||||||
|
-- thanks to @lambdagrrl@computerfairi.es for help with this class
|
||||||
|
class UnescapeShow a where
|
||||||
|
unescapeShow :: a -> String
|
||||||
|
|
||||||
|
instance stringShow :: UnescapeShow String where
|
||||||
|
unescapeShow = identity
|
||||||
|
else instance otherShow :: Show a => UnescapeShow a where
|
||||||
|
unescapeShow = show
|
||||||
|
|
||||||
|
type Box
|
||||||
|
= { width :: Int
|
||||||
|
, kitties :: Int
|
||||||
|
}
|
||||||
|
|
||||||
|
kitty = "/ᐠ。ꞈ。ᐟ\\" :: String
|
||||||
|
|
||||||
|
-- how many chars of kitties will be printed before wrapping to next line
|
||||||
|
limit = 80 :: Int
|
||||||
|
|
||||||
|
-- | repeats the specified string with a delimiter
|
||||||
|
repeat :: String -> Int -> String -> String
|
||||||
|
repeat delimiter num text = joinWith delimiter $ replicate num text
|
||||||
|
|
||||||
|
-- | inserts a string after each Nth element of an array
|
||||||
|
insertAfterEach :: ∀ a. UnescapeShow a => Int -> String -> Array a -> Array String
|
||||||
|
insertAfterEach period input arr = mapWithIndex isModPeriod arr
|
||||||
|
where
|
||||||
|
isModPeriod index el
|
||||||
|
| ((index + 1) `mod` period == 0) = unescapeShow el <> input
|
||||||
|
| otherwise = unescapeShow el
|
||||||
|
|
||||||
|
showKittens :: Box -> String
|
||||||
|
showKittens kittenbox = kittens <> "\n" <> box
|
||||||
|
where
|
||||||
|
-- an array of kitties of the specified size
|
||||||
|
rawKittens = replicate kittenbox.kitties kitty
|
||||||
|
|
||||||
|
-- converts the char limit to the number of kittens
|
||||||
|
kittyLimit = (limit / length kitty)
|
||||||
|
|
||||||
|
kittens =
|
||||||
|
" "
|
||||||
|
<> if (Array.length rawKittens > kittyLimit) then
|
||||||
|
-- split the string if it's too long
|
||||||
|
trim $ joinWith "" $ insertAfterEach kittyLimit "\n " rawKittens
|
||||||
|
else
|
||||||
|
joinWith "" rawKittens
|
||||||
|
|
||||||
|
width =
|
||||||
|
if Array.length rawKittens > kittyLimit then
|
||||||
|
limit
|
||||||
|
else
|
||||||
|
kittenbox.width * length kittens
|
||||||
|
|
||||||
|
-- prints the box that fluffy kitties will live in
|
||||||
|
box =
|
||||||
|
"\\" <> repeat "" width "_" <> "/"
|
||||||
|
<> "\n|"
|
||||||
|
<> repeat "" width "_"
|
||||||
|
<> "|"
|
||||||
|
|
||||||
|
kittybox :: Box
|
||||||
|
kittybox = { kitties: 99, width: 1 }
|
||||||
|
|
||||||
|
main :: Effect Unit
|
||||||
|
main = do
|
||||||
|
log (showKittens kittybox)
|
Loading…
Reference in New Issue