VKHS 0.3.0 → 0.3.1
raw patch · 3 files changed
+43/−2 lines, 3 files
Files
- VKHS.cabal +2/−2
- src/Text/Namefilter.hs +17/−0
- src/Text/PFormat.hs +24/−0
VKHS.cabal view
@@ -1,6 +1,6 @@ name: VKHS-version: 0.3.0+version: 0.3.1 synopsis: Provides access to Vkontakte social network via public API description: Provides access to Vkontakte API methods. Library requires no interaction@@ -26,7 +26,7 @@ library hs-source-dirs: src- other-modules: Test.Debug, Test.Data, Test.API, Network.Shpider.Forms, Network.Protocol.Uri, Network.Protocol.Mime, Network.Protocol.Http, Network.Protocol.Cookie, Network.Protocol.Uri.Remap, Network.Protocol.Uri.Query, Network.Protocol.Uri.Printer, Network.Protocol.Uri.Path, Network.Protocol.Uri.Parser, Network.Protocol.Uri.Encode, Network.Protocol.Uri.Data, Network.Protocol.Uri.Chars, Network.Protocol.Http.Status, Network.Protocol.Http.Printer, Network.Protocol.Http.Parser, Network.Protocol.Http.Headers, Network.Protocol.Http.Data + other-modules: Test.Debug, Test.Data, Test.API, Network.Shpider.Forms, Network.Protocol.Uri, Network.Protocol.Mime, Network.Protocol.Http, Network.Protocol.Cookie, Network.Protocol.Uri.Remap, Network.Protocol.Uri.Query, Network.Protocol.Uri.Printer, Network.Protocol.Uri.Path, Network.Protocol.Uri.Parser, Network.Protocol.Uri.Encode, Network.Protocol.Uri.Data, Network.Protocol.Uri.Chars, Network.Protocol.Http.Status, Network.Protocol.Http.Printer, Network.Protocol.Http.Parser, Network.Protocol.Http.Headers, Network.Protocol.Http.Data, Text.Namefilter, Text.PFormat exposed-modules: Web.VKHS Web.VKHS.API Web.VKHS.API.Aeson
+ src/Text/Namefilter.hs view
@@ -0,0 +1,17 @@+module Text.Namefilter + ( namefilter+ ) where++import Data.Char+import Data.List+import Text.RegexPR++trim_space = gsubRegexPR "^ +| +$" ""+one_space = gsubRegexPR " +" " "+normal_letters = filter (\c -> or [ isAlphaNum c , c=='-', c=='_', c==' ', c=='&'])+html_amp = gsubRegexPR "&" "&"+no_html = gsubRegexPR re "" where+ re = concat $ intersperse "|" [ "&[a-z]+;" , "&#[0-9]+;" ]++namefilter :: String -> String+namefilter = trim_space . one_space . normal_letters . no_html . html_amp
+ src/Text/PFormat.hs view
@@ -0,0 +1,24 @@+module Text.PFormat + ( pformat + ) where++import Data.List+import Data.Maybe++-- | Example: pformat '%' [('%',"%"), ('w',"world")] "hello %% %x %w"+-- pformat' :: Char -> [(Char,String)] -> String -> String+-- pformat' x d s = reverse $ scan [] s where+-- scan h (c:m:cs)+-- | c == x = scan ((reverse $ fromMaybe (c:m:[]) (lookup m d))++h) cs+-- | otherwise = scan (c:h) (m:cs)+-- scan h (c:[]) = c:h+-- scan h [] = h++pformat :: Char -> [(Char,a->String)] -> String -> a -> String+pformat x d s a = reverse $ scan [] s where+ scan h (c:m:cs)+ | c == x = scan ((reverse $ fromMaybe (const $ c:m:[]) (lookup m d) $ a)++h) cs+ | otherwise = scan (c:h) (m:cs)+ scan h (c:[]) = c:h+ scan h [] = h+