json-types (empty) → 0.1
raw patch · 4 files changed
+140/−0 lines, 4 filesdep +basedep +containersdep +textsetup-changed
Dependencies added: base, containers, text
Files
- Data/JSON/Types.hs +89/−0
- Setup.hs +2/−0
- json-types.cabal +27/−0
- license.txt +22/−0
+ Data/JSON/Types.hs view
@@ -0,0 +1,89 @@+-- Copyright (c) 2010 John Millikin+--+-- Permission is hereby granted, free of charge, to any person+-- obtaining a copy of this software and associated documentation+-- files (the "Software"), to deal in the Software without+-- restriction, including without limitation the rights to use,+-- copy, modify, merge, publish, distribute, sublicense, and/or sell+-- copies of the Software, and to permit persons to whom the+-- Software is furnished to do so, subject to the following+-- conditions:+--+-- The above copyright notice and this permission notice shall be+-- included in all copies or substantial portions of the Software.+--+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES+-- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND+-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT+-- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+-- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+-- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR+-- OTHER DEALINGS IN THE SOFTWARE.++module Data.JSON.Types+ ( -- * DOM-based+ Root (..)+ , Object+ , Array+ , Value (..)+ , Atom (..)+ + -- * Event-based+ , Event (..)+ ) where+import Data.Map (Map)+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as T+import Data.String (IsString, fromString)++-- | Each JSON document has a single /root/, which may be either an 'Object'+-- or 'Array'.+--+-- Some parsers allow non-container roots, but portable libraries should+-- not depend on this incorrect behavior.+data Root+ = RootObject Object+ | RootArray Array+ deriving (Show, Eq)++-- | Objects store unordered associations between textual keys and 'Value's.+type Object = Map Text Value++-- | Arrays are ordered sequences of 'Value's.+type Array = [Value]++data Value+ = ValueObject Object+ | ValueArray Array+ | ValueAtom Atom+ deriving (Show, Eq)++instance IsString Value where+ fromString = ValueAtom . fromString++data Atom+ = AtomNull+ | AtomBoolean Bool+ + -- | JSON numbers may be of arbitrary length and precision. Using+ -- 'Rational' allows any valid parsed number to be stored; however,+ -- note that only rationals with a finite decimal expansion can be+ -- fully serialized. For example, attempting to serialize @(1 % 3)@+ -- will lose precision.+ | AtomNumber Rational+ + | AtomText Text+ deriving (Show, Eq)++instance IsString Atom where+ fromString = AtomText . T.pack++data Event+ = EventBeginObject+ | EventEndObject+ | EventBeginArray+ | EventEndArray+ | EventAttributeName Text+ | EventAtom Atom+ deriving (Show, Eq)
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ json-types.cabal view
@@ -0,0 +1,27 @@+name: json-types+version: 0.1+synopsis: Basic types for representing JSON+license: MIT+license-file: license.txt+author: John Millikin <jmillikin@gmail.com>+maintainer: jmillikin@gmail.com+build-type: Simple+cabal-version: >=1.6+category: Text, JSON+stability: experimental+bug-reports: mailto:jmillikin@gmail.com++source-repository head+ type: bazaar+ location: http://john-millikin.com/software/json-types/++library+ ghc-options: -Wall++ build-depends:+ base >= 3 && < 5+ , text+ , containers++ exposed-modules:+ Data.JSON.Types
+ license.txt view
@@ -0,0 +1,22 @@+Copyright (c) 2010 John Millikin++Permission is hereby granted, free of charge, to any person+obtaining a copy of this software and associated documentation+files (the "Software"), to deal in the Software without+restriction, including without limitation the rights to use,+copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the+Software is furnished to do so, subject to the following+conditions:++The above copyright notice and this permission notice shall be+included in all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR+OTHER DEALINGS IN THE SOFTWARE.