scruffy 0.2.6 → 0.3.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/{History.txt → CHANGES.txt} +15 -12
  2. data/README.txt +25 -25
  3. data/lib/scruffy.rb +0 -5
  4. data/lib/scruffy/components.rb +1 -0
  5. data/lib/scruffy/components/axes.rb +23 -0
  6. data/lib/scruffy/components/background.rb +3 -3
  7. data/lib/scruffy/components/base.rb +3 -0
  8. data/lib/scruffy/components/data_markers.rb +23 -8
  9. data/lib/scruffy/components/graphs.rb +4 -0
  10. data/lib/scruffy/components/grid.rb +45 -4
  11. data/lib/scruffy/components/legend.rb +63 -21
  12. data/lib/scruffy/components/title.rb +1 -1
  13. data/lib/scruffy/components/value_markers.rb +9 -16
  14. data/lib/scruffy/formatters.rb +41 -3
  15. data/lib/scruffy/graph.rb +27 -11
  16. data/lib/scruffy/graph_state.rb +5 -0
  17. data/lib/scruffy/helpers.rb +1 -0
  18. data/lib/scruffy/helpers/layer_container.rb +28 -4
  19. data/lib/scruffy/helpers/marker_helper.rb +25 -0
  20. data/lib/scruffy/helpers/point_container.rb +46 -17
  21. data/lib/scruffy/layers.rb +6 -1
  22. data/lib/scruffy/layers/bar.rb +35 -14
  23. data/lib/scruffy/layers/base.rb +51 -21
  24. data/lib/scruffy/layers/box.rb +114 -0
  25. data/lib/scruffy/layers/line.rb +31 -14
  26. data/lib/scruffy/layers/multi.rb +74 -0
  27. data/lib/scruffy/layers/multi_area.rb +119 -0
  28. data/lib/scruffy/layers/multi_bar.rb +51 -0
  29. data/lib/scruffy/layers/scatter.rb +13 -5
  30. data/lib/scruffy/layers/stacked.rb +2 -1
  31. data/lib/scruffy/rasterizers.rb +1 -0
  32. data/lib/scruffy/rasterizers/mini_magick_rasterizer.rb +24 -0
  33. data/lib/scruffy/rasterizers/rmagick_rasterizer.rb +8 -2
  34. data/lib/scruffy/renderers.rb +2 -0
  35. data/lib/scruffy/renderers/axis_legend.rb +41 -0
  36. data/lib/scruffy/renderers/base.rb +6 -4
  37. data/lib/scruffy/renderers/basic.rb +20 -0
  38. data/lib/scruffy/renderers/standard.rb +7 -6
  39. data/lib/scruffy/themes.rb +37 -1
  40. data/lib/scruffy/version.rb +1 -7
  41. data/spec/output/array.svg +55 -0
  42. data/spec/output/hash.svg +55 -0
  43. data/spec/scruffy/graph_spec.rb +4 -4
  44. data/spec/scruffy/layers/base_spec.rb +15 -10
  45. metadata +84 -96
  46. data/CHANGES +0 -104
  47. data/License.txt +0 -20
  48. data/MIT-LICENSE +0 -20
  49. data/Manifest.txt +0 -104
  50. data/PostInstall.txt +0 -6
  51. data/README +0 -9
  52. data/Rakefile +0 -108
  53. data/config/hoe.rb +0 -78
  54. data/config/requirements.rb +0 -15
  55. data/script/console +0 -10
  56. data/script/destroy +0 -14
  57. data/script/generate +0 -14
  58. data/script/txt2html +0 -82
  59. data/setup.rb +0 -1585
  60. data/spec/scruffy/layers/line_spec.rb +0 -10
  61. data/tasks/deployment.rake +0 -34
  62. data/tasks/environment.rake +0 -7
  63. data/tasks/website.rake +0 -17
  64. data/test/graph_creation_test.rb +0 -101
  65. data/test/test_helper.rb +0 -2
  66. data/website/images/blank.gif.html +0 -7
  67. data/website/images/graphs/all_smiles.png +0 -0
  68. data/website/images/graphs/bar_test.png +0 -0
  69. data/website/images/graphs/bar_test.svg +0 -71
  70. data/website/images/graphs/line_test.png +0 -0
  71. data/website/images/graphs/line_test.svg +0 -60
  72. data/website/images/graphs/multi_test.png +0 -0
  73. data/website/images/graphs/multi_test.svg +0 -296
  74. data/website/images/graphs/pie_test.png +0 -0
  75. data/website/images/graphs/pie_test.svg +0 -40
  76. data/website/images/graphs/split_test.png +0 -0
  77. data/website/images/graphs/split_test.svg +0 -295
  78. data/website/images/graphs/stacking_test.png +0 -0
  79. data/website/images/graphs/stacking_test.svg +0 -146
  80. data/website/images/header.png +0 -0
  81. data/website/images/header_gradient.png +0 -0
  82. data/website/images/overlay.png +0 -0
  83. data/website/images/scruffy.png +0 -0
  84. data/website/index.html +0 -225
  85. data/website/index.txt +0 -204
  86. data/website/javascripts/application.js +0 -2
  87. data/website/javascripts/controls.js +0 -815
  88. data/website/javascripts/dragdrop.js +0 -913
  89. data/website/javascripts/effects.js +0 -958
  90. data/website/javascripts/lightbox.js +0 -437
  91. data/website/javascripts/prototype.js +0 -2006
  92. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  93. data/website/stylesheets/lightbox.css +0 -27
  94. data/website/stylesheets/screen.css +0 -147
  95. data/website/stylesheets/scruffy.css +0 -227
  96. data/website/template.html.erb +0 -47
