keera-hails-mvc-controller 0.0.3.3 → 0.6.0
raw patch · 5 files changed
+220/−49 lines, 5 filesdep +directorydep +filepathdep +hlintdep ~basenew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: directory, filepath, hlint, process, regex-posix
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- LICENSE +5/−4
- keera-hails-mvc-controller.cabal +94/−42
- src/Hails/MVC/Controller/ConditionDirection.hs +7/−3
- tests/HLintMain.hs +23/−0
- tests/HaddockCoverage.hs +91/−0
LICENSE view
@@ -1,4 +1,5 @@-Copyright (c)2012, Ivan Perez+Copyright (c) 2013-2020, Keera Studios Ltd+Copyright (c) 2010-2012, Ivan Perez All rights reserved. @@ -13,9 +14,9 @@ disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Ivan Perez nor the names of other- contributors may be used to endorse or promote products derived- from this software without specific prior written permission.+ * Neither the name of Ivan Perez, nor the name of Keera Studios, nor the+ names of other contributors may be used to endorse or promote products+ derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
keera-hails-mvc-controller.cabal view
@@ -1,57 +1,109 @@--- hails.cabal auto-generated by cabal init. For additional options,--- see--- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.--- The name of the package.-Name: keera-hails-mvc-controller+-- Copyright : (C) Keera Studios Ltd, 2013+-- License : All Rights Reserved+-- Maintainer : support@keera.co.uk+--+cabal-version: >= 1.10+build-type: Simple --- The package version. See the Haskell package versioning policy--- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for--- standards guiding when and how versions should be incremented.-Version: 0.0.3.3+name: keera-hails-mvc-controller+version: 0.6.0+author: Ivan Perez+maintainer: support@keera.co.uk+homepage: http://www.keera.co.uk/blog/community/+license: BSD3+license-file: LICENSE+category: Development+synopsis: Haskell on Gtk rails - Gtk-based controller for MVC applications+description:+ Keera Hails is a rapid application development system.+ .+ The idea behind Hails is that you should be able to build cross platform+ applications with minimal effort, very quickly, and the result should be easy+ to maintain.+ .+ Large Hails applications are structured following an optimized MVC+ architecture. Values are updated either from the view to the model, or from+ the model to the view. Internally, rules use a notion of direction in the+ update to determine how different components must be updated. This package+ defines those update directions needed to build well-structured controllers. --- A short (one-line) description of the package.-Synopsis: Haskell on Gtk rails - Gtk-based controller for MVC applications --- A longer description of the package.--- Description: +source-repository head+ type: git+ location: git://github.com/keera-studios/keera-hails+ subdir: keera-hails-mvc-controller --- URL for the project homepage or repository.-Homepage: http://www.keera.es/blog/community/+-- You can disable the hlint test suite with -f-test-hlint+flag test-hlint+ default: False+ manual: True --- The license under which the package is released.-License: BSD3+-- You can disable the haddock coverage test suite with -f-test-doc-coverage+flag test-doc-coverage+ default: False+ manual: True --- The file containing the license text.-License-file: LICENSE+library --- The package author(s).-Author: Ivan Perez+ exposed-modules:+ Hails.MVC.Controller.ConditionDirection --- An email address to which users can send suggestions, bug reports,--- and patches.-Maintainer: ivan.perez@keera.es+ build-depends:+ base >= 4 && < 5 --- A copyright notice.--- Copyright: + default-language: Haskell2010 -Category: Development+ hs-source-dirs: src/ -Build-type: Simple+ ghc-options: -Wall -fno-warn-unused-do-bind -O2 --- 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.2+test-suite hlint -Library- hs-source-dirs: src/- - ghc-options: -Wall -fno-warn-unused-do-bind -O2+ type:+ exitcode-stdio-1.0 - -- Modules exported by the library.- Exposed-modules: Hails.MVC.Controller.ConditionDirection- - -- Packages needed in order to build this package.- Build-depends: base >= 4 && < 5+ main-is:+ HLintMain.hs++ hs-source-dirs:+ tests++ if !flag(test-hlint)+ buildable: False+ else+ build-depends:+ base+ , hlint >= 1.7++ default-language:+ Haskell2010+++-- Verify that the code is thoroughly documented+test-suite haddock-coverage++ type:+ exitcode-stdio-1.0++ main-is:+ HaddockCoverage.hs++ ghc-options:+ -Wall++ hs-source-dirs:+ tests++ if !flag(test-doc-coverage)+ buildable: False+ else+ build-depends:+ base >= 4 && < 5+ , directory+ , filepath+ , process+ , regex-posix++ default-language:+ Haskell2010
src/Hails/MVC/Controller/ConditionDirection.hs view
@@ -1,10 +1,14 @@ -- | Conditions to update a program can go from the view to the model -- and from the model to the view. Future versions must "ignore" this--- completely and simply work even if the constraints are of kind --- Model-to-Model or View-to-View-+-- completely and simply work even if the constraints are of kind+-- Model-to-Model or View-to-View.+--+-- Copyright : (C) Keera Studios Ltd, 2013+-- License : BSD3+-- Maintainer : support@keera.co.uk module Hails.MVC.Controller.ConditionDirection where +-- | Direction of an update condition: view to model, or model to view. data ConditionDirection = VM | MV
+ tests/HLintMain.hs view
@@ -0,0 +1,23 @@+-----------------------------------------------------------------------------+-- |+-- Module : Main (hlint)+-- Copyright : (C) 2013 Edward Kmett+-- License : BSD-style (see the file LICENSE)+-- Maintainer : Edward Kmett <ekmett@gmail.com>+-- Stability : provisional+-- Portability : portable+--+-- This module runs HLint on the lens source tree.+-----------------------------------------------------------------------------+module Main where++import Control.Monad+import Language.Haskell.HLint+import System.Environment+import System.Exit++main :: IO ()+main = do+ args <- getArgs+ hints <- hlint $ ["src", "--cross", "--hint=tests/HLint.hs" ] ++ args+ unless (null hints) exitFailure
+ tests/HaddockCoverage.hs view
@@ -0,0 +1,91 @@+-----------------------------------------------------------------------------+-- |+-- Module : Main (HaddockCoverage)+-- Copyright : (C) 2015 Ivan Perez+-- License : BSD-style (see the file LICENSE)+-- Maintainer : Ivan Perez <ivan.perez@keera.co.uk>+-- Stability : provisional+-- Portability : portable+--+-- Copyright notice: This file borrows code+-- https://hackage.haskell.org/package/lens-4.7/src/tests/doctests.hsc+-- which is itself licensed BSD-style as well.+--+-- Run haddock on a source tree and report if anything in any+-- module is not documented.+-----------------------------------------------------------------------------+module Main where++import Control.Applicative+import Control.Monad+import Data.List+import System.Directory+import System.Exit+import System.FilePath+import System.IO+import System.Process+import Text.Regex.Posix++main :: IO ()+main = do+ -- Find haskell modules+ -- TODO: Ideally cabal should do this (provide us with the+ -- list of modules). An alternative would be to use cabal haddock+ -- but that would need a --no-html argument or something like that.+ -- Alternatively, we could use cabal haddock with additional arguments.+ --+ -- See:+ -- https://github.com/keera-studios/haddock/commit/d5d752943c4e5c6c9ffcdde4dc136fcee967c495+ -- https://github.com/haskell/haddock/issues/309#issuecomment-150811929+ files <- getSources++ let haddockArgs = [ "--no-warnings", "--ignore-all-exports" ] ++ files+ let cabalArgs = [ "exec", "--", "haddock" ] ++ haddockArgs+ (code, out, _err) <- readProcessWithExitCode "cabal" cabalArgs ""++ -- Filter out coverage lines, and find those that denote undocumented+ -- modules.+ --+ -- TODO: is there a way to annotate a function as self-documenting,+ -- in the same way we do with ANN for hlint?+ let isIncompleteModule :: String -> Bool+ isIncompleteModule line = isCoverageLine line && not (line =~ "^ *100%")+ where isCoverageLine :: String -> Bool+ isCoverageLine line = line =~ "^ *[0-9]+%"++ let incompleteModules :: [String]+ incompleteModules = filter isIncompleteModule $ lines out++ -- Based on the result of haddock, report errors and exit.+ -- Note that, unline haddock, this script does not+ -- output anything to stdout. It uses stderr instead+ -- (as it should).+ case (code, incompleteModules) of+ (ExitSuccess , []) -> return ()+ -- (ExitFailure _, _) -> exitFailure+ (_ , _) -> do+ hPutStrLn stderr "The following modules are not fully documented:"+ mapM_ (hPutStrLn stderr) incompleteModules+ exitFailure++getSources :: IO [FilePath]+getSources = filter isHaskellFile <$> go "src"+ where+ go dir = do+ (dirs, files) <- getFilesAndDirectories dir+ (files ++) . concat <$> mapM go dirs++ isHaskellFile fp = (isSuffixOf ".hs" fp || isSuffixOf ".lhs" fp)+ && not (any (`isSuffixOf` fp) excludedFiles)++ excludedFiles = [ ]++getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])+getFilesAndDirectories dir = do+ c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir+ (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c++-- find-based implementation (not portable)+--+-- getSources :: IO [FilePath]+-- getSources = fmap lines $ readProcess "find" ["src/", "-iname", "*hs"] ""