diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index fea2cea..fbbf808 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2893,7 +2893,10 @@ def text2markdown(text, extended=True): """ extensions = [ 'markdown.extensions.extra', + 'markdown.extensions.admonition', + 'markdown.extensions.codehilite', 'markdown.extensions.nl2br', + 'markdown.extensions.sane_lists', 'markdown.extensions.toc', ] if extended: @@ -2941,6 +2944,8 @@ def clean_input(text, ignore=None): attrs = bleach.ALLOWED_ATTRIBUTES.copy() attrs['table'] = ['class'] + attrs['span'] = ['class', 'id'] + attrs['div'] = ['class'] if not ignore or not 'img' in ignore: attrs['img'] = filter_img_src diff --git a/pagure/static/pagure.css b/pagure/static/pagure.css index 3f56485..721379e 100644 --- a/pagure/static/pagure.css +++ b/pagure/static/pagure.css @@ -593,3 +593,77 @@ a.nav-link.btn{ */ line-height: 14px; } + +.codehilite .hll { background-color: #ffffcc } +.codehilite { background: #f8f8f8; } +.codehilite .c { color: #8f5902; font-style: italic } /* Comment */ +.codehilite .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.codehilite .g { color: #000000 } /* Generic */ +.codehilite .k { color: #204a87; font-weight: bold } /* Keyword */ +.codehilite .l { color: #000000 } /* Literal */ +.codehilite .n { color: #000000 } /* Name */ +.codehilite .o { color: #ce5c00; font-weight: bold } /* Operator */ +.codehilite .x { color: #000000 } /* Other */ +.codehilite .p { color: #000000; font-weight: bold } /* Punctuation */ +.codehilite .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.codehilite .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.codehilite .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.codehilite .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.codehilite .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.codehilite .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.codehilite .gd { color: #a40000 } /* Generic.Deleted */ +.codehilite .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.codehilite .gr { color: #ef2929 } /* Generic.Error */ +.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.codehilite .gi { color: #00A000 } /* Generic.Inserted */ +.codehilite .go { color: #000000; font-style: italic } /* Generic.Output */ +.codehilite .gp { color: #8f5902 } /* Generic.Prompt */ +.codehilite .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.codehilite .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.codehilite .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.codehilite .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.codehilite .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.codehilite .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.codehilite .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.codehilite .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.codehilite .ld { color: #000000 } /* Literal.Date */ +.codehilite .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.codehilite .s { color: #4e9a06 } /* Literal.String */ +.codehilite .na { color: #c4a000 } /* Name.Attribute */ +.codehilite .nb { color: #204a87 } /* Name.Builtin */ +.codehilite .nc { color: #000000 } /* Name.Class */ +.codehilite .no { color: #000000 } /* Name.Constant */ +.codehilite .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.codehilite .ni { color: #ce5c00 } /* Name.Entity */ +.codehilite .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.codehilite .nf { color: #000000 } /* Name.Function */ +.codehilite .nl { color: #f57900 } /* Name.Label */ +.codehilite .nn { color: #000000 } /* Name.Namespace */ +.codehilite .nx { color: #000000 } /* Name.Other */ +.codehilite .py { color: #000000 } /* Name.Property */ +.codehilite .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.codehilite .nv { color: #000000 } /* Name.Variable */ +.codehilite .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.codehilite .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ +.codehilite .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.codehilite .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.codehilite .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.codehilite .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.codehilite .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.codehilite .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.codehilite .sc { color: #4e9a06 } /* Literal.String.Char */ +.codehilite .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.codehilite .s2 { color: #4e9a06 } /* Literal.String.Double */ +.codehilite .se { color: #4e9a06 } /* Literal.String.Escape */ +.codehilite .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.codehilite .si { color: #4e9a06 } /* Literal.String.Interpol */ +.codehilite .sx { color: #4e9a06 } /* Literal.String.Other */ +.codehilite .sr { color: #4e9a06 } /* Literal.String.Regex */ +.codehilite .s1 { color: #4e9a06 } /* Literal.String.Single */ +.codehilite .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.codehilite .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.codehilite .vc { color: #000000 } /* Name.Variable.Class */ +.codehilite .vg { color: #000000 } /* Name.Variable.Global */ +.codehilite .vi { color: #000000 } /* Name.Variable.Instance */ +.codehilite .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */