erbook 8.0.0 → 9.0.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.
@@ -23,12 +23,13 @@
23
23
  * [Project home](<%= $website %>) --- the <%= $project %> project home page.
24
24
 
25
25
  To get help or provide feedback, simply
26
- <%= xref "License", "contact the author(s)" %>.
26
+ %= xref "License", "contact the author(s)."
27
27
 
28
28
 
29
29
  %|section "Features"
30
30
 
31
31
  <%= $project %> is exciting because:
32
+
32
33
  * Its documents are scriptable [eRuby templates](<%= eruby_url %>).
33
34
  * It lets you <%= xref "HelloWorld", "define your own document formats" %>.
34
35
  * It emits beautiful <%= xref "xhtml", "XHTML (web page)" %> documents.
@@ -47,11 +48,12 @@
47
48
 
48
49
  %|section "Credits" |n|
49
50
 
50
- %= $logo = n.xref_link("![#{$project} logo](#{$program}.png)".to_inline_xhtml)
51
+ %= $logo = n.xref_link("![#{$project} logo](#{$program}.png)".to_xhtml)
51
52
 
52
53
  %< "README"
53
54
 
54
- <%= $project %> is made possible by
55
+ %= $project
56
+ is made possible by
55
57
  %= xref "History", "contributions"
56
58
  from users like you:
57
59
 
@@ -26,14 +26,14 @@
26
26
  %|td
27
27
  Ruby language interpreter
28
28
  %|td
29
- Version 1.8.7 or newer is required.
29
+ Version 1.8.7 and 1.9.1 have been tested successfully.
30
30
  %|tr
31
31
  %|td
