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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/examples/ballonizer_app/config.ru +59 -0
  3. data/examples/ballonizer_app/index.html +159 -0
  4. data/examples/ballonizer_js_module/index.html +196 -0
  5. data/lib/assets/javascripts/ballonizer.js +482 -0
  6. data/lib/assets/stylesheets/ballonizer.css +78 -0
  7. data/lib/ballonizer.rb +201 -36
  8. data/spec/ballonizer_spec.rb +153 -2
  9. data/spec/javascripts/ballonizer_spec.js +568 -0
  10. data/spec/javascripts/fixtures/ballonized-xkcd-with-anchor-in-image.html +163 -0
  11. data/spec/javascripts/fixtures/ballonized-xkcd-with-ballons.html +163 -0
  12. data/spec/javascripts/fixtures/ballonized-xkcd-without-ballons.html +163 -0
  13. data/spec/javascripts/fixtures/xkcd.css +191 -0
  14. data/spec/javascripts/helpers/jasmine-jquery.js +660 -0
  15. data/spec/javascripts/helpers/jquery.simulate-ext.js +32 -0
  16. data/spec/javascripts/helpers/jquery.simulate.drag-n-drop.js +583 -0
  17. data/spec/javascripts/helpers/jquery.simulate.js +328 -0
  18. data/spec/javascripts/support/jasmine.yml +99 -0
  19. data/vendor/assets/javascripts/jquery-2.0.1.js +8837 -0
  20. data/vendor/assets/javascripts/jquery-ui-1.10.3.custom.min.js +6 -0
  21. data/vendor/assets/javascripts/jquery.json-2.4.min.js +24 -0
  22. data/vendor/assets/stylesheets/ui-lightness/images/animated-overlay.gif +0 -0
  23. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  24. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  25. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  26. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  27. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  28. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  29. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  30. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  31. data/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  32. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  33. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  34. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  35. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  36. data/vendor/assets/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  37. data/vendor/assets/stylesheets/ui-lightness/jquery-ui-1.10.3.custom.min.css +5 -0
  38. metadata +51 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b02cccd0f9fc456b32c0172a91aa790b3d06132
4
- data.tar.gz: 0ca2e4a60db0d971dc0b1aa443e208efef0d7a5b
3
+ metadata.gz: b5d1bbd1e907d9bca6cf807a94caefc63a94b164
4
+ data.tar.gz: fe4987187244948facaa3a1bcf89b4240f1a385a
5
5
  SHA512:
6
- metadata.gz: f6fdc80bedf5f03cca40990d7608acd67e402f6c4e21923610389c20a285a2639a50eedd8456e983584303bf405e5ce1cf7764cce9f35a9e87e6887dbb965027
7
- data.tar.gz: d599207ecde8c8dd194a05c5b4582ec0ccda398def397d26618a9526cd1242a91e3197c18bbea8d0b279d3b640dd3f8050dc23c6c1e11cddea82a1d681396b5e
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/">|&lt;</a>
56
+ </li>
57
+ <li>
58
+ <a rel="prev" href="http://xkcd.com/1216/" accesskey="p">&lt; 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 &gt;</a>
65
+ </li>
66
+ <li>
67
+ <a href="http://xkcd.com/">&gt;|</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/">|&lt;</a>
80
+ </li>
81
+ <li>
82
+ <a rel="prev" href="http://xkcd.com/1216/" accesskey="p">&lt; 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 &gt;</a>
89
+ </li>
90
+ <li>
91
+ <a href="http://xkcd.com/">&gt;|</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/">|&lt;</a>
75
+ </li>
76
+ <li>
77
+ <a rel="prev" href="http://xkcd.com/1216/" accesskey="p">&lt; 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 &gt;</a>
84
+ </li>
85
+ <li>
86
+ <a href="http://xkcd.com/">&gt;|</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/">|&lt;</a>
99
+ </li>
100
+ <li>
101
+ <a rel="prev" href="http://xkcd.com/1216/" accesskey="p">&lt; 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 &gt;</a>
108
+ </li>
109
+ <li>
110
+ <a href="http://xkcd.com/">&gt;|</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&amp;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
+