packages feed

sloane 2.0.1 → 2.0.2

raw patch · 4 files changed

+17/−14 lines, 4 files

Files

README.md view
@@ -1,5 +1,5 @@ ----title: SLOANE(1) Sloane User Manual | Version 2.0.1+title: SLOANE(1) Sloane User Manual | Version 2.0.2 date: 7 Jan 2015 --- 
Sloane/Config.hs view
@@ -29,7 +29,7 @@     h <- getHomeDirectory     let dsloane = h </> ".sloane"     return Config-        { nameVer   = "sloane 2.0.1"+        { nameVer   = "sloane 2.0.2"         , home      = h         , sloaneDir = dsloane         , sloaneDB  = dsloane </> "sloane.db"
sloane.cabal view
@@ -1,5 +1,5 @@ Name:                sloane-Version:             2.0.1+Version:             2.0.2 Synopsis:            A command line interface to Sloane's On-Line Encyclopedia                      of Integer Sequences Description:         A command line interface to Sloane's On-Line Encyclopedia
sloane.hs view
@@ -11,6 +11,7 @@ import qualified Data.Text                    as T import qualified Data.Text.IO                 as IO import           Data.Text.Encoding           (decodeUtf8)+import           System.IO                    (isEOF) import           Network.HTTP                 (urlEncodeVars) import           Network.Curl.Download        (openURI) import           Options.Applicative@@ -90,11 +91,9 @@     match q = (if invert opts then id else not) (DB.null $ DB.grep q db)     parseSeqs = filter (not . T.null) . map mkSeq . T.lines -hiddenHelp :: Parser (a -> a)-hiddenHelp = abortOption ShowHelpText $ hidden <> long "help"- optionsParser :: Parser Options-optionsParser = hiddenHelp <*> (Options+optionsParser =+  (abortOption ShowHelpText $ long "help") <*> (Options     <$> switch         ( short 'a'        <> long "all"@@ -132,7 +131,7 @@         ( long "transform"        <> metavar "NAME"        <> value ""-       <> help ("Apply the named transform to input sequence"))+       <> help "Apply the named transform to input sequence")     <*> switch         ( long "list-transforms"        <> help "List the names of all transforms" )@@ -150,13 +149,18 @@     put | url opts  = putStr . unlines . oeisUrls cfg         | otherwise = DB.put cfg $ if full opts then oeisKeys else keys opts +getTerms :: Options -> IO Options+getTerms opts+    | filtr opts = return opts+    | otherwise  = (\xs -> opts {terms = xs}) <$>+        case terms opts of+          [] -> isEOF >>= \b ->+                  if b then error "<stdin>: end of file" else return <$> getLine+          ts -> return ts+ main :: IO () main = do-    let pprefs = prefs mempty-    let pinfo = info optionsParser fullDesc-    let usage = handleParseResult . Failure-         $ parserFailure pprefs pinfo ShowHelpText mempty-    opts <- customExecParser pprefs pinfo+    opts <- getTerms =<< execParser (info optionsParser fullDesc)     let tname = transform opts     let anum = anumber opts     let lookupSeq = maybeToList . DB.lookupSeq (mkANumber anum)@@ -166,7 +170,6 @@          | listTransforms opts = const $ mapM_ (putStrLn . name) transforms          | anum > 0 = \c -> lookupSeq <$> DB.read c >>= mapM_ IO.putStrLn          | filtr opts = \c -> DB.read c >>= filterDB opts >>= mapM_ IO.putStrLn-         | null (terms opts) = const usage          | not (null tname) = const $ applyTransform opts tname          | local opts = search (\o cfg -> grepDB o <$> DB.read cfg) opts          | otherwise = search oeisLookup opts