The bamboo-plugin-highlight package

[Tags: gpl, library]

It uses highlighting-kate to highlight any code inside pre / code with a class attribute hinting the language. It's a proper middleware that works on any html document.


[Skip to ReadMe]

Properties

Versions2009.6.9, 2009.7.5
Change logchangelog.md
Dependenciesbamboo (>=2009.6.9), base (==4.*), bytestring, hack (>=2009.5.19), hack-contrib (>=2009.6.9), highlighting-kate, hxt, mps (>=2009.5.13), xhtml [details]
LicenseGPL
AuthorWang, Jinjing
MaintainerWang, Jinjing <nfjinjing@gmail.com>
CategoryWeb
Home pagehttp://github.com/nfjinjing/bamboo-plugin-highlight/
UploadedSun Jul 5 01:31:43 UTC 2009 by JinjingWang
DistributionsNixOS:2009.7.5
Downloads364 total (9 in last 30 days)
Votes
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for bamboo-plugin-highlight-2009.7.5

what

<pre class="haskell"><code>print "hello"</code></pre>

will highlight code as haskell source, for that the value of class attribute of pre element is haskell.

use

a syntax highlighter middleware

note, do not use this on rss feed, i.e.

make a middleware in your hack middleware chain:

none_rss_highlight :: Middleware
none_rss_highlight app = \env -> do
  if env.path_info.ends_with "rss.xml" 
    then app env
    else highlight app env

and use this!

css

underneath, it's just highlighting-kate, so grab those css.

Add them to config/theme/blueprint.txt, e.g.

css        = screen, blueprint-wp, highlight/ascetic, hk-kate, custom

also customized in custom, if you want, e.g.

/* highlight */
table.sourceCode {
  border-top: 1px solid #eee;
  padding-top: 20px;
  padding-bottom: 20px;
  margin-bottom: 20px;
  border-bottom:  1px solid #eee;
  border-left: 5px solid #eee;
  border-right: 0;
  width: 530px;
}

td.lineNumbers { 
  display: none;
}

sample main:

module Main where

import Hack.Contrib.Middleware.Debug
import Bamboo
import Bamboo.Theme.Blueprint
import Bamboo.Plugin.Highlight
import Hack
import Hack.Contrib.Middleware.BounceFavicon
import Hack.Contrib.Middleware.ContentLength
import Hack.Contrib.Middleware.ContentType
import Hack.Contrib.Middleware.ETag
import Hack.Contrib.Middleware.ShowExceptions
import Hack.Contrib.Middleware.ShowStatus
import Hack.Contrib.Middleware.Static
import Hack.Contrib.Utils
import Hack.Contrib.Middleware.URLMap
import Hack.Handler.Happstack
import qualified Hack.Contrib.Middleware.Head as H

import MPSUTF8
import Prelude hiding ((.), (>))


default_content_type :: String
default_content_type = "text/plain; charset=UTF-8"

stack :: [Middleware]
stack = 
  [  dummy_middleware

  -- filter
  ,  bounce_favicon

  -- completeness
  ,  content_length
  ,  content_type default_content_type
  ,  etag

  -- debuging
  ,  show_exceptions Nothing
  ,  show_status

  -- optimization
  ,  H.head

  , url_map [("", bamboo)]
  ]
  where
    bamboo = use 
      [bamboo_serve, no_rss, bamboo_with_theme blueprint] dummy_app
    bamboo_serve = static (Just "db/public") 
        ["/theme", "/images", "/plugin", "/favicon.ico", "/media"]
    no_rss app = \env -> do
      if env.path_info.ends_with "rss.xml" 
        then app env
        else highlight app env

app :: Application
app = use stack dummy_app

main :: IO ()
main = run app