require 'uv'
require 'haml'
def stylesheet(*args)
result = []
args.each do |name|
result << %Q{}
end
result.join("\n")
end
alias :stylesheets :stylesheet
def render(path, locals={})
path = (path =~ /src/ ? path : File.join(File.dirname(__FILE__), path))
haml = Haml::Engine.new(File.read(path))
return haml.render(Object.new, locals)
end
def javascript(*scripts)
result = []
scripts.each do |name|
result << %Q{}
end
result.join("\n")
end
alias :javascripts :javascript
def shellscript(text)
"#{text}"
end
def symbol(text)
"#{text.is_a?(Symbol) ? text.inspect : text}"
end
def ruby_link(text = "Ruby")
link_to "http://www.ruby-lang.org/", text
end
def git_link(text = "git")
link_to "http://git-scm.com/", text
end
def hg_link(text = "Mercurial")
link_to "http://mercurial.selenic.com/", text
end
def yard_link(text = "YARD")
link_to "http://yard.soen.ca/", text
end
def lighthouse_link(text = "Lighthouse")
link_to "http://carbonica.lighthouseapp.com/projects/35539-amp/tickets/new", text
end
%w(workflows ampfile commands).each do |link|
eval %Q{
def #{link}_link(text="#{link}")
link_to "/about/#{link}.html", text
end
}
end
def contribute_link(text = "contribute")
link_to "/contribute/", text
end
def link_to(link, text)
"#{text}"
end
def blue_amp(text = "amp")
"#{text}"
end
def commit_count
path_to_amp = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "bin", "amp"))
hash = %x(#{path_to_amp} stats).split("\n").inject({}) do |hash, line|
result = line.split(/\s+/)
next unless result.size >= 2
hash[result[0][0..-2]] = result[1].to_i
hash
end
hash["adgar"] = hash.delete("michaeledgar") + 558 # old repo
hash["seydar"] = hash.delete("seydar") + (hash.delete("ari") || 0) + 251 # old repo
hash = hash.sort do |(key1, value1), (key2, value2)|
value2 <=> value1
end
hash
end
def themes
[ :active4d, :all_hallows_eve, :amy, :blackboard, :brilliance_black, :brilliance_dull,
:cobalt, :dawn, :eiffel, :espresso_libre, :idle, :iplastic, :lazy, :mac_classic, :magicwb_amiga,
:pastels_on_dark, :slush_poppies, :spacecadet, :sunburst, :twilight, :zenburnesque]
end
module SyntaxHighlighter
include Haml::Filters::Base
def initialize(text)
@text = highlight_text(text)
end
def highlight_text(text, opts = {:format => "ruby", :theme => "twilight", :lines => false})
Uv.parse( text, "xhtml", opts[:format], opts[:lines], opts[:theme])
end
def render(text)
all_lines = text.split(/\n/)
if all_lines.first =~ /#!highlighting/
line = all_lines.first
syntax = (line =~ /syntax=([\w-]+)/) ? $1 : "ruby"
theme = (line =~ /theme=(\w+)/) ? $1 : "twilight"
lines = (line =~ /lines=(\w+)/) ? ($1 == 'true') : false
text = all_lines[1..-1].join("\n")
Haml::Helpers.preserve(highlight_text(text.rstrip, :format => syntax, :theme => theme, :lines => lines))
else
Haml::Helpers.preserve(highlight_text(text.rstrip))
end
end
end