32
32
  [RubyGems](http://rubygems.org)
33
33
  %|td
34
34
  Ruby packaging system
35
35
  %|td
36
- Version 1.0.0 or newer is required.
36
+ Version 1.3.5 or newer is required.
37
37
 
38
38
 
39
39
  %|section "Installation"
@@ -44,20 +44,24 @@
44
44
 
45
45
  To check whether the installation was sucessful, run this command:
46
46
 
47
- <%= $program %> -v
47
+ <%= $program %> --version
48
48
 
49
49
  If the installation was successful, you will see output like this:
50
50
 
51
- <pre><%= verbatim `ruby bin/#{$program} -v` %></pre>
51
+ %|text
52
+ %= verbatim `ruby bin/#{$program} --version`
52
53
 
53
- Otherwise, you can <%= xref "License", "contact the author" %> for help.
54
+ If you do not see such output, you may
55
+ %= xref "License", "ask the author(s)"
56
+ for help.
54
57
 
55
58
 
56
59
  %|section "Package contents"
57
60
 
58
- You will see the following items inside <%= $project %>'s installation directory, whose path you can determine by running this command:
61
+ You will see the following items inside <%= $project %>'s installation
62
+ directory, whose path you can determine by running this command:
59
63
 
60
- <%= $program %> -v
64
+ <%= $program %> --version
61
65
 
62
66
  * <tt>bin/</tt>
63
67
 
@@ -78,15 +82,17 @@
78
82
 
79
83
  * <tt>rdoc.rb</tt> --- provides RDoc parse trees to Ruby code.
80
84
 
81
- * <tt>doc/</tt> --- contains this manual and other documentation.
85
+ * <tt>doc/</tt>
86
+
87
+ * <tt>api/</tt> --- API reference documentation.
82
88
 
83
89
  * <tt><%= $program %>.svg</tt> --- source file of the <%= $project %> logo.
84
90
 
85
91
  * <tt>index.erb</tt> --- source file of this manual.
86
92
 
87
- * <tt>api/</tt> --- API reference documentation.
93
+ * <tt>LICENSE</tt> --- copyright notice and legal conditions.
88
94
 
89
- * <tt>LICENSE</tt> --- project license and copyright notice.
95
+ * <tt>CREDITS</tt> --- attribution of project contributors.
90
96
 
91
97
 
92
98
  %|section "Version numbers"
@@ -367,7 +367,6 @@
367
367
  `String`
368
368
  %|td
369
369
  Path of the current format specification file.
370
- %|tr
371
370
 
372
371
  % output_template_table_builder.call lambda {
373
372
  %|tr
@@ -419,14 +418,16 @@
419
418
 
420
419
  %|example! "HelloWorld format specification file", "HelloWorld.spec"
421
420
 
422
- <code lang="rhtml"><%= verbatim File.read('doc/HelloWorld.spec') %></code>
421
+ %|code :rhtml
422
+ %= verbatim File.read('doc/HelloWorld.spec')
423
423
 
424
424
 
425
425
  %|example! "Input document for HelloWorld format", "HelloWorld.input"
426
426
 
427
427
  Note that this input document uses the [*shorthand* eRuby directive syntax](<%= Ember::WEBSITE %>#Directives) and the [implicit <tt><%% end %></tt> inference](<%= Ember::WEBSITE %>#Infer-block-endings) features of the [<%= Ember::PROJECT %>](<%= Ember::WEBSITE %>) <%= Ember::TAGLINE %>.
428
428
 
429
- <code lang="rhtml"><%= verbatim File.read('doc/HelloWorld.input') %></code>
429
+ %|code :rhtml
430
+ %= verbatim File.read('doc/HelloWorld.input')
430
431
 
431
432
 
432
433
  %|example! "Output of HelloWorld format", "HelloWorld.output"
@@ -8,7 +8,14 @@
8
8
 
9
9
  %|section "Command-line interface"
10
10
 
11
- <pre><%= `ruby bin/#{$program} -h` %></pre>
11
+ When you run this command:
12
+
13
+ <%= $program %> --help
14
+
15
+ You will see this output:
16
+
17
+ %|text
18
+ %= verbatim `ruby bin/#{$program} --help`
12
19
 
13
20
  The first command-line argument to <%= $project %> is either the name of a predefined format (FormatName) or the path to a <%= xref "SpecFile", "format specification file" %> (FormatFile).
14
21
 
@@ -33,9 +40,9 @@
33
40
  Otherwise, Microsoft web browsers _will not display_ your XHTML document and will instead prompt the reader to save your XHTML document as a file on their computer. See [this detailed explanation](http://www.howtocreate.co.uk/wrongWithIE/?chapter=XHTML) for details.
34
41
 
35
42
 
36
- %|section "Unindenting nodes hierarchically"
43
+ %|section "Unindenting nodes hierarchically"
37
44
 
38
- When writing <%= $project %> documents, I prefer to indent the content of nodes according to their depth because my [text editor of choice](http://jedit.org) automatically folds blocks of text based on indentation.
45
+ When writing <%= $project %> documents, I prefer to indent the content of nodes according to their depth because my [text editor of choice](http://jedit.org) automatically folds blocks of text based on indentation.
39
46
 
40
- If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <%= $project %> so that the indentation will not affect the resulting output.
47
+ If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <%= $project %> so that the indentation will not affect the resulting output.
41
48
 
@@ -9,7 +9,7 @@ code: |
9
9
  ICONS_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml', 'icons')
10
10
  JQUERY_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml', 'jquery')
11
11
 
12
- # load the String#to_xhtml and String#to_inline_xhtml methods
12
+ # load the String#to_xhtml methods
13
13
  require 'erbook/to_xhtml'
14
14
 
15
15
  class String
@@ -93,7 +93,7 @@ code: |
93
93
  data = base_64_encode_file(path)
94
94
 
95
95
  require 'mime/types'
96
- mime = MIME::Types.of(path)
96
+ mime = MIME::Types.of(path).to_a.join(',')
97
97
 
98
98
  base_64_embed data, mime
99
99
  end
@@ -124,15 +124,21 @@ code: |
124
124
  # Returns a CSS url() containing embedded image data.
125
125
  #
126
126
  def data_css
127
- %{url("#{data_uri}")}
127
+ %{url(#{embed_uri})}
128
128
  end
129
129
 
130
130
  ##
131
- # Returns an <img/> tag that renders an embedded data URI.
131
+ # Returns a temporary data URI that will be replaced
132
+ # with the actual data URI at runtime by javascript.
133
+ #
134
+ alias embed_uri object_id
135
+
136
+ ##
137
+ # Returns an image tag that renders an embedded data URI.
132
138
  #
133
139
  def to_xhtml atts = {}
134
140
  atts[:alt] ||= name
135
- atts[:src] = data_uri
141
+ atts[:src] = embed_uri
136
142
  atts[:class] = :icon
137
143
  "<img#{atts.to_xml_atts}/>"
138
144
  end
@@ -169,7 +175,7 @@ code: |
169
175
  end
170
176
 
171
177
  ##
172
- # Returns an <img/> tag that embeds the given image file.
178
+ # Returns an image tag that embeds the given image file.
173
179
  #
174
180
  # [path]
175
181
  # path to the image file
@@ -178,7 +184,7 @@ code: |
178
184
  # format of the image file (e.g. PNG, JPEG, GIF, etc.)
179
185
  #
180
186
  # [atts]
181
- # additional attributes for the <img> tag
187
+ # additional attributes for the image tag
182
188
  #
183
189
  def embed_image_file path, format = path[/\w+/], atts = {}
184
190
  data = ERBook.base_64_encode File.read(path)
@@ -186,7 +192,7 @@ code: |
186
192
  end
187
193
 
188
194
  ##
189
- # Returns an <img/> tag that embeds the given raw image data.
195
+ # Returns an image tag that embeds the given raw image data.
190
196
  #
191
197
  # [data]
192
198
  # raw image data
@@ -195,7 +201,7 @@ code: |
195
201
  # format of the image file (e.g. PNG, JPEG, GIF, etc.)
196
202
  #
197
203
  # [atts]
198
- # additional attributes for the <img> tag
204
+ # additional attributes for the image tag
199
205
  #
200
206
  def embed_image_data data, format, atts = {}
201
207
  atts[:src] = ERBook.base_64_embed_image_data(data, format)
@@ -242,7 +248,7 @@ code: |
242
248
  # Returns the title of this node as XHTML.
243
249
  #
244
250
  def title_xhtml
245
- title.to_s.to_inline_xhtml
251
+ title.to_s.to_xhtml
246
252
  end
247
253
 
248
254
  ##
@@ -253,10 +259,12 @@ code: |
253
259
  end
254
260
 
255
261
  ##
256
- # Returns the content of this node as inline XHTML.
262
+ # Returns the result of wrapping
263
+ # this node's content in the given
264
+ # tag and converting it into XHTML.
257
265
  #
258
- def content_inline_xhtml
259
- content.join.to_inline_xhtml
266
+ def wrap_content_xhtml tag, atts = {}
267
+ %{<#{tag}#{atts.to_xml_atts}>#{content.join}</#{tag}>}.to_xhtml
260
268
  end
261
269
 
262
270
  ##
@@ -321,7 +329,7 @@ code: |
321
329
  %{<div class="tabs"><ul>} +
322
330
 
323
331
  pc.map do |c|
324
- %{<li><a href="##{c.here_frag}">#{c.title.to_s.to_inline_xhtml}</a></li>}
332
+ %{<li><a href="##{c.here_frag}">#{c.title.to_s.to_xhtml}</a></li>}
325
333
  end.join +
326
334
 
327
335
  %{</ul>}
@@ -385,7 +393,7 @@ code: |
385
393
  [prefix, (%{"#{title}"} if label && title)].compact.join('. ')
386
394
  end
387
395
 
388
- label_xhtml = (label || title).to_s.to_inline_xhtml
396
+ label_xhtml = (label || title).to_s.to_xhtml
389
397
 
390
398
  %{<a class="xref" href="##{here_frag}" title="#{::ERB::Util.h caption}">#{label_xhtml}</a>}
391
399
  end
@@ -429,17 +437,28 @@ code: |
429
437
  nodes:
430
438
  # theory
431
439
 
432
- node: &wrapper
440
+ node: &node
433
441
  index: false
442
+ chain: false
434
443
  number: false
435
- inline: true
436
444
  silent: false
445
+ inline: true
437
446
  output: <%= @node.content_xhtml %>
438
447
 
448
+ text: &text
449
+ <<: *node
450
+ inline: false
451
+ output: <%= @node.wrap_content_xhtml :pre %>
452
+
453
+ code:
454
+ <<: *text
455
+ params: language
456
+ output: <%= @node.wrap_content_xhtml :code, :lang => @node.language %>
457
+
439
458
  # structure
440
459
 
441
460
  header: &header
442
- <<: *wrapper
461
+ <<: *node
443
462
  silent: true
444
463
 
445
464
  header_outside_above: &header_insert
@@ -460,7 +479,7 @@ nodes:
460
479
  footer_outside_below: *header_insert
461
480
 
462
481
  abstract:
463
- <<: *wrapper
482
+ <<: *node
464
483
  output: |
465
484
  <div id="<%= @node.type_frag %>">
466
485
  <h1 class="title"><%= @node.type_label %></h1>
@@ -471,9 +490,10 @@ nodes:
471
490
 
472
491
  part: &latex
473
492
  index: tree
493
+ chain: true
474
494
  number: section
475
- inline: false
476
495
  silent: false
496
+ inline: false
477
497
  params: [title, id]
478
498
  output: |
479
499
  <%= @node.parent_tabs_begin %>
@@ -521,11 +541,17 @@ nodes:
521
541
 
522
542
  float:
523
543
  index: list
544
+ chain: true
524
545
  number: ordinal
525
- inline: false
526
546
  silent: false
547
+ inline: false
527
548
  params: [title, id, type]
528
549
  output: |
550
+ <%
551
+ if @node.type == 'command' and @node.title
552
+ @node.title = "<tt>#{verbatim @node.title}</tt>"
553
+ end
554
+ %>
529
555
  <%= @node.parent_tabs_begin %>
530
556
  <div class="<%= @node.type %>" id="<%= @node.here_frag %>">
531
557
  <%= @node.navigation %>
@@ -544,22 +570,20 @@ nodes:
544
570
  # tables
545
571
 
546
572
  table: &table
547
- index: false
548
- number: false
549
- inline: true
550
- silent: false
573
+ <<: *node
574
+ inline: false
551
575
  params: [xml_atts]
552
576
  output: |
553
- <table border="1"<%=
577
+ <ins><table border="1"<%=
554
578
  (@node.xml_atts || {}).to_xml_atts
555
- %>><%= @node.content_xhtml %></table>
579
+ %>><%= @node.content_xhtml %></table></ins>
556
580
 
557
581
  thead: &table_child
558
582
  <<: *table
559
583
  output: |
560
584
  <<%= @node.type %><%=
561
585
  (@node.xml_atts || {}).to_xml_atts
562
- %>><%= @node.content_inline_xhtml %></<%= @node.type %>>
586
+ %>><%= @node.content_xhtml %></<%= @node.type %>>
563
587
 
564
588
  tbody: *table_child
565
589
  tfoot: *table_child
@@ -569,10 +593,7 @@ nodes:
569
593
 
570
594
  # cross-references
571
595
  xref:
572
- index: false
573
- number: false
574
- inline: true
575
- silent: false
596
+ <<: *node
576
597
  params: [query, label]
577
598
  output: |
578
599
  <%=
@@ -591,16 +612,14 @@ nodes:
591
612
 
592
613
  reference: &reference
593
614
  index: false
615
+ chain: false
594
616
  number: ordinal
595
- inline: false
596
617
  silent: true
618
+ inline: false
597
619
  params: [title, id]
598
620
 
599
621
  cite:
600
- index: false
601
- number: false
602
- inline: true
603
- silent: false
622
+ <<: *node
604
623
  params: [target]
605
624
  output: |
606
625
  <%=
@@ -644,7 +663,7 @@ output: |
644
663
  (n.section_number.to_s + '&nbsp;&nbsp;' if n.section_number),
645
664
  n.list_frag,
646
665
  n.here_frag,
647
- n.title.to_s.to_inline_xhtml
666
+ n.title.to_s.to_xhtml
648
667
  ]
649
668
 
650
669
  %{<li>#{entry}#{"<ul>#{nested}</ul>" if nested}</li>}
@@ -671,7 +690,7 @@ output: |
671
690
  lof_sections_frag_and_label = []
672
691
  lof = lof_enums.sort.map do |type, nodes|
673
692
  nested = nodes.map do |n|
674
- %{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_inline_xhtml}</a></li>}
693
+ %{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_xhtml}</a></li>}
675
694
  end.join
676
695
 
677
696
  label = ERBook::PHRASES[type.capitalize << 's']
@@ -681,8 +700,8 @@ output: |
681
700
  %{<div id="#{frag}"><h2 class="title">#{label}</h2> <ol>#{nested}</ol></div>}
682
701
  end
683
702
  %><?xml version="1.0" encoding="utf-8"?>
684
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
685
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
703
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
704
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
686
705
  <html xmlns="http://www.w3.org/1999/xhtml">
687
706
  <head>
688
707
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
@@ -694,7 +713,7 @@ output: |
694
713
  % if $title || $subtitle
695
714
  <title><%=
696
715
  [$title, $subtitle].compact.map do |t|
697
- t.to_s.to_inline_xhtml
716
+ t.to_s.to_xhtml
698
717
  end.join(' &mdash; ')
699
718
  %></title>
700
719
 
@@ -722,36 +741,6 @@ output: |
722
741
 
723
742
  css
724
743
  %>
725
-
726
- .ui-widget
727
- {
728
- /* prevent nested widgets from having larger fonts */
729
- font-size: 1em;
730
- }
731
-
732
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a
733
- {
734
- cursor: pointer;
735
- }
736
-
737
- /* decorate external hyperlinks with a visual indicator */
738
- a[href]:not([href^="#"])
739
- {
740
- background : <%= ICON_BY_NAME['hyperlink'].data_css %>;
741
- background-position : center right;
742
- background-repeat : no-repeat;
743
- padding-right : 13px;
744
- }
745
-
746
- /* display icon for blockquote elements */
747
- blockquote
748
- {
749
- background-image : <%= ICON_BY_NAME['quote'].data_css %>;
750
- background-repeat : no-repeat;
751
- margin-left : 0;
752
- padding-left : 65px;
753
- min-height : 50px;
754
- }
755
744
  /*]]>*/
756
745
  </style>
757
746
 
@@ -789,11 +778,13 @@ output: |
789
778
  %>
790
779
 
791
780
  <div id="__loading__">
792
- <%= ERBook::PHRASES['Loading...'] %> <noscript><%= ERBook::PHRASES['Failed!'] %>
793
- <p><%= ERBook::PHRASES['Please enable JavaScript in your Web browser.'] %></p>
794
-
795
- %= text_only_browser_divider
796
- </noscript>
781
+ <%= ERBook::PHRASES['Loading...'] %> <noscript><%=
782
+ "<ins>%s</ins> <p>%s</p> %s" % [
783
+ ERBook::PHRASES['Failed!'],
784
+ ERBook::PHRASES['Please enable JavaScript in your Web browser.'],
785
+ text_only_browser_divider
786
+ ]
787
+ %></noscript>
797
788
  </div>
798
789
 
799
790
  <div id="__body__">
@@ -810,10 +801,10 @@ output: |
810
801
 
811
802
  <div class="title_and_subtitle">
812
803
  % if $title
813
- <h1 class="title"><%= $title.to_s.to_inline_xhtml %></h1>
804
+ <h1 class="title"><%= $title.to_s.to_xhtml %></h1>
814
805
 
815
806
  % if $subtitle
816
- <h2 class="subtitle"><%= $subtitle.to_s.to_inline_xhtml %></h2>
807
+ <h2 class="subtitle"><%= $subtitle.to_s.to_xhtml %></h2>
817
808
  </div>
818
809
 
819
810
  <div class="authors_and_date">
@@ -868,7 +859,7 @@ output: |
868
859
  <h1 style="display: none"><%= ERBook::PHRASES['Document'] %></h1>
869
860
  <ul>
870
861
  % @roots.select {|n| n.index_toc? }.each do |n|
871
- <li><a href="#<%= n.here_frag %>"><%= n.title.to_s.to_inline_xhtml %></a></li>
862
+ <li><a href="#<%= n.here_frag %>"><%= n.title.to_s.to_xhtml %></a></li>
872
863
  </ul>
873
864
 
874
865
  %= @content
@@ -938,7 +929,7 @@ output: |
938
929
  <p class="validations">
939
930
  <a href="http://validator.w3.org/check?uri=referer"><img
940
931
  src="http://www.w3.org/Icons/valid-xhtml10-blue"
941
- alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
932
+ alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
942
933
 
943
934
  <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
944
935
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
@@ -1110,12 +1101,10 @@ javascript: |
1110
1101
  var target_is_panel = target.is('div') &&
1111
1102
  target.parent('.ui-tabs').length;
1112
1103
 
1113
- var target_initially_hidden = target.is(':hidden');
1114
-
1115
1104
  //
1116
1105
  // reveal all tabs which contain the target
1117
1106
  //
1118
- if (target_initially_hidden) {
1107
+ if (target.is(':hidden')) {
1119
1108
  var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
1120
1109
 
1121
1110
  if (target_is_panel) {
@@ -1154,26 +1143,21 @@ javascript: |
1154
1143
  }
1155
1144
  }
1156
1145
 
1157
- var screen_before_scroll = $(window).scrollTop();
1146
+ var scroll_offset = scroll_target.offset().top;
1158
1147
 
1159
- $('html, body').animate(
1160
- { scrollTop: Math.floor(scroll_target.offset().top) },
1161
- 'slow', 'swing', function() {
1162
- var screen_after_scroll = $(window).scrollTop();
1148
+ //
1149
+ // set body height so that any element can be
1150
+ // brought to the top of the screen via scrolling
1151
+ //
1152
+ var document_height = $(document).height();
1153
+ var window_height = $(window).height();
1154
+ if (document_height - scroll_offset <= window_height) {
1155
+ $('body').css('min-height', document_height + window_height);
1156
+ }
1163
1157
 
1158
+ $('html, body').animate(
1159
+ { scrollTop: scroll_offset }, 'slow', 'swing', function() {
1164
1160
  set_hash(hash, target_is_panel);
1165
-
1166
- if (
1167
- !target_initially_hidden &&
1168
- screen_after_scroll == screen_before_scroll
1169
- ) {
1170
- //
1171
- // nothing changed on the screen.
1172
- // the target was already visible.
1173
- // highlight it to notify the user.
1174
- //
1175
- target.effect('highlight', 'slow');
1176
- }
1177
1161
  }
1178
1162
  );
1179
1163
  }
@@ -1251,6 +1235,44 @@ javascript: |
1251
1235
  ).append(" <%= ERBook::PHRASES['Printer friendly'] %>")
1252
1236
  );
1253
1237
 
1238
+ //
1239
+ // activate embedded data URIs
1240
+ //
1241
+ var data_uri_by_embed_uri = <%=
1242
+ result = {}
1243
+ ICONS.each do |icon|
1244
+ result[icon.embed_uri] = icon.data_uri
1245
+ end
1246
+
1247
+ require 'json'
1248
+ result.to_json
1249
+ %>;
1250
+
1251
+ $('img[src]').each(function() {
1252
+ var image = $(this);
1253
+ var data_uri = data_uri_by_embed_uri[image.attr('src')];
1254
+
1255
+ if (data_uri) {
1256
+ image.attr('src', data_uri);
1257
+ }
1258
+ });
1259
+
1260
+ $('style').each(function() {
1261
+ var style = $(this);
1262
+ var css = style.text();
1263
+
1264
+ if (css) {
1265
+ for (var embed_uri in data_uri_by_embed_uri) {
1266
+ var src = new RegExp('\\burl\\(' + embed_uri + '\\)', 'g');
1267
+ var dst = 'url("' + data_uri_by_embed_uri[embed_uri] + '")';
1268
+
1269
+ css = css.replace(src, dst);
1270
+ }
1271
+
1272
+ style.text(css);
1273
+ }
1274
+ });
1275
+
1254
1276
  //
1255
1277
  // ready for action!
1256
1278
  //
@@ -1283,6 +1305,11 @@ styles: # these are SASS templates
1283
1305
  blockquote
1284
1306
  color: #333
1285
1307
  font-style: italic
1308
+ background-image: <%= ICON_BY_NAME['quote'].data_css %>
1309
+ background-repeat: no-repeat
1310
+ margin-left: 0
1311
+ padding-left: 65px
1312
+ min-height: 50px
1286
1313
 
1287
1314
 
1288
1315
  hr
@@ -1301,12 +1328,11 @@ styles: # these are SASS templates
1301
1328
  code.para
1302
1329
  white-space: pre
1303
1330
 
1304
- ins > pre
1305
- text-decoration: none
1306
1331
 
1332
+ // proper container (according to XHTML validation) for
1333
+ // inserting block-level elements in arbitrary locations
1307
1334
  ins
1308
- // for IE only, because the above "ins > pre" does not work
1309
- .text-decoration: none
1335
+ text-decoration: none
1310
1336
 
1311
1337
 
1312
1338
  a > img
@@ -1468,6 +1494,15 @@ styles: # these are SASS templates
1468
1494
  clear: both
1469
1495
 
1470
1496
 
1497
+ .ui-widget
1498
+ // prevent nested widgets from having larger fonts
1499
+ font-size: 1em
1500
+
1501
+
1502
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a
1503
+ cursor: pointer
1504
+
1505
+
1471
1506
  tt
1472
1507
  background-color: #F0F8FF
1473
1508
 
@@ -1517,16 +1552,17 @@ styles: # these are SASS templates
1517
1552
  &:visited
1518
1553
  color: #800080
1519
1554
 
1555
+ // decorate external hyperlinks with a visual indicator
1556
+ &[href]:not([href^="#"])
1557
+ background: <%= ICON_BY_NAME['hyperlink'].data_css %>
1558
+ background-position: center right
1559
+ background-repeat: no-repeat
1560
+ padding-right: 13px
1561
+
1520
1562
 
1521
1563
  #__header__ >
1522
1564
  .logo
1523
- float: left
1524
- margin-right: 1em
1525
- margin-top: 0.25em
1526
-
1527
- img
1528
- max-height: 4em
1529
- max-width: 4em
1565
+ text-align: center
1530
1566
 
1531
1567
  .title_and_subtitle
1532
1568
  float: left
@@ -1565,12 +1601,22 @@ styles: # these are SASS templates
1565
1601
 
1566
1602
  .nav
1567
1603
  float: right
1604
+ clear: right
1568
1605
 
1569
- > a > img
1570
- border-top: thick solid #FFFFFF
1606
+ > a > img:hover
1607
+ background-color: yellow
1571
1608
 
1572
- &:hover
1573
- border-top: thick solid #FA8072
1609
+
1610
+ // make navigation menu appear on the tab bar
1611
+ .ui-tabs > .ui-tabs-panel > .nav
1612
+ position: relative
1613
+ margin-top: -3.375em
1614
+ margin-right: -1em
1615
+
1616
+
1617
+ // prevent tabs on tab bar from ovelapping with the above navigation menu
1618
+ .ui-tabs > .ui-tabs-nav > li:last-child
1619
+ margin-right: 9em
1574
1620
 
1575
1621
 
1576
1622
  #__nfo__ > table td:first-child, #__nfo__ > .validations