ihaskell-parsec (empty) → 0.2.0.0
raw patch · 4 files changed
+148/−0 lines, 4 filesdep +aesondep +basedep +classy-preludesetup-changed
Dependencies added: aeson, base, classy-prelude, here, ihaskell, parsec, random, unordered-containers
Files
- IHaskell/Display/Parsec.hs +53/−0
- LICENSE +20/−0
- Setup.hs +2/−0
- ihaskell-parsec.cabal +73/−0
+ IHaskell/Display/Parsec.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE NoImplicitPrelude, TypeSynonymInstances, QuasiQuotes, FlexibleInstances, OverloadedStrings #-}+module IHaskell.Display.Parsec () where++import ClassyPrelude hiding (fromList)+import System.Random+import Data.String.Here+import Data.HashMap.Strict as Map++import Text.Parsec (parse, sourceLine, sourceColumn)+--import Text.Parsec.Prim (Parser)+import Text.Parsec.String (Parser)+import Text.Parsec.Error (errorPos, ParseError)++import Data.Aeson++import IHaskell.Display++instance Show a => IHaskellDisplay (Parser a) where+ display renderable = return $ many [Display [javascript js], Display [html dom]]+ where + dom = [hereFile|widget.html|]+ js = [hereFile|widget.js|]++-- | Text to parse.+data ParseText = ParseText String++instance FromJSON ParseText where+ parseJSON (Object v) = ParseText <$> v .: "text"+ parseJSON _ = fail "Expecting object"++-- | Output of parsing.+instance Show a => ToJSON (Either ParseError a) where+ toJSON (Left err) = object [+ "status" .= ("error" :: String),+ "line" .= sourceLine (errorPos err),+ "col" .= sourceColumn (errorPos err),+ "msg" .= show err+ ]+ toJSON (Right result) = object [+ "status" .= ("success" :: String),+ "result" .= show result+ ]++instance Show a => IHaskellWidget (Parser a) where+ -- Name for this widget.+ targetName _ = "parsec"++ -- When we rece+ comm widget (Object dict) publisher = do+ let key = "text" :: Text+ Just (String text) = Map.lookup key dict+ result = parse widget "<interactive>" $ unpack text+ publisher $ toJSON result
+ LICENSE view
@@ -0,0 +1,20 @@+The MIT License (MIT)++Copyright (c) 2013 Andrew Gibiansky++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.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ ihaskell-parsec.cabal view
@@ -0,0 +1,73 @@+-- The name of the package.+name: ihaskell-parsec++-- The package version. See the Haskell package versioning policy (PVP) +-- for standards guiding when and how versions should be incremented.+-- http://www.haskell.org/haskellwiki/Package_versioning_policy+-- PVP summary: +-+------- breaking API changes+-- | | +----- non-breaking API additions+-- | | | +--- code changes with no API change+version: 0.2.0.0++-- A short (one-line) description of the package.+synopsis: IHaskell display instances for Parsec++-- A longer description of the package.+-- description: ++-- URL for the project homepage or repository.+homepage: http://www.github.com/gibiansky/ihaskell++-- The license under which the package is released.+license: MIT++-- The file containing the license text.+license-file: LICENSE++-- The package author(s).+author: Andrew Gibiansky++-- An email address to which users can send suggestions, bug reports, and +-- patches.+maintainer: andrew.gibiansky@gmail.com++-- A copyright notice.+-- copyright: ++category: Development++build-type: Simple++-- Extra files to be distributed with the package, such as examples or a +-- README.+-- extra-source-files: ++-- Constraint on the version of Cabal needed to build this package.+cabal-version: >=1.16++library+ -- Modules exported by the library.+ exposed-modules: IHaskell.Display.Parsec+ + -- Modules included in this library but not exported.+ -- other-modules: + + -- Language extensions.+ default-extensions: DoAndIfThenElse+ OverloadedStrings+ + -- Other library packages from which modules are imported.+ build-depends: base ==4.6.* || ==4.7.*,+ aeson >=0.7 && <0.9,+ unordered-containers,+ classy-prelude,+ random >= 1,+ parsec,+ here,+ ihaskell >= 0.5+ + -- Directories containing source files.+ -- hs-source-dirs: + + -- Base language which the package is written in.+ default-language: Haskell2010