Skip to content

Commit 9dbc734

Browse files
authored
Merge pull request #19 from purescript-contrib/updates
Updates for PureScript 0.11
2 parents f596eaa + 34ed14d commit 9dbc734

File tree

11 files changed

+132
-88
lines changed

11 files changed

+132
-88
lines changed

.eslintrc.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"parserOptions": {
3+
"ecmaVersion": 5
4+
},
5+
"extends": "eslint:recommended",
6+
"env": {
7+
"commonjs": true
8+
},
9+
"rules": {
10+
"strict": [2, "global"],
11+
"block-scoped-var": 2,
12+
"consistent-return": 2,
13+
"eqeqeq": [2, "smart"],
14+
"guard-for-in": 2,
15+
"no-caller": 2,
16+
"no-extend-native": 2,
17+
"no-loop-func": 2,
18+
"no-new": 2,
19+
"no-param-reassign": 2,
20+
"no-return-assign": 2,
21+
"no-unused-expressions": 2,
22+
"no-use-before-define": 2,
23+
"radix": [2, "always"],
24+
"indent": [2, 2],
25+
"quotes": [2, "double"],
26+
"semi": [2, "always"]
27+
}
28+
}

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/.*
22
!/.gitignore
3-
!/.jscsrc
4-
!/.jshintrc
3+
!/.eslintrc.json
54
!/.travis.yml
65
/bower_components/
76
/node_modules/

.jscsrc

Lines changed: 0 additions & 17 deletions
This file was deleted.

.jshintrc

Lines changed: 0 additions & 19 deletions
This file was deleted.

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
language: node_js
22
dist: trusty
33
sudo: required
4-
node_js: 6
4+
node_js: stable
55
install:
66
- npm install -g bower
77
- npm install

bower.json

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{
22
"name": "purescript-argonaut-core",
33
"homepage": "https://github.com/purescript-contrib/purescript-argonaut-core",
4+
"description": "Core of the purescript-argonaut library, providing basic types, folds, and combinators for `Json`",
5+
"license": "MIT",
46
"authors": [
57
"Maxim Zimaliev <[email protected]>",
68
"Hardy Jones <>",
79
"John A. De Goes <[email protected]>"
810
],
9-
"description": "Core of the purescript-argonaut library, providing basic types, folds, and combinators for `Json`",
1011
"keywords": [
1112
"purescript",
1213
"argonaut",
@@ -16,13 +17,22 @@
1617
"type": "git",
1718
"url": "git://github.com/purescript-contrib/purescript-argonaut-core.git"
1819
},
19-
"license": "MIT",
20+
"ignore": [
21+
"**/.*",
22+
"bower_components",
23+
"node_modules",
24+
"output",
25+
"test",
26+
"bower.json",
27+
"package.json"
28+
],
2029
"dependencies": {
21-
"purescript-enums": "^2.0.0",
22-
"purescript-functions": "^2.0.0",
23-
"purescript-maps": "^2.0.0"
30+
"purescript-enums": "^3.0.0",
31+
"purescript-functions": "^3.0.0",
32+
"purescript-gen": "^1.0.0",
33+
"purescript-maps": "^3.0.0"
2434
},
2535
"devDependencies": {
26-
"purescript-strongcheck": "^2.0.0"
36+
"purescript-strongcheck": "^3.1.0"
2737
}
2838
}

package.json

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22
"private": true,
33
"scripts": {
44
"clean": "rimraf output && rimraf .pulp-cache",
5-
"build": "jshint src && jscs src && pulp build --censor-lib --strict",
5+
"build": "eslint src && pulp build -- --censor-lib --strict",
66
"test": "pulp test"
77
},
88
"devDependencies": {
9-
"jscs": "^3.0.7",
10-
"jshint": "^2.9.3",
11-
"pulp": "^9.0.1",
12-
"purescript-psa": "^0.3.9",
13-
"purescript": "^0.10.1",
14-
"rimraf": "^2.5.4"
9+
"eslint": "^3.19.0",
10+
"pulp": "^11.0.0",
11+
"purescript-psa": "^0.5.0",
12+
"purescript": "^0.11.1",
13+
"rimraf": "^2.6.1"
1514
}
1615
}

