docter 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,2 +1,7 @@
1
+ 1.0.1 (6/6/2007)
2
+ * Added: renumber_footnotes to template for handling footnote numbering when creating a single page.
3
+ * Changed: Ultraviolet no longer used as default syntax highlighting, must require separately.
4
+ * Changed: footnote_links is now list_links and the new method eliminates duplicates (based on URL), sorts alphabetically (the text component) and capitalizes the text description.
5
+
1
6
  1.0.0 (6/3/2007)
2
7
  * First release of working code.
data/Rakefile ADDED
@@ -0,0 +1,117 @@
1
+ require "rubygems"
2
+ Gem::manage_gems
3
+ require "rake/gempackagetask"
4
+ require "spec/rake/spectask"
5
+ require "rake/rdoctask"
6
+ require "lib/docter"
7
+
8
+
9
+ # Gem specification comes first, other tasks rely on it.
10
+ spec = Gem::Specification.new do |spec|
11
+ spec.name = "docter"
12
+ spec.version = File.read(__FILE__.pathmap("%d/lib/docter.rb")).scan(/VERSION\s*=\s*(['"])(.*)\1/)[0][1]
13
+ spec.author = "Assaf Arkin"
14
+ spec.email = "arkin@intalio.com"
15
+ spec.homepage = "http://#{spec.name}.rubyforge.org"
16
+ spec.summary = "We has docs"
17
+ spec.files = FileList["lib/**/*", "CHANGELOG", "README", "LICENSE", "Rakefile", "html/**/*"].collect
18
+ spec.require_path = "lib"
19
+ spec.autorequire = "docter.rb"
20
+ spec.has_rdoc = true
21
+ spec.extra_rdoc_files = ["README", "CHANGELOG", "LICENSE"]
22
+ spec.rdoc_options << "--title" << "Docter -- #{spec.summary}" <<
23
+ "--main" << "README" << "--line-numbers" << "-inline-source"
24
+ spec.rubyforge_project = "buildr"
25
+
26
+ # Tested against these dependencies.
27
+ spec.add_dependency "facets", "~> 1.8"
28
+ spec.add_dependency "RedCloth", "~> 3.0"
29
+ spec.add_dependency "haml", "~> 1.5"
30
+ spec.add_dependency "mongrel", "~> 1.0"
31
+ end
32
+
33
+
34
+ # Testing is everything.
35
+ desc "Run test cases"
36
+ Spec::Rake::SpecTask.new(:test) do |task|
37
+ task.spec_files = FileList["test/**/*.rb"]
38
+ task.spec_opts = [ "--format", "specdoc", "--color", "--diff" ]
39
+ end
40
+
41
+ desc "Run test cases with rcov"
42
+ Spec::Rake::SpecTask.new(:rcov) do |task|
43
+ task.spec_files = FileList["test/**/*.rb"]
44
+ task.spec_opts = [ "--format", "specdoc", "--color", "--diff" ]
45
+ task.rcov = true
46
+ end
47
+
48
+
49
+ # Packaging and local installation.
50
+ Rake::GemPackageTask.new(spec) do |pkg|
51
+ pkg.need_tar = true
52
+ pkg.need_zip = true
53
+ end
54
+
55
+ desc "Install the package locally"
56
+ task :install=>:package do |task|
57
+ system "gem", "install", "pkg/#{spec.name}-#{spec.version}.gem"
58
+ end
59
+
60
+ desc "Uninstall previously installed packaged"
61
+ task :uninstall do |task|
62
+ system "gem", "uninstall", spec.name, "-v", spec.version.to_s
63
+ end
64
+
65
+
66
+ desc "Generate RDoc documentation"
67
+ rdoc = Rake::RDocTask.new(:rdoc) do |rdoc|
68
+ rdoc.rdoc_dir = "rdoc"
69
+ rdoc.title = spec.name
70
+ rdoc.options = spec.rdoc_options
71
+ rdoc.rdoc_files.include("lib/**/*.rb")
72
+ rdoc.rdoc_files.include spec.extra_rdoc_files
73
+ end
74
+
75
+ task("clobber") { rm_rf [rdoc.rdoc_dir].map(&:to_s) }
76
+
77
+
78
+ # Commit to SVN, upload and do the release cycle.
79
+ namespace :svn do
80
+ task :clean? do |task|
81
+ status = `svn status`.reject { |line| line =~ /\s(pkg|html)$/ }
82
+ fail "Cannot release unless all local changes are in SVN:\n#{status}" unless status.empty?
83
+ end
84
+
85
+ task :tag do |task|
86
+ cur_url = `svn info`.scan(/URL: (.*)/)[0][0]
87
+ new_url = cur_url.sub(/trunk$/, "tags/#{spec.version.to_s}")
88
+ system "svn", "remove", new_url, "-m", "Removing old copy" rescue nil
89
+ system "svn", "copy", cur_url, new_url, "-m", "Release #{spec.version.to_s}"
90
+ end
91
+ end
92
+
93
+ namespace :upload do
94
+ task :packages=>["rake:package"] do |task|
95
+ # Read the changes for this release.
96
+ pattern = /(^(\d+\.\d+(?:\.\d+)?)\s+\(\d+\/\d+\/\d+\)\s*((:?^[^\n]+\n)*))/
97
+ changelog = File.read(__FILE__.pathmap("%d/CHANGELOG"))
98
+ changes = changelog.scan(pattern).inject({}) { |hash, set| hash[set[1]] = set[2] ; hash }
99
+ current = changes[spec.version.to_s]
100
+ if !current && spec.version.to_s =~ /\.0$/
101
+ current = changes[spec.version.to_s.split(".")[0..-2].join(".")]
102
+ end
103
+ fail "No changeset found for version #{spec.version}" unless current
104
+
105
+ puts "Uploading #{spec.name} #{spec.version}"
106
+ files = ["gem", "tgz", "zip"].map { |ext| "pkg/#{spec.name}-#{spec.version}.#{ext}" }
107
+ system "rubyforge", "login"
108
+ files.each do |file|
109
+ system "rubyforge", "add_release", spec.rubyforge_project.downcase, spec.name.downcase,
110
+ spec.version.to_s, file, "-a", current
111
+ end
112
+ puts "Release #{spec.version} uploaded"
113
+ end
114
+ end
115
+
116
+ desc "Upload release to RubyForge including docs, tag SVN"
117
+ task :release=>[ "clobber", "svn:clean?", "test", "upload:packages" ]
@@ -20,7 +20,7 @@ module Docter
20
20
  if url =~ /^\w+:/
21
21
  unless index = @links.index(url)
22
22
  index = @links.size
23
- @links << [inner_text_from(link), url]
23
+ @links << [url, inner_text_from(link)]
24
24
  end
25
25
  mark ? "#{link}<sup>[#{index + 1}]</sup>" : link
26
26
  else
@@ -29,9 +29,25 @@ module Docter
29
29
  end
30
30
  end
31
31
 
32
- def footnote_links(cls = nil)
33
- list = @links.map { |link| %{<dt>#{link.first}</dt><dd><a href="#{link.last}">#{link.last}</a></dd>} }
34
- %{<dl class="#{cls}">#{list.join}</dl>}
32
+ def list_links(cls = nil)
33
+ # Remove duplicate links (same URL), sort by text and convert into DT/DD pairs.
34
+ links = @links.inject({}) { |hash, link| hash[link.first] ||= link.last ; hash }.
35
+ sort { |a,b| a.last <=> b.last }.
36
+ map { |url, text| %{<dt>#{text.capitalize}</dt><dd><a href="#{url}">#{url}</a></dd>} }
37
+ %{<dl class="#{cls}">#{links.join}</dl>}
38
+ end
39
+
40
+ def renumber_footnotes(html)
41
+ @footnote ||= 0
42
+ html.gsub(/<a href="#fn(\d+)">\1<\/a>/) {
43
+ # Renumber footnote references starting from the last footnote number.
44
+ fn = $1.to_i + @footnote
45
+ %{<a href="#fn#{fn}">#{fn}</a>}
46
+ }.gsub(/<p id="fn(\d+)"(.*?)><sup>\1<\/sup>(.*?)<\/p>/m) {
47
+ # Renumber footnotes the same way, and update the last footnote number.
48
+ @footnote += 1
49
+ %{<p id="fn#{@footnote}"#{$2}><sup>#{@footnote}</sup>#{$3}</p>}
50
+ }
35
51
  end
36
52
 
37
53
  end
@@ -1,3 +1,5 @@
1
+ require "uv" # gem install ultraviolet
2
+
1
3
  module Docter
2
4
 
3
5
  SYNTAX_THEME = "eiffel"
data/lib/docter.rb CHANGED
@@ -9,7 +9,7 @@ require "facets/core/kernel/tap"
9
9
  require "facet/kernel/__DIR__"
10
10
 
11
11
  module Docter
12
- VERSION = "1.0.0".freeze
12
+ VERSION = "1.0.1".freeze
13
13
  end
14
14
 
15
15
  $LOAD_PATH.unshift __DIR__
@@ -30,4 +30,3 @@ require "docter/template.rb"
30
30
  require "docter/collection.rb"
31
31
  require "docter/server.rb" if defined?(Mongrel)
32
32
  require "docter/rake.rb" if defined?(Rake)
33
- require "docter/ultraviolet.rb" if defined?(Uv)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: docter
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-07-03 00:00:00 -07:00
6
+ version: 1.0.1
7
+ date: 2007-07-06 00:00:00 -07:00
8
8
  summary: We has docs
9
9
  require_paths:
10
10
  - lib
@@ -41,6 +41,7 @@ files:
41
41
  - CHANGELOG
42
42
  - README
43
43
  - LICENSE
44
+ - Rakefile
44
45
  test_files: []
45
46
 
46
47
  rdoc_options: