gerbil 2.0.0 → 2.1.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.
- data/LICENSE +2 -2
- data/bin/gerbil +2 -1
- data/doc/api/created.rid +1 -1
- data/doc/api/files/lib/gerbil/html_rb.html +1 -1
- data/doc/api/files/lib/gerbil/rdoc_rb.html +1 -1
- data/doc/api/files/lib/gerbil_rb.html +2 -2
- data/doc/guide.html +218 -207
- data/fmt/html.yaml +125 -96
- data/lib/gerbil.rb +2 -2
- metadata +2 -2
data/fmt/html.yaml
CHANGED
@@ -7,26 +7,6 @@ code: |
|
|
7
7
|
# load the String#to_html method
|
8
8
|
require 'gerbil/html'
|
9
9
|
|
10
|
-
# load admonition icons
|
11
|
-
Icon = Struct.new(:path, :name, :format, :data)
|
12
|
-
class Icon
|
13
|
-
# Returns a HTML image tag containing embedded image data. The given
|
14
|
-
# attributes (name => value) are applied to the HTML tag declaration.
|
15
|
-
def to_html aAttributes = {}
|
16
|
-
atts = aAttributes.inject('') {|s,(k,v)| s << %( #{k}="#{v}") }
|
17
|
-
%{<img src="data:image/#{format};base64,#{data}" alt="#{name}"#{atts}/>}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
ICONS = {}
|
22
|
-
Dir[File.join(Gerbil[:format_home], 'html.icons', '*.*')].each do |path|
|
23
|
-
ext = File.extname(path)
|
24
|
-
name = File.basename(path, ext)
|
25
|
-
data = [File.read(path)].pack('m')
|
26
|
-
|
27
|
-
ICONS[name] = Icon.new(path, name, ext.sub('.', ''), data)
|
28
|
-
end
|
29
|
-
|
30
10
|
class String
|
31
11
|
# Transforms this UTF-8 string into HTML entities.
|
32
12
|
def to_html_entities
|
@@ -48,7 +28,7 @@ code: |
|
|
48
28
|
if code > 0xFF or code.chr =~ /[[:alnum:]\-_:\.]/
|
49
29
|
code
|
50
30
|
else
|
51
|
-
|
31
|
+
32 # ASCII character code for a single space
|
52
32
|
end
|
53
33
|
end.pack('U*').strip.gsub(/[[:space:]-]+/, '-')
|
54
34
|
end
|
@@ -93,6 +73,54 @@ code: |
|
|
93
73
|
%{<a href="#{h aUrl}"#{%{ title="#{aTitle}"} if aTitle}>#{aName}</a>}
|
94
74
|
end
|
95
75
|
|
76
|
+
# Encodes the given input in base64 format.
|
77
|
+
def encode_base_64 aInput
|
78
|
+
[aInput].pack('m')
|
79
|
+
end
|
80
|
+
|
81
|
+
# Returns a HTML <img> tag that embeds the given image data.
|
82
|
+
#
|
83
|
+
# aData:: raw image image data in base64 encoding
|
84
|
+
# aFormat:: format of the image data (e.g. PNG, JPG, GIF, etc.)
|
85
|
+
# aAttrs:: additional attributes for the <img> tag
|
86
|
+
#
|
87
|
+
def embed_image_data aData, aFormat, aAttrs
|
88
|
+
atts = aAttrs.inject('') {|s,(k,v)| s << %( #{k}="#{v}") }
|
89
|
+
%{<img src="data:image/#{aFormat};base64,#{aData}"#{atts}/>}
|
90
|
+
end
|
91
|
+
|
92
|
+
# Returns a HTML <img> tag that embeds the given image file.
|
93
|
+
#
|
94
|
+
# aPath:: path to the image file
|
95
|
+
# aFormat:: format of the image data (e.g. PNG, JPG, GIF, etc.)
|
96
|
+
# aAttrs:: additional attributes for the <img> tag
|
97
|
+
#
|
98
|
+
def embed_image_file aPath, aFormat = aPath[/\w+$/], aAttrs = {}
|
99
|
+
data = encode_base_64 File.read(aPath)
|
100
|
+
embed_image_data data, aFormat, aAttrs
|
101
|
+
end
|
102
|
+
|
103
|
+
# load admonition icons
|
104
|
+
Icon = Struct.new(:path, :name, :format, :data)
|
105
|
+
|
106
|
+
class Icon
|
107
|
+
# Returns a HTML image tag containing embedded image data. The given
|
108
|
+
# attributes (name => value) are applied to the HTML tag declaration.
|
109
|
+
def to_html aAttributes = {}
|
110
|
+
embed_image_data data, format, aAttributes
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
ICONS = {}
|
115
|
+
|
116
|
+
Dir[File.join(Gerbil[:format_home], 'html.icons', '*.*')].each do |path|
|
117
|
+
ext = File.extname(path)
|
118
|
+
name = File.basename(path, ext)
|
119
|
+
data = encode_base_64 File.read(path)
|
120
|
+
|
121
|
+
ICONS[name] = Icon.new(path, name, ext.sub('.', ''), data)
|
122
|
+
end
|
123
|
+
|
96
124
|
|
97
125
|
nodes:
|
98
126
|
##
|
@@ -461,6 +489,18 @@ styles:
|
|
461
489
|
font-family : Cambria, Georgia, serif;
|
462
490
|
}
|
463
491
|
|
492
|
+
/* lists */
|
493
|
+
|
494
|
+
#content li:first-child
|
495
|
+
{
|
496
|
+
margin-top : 1em;
|
497
|
+
}
|
498
|
+
|
499
|
+
#content li
|
500
|
+
{
|
501
|
+
margin-bottom : 1em;
|
502
|
+
}
|
503
|
+
|
464
504
|
/* headings */
|
465
505
|
|
466
506
|
h1,
|
@@ -541,7 +581,7 @@ styles:
|
|
541
581
|
padding : 1em;
|
542
582
|
border : 1px solid #C0C0C0;
|
543
583
|
vertical-align : top;
|
544
|
-
background-color :
|
584
|
+
background-color : inherit;
|
545
585
|
}
|
546
586
|
|
547
587
|
th
|
@@ -716,55 +756,20 @@ styles:
|
|
716
756
|
max-width : 36em;
|
717
757
|
}
|
718
758
|
|
719
|
-
/*
|
720
|
-
|
721
|
-
a
|
722
|
-
{
|
723
|
-
color : #0000FF;
|
724
|
-
text-decoration : none;
|
725
|
-
}
|
726
|
-
|
727
|
-
a:visited
|
728
|
-
{
|
729
|
-
color : #800080;
|
730
|
-
}
|
731
|
-
|
732
|
-
a:hover
|
733
|
-
{
|
734
|
-
color : #FF0000;
|
735
|
-
text-decoration : underline;
|
736
|
-
}
|
737
|
-
|
738
|
-
a:target
|
739
|
-
{
|
740
|
-
color : #FF0000;
|
741
|
-
text-decoration : underline;
|
742
|
-
}
|
743
|
-
|
744
|
-
a.toc:link,
|
745
|
-
a.toc:visited
|
746
|
-
{
|
747
|
-
text-decoration : none;
|
748
|
-
z-index : 1;
|
749
|
-
}
|
750
|
-
|
751
|
-
a img
|
752
|
-
{
|
753
|
-
border : none;
|
754
|
-
}
|
759
|
+
/* emphasis */
|
755
760
|
|
756
|
-
|
757
|
-
mark external links with a symbol to help the user
|
758
|
-
distinguish between internal and external links
|
759
|
-
*/
|
760
|
-
a:after
|
761
|
+
blockquote
|
761
762
|
{
|
762
|
-
|
763
|
+
margin : 1em;
|
764
|
+
border : 5px dotted #C0C0C0;
|
765
|
+
padding : 1em;
|
766
|
+
color : #444;
|
763
767
|
}
|
764
768
|
|
765
|
-
|
769
|
+
hr
|
766
770
|
{
|
767
|
-
|
771
|
+
color : #FF0000; /* for IE6 */
|
772
|
+
background-color : #FF0000; /* for Firefox */
|
768
773
|
}
|
769
774
|
|
770
775
|
/* source code */
|
@@ -783,7 +788,7 @@ styles:
|
|
783
788
|
background-color : #FFFAF0;
|
784
789
|
}
|
785
790
|
|
786
|
-
/* output of syntax
|
791
|
+
/* output of the syntax coloring library */
|
787
792
|
.code
|
788
793
|
{
|
789
794
|
background-color : #FFFFF0;
|
@@ -791,12 +796,12 @@ styles:
|
|
791
796
|
|
792
797
|
pre
|
793
798
|
{
|
799
|
+
cursor : text;
|
794
800
|
line-height : normal;
|
795
801
|
border : 1px dashed #C0C0C0;
|
796
802
|
background-color : #F5FFDF;
|
797
803
|
padding : 1em;
|
798
804
|
overflow : auto;
|
799
|
-
cursor : text;
|
800
805
|
}
|
801
806
|
|
802
807
|
/*
|
@@ -815,23 +820,62 @@ styles:
|
|
815
820
|
}
|
816
821
|
*/
|
817
822
|
|
818
|
-
/*
|
823
|
+
/* hyperlinks */
|
819
824
|
|
820
|
-
|
825
|
+
a > img
|
821
826
|
{
|
822
|
-
|
823
|
-
border : 5px dotted #C0C0C0;
|
824
|
-
padding : 1em;
|
825
|
-
color : #444;
|
827
|
+
border : none;
|
826
828
|
}
|
827
829
|
|
828
|
-
|
830
|
+
a:link
|
829
831
|
{
|
830
|
-
color : #
|
831
|
-
|
832
|
+
color : #0000FF;
|
833
|
+
text-decoration : none;
|
834
|
+
}
|
835
|
+
|
836
|
+
a:visited
|
837
|
+
{
|
838
|
+
color : #9400D3;
|
839
|
+
text-decoration : none;
|
840
|
+
}
|
841
|
+
|
842
|
+
a:hover
|
843
|
+
{
|
844
|
+
color : #FF0000;
|
845
|
+
text-decoration : underline;
|
846
|
+
}
|
847
|
+
|
848
|
+
a:target
|
849
|
+
{
|
850
|
+
color : #FF0000;
|
851
|
+
font-weight : bold;
|
852
|
+
}
|
853
|
+
|
854
|
+
a.toc:link,
|
855
|
+
a.toc:visited
|
856
|
+
{
|
857
|
+
text-decoration : none;
|
858
|
+
z-index : 1;
|
832
859
|
}
|
833
860
|
|
834
861
|
print: |
|
862
|
+
/* source code */
|
863
|
+
|
864
|
+
tt
|
865
|
+
{
|
866
|
+
color : inherit;
|
867
|
+
background-color : inherit;
|
868
|
+
font-weight : normal;
|
869
|
+
}
|
870
|
+
|
871
|
+
pre,
|
872
|
+
.code
|
873
|
+
{
|
874
|
+
border : none;
|
875
|
+
overflow : visible;
|
876
|
+
background-color : inherit;
|
877
|
+
}
|
878
|
+
|
835
879
|
/* headings */
|
836
880
|
|
837
881
|
h1,
|
@@ -857,8 +901,8 @@ styles:
|
|
857
901
|
|
858
902
|
a:after
|
859
903
|
{
|
860
|
-
content : "
|
861
|
-
font-family :
|
904
|
+
content : " " attr(href);
|
905
|
+
font-family : Consolas, "Lucida Console", monospace;
|
862
906
|
font-weight : normal;
|
863
907
|
font-size : 90%;
|
864
908
|
}
|
@@ -886,23 +930,6 @@ styles:
|
|
886
930
|
font-style : normal;
|
887
931
|
}
|
888
932
|
|
889
|
-
/* source code */
|
890
|
-
|
891
|
-
tt
|
892
|
-
{
|
893
|
-
color : inherit;
|
894
|
-
background-color : inherit;
|
895
|
-
font-weight : normal;
|
896
|
-
}
|
897
|
-
|
898
|
-
pre,
|
899
|
-
.code
|
900
|
-
{
|
901
|
-
border : none;
|
902
|
-
overflow : visible;
|
903
|
-
background-color : inherit;
|
904
|
-
}
|
905
|
-
|
906
933
|
/* document structure */
|
907
934
|
|
908
935
|
#lof
|
@@ -923,3 +950,5 @@ styles:
|
|
923
950
|
{
|
924
951
|
_padding-bottom : 0.5em; /* for IE6 */
|
925
952
|
}
|
953
|
+
|
954
|
+
|
data/lib/gerbil.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gerbil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors: []
|
7
7
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-05-29 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|