mislav-hanna 0.1.4 → 0.1.5

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/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
+ }