summaryrefslogtreecommitdiffstats
path: root/app/helpers/blobs_helper.rb
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2008-03-17 14:10:16 +0100
committerJohan Sørensen <johan@johansorensen.com>2008-03-17 14:14:13 +0100
commitcb2612bf2fdafbb6016ea6402e3d1b86748a2603 (patch)
tree4027952e3ea0a517a94e0d2d1a6171c8c097a52a /app/helpers/blobs_helper.rb
parent1fe38d36cf3557a732f244c257d38d1efc44763a (diff)
downloadgitorious-mainline-outdated-cb2612bf2fdafbb6016ea6402e3d1b86748a2603.zip
gitorious-mainline-outdated-cb2612bf2fdafbb6016ea6402e3d1b86748a2603.tar.gz
gitorious-mainline-outdated-cb2612bf2fdafbb6016ea6402e3d1b86748a2603.tar.bz2
Refactored BrowseController into several specific controllers
Grouped by responsibility Trees, Blobs, Commits and Logs
Diffstat (limited to 'app/helpers/blobs_helper.rb')
-rw-r--r--app/helpers/blobs_helper.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/helpers/blobs_helper.rb b/app/helpers/blobs_helper.rb
new file mode 100644
index 0000000..34e6c05
--- /dev/null
+++ b/app/helpers/blobs_helper.rb
@@ -0,0 +1,31 @@
+module BlobsHelper
+ include RepositoriesHelper
+ include TreesHelper
+
+ def line_numbers_for(data, code_theme_class = nil)
+ out = []
+ #yield.split("\n").each_with_index{ |s,i| out << "#{i+1}: #{s}" }
+ out << %Q{<table id="codeblob" class="highlighted">}
+ data.to_s.split("\n").each_with_index do |line, count|
+ lineno = count + 1
+ out << %Q{<tr id="line#{lineno}">}
+ out << %Q{<td class="line-numbers"><a href="#line#{lineno}" name="line#{lineno}">#{lineno}</a></td>}
+ code_classes = "code"
+ code_classes << " #{code_theme_class}" if code_theme_class
+ out << %Q{<td class="#{code_classes}">#{line}</td>}
+ out << "</tr>"
+ end
+ out << "</table>"
+ out.join("\n")
+ end
+
+ def render_highlighted(text, filename, theme = "idle")
+ syntax_name = Uv.syntax_names_for_data(filename, text).first #TODO: render a choice select box if > 1
+ highlighted = Uv.parse(text, "xhtml", syntax_name, false, theme)
+ line_numbers_for(highlighted, theme)
+ end
+
+ def too_big_to_render?(size)
+ size > 150.kilobytes
+ end
+end