packages feed

crackNum 2.0 → 2.1

raw patch · 5 files changed

+144/−12 lines, 5 filesdep ~data-binary-ieee754PVP ok

version bump matches the API change (PVP)

Dependency ranges changed: data-binary-ieee754

API changes (from Hackage documentation)

Files

CHANGES.md view
@@ -1,7 +1,15 @@ * Hackage: <http://hackage.haskell.org/package/crackNum> * GitHub:  <http://github.com/LeventErkok/crackNum/> -* Latest Hackage released version: 2.0, 2018-03-17+* Latest Hackage released version: 2.1, 2018-07-20++### Version 2.1, 2018-07-20++  * Support for vi-editor bindings. See the file "crackNum.vim" in the+    distribution or in the github repo You can put "so ~/.vim/crackNum.vim"+    (use the correct path!) and have vi crack numbers directly from inside+    your editor. Simply locate your cursor on a binary/hex stream of digits+    and type ":CrackNum".  See the "crackNum.vim" file for binding details.  ### Version 2.0, 2018-03-17 
Data/Numbers/CrackNum/Main.hs view
@@ -36,6 +36,7 @@           | ToIEEE String        -- ^ Convert to IEEE SP/DP value           | Lanes  String        -- ^ Number of lanes present in the input, crackNum can guess but it can also be specified.           | Help                 -- ^ Help+          | VIM                  -- ^ Are we being called from VIM?           | Version              -- ^ Version           deriving Eq @@ -54,6 +55,7 @@     , Option ""   ["uq"]      (NoArg (IType  W64)) "64 bit unsigned quad"     , Option ""   ["toIEEE"]  (ReqArg ToIEEE "n")  "Convert from decimal to IEEE SP/DP formats."     , Option "l"  ["lanes"]   (ReqArg Lanes  "n")  "number of lanes"+    , Option ""   ["vim"]     (NoArg VIM)          "output in vim friendly format"     , Option "h?" ["help"]    (NoArg Help)         "print help, with examples"     , Option "v"  ["version"] (NoArg Version)      "print version info"     ]@@ -95,9 +97,42 @@               putStrLn "               * ulp: The minimum subnormal value"               exitFailure +-- instead of dealing with vimscript, munge our args here.. heh+vimpret :: [String] -> [String]+vimpret args = case break (== "--bv") args of+                 ([p], "--bv":rest) -> case mkArgs p of+                                         Nothing -> ["--help"]+                                         Just pr -> ("--" ++ pr) : rest+                 _                  -> ["--help"]+  where bad = (`elem` ["lanes", "vim", "help"])+        validPrecs   = filter (not . bad) $ concat [xs | Option _ xs _ _ <- options]+        dvalidPrecs  = map ('-':) validPrecs+        ddvalidPrecs = map ('-':) dvalidPrecs+        mkArgs p+          | p `elem` validPrecs   = Just p+          | p `elem` dvalidPrecs  = Just (drop 1 p)+          | p `elem` ddvalidPrecs = Just (drop 2 p)+          | True                  = Nothing+ main :: IO ()-main = do argv <- getArgs-          pn   <- getProgName+main = do origArgs <- getArgs+          origPN <- getProgName++          let -- bugger.. make the args a bit more friendly+              friendly :: String -> String+              friendly ('-':ns)   -- -2/-3 etc become lane stuff+                | all isDigit ns+                = "-l" ++ ns+              friendly ('-':c:cs)+                | c `notElem` "-l" = "--" ++ (c:cs)+              friendly s = s++              cleanArgs = map friendly origArgs+++              (argv, pn) | "--vim" `elem` cleanArgs = ("--vim" : vimpret (filter (/= "--vim") cleanArgs), "CrackNum")+                         | True                     = (cleanArgs, origPN)+           case getOpt Permute options argv of             (os, rs, [])   -> if Version `elem` os                               then putStrLn $ pn ++ " v" ++ showVersion version ++ ", " ++ copyRight@@ -114,7 +149,7 @@           | Just v <- listToMaybe [s | ToIEEE s <- os], null rs, Just (FPType p) <- mbPrec           = putStrLn $ displayFP $ stringToFP p v           | all isDigit lcs && lc > 0, Just p <- mbPrec-          = lane pn lc p rs+          = lane pn (VIM `elem` os) lc p rs           | True           = putStr $ helpStr pn          where mbPrec = getChosenPrec os@@ -153,9 +188,9 @@         (q, r)  = l `quotRem` sz  -- | Do the lane..-lane :: String -> Int -> Flag -> [String] -> IO ()-lane pn 1 f rs = dispatch pn f rs-lane pn n f rs+lane :: String -> Bool -> Int -> Flag -> [String] -> IO ()+lane pn _   1 f rs = dispatch pn f rs+lane pn vim n f rs   | ls `mod` n /= 0   = help $ "Input length " ++ show ls ++ " is not a multiple of lane count: " ++ show n   | True@@ -164,8 +199,12 @@         ls = length s         help m = do putStrLn $ pn ++ ": " ++ m                     usage pn-        cvt i r = do putStrLn $ mkHeader (Just i) f+        cvt i r = do putStrLn $ vimMarker vim ++ mkHeader (Just i) f                      dispatch pn f [r]++vimMarker :: Bool -> String+vimMarker False = ""+vimMarker True  = "VIM "  -- | Display the ruler.. mkHeader :: Maybe Int -> Flag -> String
README.md view
@@ -3,9 +3,11 @@ [![Hackage version](http://img.shields.io/hackage/v/crackNum.svg?label=Hackage)](http://hackage.haskell.org/package/crackNum) [![Build Status](http://img.shields.io/travis/LeventErkok/crackNum.svg?label=Build)](http://travis-ci.org/LeventErkok/crackNum) +CrackNum now comes with vim bindings, see http://github.com/LeventErkok/crackNum/blob/master/crackNum.vim+ ### Command line options: -    crackNum v1.9, (c) Levent Erkok. Released with a BSD3 license.+    crackNum v2.1, (c) Levent Erkok. Released with a BSD3 license.     Usage: crackNum precision bit/hex-pattern               --hp        16 bit half     precision               --sp        32 bit single   precision@@ -20,6 +22,7 @@               --uq        64 bit unsigned quad               --toIEEE=n  Convert from decimal to IEEE SP/DP formats.       -l n    --lanes=n   number of lanes+              --vim       output in vim friendly format       -h, -?  --help      print help, with examples       -v      --version   print version info     
crackNum.cabal view
@@ -1,5 +1,5 @@ Name:                crackNum-Version:             2.0+Version:             2.1 Synopsis:            Crack various integer, floating-point data formats Description:         Crack HP, SP and DP floats and 8, 16, 32, 64 bit words and integers.                      .@@ -7,12 +7,13 @@ License:             BSD3 License-file:        LICENSE Author:              Levent Erkok+Homepage:            http://github.com/LeventErkok/CrackNum Maintainer:          erkokl@gmail.com Copyright:           Levent Erkok Category:            Tools Build-type:          Simple-Cabal-version:       >= 1.10-Extra-Source-Files:  INSTALL, README.md, COPYRIGHT, CHANGES.md+Cabal-version:       1.14+Extra-Source-Files:  INSTALL, README.md, COPYRIGHT, CHANGES.md, crackNum.vim  source-repository head     type:       git@@ -26,6 +27,7 @@    other-modules: Data.Numbers.CrackNum                 , Data.Numbers.CrackNum.Utils                 , Data.Numbers.CrackNum.Data+                , Paths_crackNum  Library   ghc-options     : -Wall
+ crackNum.vim view
@@ -0,0 +1,80 @@+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""+" VI interface to crackNum+"+" Copyright   :  (c) Levent Erkok+" License     :  BSD3+" Maintainer  :  erkokl@gmail.com+"+" INSTALLATION: Put this file in a convenient location (typically your .vim directory),+" and put "so crackNum.vim" in your .vimrc file. (With the appropriate path.)+"+" Once you restart vim, locate your cursor over a stream of binary/hex digits, and+" enter the command :CrackNum to see further options.+"+" See https://github.com/LeventErkok/CrackNum for details.++let g:crackNumPrecisions = ["hp","sp","dp","sb","sw","sd","sq","ub","uw","ud","uq"]+function! CrackNumComplete(A, L, P)+    if empty(a:A)+	return g:crackNumPrecisions+    else+    	let out = filter(copy(g:crackNumPrecisions), 'v:val =~ "^' . a:A . '.*"')+	if empty(out)+	    return g:crackNumPrecisions+	else+	    return out+    endif+endfunction+function! CrackNum(...)+    redraw+    let curWord = expand("<cword>")+    if empty(curWord)+	echoerr "Place the cursor on a bin/hex number to crack!"+	return+    endif+    if empty(a:000)+	echo "Cracking \"" . curWord . "\".. Use TAB to see precisions supported."+	call inputsave()+	let prec = input("Precision> ", "", "customlist,CrackNumComplete")+	call inputrestore()+	let args = [prec] + copy(a:000)+    else+	echo "Cracking \""  . curWord . "\".."+	let prec = a:1+	let args = copy(a:000)+    endif++    if index(g:crackNumPrecisions, prec) < 0+	echoerr "Unknown precision: \"" . prec . "\"" . ". Must be one of: " . join(g:crackNumPrecisions, ' ')+	return+    endif++    let l:grepargs = join(['--vim'] + copy(args) + ['--bv', curWord], ' ')+    let grepprg_bak=&grepprg+    let grepformat_bak=&grepformat+    try+        let &grepprg="crackNum"+        let &grepformat="VIM %m"+        silent execute "grep" . " " . l:grepargs+    finally+        let &grepprg=grepprg_bak+        let &grepformat=grepformat_bak+    endtry++    botright copen++    redraw!+endfunction+command! -nargs=* -complete=customlist,CrackNumComplete CrackNum call CrackNum(<f-args>)+map @nhp   :silent call CrackNum('hp')<CR>+map @nsp   :silent call CrackNum('sp')<CR>+map @ndp   :silent call CrackNum('dp')<CR>+map @nsb   :silent call CrackNum('sb')<CR>+map @nsw   :silent call CrackNum('sw')<CR>+map @nsd   :silent call CrackNum('sd')<CR>+map @nsq   :silent call CrackNum('sq')<CR>+map @nub   :silent call CrackNum('ub')<CR>+map @nuw   :silent call CrackNum('uw')<CR>+map @nud   :silent call CrackNum('ud')<CR>+map @nuq   :silent call CrackNum('uq')<CR>+" end crackNum interface