mislav-hanna 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -2,18 +2,31 @@
2
2
 
3
3
  Hanna is an RDoc template that scales. It's implemented in Haml, making the
4
4
  sources clean and readable. It's built with simplicity, beauty and ease of
5
- browsing in mind.
5
+ browsing in mind. (See more in [the wiki][wiki].)
6
6
 
7
- Hanna is available from [GitHub][]:
7
+ Hanna was made by [Mislav][] and is available from [GitHub][]:
8
8
 
9
9
  gem install mislav-hanna
10
10
 
11
- After that you have two options. You can use the command-line tool:
11
+
12
+ ## Usage
13
+
14
+ After installing, you have three options. You can use the command-line tool:
12
15
 
13
16
  hanna -h
14
17
 
15
- For repeated generation of API docs, it's better to set up a Rake task. Here is
16
- an example for [will_paginate][]:
18
+ For repeated generation of API docs, it's better to set up a Rake task. If you
19
+ already have an `RDocTask` set up, the only thing you need to change is this:
20
+
21
+ # replace this:
22
+ require 'rake/rdoctask'
23
+ # with this:
24
+ require 'hanna/rdoctask'
25
+
26
+ Tip: you can do this in the Rakefile of your Rails project before running `rake
27
+ doc:rails`.
28
+
29
+ Here is an example of a task for the [will_paginate library][wp]:
17
30
 
18
31
  # instead of 'rake/rdoctask':
19
32
  require 'hanna/rdoctask'
@@ -35,7 +48,10 @@ an example for [will_paginate][]:
35
48
 
36
49
  Either way, it's the same as using RDoc.
37
50
 
38
- Hanna was crafted by [Mislav][].
51
+ The last thing you can do with Hanna is generate documentation for installed
52
+ gems. This is a replacement for the "gem rdoc" command.
53
+
54
+ [sudo] hanna --gems haml will_paginate
39
55
 
40
56
  ## A work in progress
41
57
 
@@ -59,7 +75,8 @@ Don't like something? Think you can design better? (You probably can.)
59
75
  This is git. I welcome all submissions towards my goal.
60
76
 
61
77
 
78
+ [wiki]: http://github.com/mislav/hanna/wikis/home "Hanna wiki"
62
79
  [GitHub]: http://gems.github.com/ "GitHub gem source"
63
- [will_paginate]: http://github.com/mislav/will_paginate
80
+ [wp]: http://github.com/mislav/will_paginate
64
81
  [Mislav]: http://mislav.caboo.se/ "Mislav Marohnić"
65
82
  [Allison]: http://blog.evanweaver.com/files/doc/fauna/allison/ "A modern, pretty RDoc template"
data/bin/hanna CHANGED
@@ -2,15 +2,24 @@
2
2
  if ARGV.size == 1 and ARGV.first == '-h'
3
3
  puts <<-HELP
4
4
  Hanna -- a better RDoc template
5
- Sample usage:
5
+ Synopsis:
6
+ hanna [options] [file names...]
7
+ [sudo] hanna --gems [gem names...]
8
+
9
+ Example usage:
6
10
 
7
11
  hanna lib/**/*.rb
8
12
 
9
- Hanna passes all arguments to RDoc. To find more about RDoc options,
10
- see "rdoc -h". Default options:
13
+ Hanna passes all arguments to RDoc. To find more about RDoc options, see
14
+ "rdoc -h". Default options are:
11
15
 
12
16
  -o doc --inline-source --charset=UTF-8
13
17
 
18
+ The second form, with the "--gems" argument, serves the same purpose as
19
+ the "gem rdoc" command: it generates documentation for installed gems.
20
+ When no gem names are given, "hanna --gems" will install docs for EACH of
21
+ the gems, which can, uh, take a little while.
22
+
14
23
  HELP
15
24
  exit 0
16
25
  end
@@ -33,9 +42,40 @@ require 'hanna/rdoc_patch'
33
42
  options = []
34
43
 
35
44
  options << '-T' << 'hanna/hanna.rb'
36
- options << '-o' << 'doc' unless ARGV.include?('-o') or ARGV.include?('--op')
37
45
  options << '--inline-source' << '--charset=UTF-8'
38
46
 