src/Data/Argonaut/Core.purs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
-- | manipulating JSON values. The README contains additional documentation
33
-- | for this module.
44
module Data.Argonaut.Core
5-
( Json(..)
6-
, JNull(..)
7-
, JBoolean(..)
8-
, JNumber(..)
9-
, JString(..)
10-
, JAssoc(..)
11-
, JArray(..)
12-
, JObject(..)
5+
( Json
6+
, JNull
7+
, JBoolean
8+
, JNumber
9+
, JString
10+
, JAssoc
11+
, JArray
12+
, JObject
1313
, foldJson
1414
, foldJsonNull
1515
, foldJsonBoolean
@@ -36,9 +36,10 @@ module Data.Argonaut.Core
3636
, toArray
3737
, toObject
3838
, jsonNull
39-
, jsonFalse
4039
, jsonTrue
40+
, jsonFalse
4141
, jsonZero
42+
, jsonEmptyString
4243
, jsonEmptyArray
4344
, jsonSingletonArray
4445
, jsonEmptyObject
@@ -80,12 +81,12 @@ type JAssoc = Tuple String Json
8081
-- | The type of null values inside JSON data. There is exactly one value of
8182
-- | this type: in JavaScript, it is written `null`. This module exports this
8283
-- | value as `jsonNull`.
83-
foreign import data JNull :: *
84+
foreign import data JNull :: Type
8485

8586
-- | The type of JSON data. The underlying representation is the same as what
8687
-- | would be returned from JavaScript's `JSON.parse` function; that is,
8788
-- | ordinary JavaScript booleans, strings, arrays, objects, etc.
88-
foreign import data Json :: *
89+
foreign import data Json :: Type
8990

9091
-- | Case analysis for `Json` values. See the README for more information.
9192
foldJson

src/Data/Argonaut/Gen.purs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
module Data.Argonaut.Gen where
2+
3+
import Prelude
4+
5+
import Control.Lazy (class Lazy, defer)
6+
import Control.Monad.Gen (class MonadGen)
7+
import Control.Monad.Gen as Gen
8+
import Control.Monad.Rec.Class (class MonadRec)
9+
10+
import Data.Argonaut.Core as J
11+
import Data.Array as A
12+
import Data.Char as C
13+
import Data.NonEmpty ((:|))
14+
import Data.String as S
15+
import Data.StrMap as SM
16+
17+
genJson :: forall m. MonadGen m => MonadRec m => Lazy (m J.Json) => m J.Json
18+
genJson = Gen.resize (min 10) $ Gen.sized genJson'
19+
where
20+
genJson' :: Int -> m J.Json
21+
genJson' size
22+
| size > 1 = Gen.resize (_ - 1) (Gen.choose genJArray genJObject)
23+
| otherwise = genLeaf
24+
25+
genLeaf :: m J.Json
26+
genLeaf = Gen.oneOf $ pure J.jsonNull :| [ genJBoolean, genJNumber, genJString]
27+
28+
genJArray :: m J.Json
29+
genJArray = J.fromArray <$> Gen.unfoldable (defer \_ -> genJson)
30+
31+
genJObject :: m J.Json
32+
genJObject = A.foldM extendJObj J.jsonEmptyObject =<< Gen.unfoldable genString
33+
34+
extendJObj :: J.Json -> String -> m J.Json
35+
extendJObj obj k = do
36+
v <- genJson
37+
pure $
38+
J.foldJsonObject
39+
(J.jsonSingletonObject k v)
40+
(J.fromObject <<< SM.insert k v)
41+
obj
42+
43+
genJBoolean :: m J.Json
44+
genJBoolean = J.fromBoolean <$> Gen.chooseBool
45+
46+
genJNumber :: m J.Json
47+
genJNumber = J.fromNumber <$> Gen.chooseFloat (-1000000.0) 1000000.0
48+
49+
genJString :: m J.Json
50+
genJString = J.fromString <$> genString
51+
52+
genString :: m String
53+
genString = S.fromCharArray <$> Gen.unfoldable genChar
54+
55+
genChar :: m Char
56+
genChar = C.fromCharCode <$> Gen.chooseInt 0 65535

src/Data/Argonaut/Printer.purs

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)