mislav-hanna 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -11,6 +11,8 @@ lib/hanna/template_files/method_list.haml
11
11
  lib/hanna/template_files/page.haml
12
12
  lib/hanna/template_files/sections.haml
13
13
  lib/hanna/template_files/styles.sass
14
+ lib/hanna/template_files/prototype-1.6.0.3.js
15
+ lib/hanna/template_files/method_search.js
14
16
  lib/hanna/template_helpers.rb
15
17
  lib/hanna/template_page_patch.rb
16
18
  lib/hanna.rb
data/README.markdown CHANGED
@@ -1,41 +1,51 @@
1
1
  # Hanna -- a better RDoc template
2
2
 
3
- Hanna is an RDoc template that scales. It's implemented in Haml, making the
4
- sources clean and readable. It's built with simplicity, beauty and ease of
5
- browsing in mind. (See more in [the wiki][wiki].)
3
+ Hanna is an RDoc template that scales. It's implemented in Haml, making the sources clean
4
+ and readable. It's built with simplicity, beauty and ease of browsing in mind. (See more
5
+ in [the wiki][wiki].)
6
6
 
7
- Hanna was made by [Mislav][] and is available from [GitHub][]:
7
+ Hanna gem is available from [GitHub][]:
8
8
 
9
9
  gem install mislav-hanna
10
10
 
