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

Commit

Permalink
Updates for PureScript 0.9
Browse files Browse the repository at this point in the history
  • Loading branch information
garyb committed Jul 18, 2016
1 parent 4ef54e0 commit 06aa250
Show file tree
Hide file tree
Showing 13 changed files with 88 additions and 80 deletions.
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/.*
!/.gitignore
!/.travis.yml
/bower_components/
/node_modules/
/.pulp-cache/
/output/
/.psci*
/src/.webpack.js
24 changes: 11 additions & 13 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
language: node_js
dist: trusty
sudo: required
node_js:
- 5
node_js: 6
install:
- npm install pulp bower -g
- npm install && bower install
- npm install -g bower
- npm install
- bower install --production
script:
- pulp test

- npm run -s build
- bower install
- npm -s test
after_success:
- >-
test $TRAVIS_TAG &&
psc-publish > .pursuit.json &&
curl -X POST http://pursuit.purescript.org/packages \
-d @.pursuit.json \
-H 'Accept: application/json' \
-H "Authorization: token ${GITHUB_TOKEN}"
- >-
test $TRAVIS_TAG &&
echo $GITHUB_TOKEN | pulp login &&
echo y | pulp publish --no-push
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# purescript-ejson

[![Latest release](http://img.shields.io/bower/v/purescript-ejson.svg)](https://github.com/purescript/purescript-ejson/releases)
[![Build Status](https://travis-ci.org/slamdata/purescript-ejson.svg?branch=master)](https://travis-ci.org/slamdata/purescript-ejson)
[![Dependency Status](https://www.versioneye.com/user/projects/578d451f3e6a8b00457f8efe/badge.svg?style=flat)](https://www.versioneye.com/user/projects/578d451f3e6a8b00457f8efe)

EJSON data representation, as used by [Quasar](https://github.com/quasar-analytics/quasar).

## Installation

```
bower install purescript-ejson
```

## Documentation

Module documentation is [published on Pursuit](http://pursuit.purescript.org/packages/purescript-ejson).
32 changes: 18 additions & 14 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
{
"name": "purescript-ejson",
"version": "0.2.0",
"moduleType": [
"node"
],
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "git://github.com/slamdata/purescript-ejson.git"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"output"
"node_modules",
"output",
"test",
"bower.json",
"package.json"
],
"dependencies": {
"purescript-argonaut-codecs": "^0.6.1",
"purescript-argonaut-core": "^0.2.3",
"purescript-bifunctors": "^0.4.0",
"purescript-fixed-points": "^0.1.0",
"purescript-hugenums": "^1.3.1",
"purescript-maps": "^0.5.7",
"purescript-parsing": "^0.8.0",
"purescript-strongcheck": "^0.14.7"
"purescript-argonaut-codecs": "^1.0.0",
"purescript-argonaut-core": "^1.0.0",
"purescript-bifunctors": "^1.0.0",
"purescript-fixed-points": "^1.0.0",
"purescript-hugenums": "^2.0.0",
"purescript-maps": "^1.0.0",
"purescript-parsing": "^1.0.0",
"purescript-strongcheck": "^1.0.0"
}
}
10 changes: 9 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
{
"private": true,
"scripts": {
"clean": "rimraf output && rimraf .pulp-cache",
"build": "pulp build --censor-lib --strict",
"test": "pulp test"
},
"devDependencies": {
"purescript": "^0.8.2"
"pulp": "^9.0.1",
"purescript": "^0.9.1",
"purescript-psa": "^0.3.9",
"rimraf": "^2.5.0"
}
}
20 changes: 8 additions & 12 deletions src/Data/Json/Extended.purs
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,22 @@ import Prelude

import Control.Lazy as Lazy

import Data.Eq1 (eq1)
import Data.Ord1 (compare1)
import Data.Argonaut.Encode (class EncodeJson, encodeJson)
import Data.Argonaut.Decode (class DecodeJson, decodeJson)

import Data.Argonaut.Encode (class EncodeJson, encodeJson)
import Data.Array as A
import Data.Eq1 (eq1)
import Data.Functor.Mu as Mu
import Data.HugeNum as HN
import Data.List as L
import Data.Json.Extended.Signature as Sig
import Data.Map as Map
import Data.Maybe as M
import Data.Ord1 (compare1)
import Data.StrMap as SM
import Data.Tuple as T

import Test.StrongCheck as SC
import Test.StrongCheck.Arbitrary as SC
import Test.StrongCheck.Gen as Gen

import Text.Parsing.Parser as P

import Data.Json.Extended.Signature as Sig

newtype EJson = EJson (Mu.Mu Sig.EJsonF)

getEJson
Expand Down Expand Up @@ -189,9 +185,9 @@ array ∷ Array EJson → EJson
array = roll <<< Sig.Array

object Map.Map EJson EJson EJson
object = roll <<< Sig.Object <<< L.fromList <<< Map.toList
object = roll <<< Sig.Object <<< A.fromFoldable <<< Map.toList

object' SM.StrMap EJson EJson
object' = roll <<< Sig.Object <<< map go <<< L.fromList <<< SM.toList
object' = roll <<< Sig.Object <<< map go <<< A.fromFoldable <<< SM.toList
where
go (T.Tuple a b) = T.Tuple (string a) b
1 change: 0 additions & 1 deletion src/Data/Json/Extended/Signature.purs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ import Data.Json.Extended.Signature.Render as Render
import Data.Json.Extended.Signature.Parse as Parse
import Data.Json.Extended.Signature.Gen as Gen
import Data.Json.Extended.Signature.Json as Json

14 changes: 5 additions & 9 deletions src/Data/Json/Extended/Signature/Core.purs
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@ module Data.Json.Extended.Signature.Core

import Prelude

import Data.Bifunctor as BF
import Data.Eq1 (class Eq1)
import Data.Ord1 (class Ord1)

import Data.Foldable as F
import Data.HugeNum as HN
import Data.Int as Int
import Data.List as L
import Data.Map as Map
import Data.Ord1 (class Ord1)
import Data.Tuple as T
import Data.Bifunctor as BF

-- | The signature endofunctor for the EJson theory.
data EJsonF a
Expand Down Expand Up @@ -63,8 +62,8 @@ instance eq1EJsonF ∷ Eq1 EJsonF where
eq1 (Array xs) (Array ys) = xs == ys
eq1 (Object xs) (Object ys) =
let
xs' = L.toList xs
ys' = L.toList ys
xs' = L.fromFoldable xs
ys' = L.fromFoldable ys
in
isSubobject xs' ys'
&& isSubobject ys' xs'
Expand Down Expand Up @@ -145,7 +144,4 @@ pairsToObject
. (Ord a)
Array (T.Tuple a b)
Map.Map a b
pairsToObject =
Map.fromList
<<< L.toList

pairsToObject = Map.fromFoldable
2 changes: 1 addition & 1 deletion src/Data/Json/Extended/Signature/Gen.purs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import Data.Json.Extended.Signature.Core (EJsonF(..))
import Data.Tuple as T
import Data.HugeNum as HN

import Test.StrongCheck as SC
import Test.StrongCheck.Arbitrary as SC
import Test.StrongCheck.Gen as Gen

arbitraryBaseEJsonF a. Gen.Gen (EJsonF a)
Expand Down
16 changes: 4 additions & 12 deletions src/Data/Json/Extended/Signature/Json.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,20 @@ module Data.Json.Extended.Signature.Json where
import Prelude

import Control.Alt ((<|>))
import Control.Bind ((>=>))

import Data.Argonaut.Core as JS
import Data.Argonaut.Decode (class DecodeJson, decodeJson, (.?))
import Data.Argonaut.Encode (encodeJson)
import Data.Argonaut.Decode (class DecodeJson, decodeJson)
import Data.Argonaut.Combinators ((.?))

import Data.Array as A
import Data.Either as E
import Data.HugeNum as HN
import Data.Int as Int
import Data.List as L
import Data.Json.Extended.Signature.Core (EJsonF(..))
import Data.Maybe as M
import Data.StrMap as SM
import Data.Traversable as TR
import Data.Tuple as T

import Data.Json.Extended.Signature.Core (EJsonF(..))


encodeJsonEJsonF
a
. (a JS.Json)
Expand Down Expand Up @@ -56,8 +50,7 @@ encodeJsonEJsonF rec asKey x =
Array (T.Tuple a a)
SM.StrMap JS.Json
asStrMap =
SM.fromList
<<< L.toList
SM.fromFoldable
<<< A.mapMaybe tuple

decodeJsonEJsonF
Expand Down Expand Up @@ -145,7 +138,6 @@ decodeJsonEJsonF rec makeKey =
EJsonF a
strMapObject =
Object
<<< L.fromList
<<< A.fromFoldable
<<< map (\(T.Tuple k v) → T.Tuple (makeKey k) v)
<<< SM.toList

10 changes: 3 additions & 7 deletions src/Data/Json/Extended/Signature/Parse.purs
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@ module Data.Json.Extended.Signature.Parse
import Prelude

import Control.Alt ((<|>))
import Control.Apply ((*>), (<*))
import Data.Functor ((<$), ($>))

import Data.Array as A
import Data.Foldable as F
import Data.HugeNum as HN
import Data.Int as Int
import Data.Json.Extended.Signature.Core (EJsonF(..))
import Data.List as L
import Data.Maybe as M
import Data.String as S
import Data.Tuple as T

import Data.Json.Extended.Signature.Core (EJsonF(..))

import Text.Parsing.Parser as P
import Text.Parsing.Parser.Combinators as PC
import Text.Parsing.Parser.String as PS
Expand Down Expand Up @@ -260,8 +257,8 @@ parseEJsonF rec =
, Date <$> taggedLiteral "DATE"
, Interval <$> taggedLiteral "INTERVAL"
, ObjectId <$> taggedLiteral "OID"
, Array <<< L.fromList <$> squares (commaSep rec)
, Object <<< L.fromList <$> braces (commaSep parseAssignment)
, Array <<< A.fromFoldable <$> squares (commaSep rec)
, Object <<< A.fromFoldable <$> braces (commaSep parseAssignment)
]

where
Expand All @@ -276,4 +273,3 @@ parseEJsonF rec =
T.Tuple
<$> rec <* parseColon
<*> rec

11 changes: 6 additions & 5 deletions src/Data/Json/Extended/Signature/Render.purs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ module Data.Json.Extended.Signature.Render

import Prelude

import Data.Either (fromRight)
import Data.Foldable as F
import Data.HugeNum as HN
import Data.Json.Extended.Signature.Core (EJsonF(..))
import Data.String.Regex as Rx
import Data.Tuple as T

import Data.Json.Extended.Signature.Core (EJsonF(..))
import Partial.Unsafe (unsafePartial)

renderEJsonF
a
Expand Down Expand Up @@ -45,8 +46,9 @@ renderEJsonF rec d =
String
replaceAll i =
Rx.replace $
Rx.regex i $
Rx.noFlags { global = true }
unsafePartial fromRight $
Rx.regex i $
Rx.noFlags { global = true }

-- | Surround text in double quotes, escaping internal double quotes.
stringEJson
Expand Down Expand Up @@ -89,4 +91,3 @@ braces
String
braces str =
"{" <> str <> "}"

5 changes: 3 additions & 2 deletions test/Main.purs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import Data.Json.Extended (EJson, arbitraryJsonEncodableEJsonOfSize, arbitraryEJ
import Text.Parsing.Parser as P

import Test.StrongCheck as SC
import Test.StrongCheck.Arbitrary as SCA

type TestEffects =
( errEXCEPTION
Expand All @@ -24,10 +25,10 @@ type TestEffects =
newtype ArbJsonEncodableEJson = ArbJsonEncodableEJson EJson
newtype ArbEJson = ArbEJson EJson

instance arbitraryArbJsonEncodableEJsonSC.Arbitrary ArbJsonEncodableEJson where
instance arbitraryArbJsonEncodableEJsonSCA.Arbitrary ArbJsonEncodableEJson where
arbitrary = ArbJsonEncodableEJson <$> arbitraryJsonEncodableEJsonOfSize 2

instance arbitraryArbEJsonSC.Arbitrary ArbEJson where
instance arbitraryArbEJsonSCA.Arbitrary ArbEJson where
arbitrary = ArbEJson <$> arbitraryEJsonOfSize 2

testJsonSerialization Eff TestEffects Unit
Expand Down

0 comments on commit 06aa250

Please sign in to comment.