parse_lwn,
preprocess,
remove_byline,
+ remove_full_story_paragraphs,
remove_title,
to_xhtml,
to_xml,
xml_from_contents)
where
+import Data.String.Utils (replace)
import Text.HandsomeSoup (css)
-import Text.Regex.Posix ((=~))
import Text.XML.HXT.Core (
(>>>),
(/>),
SysConfigList,
XmlTree,
changeAttrValue,
+ changeText,
deep,
getAttrValue,
hasAttrValue,
remove_comment_links
>>>
replace_links_with_spans
+ >>>
+ replace_double_newline_in_pre
is_link :: (ArrowXml a) => a XmlTree XmlTree
is_link =
isElem >>> hasName "a"
+is_pre :: (ArrowXml a) => a XmlTree XmlTree
+is_pre =
+ isElem
+ >>>
+ hasName "pre"
+
+replace_double_newline_in_pre :: (ArrowXml a) => a XmlTree XmlTree
+replace_double_newline_in_pre =
+ processTopDown $ fix_it `when` is_pre
+ where
+ fix_it :: (ArrowXml a) => a XmlTree XmlTree
+ fix_it =
+ changeText $ replace "\n\n" "<br /><br />"
+
+remove_full_story_paragraphs :: (ArrowXml a) => a XmlTree XmlTree
+remove_full_story_paragraphs =
+ processTopDown $ none `when` full_story_paragraph
+
remove_comment_links :: (ArrowXml a) => a XmlTree XmlTree
remove_comment_links =
hasName "a"
>>>
ifA
- (this /> hasText (=~ "Full Story"))
+ (this /> hasText (== "Full Story"))
this
none