brianjlandau-sdoc-helpers 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ sdoc-helpers
2
+ ============
3
+
4
+ Some Rake tasks and hacks to let me easily generate documentation like
5
+ that found at <http://defunkt.github.com/mustache/>.
6
+
7
+ After installing it, put this in your Rakefile:
8
+
9
+ begin
10
+ require 'sdoc_helpers'
11
+ Rake::SDocTask.new do |rdoc|
12
+ rdoc.title = "My Library Documentation"
13
+ end
14
+ rescue LoadError
15
+ puts "sdoc support not enabled. Please gem install sdoc-helpers."
16
+ end
17
+
18
+ Now (with a clean index) run `rake pages:init` to create and publish
19
+ your `gh-pages` branch.
20
+
21
+ It'll drop you back on master when it's done. Now in the future just
22
+ run `rake pages` to publish sdoc documentation to your `gh-pages`
23
+ branch.
24
+
25
+ Make sure you don't already have a `docs/` directory. If you do, this
26
+ won't work.
27
+
28
+ If you README (or any files) end in `md` or `markdown` they'll get
29
+ parsed by `RDiscount` and displayed as Markdown. This gives you a
30
+ nicely formatted README on GitHub as well as in your sdoc.
31
+
32
+ Enjoy.
33
+
34
+
35
+ Dependencies
36
+ ------------
37
+
38
+ * rdiscount
39
+ * sdoc
40
+
41
+
42
+ Installation
43
+ ------------
44
+
45
+ gem install sdoc-helpers
46
+
47
+
48
+ Author
49
+ ------
50
+
51
+ Chris Wanstrath // chris@ozmm.org
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ begin
2
+ require 'jeweler'
3
+
4
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
5
+ require 'sdoc_helpers/version'
6
+
7
+ Jeweler::Tasks.new do |gemspec|
8
+ gemspec.name = "brianjlandau-sdoc-helpers"
9
+ gemspec.summary = "Simple helpers to make using sdoc easier."
10
+ gemspec.description = "Simple helpers to make using sdoc easier."
11
+ gemspec.email = "chris@ozmm.org"
12
+ gemspec.homepage = "http://github.com/brianjlandau/sdoc-helpers"
13
+ gemspec.authors = ["Chris Wanstrath", "Brian Landau"]
14
+ gemspec.version = SDocHelpers::Version.to_s
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ rescue LoadError
18
+ puts "Jeweler not available."
19
+ puts "Install it with: gem install jeweler"
20
+ end
@@ -0,0 +1,23 @@
1
+ require 'rake/rdoctask'
2
+
3
+ module Rake
4
+ # Just a customized version of the normal RDoc task for generating SDocs.
5
+ class SDocTask < RDocTask
6
+ def initialize
7
+ @name = :rdoc
8
+ @rdoc_files = Rake::FileList.new
9
+ @rdoc_files.include('README*')
10
+ @rdoc_files.include('LICENSE*')
11
+ @rdoc_files.include('lib/**/*.rb')
12
+ @rdoc_dir = 'docs'
13
+ @main = Dir['README*'].first
14
+ @title = nil
15
+ @template = 'direct'
16
+ @external = false
17
+ @inline_source = true
18
+ @options = ['--fmt', 'shtml']
19
+ yield self if block_given?
20
+ define
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,4 @@
1
+ require 'sdoc'
2
+
3
+ require 'sdoc_helpers/markdown'
4
+ require 'sdoc_helpers/pages'
@@ -0,0 +1,56 @@
1
+ require 'digest/md5'
2
+
3
+ module SDocHelpers
4
+ module MarkdownFiles
5
+ def description
6
+ return super unless full_name =~ /\.(md|markdown)$/
7
+ # assuming your path is ROOT/html or ROOT/doc
8
+ path = Dir.pwd + '/../' + full_name
9
+ Markdown.new(gfm(File.read(path))).to_html + open_links_in_new_window
10
+ end
11
+
12
+ def open_links_in_new_window
13
+ <<-html
14
+ <script type="text/javascript">$(function() {
15
+ $('a').each(function() { $(this).attr('target', '_blank') })
16
+ })</script>
17
+ html
18
+ end
19
+
20
+ private
21
+
22
+ def gfm(text)
23
+ # Extract pre blocks
24
+ extractions = {}
25
+ text.gsub!(%r{<pre>.*?</pre>}m) do |match|
26
+ md5 = Digest::MD5.hexdigest(match)
27
+ extractions[md5] = match
28
+ "{gfm-extraction-#{md5}}"
29
+ end
30
+
31
+ # prevent foo_bar_baz from ending up with an italic word in the middle
32
+ text.gsub!(/(^(?! {4}|\t)\w+_\w+_\w[\w_]*)/) do |x|
33
+ x.gsub('_', '\_') if x.split('').sort.to_s[0..1] == '__'
34
+ end
35
+
36
+ # in very clear cases, let newlines become <br /> tags
37
+ text.gsub!(/(\A|^$\n)(^\w[^\n]*\n)(^\w[^\n]*$)+/m) do |x|
38
+ x.gsub(/^(.+)$/, "\\1 ")
39
+ end
40
+
41
+ # Insert pre block extractions
42
+ text.gsub!(/\{gfm-extraction-([0-9a-f]{32})\}/) do
43
+ extractions[$1]
44
+ end
45
+
46
+ text
47
+ end
48
+ end
49
+ end
50
+
51
+ begin
52
+ require 'rdiscount'
53
+ RDoc::TopLevel.send :include, SDocHelpers::MarkdownFiles
54
+ rescue LoadError
55
+ puts "Markdown support not enabled. Please install RDiscount."
56
+ end
@@ -0,0 +1,30 @@
1
+ require 'rake/sdoctask'
2
+
3
+ namespace :pages do
4
+ task :publish => [ :check_dirty, :rerdoc ] do
5
+ `git checkout gh-pages`
6
+ `ls -1 | grep -v docs | xargs rm -rf; mv docs/* .; rm -rf docs`
7
+ `git add .; git commit -m "update docs"; git push origin gh-pages`
8
+ `git checkout master`
9
+ puts :done
10
+ end
11
+
12
+ desc "Initialize GitHub Pages with documentation"
13
+ task :init => [ :check_dirty, :rerdoc ] do
14
+ `git symbolic-ref HEAD refs/heads/gh-pages`
15
+ `rm .git/index`
16
+ `ls -1 | grep -v docs | xargs rm -rf; mv docs/* .; rm -rf docs`
17
+ `git add .;git commit -m "create docs"; git push origin gh-pages`
18
+ `git checkout master`
19
+ puts :done
20
+ end
21
+
22
+ task :check_dirty do
23
+ if !`git status`.include?('nothing to commit')
24
+ abort "dirty index - not publishing!"
25
+ end
26
+ end
27
+ end
28
+
29
+ desc "Build and publish documentation using GitHub Pages."
30
+ task :pages => "pages:publish"
@@ -0,0 +1,3 @@
1
+ module SDocHelpers
2
+ Version = '0.1.2'
3
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brianjlandau-sdoc-helpers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Chris Wanstrath
8
+ - Brian Landau
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-01-24 00:00:00 -05:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: Simple helpers to make using sdoc easier.
18
+ email: chris@ozmm.org
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files:
24
+ - README.md
25
+ files:
26
+ - README.md
27
+ - Rakefile
28
+ - lib/rake/sdoctask.rb
29
+ - lib/sdoc_helpers.rb
30
+ - lib/sdoc_helpers/markdown.rb
31
+ - lib/sdoc_helpers/pages.rb
32
+ - lib/sdoc_helpers/version.rb
33
+ has_rdoc: true
34
+ homepage: http://github.com/brianjlandau/sdoc-helpers
35
+ licenses: []
36
+
37
+ post_install_message:
38
+ rdoc_options:
39
+ - --charset=UTF-8
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.3.5
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: Simple helpers to make using sdoc easier.
61
+ test_files: []
62
+