@@ -1,20 +0,0 @@
1
- Copyright (c) 2006 Brasten Sager (brasten@nagilum.com)
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,104 +0,0 @@
1
- CHANGES
2
- History.txt
3
- License.txt
4
- MIT-LICENSE
5
- Manifest.txt
6
- PostInstall.txt
7
- README
8
- README.txt
9
- Rakefile
10
- config/hoe.rb
11
- config/requirements.rb
12
- lib/scruffy.rb
13
- lib/scruffy/components.rb
14
- lib/scruffy/components/background.rb
15
- lib/scruffy/components/base.rb
16
- lib/scruffy/components/data_markers.rb
17
- lib/scruffy/components/graphs.rb
18
- lib/scruffy/components/grid.rb
19
- lib/scruffy/components/label.rb
20
- lib/scruffy/components/legend.rb
21
- lib/scruffy/components/style_info.rb
22
- lib/scruffy/components/title.rb
23
- lib/scruffy/components/value_markers.rb
24
- lib/scruffy/components/viewport.rb
25
- lib/scruffy/formatters.rb
26
- lib/scruffy/graph.rb
27
- lib/scruffy/graph_state.rb
28
- lib/scruffy/helpers.rb
29
- lib/scruffy/helpers/canvas.rb
30
- lib/scruffy/helpers/layer_container.rb
31
- lib/scruffy/helpers/meta.rb
32
- lib/scruffy/helpers/point_container.rb
33
- lib/scruffy/layers.rb
34
- lib/scruffy/layers/all_smiles.rb
35
- lib/scruffy/layers/area.rb
36
- lib/scruffy/layers/average.rb
37
- lib/scruffy/layers/bar.rb
38
- lib/scruffy/layers/base.rb
39
- lib/scruffy/layers/line.rb
40
- lib/scruffy/layers/pie.rb
41
- lib/scruffy/layers/pie_slice.rb
42
- lib/scruffy/layers/scatter.rb
43
- lib/scruffy/layers/sparkline_bar.rb
44
- lib/scruffy/layers/stacked.rb
45
- lib/scruffy/rasterizers.rb
46
- lib/scruffy/rasterizers/batik_rasterizer.rb
47
- lib/scruffy/rasterizers/rmagick_rasterizer.rb
48
- lib/scruffy/renderers.rb
49
- lib/scruffy/renderers/base.rb
50
- lib/scruffy/renderers/cubed.rb
51
- lib/scruffy/renderers/cubed3d.rb
52
- lib/scruffy/renderers/empty.rb
53
- lib/scruffy/renderers/pie.rb
54
- lib/scruffy/renderers/reversed.rb
55
- lib/scruffy/renderers/sparkline.rb
56
- lib/scruffy/renderers/split.rb
57
- lib/scruffy/renderers/standard.rb
58
- lib/scruffy/themes.rb
59
- lib/scruffy/version.rb
60
- script/console
61
- script/destroy
62
- script/generate
63
- script/txt2html
64
- setup.rb
65
- spec/scruffy/graph_spec.rb
66
- spec/scruffy/layers/base_spec.rb
67
- spec/scruffy/layers/line_spec.rb
68
- spec/spec_helper.rb
69
- tasks/deployment.rake
70
- tasks/environment.rake
71
- tasks/website.rake
72
- test/graph_creation_test.rb
73
- test/test_helper.rb
74
- website/images/blank.gif.html
75
- website/images/graphs/all_smiles.png
76
- website/images/graphs/bar_test.png
77
- website/images/graphs/bar_test.svg
78
- website/images/graphs/line_test.png
79
- website/images/graphs/line_test.svg
80
- website/images/graphs/multi_test.png
81
- website/images/graphs/multi_test.svg
82
- website/images/graphs/pie_test.png
83
- website/images/graphs/pie_test.svg
84
- website/images/graphs/split_test.png
85
- website/images/graphs/split_test.svg
86
- website/images/graphs/stacking_test.png
87
- website/images/graphs/stacking_test.svg
88
- website/images/header.png
89
- website/images/header_gradient.png
90
- website/images/overlay.png
91
- website/images/scruffy.png
92
- website/index.html
93
- website/index.txt
94
- website/javascripts/application.js
95
- website/javascripts/controls.js
96
- website/javascripts/dragdrop.js
97
- website/javascripts/effects.js
98
- website/javascripts/lightbox.js
99
- website/javascripts/prototype.js
100
- website/javascripts/rounded_corners_lite.inc.js
101
- website/stylesheets/lightbox.css
102
- website/stylesheets/screen.css
103
- website/stylesheets/scruffy.css
104
- website/template.html.erb
@@ -1,6 +0,0 @@
1
- For more information on scruffy, see http://scruffy.rubyforge.org
2
-
3
- NOTE: Change this information in PostInstall.txt
4
- You can also delete it if you don't want it.
5
-
6
-
data/README DELETED
@@ -1,9 +0,0 @@
1
- ==Scruffy Graphs
2
-
3
- Author:: Brasten Sager (brasten@nagilum.com)
4
- Date:: August 5th, 2006
5
-
6
- Scruffy is a Ruby library for generating high quality, good looking graphs. It is designed
7
- to be easy to use and highly customizable.
8
-
9
- For basic usage instructions, refer to the documentation for Scruffy::Graph.
data/Rakefile DELETED
@@ -1,108 +0,0 @@
1
- require 'config/requirements'
2
- require 'config/hoe' # setup Hoe + all gem configuration
3
-
4
- Dir['tasks/**/*.rake'].each { |rake| load rake }
5
-
6
- #
7
- #require 'rubygems'
8
- #require 'rake'
9
- #require 'rake/testtask'
10
- #require 'rake/rdoctask'
11
- #require 'rake/packagetask'
12
- #require 'rake/gempackagetask'
13
- #require 'rake/contrib/rubyforgepublisher'
14
- #require 'lib/scruffy'
15
- #require 'spec'
16
- #require 'diff/lcs'
17
- #require 'spec/rake/spectask'
18
- #
19
- #PKG_NAME = "scruffy"
20
- #PKG_VERSION = Scruffy::VERSION::STRING
21
- #PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
22
- #PKG_FILES = FileList[
23
- # '[A-Z]*',
24
- # 'lib/**/*.rb',
25
- # 'spec/**/*.rb'
26
- #]
27
- #
28
- #desc 'Runs all RSpec specs (set RCOV=true for coverage output)'
29
- #Spec::Rake::SpecTask.new do |t|
30
- # t.spec_files = FileList['spec/**/*_spec.rb']
31
- # t.rcov = ENV['RCOV']
32
- #end
33
- #
34
- #desc "Deploy docs to RubyForge"
35
- #task :rdoc_deploy => [:rdoc] do
36
- # dirs = %w{doc}
37
- # onserver = "brasten@rubyforge.org:/var/www/gforge-projects/scruffy"
38
- # dirs.each do | dir|
39
- # `scp -r "#{`pwd`.chomp}/#{dir}" "#{onserver}"`
40
- # end
41
- #end
42
- #
43
- ## Genereate the RDoc documentation
44
- #Rake::RDocTask.new { |rdoc|
45
- # rdoc.rdoc_dir = 'doc'
46
- # rdoc.title = "Scruffy - Graphing Library for Ruby"
47
- ## rdoc.options << '--line-numbers --inline-source --main README --accessor adv_attr_accessor=M'
48
- ## rdoc.template = "#{ENV['template']}.rb" if ENV['template']
49
- # rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE')
50
- # rdoc.rdoc_files.include('lib/scruffy.rb')
51
- # rdoc.rdoc_files.include('lib/scruffy/*.rb')
52
- # rdoc.rdoc_files.include('lib/scruffy/layers/*.rb')
53
- # rdoc.rdoc_files.include('lib/scruffy/renderers/*.rb')
54
- # rdoc.rdoc_files.include('lib/scruffy/components/*.rb')
55
- # rdoc.rdoc_files.include('lib/scruffy/helpers/*.rb')
56
- # rdoc.rdoc_files.include('lib/scruffy/rasterizers/*.rb')
57
- #}
58
- #
59
- #spec = Gem::Specification.new do |s|
60
- # s.name = PKG_NAME
61
- # s.version = PKG_VERSION
62
- # s.author = AUTHOR
63
- # s.email = "brasten@nagilum.com"
64
- # s.homepage = "http://scruffy.rubyforge.org"
65
- # s.summary = "A powerful, clean graphing library for Ruby."
66
- # s.add_dependency('builder', '>= 2.0')
67
- # s.description = <<-EOF
68
- # Scruffy is a Ruby library for generating powerful graphs. It is based on
69
- # SVG, allowing for powerful, clean code, as well as a good foundation for
70
- # future features.
71
- # EOF
72
- #
73
- # s.files = PKG_FILES.to_a
74
- # s.has_rdoc = true
75
- # s.rubyforge_project = "scruffy"
76
- #end
77
- #
78
- #Rake::GemPackageTask.new(spec) do |pkg|
79
- # pkg.need_zip = true
80
- # pkg.need_tar = true
81
- #end
82
- #
83
- #task :verify_user do
84
- # raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
85
- #end
86
- #
87
- #task :verify_password do
88
- # raise "RUBYFORGE_PASSWORD environment variable not set!" unless ENV['RUBYFORGE_PASSWORD']
89
- #end
90
- #
91
- #desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
92
- #task :publish_packages => [:verify_user, :verify_password, :package] do
93
- # require 'meta_project'
94
- # require 'rake/contrib/xforge'
95
- # release_files = FileList[
96
- # "pkg/#{PKG_FILE_NAME}.gem",
97
- # "pkg/#{PKG_FILE_NAME}.tgz",
98
- # "pkg/#{PKG_FILE_NAME}.zip"
99
- # ]
100
- #
101
- # Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |xf|
102
- # # Never hardcode user name and password in the Rakefile!
103
- # xf.user_name = ENV['RUBYFORGE_USER']
104
- # xf.password = ENV['RUBYFORGE_PASSWORD']
105
- # xf.files = release_files.to_a
106
- # xf.release_name = "Scruffy #{PKG_VERSION}"
107
- # end
108
- #end
@@ -1,78 +0,0 @@
1
- require 'scruffy/version'
2
-
3
- AUTHOR = 'Brasten Sager' # can also be an array of Authors
4
- # , 'David Parry', 'A.J. Ostman', 'Mat Schaffer']
5
- # (Using array of authors doesn't work for some reason.
6
-
7
- EMAIL = ["brasten@nagilum.com", "david.parry@suranyami.com"]
8
- DESCRIPTION = "Scruffy is a Ruby library for generating high quality, good looking graphs. It is designed to be easy to use and highly customizable."
9
- SUMMARY = 'A powerful, clean graphing library for Ruby.'
10
- GEM_NAME = 'scruffy' # what ppl will type to install your gem
11
- RUBYFORGE_PROJECT = 'scruffy' # The unix name for your project
12
- HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
13
- DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
14
- EXTRA_DEPENDENCIES = [
15
- ['builder', '>= 2.0'],
16
- ['diff-lcs', '>= 1.1.2']
17
- ] # An array of rubygem dependencies [name, version]
18
-
19
- @config_file = "~/.rubyforge/user-config.yml"
20
- @config = nil
21
- RUBYFORGE_USERNAME = "unknown"
22
- def rubyforge_username
23
- unless @config
24
- begin
25
- @config = YAML.load(File.read(File.expand_path(@config_file)))
26
- rescue
27
- puts <<-EOS
28
- ERROR: No rubyforge config file found: #{@config_file}
29
- Run 'rubyforge setup' to prepare your env for access to Rubyforge
30
- - See http://newgem.rubyforge.org/rubyforge.html for more details
31
- EOS
32
- exit
33
- end
34
- end
35
- RUBYFORGE_USERNAME.replace @config["username"]
36
- end
37
-
38
-
39
- REV = nil
40
- # UNCOMMENT IF REQUIRED:
41
- # REV = YAML.load(`svn info`)['Revision']
42
- VERS = Scruffy::VERSION::STRING + (REV ? ".#{REV}" : "")
43
- RDOC_OPTS = ['--quiet', '--title', 'scruffy documentation',
44
- "--opname", "index.html",
45
- "--line-numbers",
46
- "--main", "README",
47
- "--inline-source"]
48
-
49
- class Hoe
50
- def extra_deps
51
- @extra_deps.reject! { |x| Array(x).first == 'hoe' }
52
- @extra_deps
53
- end
54
- end
55
-
56
- # Generate all the Rake tasks
57
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
58
- $hoe = Hoe.new(GEM_NAME, VERS) do |p|
59
- p.developer(AUTHOR, EMAIL)
60
- p.description = DESCRIPTION
61
- p.summary = SUMMARY
62
- p.url = HOMEPATH
63
- p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
64
- p.test_globs = ["test/**/*_test.rb"]
65
- p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
66
-
67
- # == Optional
68
- p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
69
- #p.extra_deps = EXTRA_DEPENDENCIES
70
-
71
- #p.spec_extras = {} # A hash of extra values to set in the gemspec.
72
- end
73
-
74
- CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
75
- PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
76
- $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
77
- $hoe.rsync_args = '-av --delete --ignore-errors'
78
- $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
@@ -1,15 +0,0 @@
1
- require 'fileutils'
2
- include FileUtils
3
-
4
- require 'rubygems'
5
- %w[rake hoe newgem rubigen].each do |req_gem|
6
- begin
7
- require req_gem
8
- rescue LoadError
9
- puts "This Rakefile requires the '#{req_gem}' RubyGem."
10
- puts "Installation: gem install #{req_gem} -y"
11
- exit
12
- end
13
- end
14
-
15
- $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/scruffy.rb'}"
9
- puts "Loading scruffy gem"
10
- exec "#{irb} #{libs} --simple-prompt"
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- GEM_NAME = 'scruffy' # what ppl will type to install your gem
4
- RUBYFORGE_PROJECT = 'scruffy'
5
-
6
- require 'rubygems'
7
- begin
8
- require 'newgem'
9
- require 'rubyforge'
10
- rescue LoadError
11
- puts "\n\nGenerating the website requires the newgem RubyGem"
12
- puts "Install: gem install newgem\n\n"
13
- exit(1)
14
- end
15
- require 'redcloth'
16
- require 'syntax/convertors/html'
17
- require 'erb'
18
- require File.dirname(__FILE__) + "/../lib/#{GEM_NAME}/version.rb"
19
-
20
- version = Scruffy::VERSION::STRING
21
- download = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
22
-
23
- def rubyforge_project_id
24
- RubyForge.new.autoconfig["group_ids"][RUBYFORGE_PROJECT]
25
- end
26
-
27
- class Fixnum
28
- def ordinal
29
- # teens
30
- return 'th' if (10..19).include?(self % 100)
31
- # others
32
- case self % 10
33
- when 1: return 'st'
34
- when 2: return 'nd'
35
- when 3: return 'rd'
36
- else return 'th'
37
- end
38
- end
39
- end
40
-
41
- class Time
42
- def pretty
43
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
44
- end
45
- end
46
-
47
- def convert_syntax(syntax, source)
48
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
49
- end
50
-
51
- if ARGV.length >= 1
52
- src, template = ARGV
53
- template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
54
- else
55
- puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
56
- exit!
57
- end
58
-
59
- template = ERB.new(File.open(template).read)
60
-
61
- title = nil
62
- body = nil
63
- File.open(src) do |fsrc|
64
- title_text = fsrc.readline
65
- body_text_template = fsrc.read
66
- body_text = ERB.new(body_text_template).result(binding)
67
- syntax_items = []
68
- body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
69
- ident = syntax_items.length
70
- element, syntax, source = $1, $2, $3
71
- syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
72
- "syntax-temp-#{ident}"
73
- }
74
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
75
- body = RedCloth.new(body_text).to_html
76
- body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
77
- end
78
- stat = File.stat(src)
79
- created = stat.ctime
80
- modified = stat.mtime
81
-
82
- $stdout << template.result(binding)