nandoc 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/README +124 -0
  2. data/Rakefile +53 -0
  3. data/bin/nandoc +6 -0
  4. data/doc/CREDITS.md +6 -0
  5. data/doc/FAQ/why-not-wiki.md +20 -0
  6. data/doc/FAQ.md +68 -0
  7. data/doc/TODOs-and-BUGs.md +15 -0
  8. data/doc/bar/baz.md +4 -0
  9. data/doc/bar/bliff.md +8 -0
  10. data/doc/foo.md +5 -0
  11. data/doc/getting-started.rb +13 -0
  12. data/doc/svg/less-fonts.svg +21 -0
  13. data/lib/nandoc/commands/create-nandoc-site.rb +225 -0
  14. data/lib/nandoc/commands/diff.rb +279 -0
  15. data/lib/nandoc/config.rb +58 -0
  16. data/lib/nandoc/cri-hacks.rb +13 -0
  17. data/lib/nandoc/data-source.rb +239 -0
  18. data/lib/nandoc/filters.rb +661 -0
  19. data/lib/nandoc/helpers/menu-bouncy.rb +109 -0
  20. data/lib/nandoc/helpers/site-map.rb +157 -0
  21. data/lib/nandoc/helpers/top-nav.rb +47 -0
  22. data/lib/nandoc/helpers.rb +42 -0
  23. data/lib/nandoc/item-class-hacks.rb +57 -0
  24. data/lib/nandoc/nandoc.persistent.json +3 -0
  25. data/lib/nandoc/parse-readme.rb +95 -0
  26. data/lib/nandoc/spec-doc/mini-test/spec-instance-methods.rb +0 -0
  27. data/lib/nandoc/spec-doc/mini-test.rb +105 -0
  28. data/lib/nandoc/spec-doc/mock-prompt.rb +121 -0
  29. data/lib/nandoc/spec-doc/support-modules.rb +158 -0
  30. data/lib/nandoc/spec-doc/test-case-agent.rb +57 -0
  31. data/lib/nandoc/spec-doc/test-framework-dispatcher.rb +15 -0
  32. data/lib/nandoc/spec-doc/test-framework-proxy.rb +78 -0
  33. data/lib/nandoc/spec-doc.rb +46 -0
  34. data/lib/nandoc/support/diff-proxy.rb +113 -0
  35. data/lib/nandoc/support/orphanage.rb +77 -0
  36. data/lib/nandoc/support/path-tardo.rb +85 -0
  37. data/lib/nandoc/support/regexp-enhance.rb +76 -0
  38. data/lib/nandoc/support/site-diff.rb +46 -0
  39. data/lib/nandoc/support/site-merge.rb +62 -0
  40. data/lib/nandoc/support/site-methods.rb +69 -0
  41. data/lib/nandoc/support/stream-colorizer.rb +203 -0
  42. data/lib/nandoc/support-modules.rb +270 -0
  43. data/lib/nandoc/test/diff-to-string.rb +251 -0
  44. data/lib/nandoc/test/minitest-extlib.rb +53 -0
  45. data/lib/nandoc/treebis/NOGIT-DOCS/NEWS.md +5 -0
  46. data/lib/nandoc/treebis/NOGIT-README.md +65 -0
  47. data/lib/nandoc/treebis/nandoc.persistent.json +3 -0
  48. data/lib/nandoc.rb +48 -0
  49. data/proto/README.md +31 -0
  50. data/proto/default/Rakefile +1 -0
  51. data/proto/default/Rules +46 -0
  52. data/proto/default/config.yaml +57 -0
  53. data/proto/default/content/css/nanoc-dist-altered.css +213 -0
  54. data/proto/default/content/css/trollop-subset.css +116 -0
  55. data/proto/default/content/js/menu-bouncy.js +126 -0
  56. data/proto/default/content/stylesheet.css.diff +20 -0
  57. data/proto/default/content/vendor/jquery-1.3.js +4241 -0
  58. data/proto/default/content/vendor/jquery.easing.1.3.js +205 -0
  59. data/proto/default/layouts/default.html +70 -0
  60. data/proto/default/lib/default.orig.rb +2 -0
  61. data/proto/default/lib/default.rb +5 -0
  62. data/proto/default/treebis-task.rb +28 -0
  63. data/proto/misc/orphan-surrogate.md +6 -0
  64. data/test/test.rb +102 -0
  65. metadata +166 -0
