From 742a465980ea6cd1d23d38ee3f7d6d0d7616f471 Mon Sep 17 00:00:00 2001
From: fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>
Date: Sun, 10 Feb 2008 18:59:34 +0000
Subject: [PATCH] Support for startFrom="nn" to select starting line number in
 syntax highlighting. Changed argument of highlightHtml to Attr, not [String],
 for generality.

git-svn-id: https://pandoc.googlecode.com/svn/trunk@1232 788f1e2b-df1e-0410-8736-df70ead52e1b
---
 Text/Pandoc/Writers/HTML.hs   |  4 ++--
 templates/Highlighting.no.hs  |  6 +++---
 templates/Highlighting.yes.hs | 12 ++++++++----
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/Text/Pandoc/Writers/HTML.hs b/Text/Pandoc/Writers/HTML.hs
index e668e9885..5fbeaaab9 100644
--- a/Text/Pandoc/Writers/HTML.hs
+++ b/Text/Pandoc/Writers/HTML.hs
@@ -292,8 +292,8 @@ blockToHtml opts (Plain lst) = inlineListToHtml opts lst
 blockToHtml opts (Para lst) = inlineListToHtml opts lst >>= (return . paragraph)
 blockToHtml opts (RawHtml str) = return $ primHtml str
 blockToHtml opts (HorizontalRule) = return $ hr
-blockToHtml opts (CodeBlock (_,classes,_) rawCode) = do
-  case highlightHtml classes rawCode of
+blockToHtml opts (CodeBlock attr@(_,classes,_) rawCode) = do
+  case highlightHtml attr rawCode of
          Left _  -> return $ pre ! (if null classes
                                        then []
                                        else [theclass $ unwords classes]) $ thecode << 
diff --git a/templates/Highlighting.no.hs b/templates/Highlighting.no.hs
index 2acea4420..ed6b7c325 100644
--- a/templates/Highlighting.no.hs
+++ b/templates/Highlighting.no.hs
@@ -30,10 +30,10 @@ Exports functions for syntax highlighting.
 
 module Text.Pandoc.Highlighting ( languages, highlightHtml ) where
 import Text.XHtml
+import Text.Pandoc.Definition
 
 languages :: [String]
 languages = []
 
-highlightHtml :: [String] -> String -> Either String Html
-highlightHtml classes str = Left "Pandoc was not compiled with support for highlighting"
-
+highlightHtml :: Attr -> String -> Either String Html
+highlightHtml _ _ = Left "Pandoc was not compiled with support for highlighting"
diff --git a/templates/Highlighting.yes.hs b/templates/Highlighting.yes.hs
index a015e1e34..915f6ffee 100644
--- a/templates/Highlighting.yes.hs
+++ b/templates/Highlighting.yes.hs
@@ -31,12 +31,16 @@ Exports functions for syntax highlighting.
 module Text.Pandoc.Highlighting ( languages, highlightHtml ) where
 import Text.Highlighting.Kate
 import Text.XHtml
-import Data.List (find)
+import Data.List (find, lookup)
+import Data.Maybe (fromMaybe)
 import Data.Char (toLower)
+import Text.Pandoc.Definition
 
-highlightHtml :: [String] -> String -> Either String Html
-highlightHtml classes rawCode =
-  let fmtOpts = case find (`elem` ["number","numberLines","number-lines"]) classes of
+highlightHtml :: Attr -> String -> Either String Html
+highlightHtml (_, classes, keyvals) rawCode =
+  let firstNum = read $ fromMaybe "1" $ lookup "startFrom" keyvals
+      fmtOpts = [OptNumberFrom firstNum] ++
+                case find (`elem` ["number","numberLines","number-lines"]) classes of
                   Nothing   -> []
                   Just _    -> [OptNumberLines]
       lcLanguages = map (map toLower) languages