39
- options.concat ARGV
47
+ if ARGV.first == '--gems'
48
+ require 'rubygems/doc_manager'
49
+ Gem::DocManager.configured_args = options
50
+
51
+ gem_names = ARGV.dup
52
+ gem_names.shift
53
+
54
+ unless gem_names.empty?
55
+ specs = gem_names.inject([]) do |arr, name|
56
+ found = Gem::SourceIndex.from_installed_gems.search(name)
57
+ spec = found.sort_by {|s| s.version }.last
58
+ arr << spec if spec
59
+ arr
60
+ end
61
+ else
62
+ specs = Gem::SourceIndex.from_installed_gems.inject({}) do |all, pair|
63
+ full_name, spec = pair
64
+ if spec.has_rdoc? and (!all[spec.name] or spec.version > all[spec.name].version)
65
+ all[spec.name] = spec
66
+ end
67
+ all
68
+ end
69
+ specs = specs.values
70
+ puts "Hanna is installing documentation for #{specs.size} gem#{specs.size > 1 ? 's' : ''} ..."
71
+ end
72
+
73
+ specs.each do |spec|
74
+ Gem::DocManager.new(spec).generate_rdoc
75
+ end
76
+ else
77
+ options << '-o' << 'doc' unless ARGV.include?('-o') or ARGV.include?('--op')
78
+ options.concat ARGV
40
79
 
41
- RDoc::RDoc.new.document(options)
80
+ RDoc::RDoc.new.document(options)
81
+ end
data/lib/hanna/hanna.rb CHANGED
@@ -1,16 +1,15 @@
1
+ # = A better RDoc HTML template
2
+ #
3
+ # Authors: Mislav Marohnić <mislav.marohnic@gmail.com>
4
+ # Tony Strauss (http://github.com/DesigningPatterns)
5
+ # Michael Granger <ged@FaerieMUD.org>, who had maintained the original RDoc template
6
+
1
7
  require 'haml'
2
8
  require 'sass'
3
9
  require 'rdoc/generator/html'
4
10
  require 'hanna/template_page_patch'
5
11
 
6
- # = A better RDoc HTML template
7
- #
8
- # Many different kinds of awesome.
9
- #
10
- # Author: Mislav Marohnić <mislav.marohnic@gmail.com>
11
- # Based on the work of Michael Granger <ged@FaerieMUD.org>
12
-
13
- module RDoc::Generator::HTML::Hanna
12
+ module RDoc::Generator::HTML::HANNA
14
13
  class << self
15
14
  def dir
16
15
  @dir ||= File.join File.dirname(__FILE__), 'template_files'
@@ -10,8 +10,9 @@ Rake::RDocTask.class_eval do
10
10
  unless @template and @template != 'html'
11
11
  @template = File.dirname(__FILE__) + '/hanna'
12
12
  end
13
+ # inline source and UTF-8 are defaults:
13
14
  options << '--inline-source' unless options.include? '--inline-source' or options.include? '-S'
14
- options << '--charset=UTF-8' if options.grep(/^(--charset$|-c\b)/).empty?
15
+ options << '--charset=UTF-8' if options.grep(/^(--charset\b|-c\b)/).empty?
15
16
 
16
17
  desc "Build the HTML documentation"
17
18
  task name
@@ -32,9 +33,9 @@ Rake::RDocTask.class_eval do
32
33
  rm_r @rdoc_dir rescue nil
33
34
 
34
35
  begin
35
- gem 'rdoc', '~> 2.0.0'
36
+ gem 'rdoc', '~> 2.1.0'
36
37
  rescue Gem::LoadError
37
- $stderr.puts "Couldn't load RDoc 2.0 gem"
38
+ $stderr.puts "Couldn't load RDoc 2.1 gem"
38
39
  end
39
40
  require 'rdoc/rdoc'
40
41
  require 'hanna/rdoc_patch'
@@ -1,4 +1,13 @@
1
1
  %h1= values["list_title"]
2
- %ol#index-entries{ :class => values["list_title"].downcase }
2
+ - type = values["list_title"].downcase
3
+ - any_hidden = false
4
+
5
+ %ol#index-entries{ :class => type }
3
6
  - for entry in values["entries"]
4
- %li= link_to entry['name'], entry['href']
7
+ - hide = type == 'files' && entry['name'] =~ /\.rb$/
8
+ - any_hidden = true if hide
9
+ %li{ :class => hide ? 'other' : nil }= link_to entry['name'], entry['href']
10
+
11
+ - if any_hidden
12
+ %li
13
+ %a.show{ :href => '#', :onclick => 'this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false' } show all
@@ -3,7 +3,7 @@
3
3
  %head
4
4
  %title= values["title"]
5
5
  %meta{ :content => "text/html; charset=#{values['charset']}", "http-equiv" => "Content-Type" }
