yesod-json (empty) → 0.0.0
raw patch · 4 files changed
+111/−0 lines, 4 filesdep +basedep +containersdep +json-enumeratorsetup-changed
Dependencies added: base, containers, json-enumerator, json-types, text, yesod-core
Files
- LICENSE +25/−0
- Setup.lhs +7/−0
- Yesod/Json.hs +53/−0
- yesod-json.cabal +26/−0
+ LICENSE view
@@ -0,0 +1,25 @@+The following license covers this documentation, and the source code, except+where otherwise indicated.++Copyright 2010, Michael Snoyman. All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++* Redistributions of source code must retain the above copyright notice, this+ list of conditions and the following disclaimer.++* Redistributions in binary form must reproduce the above copyright notice,+ this list of conditions and the following disclaimer in the documentation+ and/or other materials provided with the distribution.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.lhs view
@@ -0,0 +1,7 @@+#!/usr/bin/env runhaskell++> module Main where+> import Distribution.Simple++> main :: IO ()+> main = defaultMain
+ Yesod/Json.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE TypeSynonymInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Yesod.Json+ ( -- ^ Convert from a JSON value+ defaultLayoutJson+ , jsonToRepJson+ -- ^ Compatibility wrapper for old API+ , Json+ , jsonScalar+ , jsonList+ , jsonMap+ ) where++import Yesod.Handler (GHandler)+import Yesod.Content+ ( ToContent (toContent), RepHtmlJson (RepHtmlJson), RepHtml (RepHtml)+ , RepJson (RepJson), Content (ContentBuilder)+ )+import Yesod.Core (defaultLayout, Yesod)+import Yesod.Widget (GWidget)+import qualified Data.JSON.Types as J+import qualified Text.JSON.Enumerator as J+import Data.Text.Lazy (pack)+import Control.Arrow (first)+import Data.Map (fromList)++instance ToContent J.Value where+ toContent = flip ContentBuilder Nothing . J.renderValue++-- | Provide both an HTML and JSON representation for a piece of data, using+-- the default layout for the HTML output ('defaultLayout').+defaultLayoutJson :: Yesod master+ => GWidget sub master ()+ -> J.Value+ -> GHandler sub master RepHtmlJson+defaultLayoutJson w json = do+ RepHtml html' <- defaultLayout w+ return $ RepHtmlJson html' $ toContent json++-- | Wraps the 'Content' generated by 'jsonToContent' in a 'RepJson'.+jsonToRepJson :: J.Value -> GHandler sub master RepJson+jsonToRepJson = return . RepJson . toContent++type Json = J.Value++jsonScalar :: String -> Json+jsonScalar = J.ValueAtom . J.AtomText . pack++jsonList :: [Json] -> Json+jsonList = J.ValueArray++jsonMap :: [(String, Json)] -> Json+jsonMap = J.ValueObject . fromList . map (first pack)
+ yesod-json.cabal view
@@ -0,0 +1,26 @@+name: yesod-json+version: 0.0.0+license: BSD3+license-file: LICENSE+author: Michael Snoyman <michael@snoyman.com>+maintainer: Michael Snoyman <michael@snoyman.com>+synopsis: Generate content for Yesod using the json-types package.+category: Web, Yesod+stability: Stable+cabal-version: >= 1.6+build-type: Simple+homepage: http://docs.yesodweb.com/++library+ build-depends: base >= 4 && < 5+ , yesod-core >= 0.7 && < 0.8+ , json-enumerator >= 0.0 && < 0.1+ , json-types >= 0.1 && < 0.2+ , containers >= 0.2 && < 0.5+ , text >= 0.8 && < 0.12+ exposed-modules: Yesod.Json+ ghc-options: -Wall++source-repository head+ type: git+ location: git://github.com/snoyberg/yesod-json.git