brandon-codex 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +18 -0
- data/LICENSE.txt +29 -0
- data/Manifest.txt +105 -0
- data/PostInstall.txt +5 -0
- data/README.txt +31 -0
- data/Rakefile +6 -0
- data/app_generators/codex/USAGE +5 -0
- data/app_generators/codex/codex_generator.rb +109 -0
- data/app_generators/codex/templates/Rakefile +59 -0
- data/app_generators/codex/templates/bin/build_all.rb +47 -0
- data/app_generators/codex/templates/bin/postprocess_all.rb +5 -0
- data/app_generators/codex/templates/bin/pressie.rb +10 -0
- data/app_generators/codex/templates/code/control/basic_continuation.rb +11 -0
- data/app_generators/codex/templates/code/control/cc_throw_catch.rb +59 -0
- data/app_generators/codex/templates/code/control/closure_continuation.rb +8 -0
- data/app_generators/codex/templates/code/control/closure_continuation_2.rb +12 -0
- data/app_generators/codex/templates/content/basics.textile +37 -0
- data/app_generators/codex/templates/content/building.textile +27 -0
- data/app_generators/codex/templates/content/example.textile +80 -0
- data/app_generators/codex/templates/content/including_code.textile +80 -0
- data/app_generators/codex/templates/content/including_tex.textile +31 -0
- data/app_generators/codex/templates/content/metadata.yml +4 -0
- data/app_generators/codex/templates/content/table_of_contents.textile +20 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CSS.html +115 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CSharp.html +134 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CollapseCode.html +90 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Cpp.html +190 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CrashTest.html +108 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Delphi.html +112 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/FirstLine.html +90 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Index.html +80 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Java.html +122 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/JavaScript.html +112 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/NoControls.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/NoGutter.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/PHP.html +102 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Python.html +121 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Ruby.html +131 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/SQL.html +98 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/clipboard.swf +0 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js +32 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCpp.js +73 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCss.js +52 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js +34 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJScript.js +22 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJava.js +28 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPhp.js +60 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPython.js +30 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushRuby.js +28 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushSql.js +42 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushVb.js +29 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushXml.js +70 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.js +414 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.uncompressed.js +674 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/ShowColumns.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/SmartTabs.html +88 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css +158 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/TestPages.css +63 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Templates/Test.dwt +80 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/VB.html +115 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/XML.html +136 -0
- data/app_generators/codex/templates/html/all.html +0 -0
- data/app_generators/codex/templates/readme.txt +4 -0
- data/app_generators/codex/templates/ui/default/blank.gif +0 -0
- data/app_generators/codex/templates/ui/default/bodybg.gif +0 -0
- data/app_generators/codex/templates/ui/default/framing.css +23 -0
- data/app_generators/codex/templates/ui/default/iepngfix.htc +42 -0
- data/app_generators/codex/templates/ui/default/opera.css +7 -0
- data/app_generators/codex/templates/ui/default/outline.css +15 -0
- data/app_generators/codex/templates/ui/default/pretty.css +86 -0
- data/app_generators/codex/templates/ui/default/print.css +1 -0
- data/app_generators/codex/templates/ui/default/s5-core.css +9 -0
- data/app_generators/codex/templates/ui/default/slides.css +3 -0
- data/app_generators/codex/templates/ui/default/slides.js +553 -0
- data/bin/codex +17 -0
- data/codex.gemspec +30 -0
- data/config/hoe.rb +76 -0
- data/config/requirements.rb +15 -0
- data/lib/codex.rb +23 -0
- data/lib/codex/content.rb +27 -0
- data/lib/codex/pressie.rb +108 -0
- data/lib/codex/version.rb +9 -0
- data/lib/stylesheets/pressie.css +196 -0
- data/lib/stylesheets/print.css +149 -0
- data/lib/stylesheets/ruby.png +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +9 -0
- data/test/test_codex.rb +11 -0
- data/test/test_codex_generator.rb +78 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +3 -0
- metadata +164 -0
data/bin/codex
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rubigen'
|
5
|
+
|
6
|
+
if %w(-v --version).include? ARGV.first
|
7
|
+
require 'codex/version'
|
8
|
+
puts "#{File.basename($0)} #{Codex::VERSION::STRING}"
|
9
|
+
exit(0)
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'rubigen/scripts/generate'
|
13
|
+
source = RubiGen::PathSource.new(:application,
|
14
|
+
File.join(File.dirname(__FILE__), "../app_generators"))
|
15
|
+
RubiGen::Base.reset_sources
|
16
|
+
RubiGen::Base.append_sources source
|
17
|
+
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'codex')
|
data/codex.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{codex}
|
3
|
+
s.version = "1.0.3"
|
4
|
+
|
5
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Dave Thomas"]
|
9
|
+
s.date = %q{2008-05-19}
|
10
|
+
s.default_executable = %q{codex}
|
11
|
+
s.description = %q{Simple tool for creating source-code intensive presentations and courses}
|
12
|
+
s.email = ["dave@pragprog.com"]
|
13
|
+
s.executables = ["codex"]
|
14
|
+
s.extra_rdoc_files = ["History.txt", "LICENSE.txt", "Manifest.txt", "PostInstall.txt", "README.txt", "app_generators/codex/templates/readme.txt"]
|
15
|
+
s.files = ["History.txt", "LICENSE.txt", "Manifest.txt", "PostInstall.txt", "README.txt", "Rakefile", "app_generators/codex/USAGE", "app_generators/codex/codex_generator.rb", "app_generators/codex/templates/Rakefile", "app_generators/codex/templates/bin/build_all.rb", "app_generators/codex/templates/bin/postprocess_all.rb", "app_generators/codex/templates/bin/pressie.rb", "app_generators/codex/templates/code/control/basic_continuation.rb", "app_generators/codex/templates/code/control/cc_throw_catch.rb", "app_generators/codex/templates/code/control/closure_continuation.rb", "app_generators/codex/templates/code/control/closure_continuation_2.rb", "app_generators/codex/templates/dp.SyntaxHighlighter/CSS.html", "app_generators/codex/templates/dp.SyntaxHighlighter/CSharp.html", "app_generators/codex/templates/dp.SyntaxHighlighter/CollapseCode.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Cpp.html", "app_generators/codex/templates/dp.SyntaxHighlighter/CrashTest.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Delphi.html", "app_generators/codex/templates/dp.SyntaxHighlighter/FirstLine.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Index.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Java.html", "app_generators/codex/templates/dp.SyntaxHighlighter/JavaScript.html", "app_generators/codex/templates/dp.SyntaxHighlighter/NoControls.html", "app_generators/codex/templates/dp.SyntaxHighlighter/NoGutter.html", "app_generators/codex/templates/dp.SyntaxHighlighter/PHP.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Python.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Ruby.html", "app_generators/codex/templates/dp.SyntaxHighlighter/SQL.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/clipboard.swf", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCpp.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCss.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJScript.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJava.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPhp.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPython.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushRuby.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushSql.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushVb.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushXml.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.js", "app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.uncompressed.js", "app_generators/codex/templates/dp.SyntaxHighlighter/ShowColumns.html", "app_generators/codex/templates/dp.SyntaxHighlighter/SmartTabs.html", "app_generators/codex/templates/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css", "app_generators/codex/templates/dp.SyntaxHighlighter/Styles/TestPages.css", "app_generators/codex/templates/dp.SyntaxHighlighter/Templates/Test.dwt", "app_generators/codex/templates/dp.SyntaxHighlighter/VB.html", "app_generators/codex/templates/dp.SyntaxHighlighter/XML.html", "app_generators/codex/templates/html/all.html", "app_generators/codex/templates/readme.txt", "app_generators/codex/templates/content/basics.textile", "app_generators/codex/templates/content/building.textile", "app_generators/codex/templates/content/example.textile", "app_generators/codex/templates/content/including_code.textile", "app_generators/codex/templates/content/including_tex.textile", "app_generators/codex/templates/content/metadata.yml", "app_generators/codex/templates/content/table_of_contents.textile", "app_generators/codex/templates/ui/default/blank.gif", "app_generators/codex/templates/ui/default/bodybg.gif", "app_generators/codex/templates/ui/default/framing.css", "app_generators/codex/templates/ui/default/iepngfix.htc", "app_generators/codex/templates/ui/default/opera.css", "app_generators/codex/templates/ui/default/outline.css", "app_generators/codex/templates/ui/default/pretty.css", "app_generators/codex/templates/ui/default/print.css", "app_generators/codex/templates/ui/default/s5-core.css", "app_generators/codex/templates/ui/default/slides.css", "app_generators/codex/templates/ui/default/slides.js", "bin/codex", "codex.gemspec", "config/hoe.rb", "config/requirements.rb", "lib/codex.rb", "lib/codex/content.rb", "lib/codex/pressie.rb", "lib/codex/version.rb", "lib/stylesheets/pressie.css", "lib/stylesheets/print.css", "lib/stylesheets/ruby.png", "script/console", "script/destroy", "script/generate", "setup.rb", "tasks/deployment.rake", "tasks/environment.rake", "tasks/website.rake", "test/test_codex.rb", "test/test_codex_generator.rb", "test/test_generator_helper.rb", "test/test_helper.rb"]
|
16
|
+
s.has_rdoc = true
|
17
|
+
s.homepage = %q{http://codex.rubyforge.org}
|
18
|
+
s.post_install_message = %q{
|
19
|
+
To create new presentations:
|
20
|
+
|
21
|
+
codex path/to/presentation/folder
|
22
|
+
|
23
|
+
}
|
24
|
+
s.rdoc_options = ["--main", "README.txt"]
|
25
|
+
s.require_paths = ["lib"]
|
26
|
+
s.rubyforge_project = %q{codex}
|
27
|
+
s.rubygems_version = %q{1.1.1}
|
28
|
+
s.summary = %q{Simple tool for creating source-code intensive presentations and courses}
|
29
|
+
s.test_files = ["test/test_codex.rb", "test/test_codex_generator.rb", "test/test_generator_helper.rb", "test/test_helper.rb"]
|
30
|
+
end
|
data/config/hoe.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'codex/version'
|
2
|
+
|
3
|
+
AUTHOR = 'Dave Thomas' # can also be an array of Authors
|
4
|
+
EMAIL = "dave@pragprog.com"
|
5
|
+
DESCRIPTION = "Simple tool for creating source-code intensive presentations and courses"
|
6
|
+
GEM_NAME = 'codex' # what ppl will type to install your gem
|
7
|
+
RUBYFORGE_PROJECT = 'codex' # The unix name for your project
|
8
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
9
|
+
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
10
|
+
EXTRA_DEPENDENCIES = [
|
11
|
+
['rake', '>= 0.8.1'],
|
12
|
+
['RedCloth', '>= 3.0.4'],
|
13
|
+
['ritex', '>= 0.1'],
|
14
|
+
['rubigen', '>=1.3.2']
|
15
|
+
] # An array of rubygem dependencies [name, version]
|
16
|
+
|
17
|
+
@config_file = "~/.rubyforge/user-config.yml"
|
18
|
+
@config = nil
|
19
|
+
RUBYFORGE_USERNAME = "unknown"
|
20
|
+
def rubyforge_username
|
21
|
+
unless @config
|
22
|
+
begin
|
23
|
+
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
24
|
+
rescue
|
25
|
+
puts <<-EOS
|
26
|
+
ERROR: No rubyforge config file found: #{@config_file}
|
27
|
+
Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
28
|
+
- See http://newgem.rubyforge.org/rubyforge.html for more details
|
29
|
+
EOS
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
end
|
33
|
+
RUBYFORGE_USERNAME.replace @config["username"]
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
REV = nil
|
38
|
+
# UNCOMMENT IF REQUIRED:
|
39
|
+
# REV = YAML.load(`svn info`)['Revision']
|
40
|
+
VERS = Codex::VERSION::STRING + (REV ? ".#{REV}" : "")
|
41
|
+
RDOC_OPTS = ['--quiet', '--title', 'codex documentation',
|
42
|
+
"--opname", "index.html",
|
43
|
+
"--line-numbers",
|
44
|
+
"--main", "README",
|
45
|
+
"--inline-source"]
|
46
|
+
|
47
|
+
class Hoe
|
48
|
+
def extra_deps
|
49
|
+
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
50
|
+
@extra_deps
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Generate all the Rake tasks
|
55
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
56
|
+
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
57
|
+
p.developer(AUTHOR, EMAIL)
|
58
|
+
p.description = DESCRIPTION
|
59
|
+
p.summary = DESCRIPTION
|
60
|
+
p.url = HOMEPATH
|
61
|
+
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
62
|
+
p.test_globs = ["test/**/test_*.rb"]
|
63
|
+
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
64
|
+
|
65
|
+
# == Optional
|
66
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
67
|
+
#p.extra_deps = EXTRA_DEPENDENCIES
|
68
|
+
|
69
|
+
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
70
|
+
end
|
71
|
+
|
72
|
+
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
73
|
+
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
74
|
+
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
75
|
+
$hoe.rsync_args = '-av --delete --ignore-errors'
|
76
|
+
$hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
|
@@ -0,0 +1,15 @@
|
|
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 lib/filters]))
|
data/lib/codex.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
$:.unshift(base_dir) unless
|
3
|
+
$:.include?(base_dir) || $:.include?(File.expand_path(base_dir))
|
4
|
+
|
5
|
+
module Codex; end
|
6
|
+
|
7
|
+
require 'codex/content'
|
8
|
+
require 'codex/pressie'
|
9
|
+
require 'codex/filter'
|
10
|
+
|
11
|
+
# Filters:
|
12
|
+
|
13
|
+
# If a filter fails to load, simply ignore it (it may be a missing local gem, such
|
14
|
+
# as ritex). This means that folks who write filters must ensure that their source
|
15
|
+
# throws an exception should it fail to find all its dependencies
|
16
|
+
|
17
|
+
Dir.glob(File.join(base_dir, 'codex/filters/*.rb')) do |filter|
|
18
|
+
begin
|
19
|
+
require(filter)
|
20
|
+
rescue Exception => e
|
21
|
+
;
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'redcloth'
|
2
|
+
|
3
|
+
class Codex::Content
|
4
|
+
START_SLIDE = %{<div class="slide">\n}
|
5
|
+
END_SLIDE = %{</div>\n}
|
6
|
+
BETWEEN_SLIDES = END_SLIDE + "\n" + START_SLIDE
|
7
|
+
|
8
|
+
def initialize(original)
|
9
|
+
@original = original.sub(/__END__.*/m, '').gsub(/__SKIP__.*?__ENDSKIP__/m, '')
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_html
|
13
|
+
textile = Codex::Filters.instance.filter_all(@original)
|
14
|
+
content = split_into_slides(textile)
|
15
|
+
html = RedCloth.new(content).to_html
|
16
|
+
end
|
17
|
+
|
18
|
+
def split_into_slides(textile)
|
19
|
+
result = []
|
20
|
+
slides = textile.split(/^h1/).each do |slide|
|
21
|
+
unless slide.empty?
|
22
|
+
result << START_SLIDE << "\nh1" << slide << END_SLIDE
|
23
|
+
end
|
24
|
+
end
|
25
|
+
result.join
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
S5_HEAD = %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
7
|
+
|
8
|
+
<head>
|
9
|
+
<title>&title;</title>
|
10
|
+
<!-- metadata -->
|
11
|
+
<meta name="generator" content="S5" />
|
12
|
+
<meta name="version" content="S5 1.1" />
|
13
|
+
<meta name="presdate" content="&date" />
|
14
|
+
<meta name="author" content="&author;" />
|
15
|
+
<meta name="organization" content="&organization;" />
|
16
|
+
<meta name="company" content="&company;" />
|
17
|
+
<!-- configuration parameters -->
|
18
|
+
<meta name="defaultView" content="slideshow" />
|
19
|
+
<meta name="controlVis" content="hidden" />
|
20
|
+
<!-- style sheet links -->
|
21
|
+
<link rel="stylesheet" href="../ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
|
22
|
+
<link rel="stylesheet" href="../ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
|
23
|
+
<link rel="stylesheet" href="../lib/stylesheets/print.css" type="text/css" media="print" id="slidePrint" />
|
24
|
+
<link rel="stylesheet" href="../ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
|
25
|
+
|
26
|
+
<link rel="stylesheet" href="../lib/stylesheets/pressie.css" type="text/css" />
|
27
|
+
|
28
|
+
<!-- S5 JS -->
|
29
|
+
<script src="../ui/default/slides.js" type="text/javascript"></script>
|
30
|
+
|
31
|
+
<!-- Syntax Highlighter -->
|
32
|
+
<link rel="stylesheet" href="../dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css"></link>
|
33
|
+
|
34
|
+
</head>
|
35
|
+
<body>
|
36
|
+
|
37
|
+
<div class="layout">
|
38
|
+
<div id="controls"><!-- DO NOT EDIT --></div>
|
39
|
+
<div id="currentSlide"><!-- DO NOT EDIT --></div>
|
40
|
+
<div id="header"></div>
|
41
|
+
<div id="footer">
|
42
|
+
<h2>Copyright © ©right;</h2>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
</div>
|
46
|
+
|
47
|
+
|
48
|
+
<div class="presentation">
|
49
|
+
}
|
50
|
+
|
51
|
+
S5_TAIL = %{
|
52
|
+
<!-- Syntax Highlighter -->
|
53
|
+
<script language="javascript" src="../dp.SyntaxHighlighter/Scripts/shCore.js"></script>
|
54
|
+
<script language="javascript" src="../dp.SyntaxHighlighter/Scripts/shBrushCpp.js"></script>
|
55
|
+
<script language="javascript" src="../dp.SyntaxHighlighter/Scripts/shBrushRuby.js"></script>
|
56
|
+
<script language="javascript" src="../dp.SyntaxHighlighter/Scripts/shBrushXml.js"></script>
|
57
|
+
<script language="javascript">
|
58
|
+
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
|
59
|
+
dp.SyntaxHighlighter.HighlightAll('code');
|
60
|
+
</script>
|
61
|
+
</div>
|
62
|
+
</body>
|
63
|
+
</html>
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
module Codex
|
68
|
+
class Pressie
|
69
|
+
|
70
|
+
def self.process
|
71
|
+
new.process
|
72
|
+
end
|
73
|
+
|
74
|
+
def process
|
75
|
+
metadata_name = ARGV.shift || usage("Missing metadata file name")
|
76
|
+
load_metadata(metadata_name)
|
77
|
+
input_name = ARGV.shift || usage("Missing input file name")
|
78
|
+
content = Content.new(File.read(input_name)) rescue usage($!.message)
|
79
|
+
header = substitute_metadata_into(S5_HEAD)
|
80
|
+
puts header, content.to_html, S5_TAIL
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def usage(msg = nil)
|
87
|
+
STDERR.puts "pressie.rb <metadatafile> <inputfile>"
|
88
|
+
if msg
|
89
|
+
STDERR.puts
|
90
|
+
STDERR.puts msg
|
91
|
+
end
|
92
|
+
exit 1
|
93
|
+
end
|
94
|
+
|
95
|
+
def load_metadata(file_name)
|
96
|
+
@metadata = YAML.load_file(file_name)
|
97
|
+
end
|
98
|
+
|
99
|
+
def substitute_metadata_into(text)
|
100
|
+
text = text.dup
|
101
|
+
%w{author company organization date copyright title}.each do |key|
|
102
|
+
text.gsub!(/&#{key};/, @metadata[key]) if @metadata.has_key?(key)
|
103
|
+
end
|
104
|
+
text
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
code {
|
2
|
+
font-family: Monaco;
|
3
|
+
}
|
4
|
+
|
5
|
+
|
6
|
+
div.slide code {
|
7
|
+
font-weight: normal;
|
8
|
+
font-size: 85%;
|
9
|
+
color: #228;
|
10
|
+
}
|
11
|
+
|
12
|
+
div.dp-highlighter
|
13
|
+
{
|
14
|
+
font-family: "Gill Sans", "Consolas", "Courier New", Courier, mono;
|
15
|
+
font-size: 100%;
|
16
|
+
background-color: white;
|
17
|
+
overflow: auto;
|
18
|
+
/* margin: 18px 0px 18px 0px; */
|
19
|
+
padding-top: 1px; /* adds a little border on top when controls are hidden */
|
20
|
+
margin-bottom: 0px;
|
21
|
+
border: 2px solid;
|
22
|
+
}
|
23
|
+
|
24
|
+
div.dp-highlighter ol
|
25
|
+
{
|
26
|
+
margin-top: 1px;
|
27
|
+
margin-bottom: 10px;
|
28
|
+
padding: 0px;
|
29
|
+
}
|
30
|
+
|
31
|
+
div.dp-highlighter ol li
|
32
|
+
{
|
33
|
+
background-color: white;
|
34
|
+
}
|
35
|
+
|
36
|
+
div.dp-highlighter .keyword {
|
37
|
+
font-weight: normal;
|
38
|
+
color: #33b;
|
39
|
+
}
|
40
|
+
|
41
|
+
div.dp-highlighter .variable {
|
42
|
+
font-weight: normal;
|
43
|
+
}
|
44
|
+
|
45
|
+
div.dp-highlighter .string {
|
46
|
+
color: #22c;
|
47
|
+
font-style: italic;
|
48
|
+
}
|
49
|
+
|
50
|
+
.dp-cpp span.datatypes {
|
51
|
+
font-weight: normal;
|
52
|
+
}
|
53
|
+
|
54
|
+
div.codeurl {
|
55
|
+
margin-top: 0.5em;
|
56
|
+
margin-bottom: 1.5em;
|
57
|
+
padding-right: 1em;
|
58
|
+
text-align: right;
|
59
|
+
font-size: 50%;
|
60
|
+
}
|
61
|
+
|
62
|
+
div.slide ul {
|
63
|
+
margin-left: 0pt;
|
64
|
+
}
|
65
|
+
|
66
|
+
div.slide td {
|
67
|
+
padding: 0.3em 1em;
|
68
|
+
}
|
69
|
+
|
70
|
+
div.slide th {
|
71
|
+
background: #337;
|
72
|
+
color: white;
|
73
|
+
font-weight: bold;
|
74
|
+
padding: 0.2em 0em 0.2em 0em;
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
body {
|
79
|
+
background: white;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
div#header {
|
86
|
+
background: white;
|
87
|
+
display: none;
|
88
|
+
}
|
89
|
+
|
90
|
+
div#footer {
|
91
|
+
background: white;
|
92
|
+
font-size: 50%;
|
93
|
+
height: 1em;
|
94
|
+
}
|
95
|
+
|
96
|
+
div#footer h2 {
|
97
|
+
font-weight: normal;
|
98
|
+
font-size: 60%;
|
99
|
+
}
|
100
|
+
|
101
|
+
div.slide h1 {
|
102
|
+
background: white;
|
103
|
+
color: #993333;
|
104
|
+
left: 1em;
|
105
|
+
top: 0.5em;
|
106
|
+
width: 95%;
|
107
|
+
padding: 0em 0em 0em 0em;
|
108
|
+
border-bottom: 6px solid #ffaaaa;
|
109
|
+
text-transform: none;
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
div.slide h1.exercise {
|
114
|
+
background: white;
|
115
|
+
color: #339933;
|
116
|
+
left: 1em;
|
117
|
+
top: 0.5em;
|
118
|
+
width: 95%;
|
119
|
+
padding: 0em 0em 0em 0em;
|
120
|
+
border-bottom: 6px solid #aaffaa;
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
div#slide0, div.title {
|
125
|
+
height: 100%;
|
126
|
+
background-image: url(ruby.png);
|
127
|
+
background-repeat: no-repeat;
|
128
|
+
background-position: bottom right;
|
129
|
+
}
|
130
|
+
|
131
|
+
div#slide0 h1, div.title h1 {
|
132
|
+
color: #993333;
|
133
|
+
background:transparent none repeat scroll 0%;
|
134
|
+
font-family:Helvetica,sans-serif;
|
135
|
+
font-size:2em;
|
136
|
+
font-size-adjust:none;
|
137
|
+
font-stretch:normal;
|
138
|
+
font-style:normal;
|
139
|
+
font-variant:normal;
|
140
|
+
font-weight:bold;
|
141
|
+
line-height:normal;
|
142
|
+
margin:10% 0pt 0pt;
|
143
|
+
padding:0pt;
|
144
|
+
position:static;
|
145
|
+
white-space:normal;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
/* code layout */
|
150
|
+
div.code-large {
|
151
|
+
font-size: 150% !important;
|
152
|
+
line-height: 1.6em !important;
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
div.code-normal {
|
157
|
+
font-size: 90% !important;
|
158
|
+
line-height: 2em !important;
|
159
|
+
}
|
160
|
+
|
161
|
+
div.code-normal li {
|
162
|
+
margin-top: 0.6em;
|
163
|
+
}
|
164
|
+
|
165
|
+
div.code-small {
|
166
|
+
font-size: 75% !important;
|
167
|
+
line-height: 2em !important;
|
168
|
+
}
|
169
|
+
|
170
|
+
div.code-small li {
|
171
|
+
margin-top: 0.6em;
|
172
|
+
}
|
173
|
+
|
174
|
+
div.code-tiny {
|
175
|
+
font-size: 50% !important;
|
176
|
+
line-height: 2em !important;
|
177
|
+
}
|
178
|
+
|
179
|
+
div.code-tiny li {
|
180
|
+
margin-top: 0.6em;
|
181
|
+
}
|
182
|
+
|
183
|
+
div.code-supertiny {
|
184
|
+
font-size: 33% !important;
|
185
|
+
line-height: 2em !important;
|
186
|
+
}
|
187
|
+
|
188
|
+
div.code-supertiny li {
|
189
|
+
margin-top: 0.6em;
|
190
|
+
}
|
191
|
+
|
192
|
+
.caption {
|
193
|
+
color: #448;
|
194
|
+
font-family: Gil Sans;
|
195
|
+
font-size: 70%;
|
196
|
+
}
|