Skip to content

Commit d4b2b3a

Browse files
committed
inline or cdn all html resources
1 parent cd48f17 commit d4b2b3a

File tree

2 files changed

+43
-32
lines changed

2 files changed

+43
-32
lines changed

libcpychecker_html/make_html.py

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/usr/bin/env python
2-
"""Make our data into HTML!"""
2+
"""Make our data into HTML!
3+
These reports should be usable as email attachments, so either inline or cdn *everything*.
4+
"""
35
from __future__ import print_function
46

57
# Copyright 2012 Buck Golemon <buck@yelp.com>
@@ -17,6 +19,8 @@
1719
# You should have received a copy of the GNU General Public License
1820
# along with this program. If not, see
1921
# <http://www.gnu.org/licenses/>.
22+
from os.path import realpath, dirname, join
23+
HERE = dirname(realpath(__file__))
2024

2125
from . import capi
2226

@@ -53,16 +57,30 @@ def head(self):
5357
}),
5458
E.TITLE('%s -- GCC Python Plugin' % self.data['filename']),
5559
)
60+
head.append(E.LINK(
61+
rel='stylesheet',
62+
href='http://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css',
63+
type='text/css'
64+
))
5665
head.extend(
57-
E.LINK(rel='stylesheet', href=css + '.css', type='text/css')
58-
for css in ('extlib/reset-20110126', 'pygments_c', 'style')
66+
E.STYLE(
67+
file_contents(css + '.css'),
68+
media='screen',
69+
type='text/css'
70+
)
71+
for css in ('pygments_c', 'style')
5972
)
6073
head.extend(
61-
E.SCRIPT(src=js + '.js')
74+
E.SCRIPT(src=js)
6275
for js in (
63-
'extlib/prefixfree-1.0.4.min',
64-
'extlib/jquery-1.7.1.min',
65-
'script'
76+
'http://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js',
77+
'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js',
78+
)
79+
)
80+
head.append(
81+
E.SCRIPT(
82+
file_contents('script.js'),
83+
type='text/javascript',
6684
)
6785
)
6886
return head
@@ -136,38 +154,26 @@ def header(self):
136154
E.DIV(
137155
E.ATTR(id='bug-toggle'),
138156
E.IMG(
139-
src='images/bug.png',
157+
src=data_uri('image/png', 'images/bug.png'),
140158
),
141159
E.H3('Bug'),
142160
' [count]',
143161
),
144162
E.DIV(
145163
E.ATTR(id='prev'),
146164
E.IMG(
147-
src='images/arrow-180.png',
165+
src=data_uri('image/png', 'images/arrow-180.png'),
148166
),
149167
),
150168
E.DIV(
151169
E.ATTR(id='next'),
152170
E.IMG(
153-
src='images/arrow.png',
171+
src=data_uri('image/png', 'images/arrow.png'),
154172
),
155173
),
156174
),
157175
)
158176

159-
@staticmethod
160-
def footer():
161-
"""make the footer"""
162-
return E.E.footer(
163-
E.ATTR(id='footer'),
164-
E.P(' &nbsp;|&nbsp; '.join((
165-
'Hackathon 7.0',
166-
'Buck G, Alex M, Jason M',
167-
'Yelp HQ 2012',
168-
)))
169-
)
170-
171177
def states(self):
172178
"""Return an ordered-list of states, for each report."""
173179
for report in self.data['reports']:
@@ -247,9 +253,17 @@ def body(self):
247253
return E.BODY(
248254
self.header(),
249255
reports,
250-
self.footer(),
251256
)
252257

258+
def data_uri(mimetype, filename):
259+
data = open(join(HERE, filename)).read().encode('base64').replace('\n', '')
260+
return 'data:%s;base64,%s' % (mimetype, data)
261+
262+
def file_contents(filename):
263+
# The leading newline makes the first line show up in the right spot.
264+
return '\n' + open(join(HERE, filename)).read()
265+
266+
253267
class CodeHtmlFormatter(HtmlFormatter):
254268
"""Format our HTML!"""
255269

libcpychecker_html/style.css

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,6 @@ img {
5757
box-flex: 1;
5858
overflow-y: auto;
5959
}
60-
#footer {
61-
background: hsl(0, 0%, 30%);
62-
box-shadow: inset 0 3px 3px -3px black;
63-
color: white;
64-
padding: 0.83em;
65-
text-shadow: 0px 1px 0px black;
66-
background-color: #09f;
67-
}
6860

6961

7062
/* Header */
@@ -395,6 +387,11 @@ td.selected .flow-dot {
395387
}
396388

397389
.note:first-of-type::before {
398-
content: url('images/exclamation.png');
390+
/* content: url('images/exclamation.png');
391+
* to regenerate:
392+
* from libcpychecker_html.make_html import data_uri
393+
* data_uri('image/png', 'images/exclamation.png')
394+
*/
395+
content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjBJREFUeNqkk0trE1EUx8/cO49OfGTSRNJMYsA0aVonoYh13YW71uJCKFQhKqibfgFLwYULsR/AhY+VG1d+C124kJiFIGipmoIZNUXtZDKTycz1njGpaRNU8MJv7txzzv/c5xEYY/A/TRQEAW5c5KwM+aKcR73/a5zvg84HT371wv07Apwuj0x+PZW/vArA4NO7x/f4+OGoIHLKAAiC/fBdHadSbCGZPTeTzC7OUElbQNvBOISMMnIqeqFSYs57mTkfZD1/qYS2f0rAZ5pVDmXnY/FSbn3jM6xvfAEtfjKnRDLz6BtK4PPPADi+ms6vGK71lti2DUintUVSJ84b6OvF7GlI4PNMPVgAZ49oxpyqRnXf+wGWZYX4ngWRiKYfPpqfw5hBjej7eweqCkSo6JOLhmd/hI7vQLVaBdM0YXt1FgK2CeJ40fCbmxUWsGc8vh3egtcFQPhyLsQnzpQJcbVmuw5mawtqtRo0Gg3wJQeY7ALIrqZEM2WM7esIPkROAgR5OZEpTTV3X4IXNEGiLnw1b4fItBNCBQuiqeQUA7qMGtSSLt8C38aVRLo47QVvVJFYoFAnJJG8FdIfI6rSVWMTx6ZRg1rS7UKeSspSMj2Wk+AbjPGZ+vTboA1JZbQcEcUl1Iq2zdZyxURBpruUMTzR38Vl79wM+9bO0/3vlwLVs+OF16/MNdFug/vi+Xadm+vDL/3uHyuR16Er4E3gKvEaOTLa/1LBuEQPF8hxfgowAINnMqTBUH7hAAAAAElFTkSuQmCC');
399396
padding: 5px;
400397
}

0 commit comments

Comments
 (0)