ballonizer 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/examples/ballonizer_app/config.ru +59 -0
- data/examples/ballonizer_app/index.html +159 -0
- data/examples/ballonizer_js_module/index.html +196 -0
- data/lib/assets/javascripts/ballonizer.js +482 -0
- data/lib/assets/stylesheets/ballonizer.css +78 -0
- data/lib/ballonizer.rb +201 -36
- data/spec/ballonizer_spec.rb +153 -2
- data/spec/javascripts/ballonizer_spec.js +568 -0
- data/spec/javascripts/fixtures/ballonized-xkcd-with-anchor-in-image.html +163 -0
- data/spec/javascripts/fixtures/ballonized-xkcd-with-ballons.html +163 -0
- data/spec/javascripts/fixtures/ballonized-xkcd-without-ballons.html +163 -0
- data/spec/javascripts/fixtures/xkcd.css +191 -0
- data/spec/javascripts/helpers/jasmine-jquery.js +660 -0
- data/spec/javascripts/helpers/jquery.simulate-ext.js +32 -0
- data/spec/javascripts/helpers/jquery.simulate.drag-n-drop.js +583 -0
- data/spec/javascripts/helpers/jquery.simulate.js +328 -0
- data/spec/javascripts/support/jasmine.yml +99 -0
- data/vendor/assets/javascripts/jquery-2.0.1.js +8837 -0
- data/vendor/assets/javascripts/jquery-ui-1.10.3.custom.min.js +6 -0
- data/vendor/assets/javascripts/jquery.json-2.4.min.js +24 -0
- data/vendor/assets/stylesheets/ui-lightness/images/animated-overlay.gif +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/stylesheets/ui-lightness/jquery-ui-1.10.3.custom.min.css +5 -0
- metadata +51 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5d1bbd1e907d9bca6cf807a94caefc63a94b164
|
4
|
+
data.tar.gz: fe4987187244948facaa3a1bcf89b4240f1a385a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81fbd87f25f016c28f7233a03c7fb04eef1634c52fae9211f451283eb2637b484c1b7c9b0118b1a2f75e54c1cb931a7ac60ab7fa08be256694cc11eb8f841362
|
7
|
+
data.tar.gz: ec5b3571b0f30841b5d8f74bddab3c9d4e819c5959914fd0085d6b8a872ad08bc4a9ceeb5b3dde4229c9ef9110d252f35afc934ad3c0d0214842e657112dac19
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
require 'sqlite3'
|
3
|
+
require 'sprockets'
|
4
|
+
require 'ballonizer'
|
5
|
+
|
6
|
+
path_rake_to_app = 'examples/ballonizer_app/'
|
7
|
+
db_name = 'test.db'
|
8
|
+
db_path = "#{path_rake_to_app}#{db_name}"
|
9
|
+
db_uri = "sqlite://#{db_path}"
|
10
|
+
|
11
|
+
DB = nil
|
12
|
+
if File.exists?(db_path)
|
13
|
+
DB = Sequel.connect(db_uri)
|
14
|
+
else
|
15
|
+
DB = Sequel.connect(db_uri)
|
16
|
+
Ballonizer.create_tables(DB)
|
17
|
+
end
|
18
|
+
|
19
|
+
html_name = 'index.html'
|
20
|
+
html = File.read("#{path_rake_to_app}#{html_name}")
|
21
|
+
|
22
|
+
ballonizer = Ballonizer.new(DB, {
|
23
|
+
form_handler_url: '/request_handler',
|
24
|
+
add_required_css: true,
|
25
|
+
css_asset_path_for_link: '/assets',
|
26
|
+
add_required_js_libs_for_edition: true,
|
27
|
+
js_asset_path_for_link: '/assets'
|
28
|
+
})
|
29
|
+
|
30
|
+
app = Rack::Builder.new do
|
31
|
+
|
32
|
+
map '/' do
|
33
|
+
run(lambda do | env |
|
34
|
+
# the url is needed to make relative paths to images absolute
|
35
|
+
request = Rack::Request.new(env)
|
36
|
+
ballonized_page = ballonizer.ballonize_page(html, request.url)
|
37
|
+
|
38
|
+
[200, {}, [ballonized_page]]
|
39
|
+
end)
|
40
|
+
end
|
41
|
+
|
42
|
+
map '/assets' do
|
43
|
+
run Ballonizer.assets_app
|
44
|
+
end
|
45
|
+
|
46
|
+
map '/request_handler' do
|
47
|
+
run(lambda do | env |
|
48
|
+
begin
|
49
|
+
ballonizer.process_submit(env)
|
50
|
+
[200, {}, ['your changes are made with success']]
|
51
|
+
rescue Ballonizer::SubmitError => e
|
52
|
+
[200, {}, [e.message]]
|
53
|
+
end
|
54
|
+
end)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
run app
|
59
|
+
|
@@ -0,0 +1,159 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<title>Um título qualquer</title>
|
6
|
+
<meta http-equiv="content-type"
|
7
|
+
content="application/xhtml+xml; charset=UTF-8" />
|
8
|
+
<link rel="stylesheet" type="text/css"
|
9
|
+
href="http://imgs.xkcd.com/static/styles_short_beta.css"
|
10
|
+
title="Default" />
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<div id="topContainer">
|
14
|
+
<div id="topLeft">
|
15
|
+
<ul>
|
16
|
+
<li>
|
17
|
+
<a href="http://xkcd.com/archive">Archive</a>
|
18
|
+
</li>
|
19
|
+
<li>
|
20
|
+
<a href="http://what-if.xkcd.com">What If?</a>
|
21
|
+
</li>
|
22
|
+
<li>
|
23
|
+
<a href="http://blag.xkcd.com">Blag</a>
|
24
|
+
</li>
|
25
|
+
<li>
|
26
|
+
<a href="http://store.xkcd.com/">Store</a>
|
27
|
+
</li>
|
28
|
+
<li>
|
29
|
+
<a rel="author" href="http://xkcd.com/about">About</a>
|
30
|
+
</li>
|
31
|
+
</ul>
|
32
|
+
</div>
|
33
|
+
<div id="topRight">
|
34
|
+
<div id="masthead">
|
35
|
+
<span>
|
36
|
+
<a href="http://xkcd.com/">
|
37
|
+
<img src="http://imgs.xkcd.com/static/terrible_small_logo.png"
|
38
|
+
alt="xkcd.com logo" height="83" width="185" />
|
39
|
+
</a>
|
40
|
+
</span>
|
41
|
+
<span id="slogan">A webcomic of romance,
|
42
|
+
<br />sarcasm, math, and language.</span>
|
43
|
+
</div>
|
44
|
+
<div id="news">You can get the Subways comic as a
|
45
|
+
<a href="http://store-xkcd-com.myshopify.com/products/subways">
|
46
|
+
poster</a>!</div>
|
47
|
+
</div>
|
48
|
+
<div id="bgLeft" class="bg box"></div>
|
49
|
+
<div id="bgRight" class="bg box"></div>
|
50
|
+
</div>
|
51
|
+
<div id="middleContainer" class="box">
|
52
|
+
<div id="ctitle">Cells</div>
|
53
|
+
<ul class="comicNav">
|
54
|
+
<li>
|
55
|
+
<a href="http://xkcd.com/1/">|<</a>
|
56
|
+
</li>
|
57
|
+
<li>
|
58
|
+
<a rel="prev" href="http://xkcd.com/1216/" accesskey="p">< Prev</a>
|
59
|
+
</li>
|
60
|
+
<li>
|
61
|
+
<a href="http://dynamic.xkcd.com/random/comic/">Random</a>
|
62
|
+
</li>
|
63
|
+
<li>
|
64
|
+
<a rel="next" href="http://xkcd.com/#" accesskey="n">Next ></a>
|
65
|
+
</li>
|
66
|
+
<li>
|
67
|
+
<a href="http://xkcd.com/">>|</a>
|
68
|
+
</li>
|
69
|
+
</ul>
|
70
|
+
<div id="comic">
|
71
|
+
<img class="to_ballonize" src="http://imgs.xkcd.com/comics/cells.png"
|
72
|
+
title="Now, if it selectively kills cancer cells in a petri dish, you can be sure it's at least a great breakthrough for everyone suffering from petri dish cancer."
|
73
|
+
width="218px"
|
74
|
+
height="339px"
|
75
|
+
alt="Cells" />
|
76
|
+
</div>
|
77
|
+
<ul class="comicNav">
|
78
|
+
<li>
|
79
|
+
<a href="http://xkcd.com/1/">|<</a>
|
80
|
+
</li>
|
81
|
+
<li>
|
82
|
+
<a rel="prev" href="http://xkcd.com/1216/" accesskey="p">< Prev</a>
|
83
|
+
</li>
|
84
|
+
<li>
|
85
|
+
<a href="http://dynamic.xkcd.com/random/comic/">Random</a>
|
86
|
+
</li>
|
87
|
+
<li>
|
88
|
+
<a rel="next" href="http://xkcd.com/#" accesskey="n">Next ></a>
|
89
|
+
</li>
|
90
|
+
<li>
|
91
|
+
<a href="http://xkcd.com/">>|</a>
|
92
|
+
</li>
|
93
|
+
</ul>
|
94
|
+
<br />Permanent link to this comic: http://xkcd.com/1217/
|
95
|
+
<br />Image URL (for hotlinking/embedding):
|
96
|
+
http://imgs.xkcd.com/comics/cells.png
|
97
|
+
<div id="transcript" style="display: none">When you see a claim
|
98
|
+
that a common drug or vitamin "kills cancer cells in a petri
|
99
|
+
dish," keep in mind: [[A scientist stands on a chair next to a
|
100
|
+
desk, pointing a gun at a petri dish. There is a microscope on
|
101
|
+
the desk.]] So does a handgun. {{Title text: Now, if it
|
102
|
+
selectively kills cancer cells in a petri dish, you can be sure
|
103
|
+
it's at least a great breakthrough for everyone suffering from
|
104
|
+
petri dish cancer.}}</div></div>
|
105
|
+
<div id="bottom" class="box">
|
106
|
+
<img src="http://imgs.xkcd.com/s/a899e84.jpg" width="520"
|
107
|
+
height="100" alt="Selected Comics" usemap="#comicmap" />
|
108
|
+
<map id="comicmap">
|
109
|
+
<!-- http://code.google.com/p/chromium/issues/detail?id=108489 Might be MIME dependant. -->
|
110
|
+
<area shape="rect" coords="0,0,100,100" href="http://xkcd.com/150/"
|
111
|
+
alt="Grownups" />
|
112
|
+
<area shape="rect" coords="104,0,204,100" href="http://xkcd.com/730/"
|
113
|
+
alt="Circuit Diagram" />
|
114
|
+
<area shape="rect" coords="208,0,308,100" href="http://xkcd.com/162/"
|
115
|
+
alt="Angular Momentum" />
|
116
|
+
<area shape="rect" coords="312,0,412,100" href="http://xkcd.com/688/"
|
117
|
+
alt="Self-Description" />
|
118
|
+
<area shape="rect" coords="416,0,520,100" href="http://xkcd.com/556/"
|
119
|
+
alt="Alternative Energy Revolution" />
|
120
|
+
</map>
|
121
|
+
<a href="http://xkcd.com/rss.xml">RSS Feed</a>-
|
122
|
+
<a href="http://xkcd.com/atom.xml">Atom Feed</a></div>
|
123
|
+
<br />
|
124
|
+
<div id="comicLinks">Comics I enjoy:
|
125
|
+
<br />
|
126
|
+
<a href="http://threewordphrase.com/">Three Word Phrase</a>,
|
127
|
+
<a href="http://oglaf.com/">Oglaf</a>(nsfw),
|
128
|
+
<a href="http://www.smbc-comics.com/">SMBC</a>,
|
129
|
+
<a href="http://www.qwantz.com">Dinosaur Comics</a>,
|
130
|
+
<a href="http://www.asofterworld.com">A Softer World</a>,
|
131
|
+
<a href="http://buttersafe.com/">Buttersafe</a>,
|
132
|
+
<a href="http://pbfcomics.com/">Perry Bible Fellowship</a>,
|
133
|
+
<a href="http://questionablecontent.net/">Questionable
|
134
|
+
Content</a>,
|
135
|
+
<a href="http://www.buttercupfestival.com/">Buttercup
|
136
|
+
Festival</a></div>
|
137
|
+
<p>Warning: this comic occasionally contains strong language
|
138
|
+
(which may be unsuitable for children), unusual humor (which
|
139
|
+
may be unsuitable for adults), and advanced mathematics
|
140
|
+
(which may be unsuitable for liberal-arts majors).</p>
|
141
|
+
<div id="footnote">BTC 1NEPgrUmed3VyXpqbYZom7YVJ8MozYrNWx
|
142
|
+
<br />We did not invent the algorithm. The algorithm
|
143
|
+
consistently finds Jesus. The algorithm killed Jeeves.
|
144
|
+
<br />The algorithm is banned in China. The algorithm is from
|
145
|
+
Jersey. The algorithm constantly finds Jesus.
|
146
|
+
<br />This is not the algorithm. This is close.</div>
|
147
|
+
<div id="licenseText">
|
148
|
+
<p>This work is licensed under a
|
149
|
+
<a href="http://creativecommons.org/licenses/by-nc/2.5/">
|
150
|
+
Creative Commons Attribution-NonCommercial 2.5
|
151
|
+
License</a>.</p>
|
152
|
+
<p>This means you're free to copy and share these comics
|
153
|
+
(but not to sell them).
|
154
|
+
<a rel="license" href="http://xkcd.com/license.html">More details</a>.</p>
|
155
|
+
</div>
|
156
|
+
</div>
|
157
|
+
</body>
|
158
|
+
</html>
|
159
|
+
|
@@ -0,0 +1,196 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<title>Um título qualquer</title>
|
6
|
+
<meta http-equiv="content-type"
|
7
|
+
content="application/xhtml+xml; charset=UTF-8" />
|
8
|
+
<link rel="stylesheet" type="text/css"
|
9
|
+
href="http://imgs.xkcd.com/static/styles_short_beta.css"
|
10
|
+
title="Default" />
|
11
|
+
<link rel="stylesheet" type="text/css"
|
12
|
+
href="../../lib/ballonizer/ui-lightness/jquery-ui-1.10.3.custom.min.css" />
|
13
|
+
<link rel="stylesheet" type="text/css"
|
14
|
+
href="../../lib/ballonizer/ballonizer.css" />
|
15
|
+
<script type="text/javascript"
|
16
|
+
src="../../vendor/assets/javascripts/jquery-2.0.1.js"></script>
|
17
|
+
<script type="text/javascript"
|
18
|
+
src="../../vendor/assets/javascripts/jquery.json-2.4.min.js"></script>
|
19
|
+
<script type="text/javascript"
|
20
|
+
src="../../vendor/assets/javascripts/jquery-ui-1.10.3.custom.min.js"></script>
|
21
|
+
<script type="text/javascript"
|
22
|
+
src="../../lib/ballonizer/ballonizer.js"></script>
|
23
|
+
<script type="text/javascript">
|
24
|
+
$(document).ready(function() {
|
25
|
+
Ballonizer('/path/to/form/submit',
|
26
|
+
'.ballonizer_image_container',
|
27
|
+
$('body'));
|
28
|
+
})
|
29
|
+
</script>
|
30
|
+
</head>
|
31
|
+
<body>
|
32
|
+
<div id="topContainer">
|
33
|
+
<div id="topLeft">
|
34
|
+
<ul>
|
35
|
+
<li>
|
36
|
+
<a href="http://xkcd.com/archive">Archive</a>
|
37
|
+
</li>
|
38
|
+
<li>
|
39
|
+
<a href="http://what-if.xkcd.com">What If?</a>
|
40
|
+
</li>
|
41
|
+
<li>
|
42
|
+
<a href="http://blag.xkcd.com">Blag</a>
|
43
|
+
</li>
|
44
|
+
<li>
|
45
|
+
<a href="http://store.xkcd.com/">Store</a>
|
46
|
+
</li>
|
47
|
+
<li>
|
48
|
+
<a rel="author" href="http://xkcd.com/about">About</a>
|
49
|
+
</li>
|
50
|
+
</ul>
|
51
|
+
</div>
|
52
|
+
<div id="topRight">
|
53
|
+
<div id="masthead">
|
54
|
+
<span>
|
55
|
+
<a href="http://xkcd.com/">
|
56
|
+
<img src="http://imgs.xkcd.com/static/terrible_small_logo.png"
|
57
|
+
alt="xkcd.com logo" height="83" width="185" />
|
58
|
+
</a>
|
59
|
+
</span>
|
60
|
+
<span id="slogan">A webcomic of romance,
|
61
|
+
<br />sarcasm, math, and language.</span>
|
62
|
+
</div>
|
63
|
+
<div id="news">You can get the Subways comic as a
|
64
|
+
<a href="http://store-xkcd-com.myshopify.com/products/subways">
|
65
|
+
poster</a>!</div>
|
66
|
+
</div>
|
67
|
+
<div id="bgLeft" class="bg box"></div>
|
68
|
+
<div id="bgRight" class="bg box"></div>
|
69
|
+
</div>
|
70
|
+
<div id="middleContainer" class="box">
|
71
|
+
<div id="ctitle">Cells</div>
|
72
|
+
<ul class="comicNav">
|
73
|
+
<li>
|
74
|
+
<a href="http://xkcd.com/1/">|<</a>
|
75
|
+
</li>
|
76
|
+
<li>
|
77
|
+
<a rel="prev" href="http://xkcd.com/1216/" accesskey="p">< Prev</a>
|
78
|
+
</li>
|
79
|
+
<li>
|
80
|
+
<a href="http://dynamic.xkcd.com/random/comic/">Random</a>
|
81
|
+
</li>
|
82
|
+
<li>
|
83
|
+
<a rel="next" href="http://xkcd.com/#" accesskey="n">Next ></a>
|
84
|
+
</li>
|
85
|
+
<li>
|
86
|
+
<a href="http://xkcd.com/">>|</a>
|
87
|
+
</li>
|
88
|
+
</ul>
|
89
|
+
<div id="comic">
|
90
|
+
<div class="ballonizer_image_container"><p style="left: 0px; top: 0px; width: 218px; height: 82px;" class="ballonizer_ballon" >When you see a claim that a common drug or vitamin "kills cancer cells in a petri dish", keep in mind:</p><p style="top: 319px; left: 21px; width: 170px; height: 19px;" class="ballonizer_ballon">So does a handgun.</p><img src="http://imgs.xkcd.com/comics/cells.png"
|
91
|
+
title="Now, if it selectively kills cancer cells in a petri dish, you can be sure it's at least a great breakthrough for everyone suffering from petri dish cancer."
|
92
|
+
width="218px"
|
93
|
+
height="339px"
|
94
|
+
alt="Cells" /></div>
|
95
|
+
</div>
|
96
|
+
<ul class="comicNav">
|
97
|
+
<li>
|
98
|
+
<a href="http://xkcd.com/1/">|<</a>
|
99
|
+
</li>
|
100
|
+
<li>
|
101
|
+
<a rel="prev" href="http://xkcd.com/1216/" accesskey="p">< Prev</a>
|
102
|
+
</li>
|
103
|
+
<li>
|
104
|
+
<a href="http://dynamic.xkcd.com/random/comic/">Random</a>
|
105
|
+
</li>
|
106
|
+
<li>
|
107
|
+
<a rel="next" href="http://xkcd.com/#" accesskey="n">Next ></a>
|
108
|
+
</li>
|
109
|
+
<li>
|
110
|
+
<a href="http://xkcd.com/">>|</a>
|
111
|
+
</li>
|
112
|
+
</ul>
|
113
|
+
<br />Permanent link to this comic: http://xkcd.com/1217/
|
114
|
+
<br />Image URL (for hotlinking/embedding):
|
115
|
+
http://imgs.xkcd.com/comics/cells.png
|
116
|
+
<div id="transcript" style="display: none">When you see a claim
|
117
|
+
that a common drug or vitamin "kills cancer cells in a petri
|
118
|
+
dish," keep in mind: [[A scientist stands on a chair next to a
|
119
|
+
desk, pointing a gun at a petri dish. There is a microscope on
|
120
|
+
the desk.]] So does a handgun. {{Title text: Now, if it
|
121
|
+
selectively kills cancer cells in a petri dish, you can be sure
|
122
|
+
it's at least a great breakthrough for everyone suffering from
|
123
|
+
petri dish cancer.}}</div></div>
|
124
|
+
<div id="bottom" class="box">
|
125
|
+
<img src="http://imgs.xkcd.com/s/a899e84.jpg" width="520"
|
126
|
+
height="100" alt="Selected Comics" usemap="#comicmap" />
|
127
|
+
<map id="comicmap">
|
128
|
+
<!-- http://code.google.com/p/chromium/issues/detail?id=108489 Might be MIME dependant. -->
|
129
|
+
<area shape="rect" coords="0,0,100,100" href="http://xkcd.com/150/"
|
130
|
+
alt="Grownups" />
|
131
|
+
<area shape="rect" coords="104,0,204,100" href="http://xkcd.com/730/"
|
132
|
+
alt="Circuit Diagram" />
|
133
|
+
<area shape="rect" coords="208,0,308,100" href="http://xkcd.com/162/"
|
134
|
+
alt="Angular Momentum" />
|
135
|
+
<area shape="rect" coords="312,0,412,100" href="http://xkcd.com/688/"
|
136
|
+
alt="Self-Description" />
|
137
|
+
<area shape="rect" coords="416,0,520,100" href="http://xkcd.com/556/"
|
138
|
+
alt="Alternative Energy Revolution" />
|
139
|
+
</map>
|
140
|
+
<div>Search comic titles and transcripts:
|
141
|
+
<script type="text/javascript" src="http//www.google.com/jsapi">
|
142
|
+
</script>
|
143
|
+
<script type="text/javascript">google.load('search',
|
144
|
+
'1');google.setOnLoadCallback(function()
|
145
|
+
{google.search.CustomSearchControl.attachAutoCompletion('012652707207066138651:zudjtuwe28q',document.getElementById('q'),'cse-search-box');});</script>
|
146
|
+
<form action="//www.google.com/cse" id="cse-search-box">
|
147
|
+
<div>
|
148
|
+
<input type="hidden" name="cx"
|
149
|
+
value="012652707207066138651:zudjtuwe28q" />
|
150
|
+
<input type="hidden" name="ie" value="UTF-8" />
|
151
|
+
<input type="text" name="q" id="q" size="31" />
|
152
|
+
<input type="submit" name="sa" value="Search" />
|
153
|
+
</div>
|
154
|
+
</form>
|
155
|
+
<script type="text/javascript"
|
156
|
+
src="http://www.google.com/cse/brand?form=cse-search-box&lang=en">
|
157
|
+
</script>
|
158
|
+
<a href="http://xkcd.com/rss.xml">RSS Feed</a>-
|
159
|
+
<a href="http://xkcd.com/atom.xml">Atom Feed</a></div>
|
160
|
+
<br />
|
161
|
+
<div id="comicLinks">Comics I enjoy:
|
162
|
+
<br />
|
163
|
+
<a href="http://threewordphrase.com/">Three Word Phrase</a>,
|
164
|
+
<a href="http://oglaf.com/">Oglaf</a>(nsfw),
|
165
|
+
<a href="http://www.smbc-comics.com/">SMBC</a>,
|
166
|
+
<a href="http://www.qwantz.com">Dinosaur Comics</a>,
|
167
|
+
<a href="http://www.asofterworld.com">A Softer World</a>,
|
168
|
+
<a href="http://buttersafe.com/">Buttersafe</a>,
|
169
|
+
<a href="http://pbfcomics.com/">Perry Bible Fellowship</a>,
|
170
|
+
<a href="http://questionablecontent.net/">Questionable
|
171
|
+
Content</a>,
|
172
|
+
<a href="http://www.buttercupfestival.com/">Buttercup
|
173
|
+
Festival</a></div>
|
174
|
+
<p>Warning: this comic occasionally contains strong language
|
175
|
+
(which may be unsuitable for children), unusual humor (which
|
176
|
+
may be unsuitable for adults), and advanced mathematics
|
177
|
+
(which may be unsuitable for liberal-arts majors).</p>
|
178
|
+
<div id="footnote">BTC 1NEPgrUmed3VyXpqbYZom7YVJ8MozYrNWx
|
179
|
+
<br />We did not invent the algorithm. The algorithm
|
180
|
+
consistently finds Jesus. The algorithm killed Jeeves.
|
181
|
+
<br />The algorithm is banned in China. The algorithm is from
|
182
|
+
Jersey. The algorithm constantly finds Jesus.
|
183
|
+
<br />This is not the algorithm. This is close.</div>
|
184
|
+
<div id="licenseText">
|
185
|
+
<p>This work is licensed under a
|
186
|
+
<a href="http://creativecommons.org/licenses/by-nc/2.5/">
|
187
|
+
Creative Commons Attribution-NonCommercial 2.5
|
188
|
+
License</a>.</p>
|
189
|
+
<p>This means you're free to copy and share these comics
|
190
|
+
(but not to sell them).
|
191
|
+
<a rel="license" href="http://xkcd.com/license.html">More details</a>.</p>
|
192
|
+
</div>
|
193
|
+
</div>
|
194
|
+
</body>
|
195
|
+
</html>
|
196
|
+
|