11
+ The template was created by [Mislav][] and since then has seen contributions from:
12
+
13
+ 1. [Tony Strauss](http://github.com/DesigningPatterns), who participated from the early
14
+ start and made tons of fixes and enhancements to the template;
15
+ 2. [Hongli Lai](http://blog.phusion.nl/) with the search filter for methods.
11
16
 
12
17
  ## Usage
13
18
 
14
- After installing, you have several options.
15
- ---
16
- Hanna can be used as a normal RDoc template by specifying
17
- -S -T hanna
18
- to rdoc. Note that Hanna requires the -S option, which inlines source
19
- code.
20
- ---
21
- You can use the command-line tool included in the Hanna gem:
19
+ The most basic usage is to specify Hanna as a template when invoking RDoc on the
20
+ command-line:
21
+
22
+ rdoc -o doc --inline-sorce -T hanna lib/*.rb
23
+
24
+ Hanna requires the `--inline-sorce` (or `-S`) flag.
25
+
26
+ An alternative is to set the `RDOCOPT` environment variable:
27
+
28
+ RDOCOPT="-S -T hanna"
29
+
30
+ This will make RDoc always use Hanna unless it is explicitly overridden.
31
+
32
+ You can also use the command-line tool included in the Hanna gem:
22
33
 
23
34
  hanna -h
24
35
 
25
- This is a wrapper over the rdoc script that makes RDoc use the Hanna
26
- template.
27
- ---
28
- For repeated generation of API docs, it's better to set up a Rake task.
29
- If you already have an RDocTask set up in your Rakefile, the only thing
30
- you need to change is this:
36
+ This is a wrapper over rdoc and it forwards all the parameters to it.
37
+
38
+ ### Rake task
39
+
40
+ For repeated generation of API docs, it's better to set up a Rake task. If you already
41
+ have an `RDocTask` set up in your Rakefile, the only thing you need to change is this:
31
42
 
32
43
  # replace this:
33
44
  require 'rake/rdoctask'
34
45
  # with this:
35
46
  require 'hanna/rdoctask'
36
47
 
37
- Tip: you can do this in the Rakefile of your Rails project before running `rake
38
- doc:rails`.
48
+ Tip: you can do this in the Rakefile of your Rails project before running `rake doc:rails`.
39
49
 
40
50
  Here is an example of a task for the [will_paginate library][wp]:
41
51
 
@@ -56,51 +66,31 @@ Here is an example of a task for the [will_paginate library][wp]:
56
66
  rdoc.rdoc_dir = 'doc' # rdoc output folder
57
67
  rdoc.options << '--webcvs=http://github.com/mislav/will_paginate/tree/master/'
58
68
  end
59
-
60
- Alternatively, you can use the the standard RDocTask and simply set the
61
- task's +template+ attribute to +hanna+ and append +--inline-source+ to its
62
- options attribute.
63
69
 
64
- A third alternative is to set the +RDOCOPT+ environment variable to
70
+ ### Generating documentation for installed gems
65
71
 
66
- -T hanna -S
72
+ You can generate documentation for installed gems, which might be more convenient than the
73
+ `gem rdoc` command with the +RDOCOPT+ environment variable set as described. For instance,
74
+ to generate docs for "actionpack" and "activerecord" type:
67
75
 
68
- which will make RDoc always use Hanna unless this is overridden on the
69
- command-line.
70
- --
71
- You also can generate documentation for installed gems, which might be more
72
- convenient than the
73
-
74
- gem rdoc
75
-
76
- command (with the +RDOCOPT+ environment variable set as above). For this, do:
77
-
78
- [sudo] hanna --gems haml will_paginate
79
-
80
- ## A work in progress
81
-
82
- Hanna is far from done, but it is the first RDoc template that's actually
83
- _maintainable_. First thing I have done is converted the original HTML
84
- template to Haml and Sass, cleaning up and removing the (ridiculous amount of)
85
- duplication.
86
-
87
- Also, the template fragments are now in _separate files_. You would have
88
- fainted if you seen how it was before. (It's really no wonder why there are no
89
- other RDoc templates around ... save one: [Allison][].)
90
-
91
- Ultimately, I'd like to lose the frameset. Currently that is far from possible
92
- because the whole RDoc HTML Generator is built for frames. Still, that is my
93
- goal.
76
+ [sudo] hanna --gems actionpack activerecord
94
77
 
95
78
  ## You can help
96
79
 
97
80
  Don't like something? Think you can design better? (You probably can.)
98
81
 
99
- This is git. I welcome all submissions towards my goal.
82
+ I think of Hanna as the first RDoc template that's actually _maintainable_. First thing I
83
+ have done is converted the original HTML template to Haml and Sass, cleaning up and
84
+ removing the (ridiculous amount of) duplication. Also, the template fragments are now in
85
+ _separate files_.
86
+
87
+ Ultimately, I'd like to lose the frameset. Currently that is far from possible because the
88
+ whole RDoc HTML Generator is built for frames. Still, that is my goal.
89
+
90
+ This is git. Fork it, hack away, tell me about it!
100
91
 
101
92
 
102
93
  [wiki]: http://github.com/mislav/hanna/wikis/home "Hanna wiki"
103
- [GitHub]: http://gems.github.com/ "GitHub gem source"
104
- [wp]: http://github.com/mislav/will_paginate
94
+ [GitHub]: http://gems.github.com/ "GitHub gem server"
95
+ [wp]: http://github.com/mislav/will_paginate/tree/master/Rakefile
105
96
  [Mislav]: http://mislav.caboo.se/ "Mislav Marohnić"
106
- [Allison]: http://blog.evanweaver.com/files/doc/fauna/allison/ "A modern, pretty RDoc template"
data/Rakefile CHANGED
@@ -1,12 +1,8 @@
1
- #
2
- # This can be made cleaner by using the relative gem.
3
- #
4
- require File.join(File.dirname(__FILE__), "lib/hanna/rdoc_version")
5
-
6
1
  require 'echoe'
2
+ require 'lib/hanna/rdoc_version'
7
3
 
8
4
  Echoe.new('hanna') do |p|
9
- p.version = '0.1.4'
5
+ p.version = '0.1.5'
10
6
 
11
7
  p.summary = "An RDoc template that rocks"
12
8
  p.description = "Hanna is an RDoc template that scales. It's implemented in Haml, making its source clean and maintainable. It's built with simplicity, beauty and ease of browsing in mind."
@@ -19,6 +15,6 @@ Echoe.new('hanna') do |p|
19
15
  p.has_rdoc = false
20
16
  p.runtime_dependencies = []
21
17
  p.runtime_dependencies << ['rdoc', Hanna::RDOC_VERSION_REQUIREMENT]
22
- p.runtime_dependencies << ['haml', '~> 2.0']
18
+ p.runtime_dependencies << ['haml', '~> 2.0.4']
23
19
  p.runtime_dependencies << ['rake', '~> 0.8.2']
24
20
  end
data/bin/hanna CHANGED
@@ -24,11 +24,17 @@ HELP
24
24
  exit 0
25
25
  end
26
26
 
27
- require 'rubygems'
27
+ unless RUBY_PLATFORM =~ /(:?mswin|mingw)/
28
+ require 'pathname'
29
+ hanna_dir = Pathname.new(__FILE__).realpath.dirname + '../lib'
30
+ else
31
+ # windows
32
+ hanna_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
33
+ end
28
34
 
29
- hanna_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
30
35
  $:.unshift(hanna_dir) unless $:.include?(hanna_dir)
31
36
 
37
+ require 'rubygems'
32
38
  require 'hanna/rdoc_version'
33
39
  Hanna::require_rdoc
34
40
  require 'rdoc/rdoc'
@@ -47,7 +53,7 @@ if ARGV.first == '--gems'
47
53
 
48
54
  unless gem_names.empty?
49
55
  specs = gem_names.inject([]) do |arr, name|
50
- found = Gem::SourceIndex.from_installed_gems.search(name)
56
+ found = Gem::SourceIndex.from_installed_gems.find_name(name)
51
57
  spec = found.sort_by {|s| s.version }.last
52
58
  arr << spec if spec
53
59
  arr
data/hanna.gemspec CHANGED
@@ -1,131 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
1
2
 
2
- # Gem::Specification for Hanna-0.1.4
3
- # Originally generated by Echoe
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{hanna}
5
+ s.version = "0.1.5"
4
6
 
5
- --- !ruby/object:Gem::Specification
6
- name: hanna
7
- version: !ruby/object:Gem::Version
8
- version: 0.1.4
9
- platform: ruby
10
- authors:
11
- - "Mislav Marohni\xC4\x87"
12
- autorequire:
13
- bindir: bin
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Mislav Marohni\304\207"]
9
+ s.date = %q{2008-11-24}
10
+ s.default_executable = %q{hanna}
11
+ s.description = %q{Hanna is an RDoc template that scales. It's implemented in Haml, making its source clean and maintainable. It's built with simplicity, beauty and ease of browsing in mind.}
12
+ s.email = %q{mislav.marohnic@gmail.com}
13
+ s.executables = ["hanna"]
14
+ s.extra_rdoc_files = ["bin/hanna", "lib/hanna/hanna.rb", "lib/hanna/rdoc_version.rb", "lib/hanna/rdoctask.rb", "lib/hanna/template_files/class_index.haml", "lib/hanna/template_files/file_index.haml", "lib/hanna/template_files/index.haml", "lib/hanna/template_files/layout.haml", "lib/hanna/template_files/method_list.haml", "lib/hanna/template_files/page.haml", "lib/hanna/template_files/sections.haml", "lib/hanna/template_files/styles.sass", "lib/hanna/template_files/prototype-1.6.0.3.js", "lib/hanna/template_files/method_search.js", "lib/hanna/template_helpers.rb", "lib/hanna/template_page_patch.rb", "lib/hanna.rb", "README.markdown"]
15
+ s.files = ["bin/hanna", "hanna.gemspec", "lib/hanna/hanna.rb", "lib/hanna/rdoc_version.rb", "lib/hanna/rdoctask.rb", "lib/hanna/template_files/class_index.haml", "lib/hanna/template_files/file_index.haml", "lib/hanna/template_files/index.haml", "lib/hanna/template_files/layout.haml", "lib/hanna/template_files/method_list.haml", "lib/hanna/template_files/page.haml", "lib/hanna/template_files/sections.haml", "lib/hanna/template_files/styles.sass", "lib/hanna/template_files/prototype-1.6.0.3.js", "lib/hanna/template_files/method_search.js", "lib/hanna/template_helpers.rb", "lib/hanna/template_page_patch.rb", "lib/hanna.rb", "Manifest", "Rakefile", "README.markdown"]
16
+ s.homepage = %q{http://github.com/mislav/hanna}
17
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Hanna", "--main", "README.markdown"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{hanna}
20
+ s.rubygems_version = %q{1.3.1}
21
+ s.summary = %q{An RDoc template that rocks}
14
22
 
15
- date: 2008-09-22 00:00:00 -04:00
16
- default_executable:
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: rdoc
20
- type: :runtime
21
- version_requirement:
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: 2.2.0
27
- version:
28
- - !ruby/object:Gem::Dependency
29
- name: haml
30
- type: :runtime
31
- version_requirement:
32
- version_requirements: !ruby/object:Gem::Requirement
33
- requirements:
34
- - - ~>
35
- - !ruby/object:Gem::Version
36
- version: "2.0"
37
- version:
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
- type: :runtime
41
- version_requirement:
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ~>
45
- - !ruby/object:Gem::Version
46
- version: 0.8.2
47
- version:
48
- - !ruby/object:Gem::Dependency
49
- name: echoe
50
- type: :development
51
- version_requirement:
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- version:
58
- description: Hanna is an RDoc template that scales. It's implemented in Haml, making its source clean and maintainable. It's built with simplicity, beauty and ease of browsing in mind.
59
- email: mislav.marohnic@gmail.com
60
- executables:
61
- - hanna
62
- extensions: []
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 2
63
26
 
64
- extra_rdoc_files:
65
- - bin/hanna
66
- - lib/hanna/hanna.rb
67
- - lib/hanna/rdoc_version.rb
68
- - lib/hanna/rdoctask.rb
69
- - lib/hanna/template_files/class_index.haml
70
- - lib/hanna/template_files/file_index.haml
71
- - lib/hanna/template_files/index.haml
72
- - lib/hanna/template_files/layout.haml
73
- - lib/hanna/template_files/method_list.haml
74
- - lib/hanna/template_files/page.haml
75
- - lib/hanna/template_files/sections.haml
76
- - lib/hanna/template_files/styles.sass
77
- - lib/hanna/template_helpers.rb
78
- - lib/hanna/template_page_patch.rb
79
- - lib/hanna.rb
80
- - README.markdown
81
- files:
82
- - bin/hanna
83
- - hanna.gemspec
84
- - lib/hanna/hanna.rb
85
- - lib/hanna/rdoc_version.rb
86
- - lib/hanna/rdoctask.rb
87
- - lib/hanna/template_files/class_index.haml
88
- - lib/hanna/template_files/file_index.haml
89
- - lib/hanna/template_files/index.haml
90
- - lib/hanna/template_files/layout.haml
91
- - lib/hanna/template_files/method_list.haml
92
- - lib/hanna/template_files/page.haml
93
- - lib/hanna/template_files/sections.haml
94
- - lib/hanna/template_files/styles.sass
95
- - lib/hanna/template_helpers.rb
96
- - lib/hanna/template_page_patch.rb
97
- - lib/hanna.rb
98
- - Manifest
99
- - Rakefile
100
- - README.markdown
101
- has_rdoc: false
102
- homepage: http://github.com/mislav/hanna
103
- post_install_message:
104
- rdoc_options:
105
- - --line-numbers
106
- - --inline-source
107
- - --title
108
- - Hanna
109
- - --main
110
- - README.markdown
111
- require_paths:
112
- - lib
113
- required_ruby_version: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: "0"
118
- version:
119
- required_rubygems_version: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "="
122
- - !ruby/object:Gem::Version
123
- version: "1.2"
124
- version:
125
- requirements: []
126
-
127
- rubyforge_project: hanna
128
- rubygems_version: 1.2.0
129
- specification_version: 2
130
- summary: An RDoc template that rocks
131
- test_files: []
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ s.add_runtime_dependency(%q<rdoc>, ["~> 2.2.0"])
29
+ s.add_runtime_dependency(%q<haml>, ["~> 2.0.4"])
30
+ s.add_runtime_dependency(%q<rake>, ["~> 0.8.2"])
31
+ s.add_development_dependency(%q<echoe>, [">= 0"])
32
+ else
33
+ s.add_dependency(%q<rdoc>, ["~> 2.2.0"])
34
+ s.add_dependency(%q<haml>, ["~> 2.0.4"])
35
+ s.add_dependency(%q<rake>, ["~> 0.8.2"])
36
+ s.add_dependency(%q<echoe>, [">= 0"])
37
+ end
38
+ else
39
+ s.add_dependency(%q<rdoc>, ["~> 2.2.0"])
40
+ s.add_dependency(%q<haml>, ["~> 2.0.4"])
41
+ s.add_dependency(%q<rake>, ["~> 0.8.2"])
42
+ s.add_dependency(%q<echoe>, [">= 0"])
43
+ end
44
+ end
@@ -2,11 +2,23 @@
2
2
  - type = values["list_title"].downcase
3
3
  - any_hidden = false
4
4
 
5
+ - if type == 'methods'
6
+ %script{:type => 'text/javascript'}
7
+ = read("prototype-1.6.0.3.js")
8
+ = build_javascript_search_index(values["entries"])
9
+ = read("method_search.js")
10
+ %form{:onsubmit => 'return performSearch()'}
11
+ %input{:type => 'text', :id => 'search', :class => 'untouched', :value => 'Enter search terms...'}
12
+ %ol#search-results{ :class => type, :style => 'display: none' }
13
+
5
14
  %ol#index-entries{ :class => type }
6
15
  - for entry in values["entries"]
7
16
  - hide = type == 'files' && entry['name'] =~ /\.rb$/
8
17
  - any_hidden = true if hide
9
- %li{ :class => hide ? 'other' : nil }= link_to entry['name'], entry['href']
18
+ - if type == 'methods'
19
+ %li{ :class => hide ? 'other' : nil }= link_to_method entry['name'], entry['href']
20
+ - else
21
+ %li{ :class => hide ? 'other' : nil }= link_to entry['name'], entry['href']
10
22
 
11
23
  - if any_hidden
12
24
  %li
@@ -8,4 +8,4 @@
8
8
  %frame{ :name => "Files", :title => "Files", :src => "fr_file_index.html" }
9
9
  %frame{ :name => "Classes", :src => "fr_class_index.html" }
10
10
  %frame{ :name => "Methods", :src => "fr_method_index.html" }
11
- %frame{ :name => "docwin", :src => values['initial_page'] }=""
11
+ %frame{ :name => "docwin", :src => values['initial_page'] }=""
@@ -33,4 +33,4 @@
33
33
  #footer
34
34
  = link_to '<strong>Hanna</strong> RDoc template', 'http://github.com/mislav/hanna'
35
35
  hand-crafted by
36
- %strong= link_to 'Mislav', 'http://mislav.caboo.se/'
36
+ %strong= link_to 'Mislav', 'http://mislav.uniqpath.com/'
@@ -0,0 +1,55 @@
1
+ $(document).observe('dom:loaded', function() {
2
+ // Setup search-during-typing.
3
+ new Form.Element.Observer('search', 0.3, function(element, value) {
4
+ performSearch();
5
+ });
6
+
7
+ // Remove the default search box value when the user puts the focus on
8
+ // the search box for the first time.
9
+ var search_box = $('search');
10
+ if ($F('search') == 'Enter search terms...') {
11
+ search_box.observe('focus', function() {
12
+ if (search_box.hasClassName('untouched')) {
13
+ search_box.removeClassName('untouched');
14
+ search_box.value = '';
15
+ }
16
+ });
17
+ } else {
18
+ search_box.removeClassName('untouched');
19
+ }
20
+ });
21
+
22
+ function searchInIndex(query) {
23
+ var i;
24
+ var results = [];
25
+ query = query.toLowerCase();
26
+ for (i = 0; i < search_index.length; i++) {
27
+ if (search_index[i].method.indexOf(query) != -1) {
28
+ results.push(search_index[i]);
29
+ }
30
+ }
31
+ return results;
32
+ }
33
+
34
+ function buildHtmlForResults(results) {
35
+ var html = "";
36
+ var i;
37
+ for (i = 0; i < results.length; i++) {
38
+ html += '<li>' + results[i].html + '</li>';
39
+ }
40
+ return html;
41
+ }
42
+
43
+ function performSearch() {
44
+ var query = $F('search');
45
+ if (query == '') {
46
+ $('index-entries').show();
47
+ $('search-results').hide();
48
+ } else {
49
+ var results = searchInIndex(query);
50
+ $('search-results').update(buildHtmlForResults(results));
51
+ $('index-entries').hide();
52
+ $('search-results').show();
53
+ }
54
+ return false;
55
+ }