##// END OF EJS Templates
style.min.css shoudl always exist......
Matthias BUSSONNIER -
Show More
@@ -1,111 +1,106 b''
1 1 """Module that pre-processes the notebook for export to HTML.
2 2 """
3 3 #-----------------------------------------------------------------------------
4 4 # Copyright (c) 2013, the IPython Development Team.
5 5 #
6 6 # Distributed under the terms of the Modified BSD License.
7 7 #
8 8 # The full license is in the file COPYING.txt, distributed with this software.
9 9 #-----------------------------------------------------------------------------
10 10
11 11 #-----------------------------------------------------------------------------
12 12 # Imports
13 13 #-----------------------------------------------------------------------------
14 14
15 15 import os
16 16 import io
17 17
18 18 from pygments.formatters import HtmlFormatter
19 19
20 20 from IPython.utils import path
21 21
22 22 from .activatable import ActivatableTransformer
23 23
24 24 from IPython.utils.traitlets import Unicode
25 25
26 26 #-----------------------------------------------------------------------------
27 27 # Classes and functions
28 28 #-----------------------------------------------------------------------------
29 29
30 30 class CSSHTMLHeaderTransformer(ActivatableTransformer):
31 31 """
32 32 Transformer used to pre-process notebook for HTML output. Adds IPython notebook
33 33 front-end CSS and Pygments CSS to HTML output.
34 34 """
35 35
36 36 header = []
37 37
38 38 highlight_class = Unicode('.highlight', config=True,
39 39 help="CSS highlight class identifier")
40 40
41 41 def __init__(self, config=None, **kw):
42 42 """
43 43 Public constructor
44 44
45 45 Parameters
46 46 ----------
47 47 config : Config
48 48 Configuration file structure
49 49 **kw : misc
50 50 Additional arguments
51 51 """
52 52
53 53 super(CSSHTMLHeaderTransformer, self).__init__(config=config, **kw)
54 54
55 55 if self.enabled :
56 56 self._regen_header()
57 57
58 58
59 59 def __call__(self, nb, resources):
60 60 """Fetch and add CSS to the resource dictionary
61 61
62 62 Fetch CSS from IPython and Pygments to add at the beginning
63 63 of the html files. Add this css in resources in the
64 64 "inlining.css" key
65 65
66 66 Parameters
67 67 ----------
68 68 nb : NotebookNode
69 69 Notebook being converted
70 70 resources : dictionary
71 71 Additional resources used in the conversion process. Allows
72 72 transformers to pass variables into the Jinja engine.
73 73 """
74 74
75 75 resources['inlining'] = {}
76 76 resources['inlining']['css'] = self.header
77 77
78 78 return nb, resources
79 79
80 80
81 81 def _regen_header(self):
82 82 """
83 83 Fills self.header with lines of CSS extracted from IPython
84 84 and Pygments.
85 85 """
86 86
87 87 #Clear existing header.
88 88 header = []
89 89
90 90 #Construct path to IPy CSS
91 91 sheet_filename = os.path.join(path.get_ipython_package_dir(),
92 92 'html', 'static', 'style', 'style.min.css')
93 93
94 94 #Load style CSS file.
95 try:
96 with io.open(sheet_filename, encoding='utf-8') as file:
97 file_text = file.read()
98 header.append(file_text)
99 except IOError:
100
101 # New version of IPython with style.min.css, pass
102 pass
95 with io.open(sheet_filename, encoding='utf-8') as file:
96 file_text = file.read()
97 header.append(file_text)
103 98
104 99 #Add pygments CSS
105 100 formatter = HtmlFormatter()
106 101 pygments_css = formatter.get_style_defs(self.highlight_class)
107 102 header.append(pygments_css)
108 103
109 104 #Set header
110 105 self.header = header
111 106
General Comments 0
You need to be logged in to leave comments. Login now