6
- %frameset{ :cols => "20%, *", :frameborder => 'no' }
6
+ %frameset{ :cols => "20%, *" }
7
7
  %frameset{ :rows => "15%, 35%, 50%" }
8
8
  %frame{ :name => "Files", :title => "Files", :src => "fr_file_index.html" }
9
9
  %frame{ :name => "Classes", :src => "fr_class_index.html" }
@@ -20,11 +20,14 @@
20
20
  == (#{link_to 'view online', values["cvsurl"]})
21
21
  - else
22
22
  %ol.paths
23
- - for file in values["infiles"]
24
- %li
23
+ - values["infiles"].each_with_index do |file, index|
24
+ %li{ :class => index > 0 ? 'other' : nil }
25
25
  = link_to file["full_path"], file["full_path_url"]
26
26
  - if file["cvsurl"]
27
27
  == (#{link_to 'view online', file["cvsurl"]})
28
+ - if values["infiles"].size > 1
29
+ %li
30
+ %a.show{ :href => '#', :onclick => 'this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false' } show all
28
31
 
29
32
  - if values["parent"] then
30
33
  .parent
@@ -39,8 +42,9 @@
39
42
  #content
40
43
  - if values["diagram"]
41
44
  #diagram= values["diagram"]
42
-
43
- - if values["description"]
44
- #description~ values["description"]
45
-
46
- = yield
45
+
46
+ #text
47
+ - if values["description"]
48
+ #description~ values["description"]
49
+
50
+ = yield
@@ -4,17 +4,17 @@
4
4
  %h2= link_to section["sectitle"], section["secsequence"]
5
5
  - if section["seccomment"]
6
6
  .section-comment= section["seccomment"]
7
- - if values["classlist"]
7
+ - if section["classlist"]
8
8
  #class-list
9
9
  %h3 Classes and Modules
10
- = values["classlist"]
10
+ = section["classlist"]
11
11
 
12
- - if values["constants"]
12
+ - if section["constants"]
13
13
  #constants-list
14
14
  %h3.section-bar Constants
15
15
  .name-list
16
16
  %table{ :summary => "Constants" }
17
- - for const in values["constants"]
17
+ - for const in section["constants"]
18
18
  %tr.top-aligned-row.context-row
19
19
  %td.context-item-name
20
20
  = const["name"]
@@ -22,48 +22,48 @@
22
22
  \=
23
23
  %td.context-item-value
24
24
  = const["value"]
25
- - if values["desc"] then
25
+ - if const["desc"] then
26
26
  %td{ :width => "3em" }
27
27
  &nbsp;
28
28
  %td.context-item-desc
29
29
  = const["desc"]
30
30
 
31
- - if values["aliases"]
31
+ - if section["aliases"]
32
32
  #aliases-list
33
33
  %h3.section-bar External Aliases
34
34
  .name-list
35
35
  %table{ :summary => "aliases" }
36
- - for alia in values["aliases"]
36
+ - for alia in section["aliases"]
37
37
  %tr.top-aligned-row.context-row
38
38
  %td.context-item-name
39
- = values["old_name"]
39
+ = alia["old_name"]
40
40
  %td
41
41
  \-&gt;
42
42
  %td.context-item-value
43
- = values["new_name"]
44
- - if values["desc"] then
43
+ = alia["new_name"]
44
+ - if alia["desc"] then
45
45
  %tr.top-aligned-row.context-row
46
46
  %td
47
47
  &nbsp;
48
48
  %td.context-item-desc{ :colspan => "2" }
49
- = values["desc"]
49
+ = alia["desc"]
50
50
 
51
- - if values["attributes"]
51
+ - if section["attributes"]
52
52
  #attribute-list
53
53
  %h3.section-bar Attributes
54
54
  .name-list
55
55
  %table
56
- - for attr in values["attributes"]
56
+ - for attr in section["attributes"]
57
57
  %tr.top-aligned-row.context-row
58
58
  %td.context-item-name
59
- = values["name"]
60
- - if values["rw"] then
59
+ = attr["name"]
60
+ - if attr["rw"] then
61
61
  %td.context-item-value
62
- = "[#{values['rw']}]"
62
+ = "[#{attr['rw']}]"
63
63
  - else
64
64
  %td.context-item-value &nbsp;
65
65
  %td.context-item-desc
66
- = values["a_desc"]
66
+ = attr["a_desc"]
67
67
 
68
68
  - if section["method_list"]
69
69
  #methods
@@ -1,9 +1,12 @@
1
- !title_font = Times, "Times New Roman", Georgia, serif
2
- !code_font = Inconsolata, Monaco, "DejaVu Sans", Courier, "Courier New", monospace
1
+ !title_font = Georgia, serif
2
+ !code_font_family = Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace
3
+ !code_font_size = 14px
4
+ !code_font = !code_font_size !code_font_family
3
5
 
4
6
  !light_link = #369
5
7
  !link = !light_link - 40
6
8
  !light_text = #666
9
+ !dark_blue_text = #0E3062
7
10
 
8
11
  html, body
9
12
  :height 100%
@@ -19,11 +22,9 @@ body
19
22
  :height auto !important
20
23
  :height 100%
21
24
  :margin 0 auto -43px
22
- :border-left 1px solid gray
23
25
  #footer-push
24
26
  :height 43px
25
27
  div.header, #footer
26
- :font-size 80%
27
28
  :background #eee
28
29
  #footer
29
30
  :border-top 1px solid silver
@@ -32,6 +33,7 @@ div.header, #footer
32
33
  :line-height 30px
33
34
  :text-align center
34
35
  :font-variant small-caps
36
+ :font-size 95%
35
37
 
36
38
  // self-clearing
37
39
  .clearing
@@ -61,7 +63,7 @@ a
61
63
  :color = !light_link
62
64
  &:hover
63
65
  :color #eee
64
- h1, h2, h3
66
+ h1, h2, h3, h4, h5, h6
65
67
  a
66
68
  :color = !link
67
69
 
@@ -71,7 +73,12 @@ ol
71
73
  :list-style none
72
74
  li
73
75
  :margin-left 0
74
- white-space: nowrap
76
+ :white-space nowrap
77
+ &.other
78
+ :display none
79
+ ol.expanded li.other
80
+ :display list-item
81
+
75
82
  table
76
83
  :margin-bottom 1em
77
84
  :font-size 1em
@@ -86,6 +93,17 @@ table
86
93
  tr
87
94
  :border-bottom 1px solid silver
88
95
 
96
+ #index, div.header
97
+ a.show
98
+ :text-decoration underline
99
+ :font-style italic
100
+ :color = !light_text
101
+ &:after
102
+ :content " ..."
103
+ &:hover
104
+ :color black
105
+ :background #ffe
106
+
89
107
  #index
90
108
  :font 85%/1.2 Arial, Helvetica, sans-serif
91
109
  a
@@ -93,10 +111,9 @@ table
93
111
  h1
94
112
  :padding .2em .5em .1em
95
113
  :background #ccc
96
- :font = "small-caps 1.1em" !title_font
114
+ :font = "small-caps 1.2em" !title_font
97
115
  :color #333
98
116
  :border-bottom 1px solid gray
99
- :border-top 1px solid #aaa
100
117
  ol
101
118
  :padding .4em .5em
102
119
  li
@@ -105,15 +122,16 @@ table
105
122
  :font-size 1.1em
106
123
  ol
107
124
  :padding 0
108
- span.class
125
+ span.nodoc
109
126
  :display none
110
- .class, a
127
+ span.nodoc, a
111
128
  :font-weight bold
112
129
  .parent
113
130
  :font-weight normal
114
131
 
115
132
  div.header
116
- :padding .5em 12px
133
+ :font-size 80%
134
+ :padding .5em 2%
117
135
  :font-family Arial, Helvetica, sans-serif
118
136
  :border-bottom 1px solid silver
119
137
  .name
@@ -127,8 +145,6 @@ div.header
127
145
  :font-size 2.2em
128
146
  .paths, .last-update, .parent
129
147
  :color = !light_text
130
- ol.paths
131
- :padding-left .5em
132
148
  .last-update .datetime
133
149
  :color = !light_text - 30
134
150
  .parent
@@ -138,30 +154,37 @@ div.header
138
154
  :color = !light_text - 30
139
155
 
140
156
  #content
141
- :padding 12px
157
+ :padding 12px 2%
142
158
  div.class &
143
159
  :position relative
144
- :width 73%
160
+ :width 72%
145
161
 
146
162
  pre, .method .synopsis
147
- :font = 15px !code_font
163
+ :font = !code_font
148
164
  pre
149
165
  :color black
150
166
  :background #eee
151
167
  :border 1px solid silver
152
168
  :padding 0 .5em .8em .5em
153
169
  :overflow auto
154
- p, li
170
+ p, li, dl
155
171
  code, tt
156
- :font = 15px !code_font
172
+ :font = !code_font
157
173
  :background #ffffe3
158
174
  :padding 2px 3px
175
+ :line-height 1.4
176
+ h1, h2, h3, h4, h5, h6
177
+ code, tt
178
+ :font-size 1.1em
179
+
180
+ #text
181
+ :position relative
159
182
 
160
183
  #description
161
184
  // :max-width 60em
162
185
  p
163
186
  :margin-top .5em
164
- h1, h2, h3
187
+ h1, h2, h3, h4, h5, h6
165
188
  :font-family = !title_font
166
189
  h1
167
190
  :font-size 2.2em
@@ -170,21 +193,41 @@ div.header
170
193
  :padding-bottom .1em
171
194
  h2
172
195
  :font-size 1.8em
173
- :color #0E3062
196
+ :color = !dark_blue_text
174
197
  :margin .8em 0 .3em 0
175
198
  h3
176
199
  :font-size 1.6em
177
200
  :margin .8em 0 .3em 0
178
201
  :color = !light_text
202
+ h4
203
+ :font-size 1.4em
204
+ :margin .8em 0 .3em 0
205
+ h5
206
+ :font-size 1.2em
207
+ :margin .8em 0 .3em 0
208
+ :color = !dark_blue_text
209
+ h6
210
+ :font-size 1.0em
211
+ :margin .8em 0 .3em 0
212
+ :color = !light_text
213
+
214
+ #description, .method .description
215
+ ul, ol
216
+ :margin .8em 0
217
+ :padding-left 1.5em
218
+ ol
219
+ :list-style decimal
220
+ li
221
+ :white-space wrap
179
222
 
180
223
  #method-list
181
224
  :position absolute
182
- :top 12px
183
- :right -31%
184
- :width 27%
225
+ :top 0px
226
+ :right -33%
227
+ :width 28%
185
228
  :background #eee
186
229
  :border 1px solid silver
187
- :padding .5em 1em
230
+ :padding .4em 1%
188
231
  :overflow hidden
189
232
  h2
190
233
  :font-size 1.3em
@@ -212,6 +255,10 @@ div.header
212
255
  :font = "small-caps 1.2em" !title_font
213
256
  :color #444
214
257
  :margin 1em 0 .2em 0
258
+ h4
259
+ :font = "1.1em" !title_font
260
+ :color = !dark_blue_text
261
+ :margin 1em 0 .2em 0
215
262
 
216
263
  .method
217
264
  :border 1px solid silver
@@ -221,7 +268,6 @@ div.header
221
268
  :color black
222
269
  :background silver
223
270
  :padding .2em 1em
224
- :font-size 16px
225
271
  .name
226
272
  :font-weight bold
227
273
  a
@@ -236,7 +282,10 @@ div.header
236
282
  :font-size 85%
237
283
  :margin-left 1em
238
284
  .public-class
239
- :background #ffd
285
+ :background #ffffe4
286
+ .public-instance .synopsis
287
+ :color #eee
288
+ :background = !light_link
240
289
 
241
290
  #content .method .source pre
242
291
  :background #262626
@@ -0,0 +1,66 @@
1
+ require 'yaml'
2
+ require 'cgi'
3
+
4
+ module Hanna
5
+ module TemplateHelpers
6
+ protected
7
+
8
+ def link_to(text, url = nil, classname = nil)
9
+ class_attr = classname ? %[ class="#{classname}"] : ''
10
+
11
+ if url
12
+ %[<a href="#{url}"#{class_attr}>#{text}</a>]
13
+ elsif classname
14
+ %[<span#{class_attr}>#{text}</span>]
15
+ else
16
+ text
17
+ end
18
+ end
19
+
20
+ def debug(text)
21
+ "<pre>#{h YAML::dump(text)}</pre>"
22
+ end
23
+
24
+ def h(html)
25
+ CGI::escapeHTML html
26
+ end
27
+
28
+ def methods_from_sections(sections)
29
+ sections.inject(Hash.new {|h, k| h[k] = []}) do |methods, section|
30
+ section['method_list'].each do |ml|
31
+ methods["#{ml['type']} #{ml['category']}".downcase].concat ml['methods']
32
+ end if section['method_list']
33
+ methods
34
+ end
35
+ end
36
+
37
+ def make_class_tree(entries)
38
+ entries.inject({}) do |tree, entry|
39
+ if entry['href']
40
+ leaf = entry['name'].split('::').inject(tree) do |branch, klass|
41
+ branch[klass] ||= {}
42
+ end
43
+ leaf['_href'] = entry['href']
44
+ end
45
+ tree
46
+ end
47
+ end
48
+
49
+ def render_class_tree(tree, parent = nil)
50
+ parent = parent + '::' if parent
51
+ tree.keys.sort.inject('') do |out, name|
52
+ unless name == '_href'
53
+ subtree = tree[name]
54
+ text = parent ? %[<span class="parent">#{parent}</span>#{name}] : name
55
+ out << '<li>'
56
+ out << (subtree['_href'] ? link_to(text, subtree['_href']) : %[<span class="nodoc">#{text}</span>])
57
+ if subtree.keys.size > 1
58
+ out << "\n<ol>" << render_class_tree(subtree, parent.to_s + name) << "\n</ol>"
59
+ end
60
+ out << '</li>'
61
+ end
62
+ out
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,7 +1,10 @@
1
- require 'yaml'
2
- require 'cgi'
1
+ require 'hanna/template_helpers'
3
2
 
4
3
  RDoc::TemplatePage.class_eval do
4
+
5
+ include Hanna::TemplateHelpers
6
+
7
+ # overwrite the original method
5
8
  def write_html_on(io, values)
6
9
  result = @templates.reverse.inject(nil) do |previous, template|
7
10
  case template
@@ -24,58 +27,6 @@ RDoc::TemplatePage.class_eval do
24
27
  raise
25
28
  end
26
29
 
27
- protected
28
-
29
- ### View helpers ###
30
-
31
- def link_to(text, url = nil)
32
- href(url, text)
33
- end
34
-
35
- def debug(text)
36
- "<pre>#{h YAML::dump(text)}</pre>"
37
- end
38
-
39
- def h(html)
40
- CGI::escapeHTML html
41
- end
42
-
43
- def methods_from_sections(sections)
44
- sections.inject(Hash.new {|h, k| h[k] = []}) do |methods, section|
45
- section['method_list'].each do |ml|
46
- methods["#{ml['type']} #{ml['category']}".downcase].concat ml['methods']
47
- end if section['method_list']
48
- methods
49
- end
50
- end
51
-
52
- def make_class_tree(entries)
53
- entries.inject({}) do |tree, entry|
54
- leaf = entry['name'].split('::').inject(tree) do |branch, klass|
55
- branch[klass] ||= {}
56
- end
57
- leaf['_href'] = entry['href']
58
- tree
59
- end
60
- end
61
-
62
- def render_class_tree(tree, parent = nil)
63
- parent = parent + '::' if parent
64
- tree.keys.sort.inject('') do |out, name|
65
- unless name == '_href'
66
- subtree = tree[name]
67
- text = parent ? "<span class='parent'>#{parent}</span>#{name}" : name
68
- out << '<li>'
69
- out << (subtree['_href'] ? link_to(text, subtree['_href']) : "<span class='class'>#{text}</span>")
70
- if subtree.keys.size > 1
71
- out << "\n<ol>" << render_class_tree(subtree, parent.to_s + name) << "\n</ol>"
72
- end
73
- out << '</li>'
74
- end
75
- out
76
- end
77
- end
78
-
79
30
  private
80
31
 
81
32
  def get_binding(values = nil)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mislav-hanna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Mislav Marohni\xC4\x87"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-02 00:00:00 -07:00
12
+ date: 2008-05-03 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: 2.0.0
22
+ version: 2.1.0
23
23
  version:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: haml
@@ -44,6 +44,7 @@ files:
44
44
  - bin
45
45
  - bin/hanna
46
46
  - lib
47
+ - lib/hanna.rb
47
48
  - lib/hanna
48
49
  - lib/hanna/hanna.rb
49
50
  - lib/hanna/rdoc_patch.rb
@@ -57,6 +58,7 @@ files:
57
58
  - lib/hanna/template_files/page.haml
58
59
  - lib/hanna/template_files/sections.haml
59
60
  - lib/hanna/template_files/styles.sass
61
+ - lib/hanna/template_helpers.rb
60
62
  - lib/hanna/template_page_patch.rb
61
63
  has_rdoc: false
62
64
  homepage: http://github.com/mislav/hanna
@@ -80,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  requirements: []
81
83
 
82
84
  rubyforge_project:
83
- rubygems_version: 1.0.1
85
+ rubygems_version: 1.2.0
84
86
  signing_key:
85
87
  specification_version: 2
86
88
  summary: An RDoc template that rocks