data/proto/README.md ADDED
@@ -0,0 +1,31 @@
1
+ ### Abstract
2
+
3
+ This document presents three implementation alternatives of NanDoc site creation, and then explains why we are going with the one we are going with at the time of this writing. (It was also a chance for me to experiment with markdown footnotes!)
4
+
5
+
6
+ ### Prototypes
7
+
8
+ Each folder in this folder is a 'prototype' nanoc installation. (Probably only one folder, called 'default'.) (The folder called 'misc' holds one-off templates for ad-hoc stuff, maybe for helpers etc.)
9
+
10
+ The result of each such prototype is comparable to the filetree you get from a default nanoc 'create_site' command, but altered accordingly to be a NanDoc site, whatever that will come to mean.
11
+
12
+
13
+ ### Changesets through Treebis
14
+
15
+ The prototype site(s) in this folder is probably expressed as a cangeset to an existing default filetree created by `nanoc create_site <my-site>`. Given that the default NanDoc site is rougly 90% the same as a default Nanoc3 site ATTOTW, the author felt that it would be best to represent the default NanDoc site as a diff of the default Nanoc site.[^1]
16
+
17
+ [^1]: At such time as this percentage drops significantly we will reconsider this decision.
18
+
19
+ Thus the changesets here are the minimal readable expression of changes we want to make to a default nanoc site tree, to alter it to be a default NanDoc
20
+ site tree. These changesets are expressed using a Treebis 'patch' which is some files along with a Treebis task. (See documentation there for gory details.)
21
+
22
+ One big unified diff would have worked to this end, but the author felt that a Treebis patch was more readable and navigable, especially through the perspective of a VCS, which will now be carrying diffs of diffs.
23
+
24
+
25
+ #### Caveats and notes
26
+
27
+ An alternative would be to represent the files we need in our default site tree in their entirety here, and not rely on the nanoc create_site command.[^2] This would have the advantage that it would be less fragile than the current implementation, which will break whenever there are significant changes to the defult site from Nanoc. However the current implementation has the advantage that A) it might pick up future changes to the nandoc site provided our patch doens't break on it, and B) we get this de-facto early warning mechanism about changes to the default nandoc app site content and structure.
28
+
29
+ [^2]: We may still rely on the command but not the files it ouputs.
30
+
31
+ In other words, the disadvantage is that this goes stale loudly. The advantage is that it goes stale loudly.
@@ -0,0 +1 @@
1
+ require 'nanoc3/tasks'
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # * The order of rules is important: for each item, only the first matching
4
+ # rule is applied.
5
+ #
6
+ # * Item identifiers start and end with a slash (e.g. "/about/" for the file
7
+ # "content/about.html"). To select all children, grandchildren, ... of an
8
+ # item, use the pattern "/about/*/"; "/about/*" will also select the parent,
9
+ # because "*" matches zero or more characters.
10
+
11
+ PassThru = [
12
+ {:dir=>'css', :ext=>'css'},
13
+ {:dir=>'js', :ext=>'js'},
14
+ {:dir=>'vendor', :ext=>'js'}, # sucks
15
+ {:dir=>'svg', :ext=>'svg'}
16
+ ]
17
+ PassThru.each do |x|
18
+ compile("/#{x[:dir]}/*/"){ } # don't filter or layout
19
+ end
20
+
21
+ PassThru.each do |x|
22
+ dir, ext = x[:dir], x[:ext]
23
+ route "/#{dir}/*" do
24
+ if item.children.empty?
25
+ # only operate on leaf nodes
26
+ basename = item.identifier =~ /^(.+)\/$/ && $1 or
27
+ fail("parse fail: #{item.identifier}")
28
+ "#{basename}.#{ext}"
29
+ end
30
+ end
31
+ end
32
+
33
+ # removed some crazy logic in 4189c
34
+
35
+ compile '*' do
36
+ filter :nandoc
37
+ filter :erb
38
+ filter :kramdown
39
+ layout 'default'
40
+ end
41
+
42
+ route '*' do
43
+ item.identifier + 'index.html'
44
+ end
45
+
46
+ layout '*', :erb
@@ -0,0 +1,57 @@
1
+ # A list of file extensions that nanoc will consider to be textual rather than
2
+ # binary. If an item with an extension not in this list is found, the file
3
+ # will be considered as binary.
4
+ text_extensions: [ 'css', 'erb', 'haml', 'htm', 'html', 'js', 'less', 'markdown', 'md', 'php', 'rb', 'sass', 'txt' ]
5
+
6
+ # The path to the directory where all generated files will be written to. This
7
+ # can be an absolute path starting with a slash, but it can also be path
8
+ # relative to the site directory.
9
+ output_dir: output
10
+
11
+ # A list of index filenames, i.e. names of files that will be served by a web
12
+ # server when a directory is requested. Usually, index files are named
13
+ # "index.hml", but depending on the web server, this may be something else,
14
+ # such as "default.htm". This list is used by nanoc to generate pretty URLs.
15
+ index_filenames: [ 'index.html' ]
16
+
17
+ # Whether or not to generate a diff of the compiled content when compiling a
18
+ # site. The diff will contain the differences between the compiled content
19
+ # before and after the last site compilation.
20
+ enable_output_diff: false
21
+
22
+
23
+ # nanDoc: here is an example deployment config node.
24
+ # uncomment this, get it right, and try `rake deploy:rsync` from your mysite
25
+ # directory
26
+ # deploy:
27
+ # default:
28
+ # dst: "hipeland.org:/var/www/nandoc.hipeland.org"
29
+ #
30
+
31
+ # The data sources where nanoc loads its data from. This is an array of
32
+ # hashes; each array element represents a single data source. By default,
33
+ # there is only a single data source that reads data from the "content/" and
34
+ # "layout/" directories in the site directory.
35
+ data_sources:
36
+ -
37
+ config:
38
+ allow_periods_in_identifiers: true
39
+ source_file_basenames: ['README', 'NEWS', 'doc']
40
+ use_as_main_index: 'README.md'
41
+
42
+ site_prototype: default
43
+
44
+ # The type is the identifier of the data source. By default, this will be
45
+ # `filesystem_unified`.
46
+ type: nandoc
47
+
48
+ # The path where items should be mounted (comparable to mount points in
49
+ # Unix-like systems). This is "/" by default, meaning that items will have
50
+ # "/" prefixed to their identifiers. If the items root were "/en/"
51
+ # instead, an item at content/about.html would have an identifier of
52
+ # "/en/about/" instead of just "/about/".
53
+ items_root: /
54
+
55
+ # The path where layouts should be mounted. The layouts root behaves the
56
+ # same as the items root, but applies to layouts rather than items.
57
+ layouts_root: /
@@ -0,0 +1,213 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ /*
5
+ this was the nandoc-generated font-family:
6
+ font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif;
7
+ this was breaking the default browser's font for <code></code>,
8
+ decided just to go with the browser default font
9
+ */
10
+ }
11
+
12
+ body {
13
+ background: #fff;
14
+ }
15
+
16
+ a {
17
+ text-decoration: none;
18
+ }
19
+
20
+ a:link,
21
+ a:visited {
22
+ color: #f30;
23
+ }
24
+
25
+ a:hover {
26
+ color: #f90;
27
+ }
28
+
29
+ .main{
30
+ float:left;
31
+ left:59px;
32
+ position:relative;
33
+ top:40px;
34
+ width:500px;
35
+ }
36
+
37
+ .main h1 {
38
+ font-size: 40px;
39
+ font-weight: normal;
40
+ line-height: 40px;
41
+ letter-spacing: -1px;
42
+ }
43
+
44
+ .maincontent p {
45
+ margin: 20px 0;
46
+ font-size: 15px;
47
+ line-height: 20px;
48
+ }
49
+
50
+ /*
51
+ .main ul {
52
+ margin: 20px;
53
+ }*/
54
+ /*
55
+ .main li {
56
+ list-style-type: square;
57
+ font-size: 15px;
58
+ line-height: 20px;
59
+ }
60
+ */
61
+
62
+ .sidebar {
63
+ position: relative;
64
+ float: left;
65
+ top: 40px;
66
+ left: 20px;
67
+ width: 200px;
68
+ padding: 20px 20px 0 0;
69
+ border-right: 1px solid #ccc;
70
+ text-align: right;
71
+ }
72
+
73
+ .sidebar h2 {
74
+ /* moved to a class to make it more reusable */
75
+ margin-top:2em;
76
+ }
77
+ .sidebar h2.first {
78
+ margin-top: 0;
79
+ }
80
+
81
+ .sidebar ul {
82
+ list-style-type: none;
83
+ /*margin: 20px 0;*/
84
+ }
85
+
86
+ .sidebar li {
87
+ font-size: 14px;
88
+ line-height: 20px;
89
+ }
90
+
91
+ /*
92
+ ############################################################################
93
+ nandoc added.
94
+ alphabetical order disregarding element type, any leading nandoc- prefix
95
+ or whether it is an identifier or a class.
96
+ ) */
97
+ .bouncy-lvl1-sep {
98
+ float:left;
99
+ padding: 0 0.2em;
100
+ position: relative;
101
+ z-index: 1;
102
+ }
103
+ .bouncy-lvl2-menu {
104
+ background: #ccc;
105
+ padding: 0em 0.2em 0.2em 0.5em;
106
+ overflow: hidden;
107
+ position: absolute;
108
+ right: 0px;
109
+ text-align: right;
110
+ top: 1em;
111
+ z-index: -1;
112
+ -moz-border-radius-bottomleft: 8px;
113
+ -moz-border-radius-bottomright: 8px;
114
+ -moz-border-radius-topleft: 8px;
115
+ -moz-border-radius-topright: 0px;
116
+ -webkit-border-bottom-left-radius: 8px;
117
+ -webkit-border-bottom-right-radius: 8px;
118
+ -webkit-border-top-left-radius: 8px;
119
+ -webkit-border-top-right-radius: 0px;
120
+ }
121
+ .bouncy-lvl2-item {
122
+ white-space: nowrap;
123
+ }
124
+ .bouncy-lvl2-content a:link {
125
+ color: #333;
126
+ }
127
+ .bouncy-lvl2-content a:visited {
128
+ color: #000;
129
+ }
130
+ .bouncy-lvl2-content a:hover {
131
+ color: #f30;
132
+ }
133
+ .bouncy-lvl2-sep {
134
+
135
+ }
136
+ .clear {
137
+ clear: both;
138
+ }
139
+ .debug-ging-outline {
140
+ border: 1px solid orange;
141
+ }
142
+ div.footnotes{
143
+ font-size:0.9em;
144
+ }
145
+ dl.faces{
146
+ font-size: 14px;
147
+ line-height: 1.3em;
148
+ }
149
+ dl.faces dt{
150
+ clear: left;
151
+ float: left;
152
+ padding: 0 0.3em 0 0;
153
+ text-align: right;
154
+ width:9em;
155
+ }
156
+ dl.faces dd{
157
+ text-align: left;
158
+ }
159
+ .nandoc-menu-lvl-1{
160
+ float: left;
161
+ position: relative;
162
+ z-index: 2;
163
+ }
164
+ .nandoc-menu-sep {
165
+ float: left;
166
+ margin: 0 0.2em;
167
+ z-index; 1;
168
+ }
169
+ .nanoc-sidebar-h2 {
170
+ color: #333;
171
+ font-size: 13px;
172
+ font-weight: bold;
173
+ letter-spacing: 1px;
174
+ line-height: 20px;
175
+ text-transform: uppercase;
176
+ }
177
+ .main h2, .main h3, .main h4, .main h5, .main h6{
178
+ margin: 0.8em 0 0.4em 0
179
+ }
180
+ .main p{
181
+ margin: 0 0 0.4em 0;
182
+ }
183
+ .main ul{
184
+ margin: 0 0 0 1.0em;
185
+ }
186
+ p.answer:first-letter {
187
+ font-size: 1.5em;
188
+ font-weight: bold;
189
+ }
190
+ span.answer {
191
+ font-size: 1.5em;
192
+ font-weight: bold;
193
+ }
194
+ .sidebar ul.nested {
195
+ margin: 0 0;
196
+ }
197
+ .sidebar ul.nested li {
198
+ line-height: 1em;
199
+ }
200
+ #nandoc-site-map {
201
+ margin: 10px 12px 10px 0px
202
+ }
203
+ .nandoc-topnav {
204
+ padding: 18px 0 18px 0;
205
+ }
206
+ .nandoc-topnav-2 {
207
+ padding: 18px 0 18px 0;
208
+ border: 1px solid black;
209
+ }
210
+ .sidebar .links{
211
+ float: right;
212
+ text-align: center;
213
+ }
@@ -0,0 +1,116 @@
1
+ /* copy-pasted, apapted from William Morgan's Trollop */
2
+ /*
3
+ body {
4
+ margin-left:auto;
5
+ margin-right:auto;
6
+ width:800px;
7
+ }
8
+ */
9
+ code {
10
+ font-size:14px;
11
+ }
12
+ .ruby {
13
+ background:none repeat scroll 0 0 #111122;
14
+ color:#228822;
15
+ padding:10px;
16
+ /*width:800px;*/
17
+ }
18
+ .ruby .normal {
19
+ color:#FFFFFF;
20
+ }
21
+ .ruby .comment {
22
+ color:#9999FF;
23
+ }
24
+ .ruby .keyword {
25
+ color:#AA4444;
26
+ font-weight:bold;
27
+ }
28
+ .ruby .method {
29
+ color:#4444FF;
30
+ }
31
+ .ruby .class {
32
+ color:#00CC44;
33
+ }
34
+ .ruby .module {
35
+ color:#005500;
36
+ }
37
+ .ruby .punct {
38
+ color:#FFFF00;
39
+ font-weight:bold;
40
+ }
41
+ .ruby .symbol {
42
+ color:#FFFF00;
43
+ }
44
+ .ruby .string {
45
+ color:#44FF44;
46
+ }
47
+ .ruby .char {
48
+ color:#FF0077;
49
+ }
50
+ .ruby .ident {
51
+ color:#FFFFFF;
52
+ }
53
+ .ruby .constant {
54
+ color:#00CC44;
55
+ }
56
+ .ruby .regex {
57
+ background:none repeat scroll 0 0 #444444;
58
+ color:#BB6666;
59
+ }
60
+ .ruby .number {
61
+ color:#FF9999;
62
+ }
63
+ .ruby .attribute {
64
+ color:#FFCC44;
65
+ }
66
+ .ruby .global {
67
+ color:#77FFBB;
68
+ }
69
+ .ruby .expr {
70
+ color:#882277;
71
+ }
72
+ .ruby .escape {
73
+ color:#227777;
74
+ }
75
+ .terminal {
76
+ background:none repeat scroll 0 0 #111122;
77
+ /*color:#228822; this is green*/
78
+ color:#AFE793; /* this is pale green*/
79
+ margin:0 0 0.5em 0;
80
+ padding:10px;
81
+ /*width:800px;*/
82
+ }
83
+ .terminal .prompt { /* same as 'green' below */
84
+ color:#00C23C;
85
+ }
86
+ .terminal .normal {
87
+ color:#AFE793
88
+ }
89
+ .terminal .bright {
90
+ font-weight: bold;
91
+ }
92
+ .terminal .black {
93
+ color:#000000;
94
+ }
95
+ .terminal .green {
96
+ /* this is iTerm per digital color meter, not per web colors */
97
+ color:#00C23C;
98
+ }
99
+ .terminal .red {
100
+ color:#FF0000;
101
+ }
102
+ .terminal .yellow {
103
+ color:#FFFF00;
104
+ }
105
+ .terminal .blue {
106
+ color:#0000FF;
107
+ }
108
+ .terminal .magenta {
109
+ color:#FF00FF;
110
+ }
111
+ .terminal .cyan {
112
+ color:#00FFFF;
113
+ }
114
+ .terminal .white {
115
+ color:#FFFFFF;
116
+ }
@@ -0,0 +1,126 @@
1
+ $(document).ready(function(){
2
+ /*
3
+ This is adapted from Sam & Zach -
4
+ http://buildinternet.com/2009/01/how-to-make-a-smooth-animated-menu-with-jquery/
5
+
6
+ The use of stop() below is per -
7
+ http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup/
8
+
9
+ @todo maybe make it a jquery poogin
10
+
11
+ issues: if the mouse moves sufficiently fast, there is no mouseout event so
12
+ the menu stays open until etc.
13
+ */
14
+
15
+ $("a").click(function(){ //Remove outline from links
16
+ $(this).blur();
17
+ });
18
+
19
+ // var puts = (window.console && console.log) ? console.log : function(){};
20
+ var puts = function(){};
21
+
22
+ var menus = [];
23
+ var registerMenu = function(menu){
24
+ menu.data('identifier', menus.length);
25
+ menus.push(menu);
26
+ };
27
+
28
+ var findHotspotFromSepDiv = function(sepDiv){
29
+ var a = sepDiv.prev().find('a');
30
+ if (a.length) return a;
31
+ return sepDiv; // this is for items on level1 that have children and that
32
+ // we are at currently. (such items aren't hrefs, just text.)
33
+ }
34
+
35
+ var hideAnyShowing = function(){
36
+ for (var i=menus.length; i--;) {
37
+ var menu = menus[i];
38
+ if (menu.data('showing')) {
39
+ menu.data('hideMenu')(); // eew
40
+ }
41
+ }
42
+ };
43
+
44
+ var setupHotspotAndMenu = function(hotspot, menu){
45
+ registerMenu(menu);
46
+ var shortHeight, tallHeight, easing, duration;
47
+ shortHeight = '0px';
48
+ tallHeight = menu.height() + 'px';
49
+ easing = 'easeOutBounce';
50
+ duration = 600;
51
+ menu.height(shortHeight);
52
+ menu.hide();
53
+ var hide = function(){ menu.hide(); };
54
+ var showMenu = function(){
55
+ hideAnyShowing();
56
+ menu.data('showing', true);
57
+ menu.show();
58
+ menu.css({opacity: 1});
59
+ menu.stop().animate(
60
+ { height : tallHeight },
61
+ { queue:false, duration:duration, easing:easing }
62
+ );
63
+ };
64
+ var hideMenu = function(){
65
+ menu.data('showing', false);
66
+ menu.data('inMenu', false);
67
+ menu.stop().animate(
68
+ { height : shortHeight },
69
+ { queue:false, duration:duration, easing:easing, complete:hide }
70
+ );
71
+ menu.animate(
72
+ { opacity: 0 },
73
+ { duration: duration }
74
+ );
75
+ };
76
+ menu.data('hideMenu',hideMenu); // eew
77
+
78
+ var hotspotMouseover = function(){
79
+ if (menu.data('showing')){
80
+ puts("hs mouseover - showing so nothing.");
81
+ } else {
82
+ puts("hs mouseover - not showing so show.");
83
+ showMenu();
84
+ }
85
+ };
86
+ var hotspotMouseout = function(){
87
+ // hack - we need to wait a few beats to see if the mouse goes
88
+ // into the menu or not.
89
+ setTimeout(function(){
90
+ if (menu.data('inMenu')) {
91
+ puts("hotspot mouseout - in menu so stay.");
92
+ } else {
93
+ puts("hotspot mouseout - not in menu so hide.");
94
+ hideMenu();
95
+ }
96
+ },600);
97
+ };
98
+ var menuMouseover = function(e, e2){
99
+ if (!e) { e = e2; }
100
+ // this hits a lot b/c of all the elements in menu. we take them all
101
+ menu.data('inMenu', true);
102
+ };
103
+ var menuMouseout = function(e, e2){
104
+ if (!e) { e = e2; }
105
+ if (e.target != menu[0]){
106
+ // puts("menu mouseout - ignoring b/c menu was not target."); too noisy
107
+ } else {
108
+ puts("menu mouseout - always hides menu when menu was target.");
109
+ hideMenu();
110
+ }
111
+ };
112
+ hotspot.mouseover(hotspotMouseover);
113
+ hotspot.mouseout(hotspotMouseout);
114
+ menu.mouseover(menuMouseover);
115
+ menu.mouseout(menuMouseout);
116
+ };
117
+
118
+ els = $('.bouncy-lvl2-menu');
119
+ for (var i=els.length; i--;) {
120
+ var menu = $(els[i]);
121
+ var sepDiv = menu.parent();
122
+ var hotspot = findHotspotFromSepDiv(sepDiv);
123
+ setupHotspotAndMenu(hotspot, menu);
124
+ }
125
+
126
+ });
@@ -0,0 +1,20 @@
1
+ --- a/stylesheet.css 0000-00-00 00:00:00.000000000 -0000
2
+ +++ b/stylesheet.css 0000-00-00 00:00:00.000000000 -0000
3
+ @@ -1,12 +1,15 @@
4
+ * {
5
+ margin: 0;
6
+ padding: 0;
7
+ -
8
+ - font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif;
9
+ + /* no fonts here */
10
+ }
11
+
12
+ body {
13
+ background: #fff;
14
+ + /*font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif;
15
+ + we moved this from the * class to here, then decided nah, stick with
16
+ + default browser font to keep it simple and neutral
17
+ + */
18
+ }
19
+
20
+ a {