Textile reader: Support >
, <
, =
, <>
text alignment attributes.
Closes #2674.
This commit is contained in:
parent
11c5831a1f
commit
a1021bdda6
3 changed files with 30 additions and 4 deletions
|
@ -583,7 +583,18 @@ code2 = do
|
|||
|
||||
-- | Html / CSS attributes
|
||||
attributes :: Parser [Char] ParserState Attr
|
||||
attributes = (foldl (flip ($)) ("",[],[])) `fmap` many attribute
|
||||
attributes = (foldl (flip ($)) ("",[],[])) <$>
|
||||
try (do special <- option id specialAttribute
|
||||
attrs <- many attribute
|
||||
return (special : attrs))
|
||||
|
||||
specialAttribute :: Parser [Char] ParserState (Attr -> Attr)
|
||||
specialAttribute = do
|
||||
alignStr <- ("center" <$ char '=') <|>
|
||||
("justify" <$ try (string "<>")) <|>
|
||||
("right" <$ char '>') <|>
|
||||
("left" <$ char '<')
|
||||
return $ addStyle ("text-align:" ++ alignStr)
|
||||
|
||||
attribute :: Parser [Char] ParserState (Attr -> Attr)
|
||||
attribute = classIdAttr <|> styleAttr <|> langAttr
|
||||
|
@ -602,7 +613,13 @@ classIdAttr = try $ do -- (class class #id)
|
|||
styleAttr :: Parser [Char] ParserState (Attr -> Attr)
|
||||
styleAttr = do
|
||||
style <- try $ enclosed (char '{') (char '}') anyChar'
|
||||
return $ \(id',classes,keyvals) -> (id',classes,("style",style):keyvals)
|
||||
return $ addStyle style
|
||||
|
||||
addStyle :: String -> Attr -> Attr
|
||||
addStyle style (id',classes,keyvals) =
|
||||
(id',classes,keyvals')
|
||||
where keyvals' = ("style", style') : [(k,v) | (k,v) <- keyvals, k /= "style"]
|
||||
style' = style ++ ";" ++ concat [v | ("style",v) <- keyvals]
|
||||
|
||||
langAttr :: Parser [Char] ParserState (Attr -> Attr)
|
||||
langAttr = do
|
||||
|
|
|
@ -132,8 +132,11 @@ Pandoc (Meta {unMeta = fromList []})
|
|||
,Header 1 ("images",[],[]) [Str "Images"]
|
||||
,Para [Str "Textile",Space,Str "inline",Space,Str "image",Space,Str "syntax,",Space,Str "like",LineBreak,Str "here",Space,Image ("",[],[]) [Str "this is the alt text"] ("this_is_an_image.png","this is the alt text"),LineBreak,Str "and",Space,Str "here",Space,Image ("",[],[]) [Str ""] ("this_is_an_image.png",""),Str "."]
|
||||
,Header 1 ("attributes",[],[]) [Str "Attributes"]
|
||||
,Header 2 ("ident",["bar","foo"],[("style","color:red"),("lang","en")]) [Str "HTML",Space,Str "and",Space,Str "CSS",Space,Str "attributes",Space,Str "are",Space,Str "parsed",Space,Str "in",Space,Str "headers."]
|
||||
,Para [Str "as",Space,Str "well",Space,Str "as",Space,Strong [Span ("",["foo"],[]) [Str "inline",Space,Str "attributes"]],Space,Str "of",Space,Span ("",[],[("style","color:red")]) [Str "all",Space,Str "kind"]]
|
||||
,Header 2 ("ident",["bar","foo"],[("style","color:red;"),("lang","en")]) [Str "HTML",Space,Str "and",Space,Str "CSS",Space,Str "attributes",Space,Str "are",Space,Str "parsed",Space,Str "in",Space,Str "headers."]
|
||||
,Header 2 ("centered",[],[("style","text-align:center;")]) [Str "Centered"]
|
||||
,Header 2 ("right",[],[("style","text-align:right;")]) [Str "Right"]
|
||||
,Header 2 ("justified",[],[("lang","en"),("style","color:blue;text-align:justify;")]) [Str "Justified"]
|
||||
,Para [Str "as",Space,Str "well",Space,Str "as",Space,Strong [Span ("",["foo"],[]) [Str "inline",Space,Str "attributes"]],Space,Str "of",Space,Span ("",[],[("style","color:red;")]) [Str "all",Space,Str "kind"]]
|
||||
,Para [Str "and",Space,Str "paragraph",Space,Str "attributes,",Space,Str "and",Space,Str "table",Space,Str "attributes."]
|
||||
,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0]
|
||||
[]
|
||||
|
|
|
@ -207,6 +207,12 @@ h1. Attributes
|
|||
|
||||
h2[en]{color:red}(foo bar #ident). HTML and CSS attributes are parsed in headers.
|
||||
|
||||
h2=. Centered
|
||||
|
||||
h2>. Right
|
||||
|
||||
h2<>{color:blue}[en]. Justified
|
||||
|
||||
as well as *(foo)inline attributes* of %{color:red} all kind%
|
||||
|
||||
p{color:green}. and paragraph attributes, and table attributes.
|
||||
|
|
Loading…
Add table
Reference in a new issue