By | Chris Done |
At | 2013-03-01 |
Title | announce edits properly. |
Description |
Edit file src/Amelie/View/Paste.hs 33188 → 33188
101 101 languages = options languageName languageTitle pfLanguages
102 102 103 103 lookupLang slug = findOption ((==slug).languageName) pfLanguages languageId
104 104 lookupChan slug = findOption ((==slug).channelName) pfChannels channelId
105 105 - 106 defChan = maybe (fromMaybe "" annotateChan,fromMaybe "haskell" annotateLanguage)
+ 106 defChan = maybe (fromMaybe "" (annotateChan <|> editChan)
+ 107 ,fromMaybe "haskell" (annotateLanguage <|> editLanguage))
107 108 (channelName &&& trim.channelName)
108 109 (pfDefChan >>= findChan)
109 110 findChan name = find ((==name).trim.channelName) pfChannels
110 111 trim = T.dropWhile (=='#')
111 112 … … … … 113 114 annotateTitle = ((++ " (annotation)") . pasteTitle) <$> pfAnnotatePaste
114 115 annotateLanguage = join (fmap pasteLanguage pfAnnotatePaste) >>= findLangById
115 116 annotateChan = join (fmap pasteChannel pfAnnotatePaste) >>= findChanById
116 117 117 118 editContent = pastePaste <$> pfEditPaste
- 118 editTitle = (("Edit: " ++) . pasteTitle) <$> pfEditPaste
+ 119 editTitle = Nothing
119 120 editLanguage = join (fmap pasteLanguage pfEditPaste) >>= findLangById
120 121 editChan = join (fmap pasteChannel pfEditPaste) >>= findChanById
121 122 122 123 findChanById id = channelName <$> find ((==id).channelId) pfChannels
123 124 findLangById id = languageName <$> find ((==id).languageId) pfLanguages
… … … … Edit file src/Amelie/Model/Paste.hs 33188 → 33188
115 115 (pasteSubmitTitle,pasteSubmitAuthor,pasteSubmitPaste
116 116 ,pasteSubmitChannel,pasteSubmitLanguage,ann_pid,rev_pid)
117 117 when (lang == Just "haskell") $ just res $ createHints ps
118 118 just (pasteSubmitChannel >>= lookupChan) $ \chan ->
119 119 just res $ \pid -> do
- 120 annotated <- maybe (return Nothing) getPasteById pasteSubmitId
- 121 announcePaste annotated (channelName chan) ps pid
+ 120 announcePaste pasteSubmitType (channelName chan) ps pid
122 121 return (pasteSubmitId <|> res)
123 122 124 123 where lookupChan cid = find ((==cid).channelId) chans
125 124 lookupLang lid = find ((==lid).languageId) langs
126 125 lang = pasteSubmitLanguage >>= (fmap languageName . lookupLang)
… … … … 140 139 (pid
141 140 ,suggestionSeverity hint
142 141 ,show hint)
143 142 144 143 -- | Announce the paste.
- 145 announcePaste :: Maybe Paste -> Text -> PasteSubmit -> PasteId -> Model ()
- 146 announcePaste annotated channel PasteSubmit{..} pid = do
- 147 conf <- env modelStateConfig
- 148 announce (fromStrict channel) $ fromStrict $
+ 144 announcePaste :: PasteType -> Text -> PasteSubmit -> PasteId -> Model ()
+ 145 announcePaste ptype channel PasteSubmit{..} pid = do
+ 146 conf <- env modelStateConfig
+ 147 verb <- getVerb
+ 148 announce (fromStrict channel) $ fromStrict $ do
149 149 nick ++ " " ++ verb ++ " “" ++ pasteSubmitTitle ++ "” at " ++ link conf
150 150 where nick | validNick (unpack pasteSubmitAuthor) = pasteSubmitAuthor
151 151 | otherwise = "“" ++ pasteSubmitAuthor ++ "”"
152 152 link Config{..} = "http://" ++ pack configDomain ++ "/" ++ pid'
- 153 pid' = case annotated of
- 154 Just Paste{..} -> showPid pasteId ++ "#a" ++ showPid pid
- 155 Nothing -> showPid pid
- 156 verb = case annotated of
- 157 Just Paste{..} -> "annotated “" ++ pasteTitle ++ "” with"
- 158 Nothing -> "pasted"
+ 153 pid' = case ptype of
+ 154 NormalPaste -> showPid pid
+ 155 AnnotationOf apid -> showPid apid ++ "#a" ++ showPid pid
+ 156 RevisionOf apid -> showPid apid
+ 157 getVerb = case ptype of
+ 158 NormalPaste -> return $ "pasted"
+ 159 AnnotationOf pid -> do
+ 160 paste <- getPasteById pid
+ 161 return $ case paste of
+ 162 Just Paste{..} -> "annotated “" ++ pasteTitle ++ "” with"
+ 163 Nothing -> "annotated a paste with"
+ 164 RevisionOf pid -> do
+ 165 paste <- getPasteById pid
+ 166 return $ case paste of
+ 167 Just Paste{..} -> "revised “" ++ pasteTitle ++ "”:"
+ 168 Nothing -> "revised a paste:"
159 169 showPid p = pack $ show $ (fromIntegral p :: Integer)
160 170 161 171 -- | Is a nickname valid? Digit/letter or one of these: -_/\\;()[]{}?`'
162 172 validNick :: String -> Bool
163 173 validNick s = first && all ok s && length s > 0 where
… … … …