usb-id-database 0.3 → 0.3.0.1
raw patch · 5 files changed
+35/−34 lines, 5 files
Files
- System/USB/IDDB/Base.hs +2/−2
- System/USB/IDDB/LinuxUsbIdRepo.hs +14/−18
- System/USB/IDDB/UsbDotOrg.hs +9/−13
- example.hs +9/−0
- usb-id-database.cabal +1/−1
System/USB/IDDB/Base.hs view
@@ -24,13 +24,13 @@ ) where -import Data.Binary (Binary(..), Get)+import Data.Binary ( Binary(..), Get ) import qualified Data.IntMap as IM import qualified Data.Map as MP #ifdef BUILD_WITH_CABAL-import Paths_usb_id_database (getDataFileName)+import Paths_usb_id_database ( getDataFileName ) #else getDataFileName :: FilePath -> IO FilePath getDataFileName = return
System/USB/IDDB/LinuxUsbIdRepo.hs view
@@ -5,30 +5,32 @@ , fromWeb ) where -import Control.Monad (fmap)-import Data.Maybe (fromJust)-import Network.Download (openURIString)-import Numeric (readHex)+import Control.Monad ( fmap )+import Data.List ( lines, unlines, isPrefixOf )+import Data.Maybe ( fromJust )+import Network.Download ( openURIString )+import Numeric ( readHex ) import Parsimony-import Parsimony.Char (char, hexDigit, spaces, tab)-import System.IO (FilePath, readFile)+import Parsimony.Char ( char, hexDigit, spaces, tab )+import System.IO ( FilePath, readFile ) import System.USB.IDDB.Base-import System.USB.IDDB.Misc (eitherMaybe, swap, restOfLine)+import System.USB.IDDB.Misc ( eitherMaybe, swap, restOfLine ) -import qualified Data.IntMap as IM (IntMap, fromList)-import qualified Data.Map as MP (Map, fromList)+import qualified Data.IntMap as IM ( IntMap, fromList )+import qualified Data.Map as MP ( Map, fromList ) -- |Construct a database from a string in the format used by -- <http://linux-usb.org>. parseDb :: String -> Maybe IDDB-parseDb = eitherMaybe . parse dbParser+parseDb = eitherMaybe . parse dbParser . stripComments+ where+ stripComments :: String -> String+ stripComments = unlines . filter (not . isPrefixOf "#") . lines dbParser :: Parser String IDDB dbParser = do spaces- comments (vendorNameId, vendorIdName, productDB) <- lexeme vendorSection- comments classDB <- classSection return IDDB { dbVendorNameId = vendorNameId@@ -41,12 +43,6 @@ lexeme p = do x <- p spaces return x-- comment :: Parser String String- comment = char '#' >> restOfLine-- comments :: Parser String [String]- comments = many $ lexeme comment hexId :: Num n => Int -> Parser String n hexId d = do ds <- count d hexDigit
System/USB/IDDB/UsbDotOrg.hs view
@@ -5,23 +5,19 @@ , fromWeb ) where -import Control.Monad (fmap)-import Data.Maybe (fromJust)-import Network.Download (openURIString)+import Control.Monad ( fmap )+import Data.Maybe ( fromJust )+import Network.Download ( openURIString ) import Parsimony-import Parsimony.Char (char, digit)-import System.IO (FilePath, readFile)-import System.USB.IDDB.Base ( IDDB(..)- , VendorID, VendorName+import Parsimony.Char ( char, digit )+import System.IO ( FilePath, readFile )+import System.USB.IDDB.Base ( IDDB(..), VendorID, VendorName , getDataFileName )-import System.USB.IDDB.Misc ( eitherMaybe- , swap- , restOfLine- )+import System.USB.IDDB.Misc ( eitherMaybe, swap, restOfLine ) -import qualified Data.IntMap as IM (fromList, empty)-import qualified Data.Map as MP (fromList)+import qualified Data.IntMap as IM ( fromList, empty )+import qualified Data.Map as MP ( fromList ) -- |Construct a database from a string in the format used by usb.org.
example.hs view
@@ -26,3 +26,12 @@ -- from the vendor with ID 0x1d6b. putStrLn $ maybe "unknown product name!" (printf "0x%04x") $ productId db 0x1d6b "Audio Gadget"++ putStrLn $ maybe "unknown class" id+ $ className db 0xe0++ putStrLn $ maybe "unknown subclass" id+ $ subClassName db 0xe0 1++ putStrLn $ maybe "unknown protocol" id+ $ protocolName db 0xe0 1 2
usb-id-database.cabal view
@@ -1,5 +1,5 @@ name: usb-id-database-version: 0.3+version: 0.3.0.1 cabal-version: >=1.6 build-type: Simple stability: provisional