Compare commits
No commits in common. "4fd0725169cc9ffff24ff77bca00f125c7ea5c87" and "40d8754378867d8728c43f01d538a05c26857711" have entirely different histories.
4fd0725169
...
40d8754378
4 changed files with 0 additions and 112 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +0,0 @@
|
||||||
Gemfile.lock
|
|
4
Gemfile
4
Gemfile
|
@ -1,5 +1 @@
|
||||||
gem 'erb'
|
gem 'erb'
|
||||||
gem 'rackup'
|
|
||||||
|
|
||||||
gem 'nokogiri'
|
|
||||||
gem 'redcarpet'
|
|
||||||
|
|
105
app.rb
105
app.rb
|
@ -1,105 +0,0 @@
|
||||||
|
|
||||||
require 'sinatra'
|
|
||||||
require 'erb'
|
|
||||||
require 'nokogiri'
|
|
||||||
require 'redcarpet'
|
|
||||||
|
|
||||||
$root = "/home/pranshu/Documents/proj/perc/test"
|
|
||||||
Dir.chdir $root;
|
|
||||||
|
|
||||||
class Sidebar
|
|
||||||
FileNode = Struct.new(:type, :name)
|
|
||||||
DirNode = Struct.new(:type, :name, :files)
|
|
||||||
|
|
||||||
def initialize
|
|
||||||
@tree = process_dir "."
|
|
||||||
end
|
|
||||||
|
|
||||||
def show(n=@tree, indent="")
|
|
||||||
if n.type == :dir
|
|
||||||
print indent, n.name, "\n"
|
|
||||||
n.files.each do |r|
|
|
||||||
show r, " " + indent
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print indent, n.name, "\n"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def html
|
|
||||||
builder = Nokogiri::HTML::Builder.new do |doc|
|
|
||||||
def deal_with_dir (doc, dir, path)
|
|
||||||
doc.li {
|
|
||||||
doc.text dir.name
|
|
||||||
doc.ul {
|
|
||||||
dir.files.each do |f|
|
|
||||||
fpath = File.join(path, f.name)
|
|
||||||
if f.type == :dir
|
|
||||||
deal_with_dir doc, f, fpath
|
|
||||||
else
|
|
||||||
doc.a(:href => fpath) {
|
|
||||||
doc.li { doc.text f.name }
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
doc.div {
|
|
||||||
deal_with_dir doc, @tree, @tree.name
|
|
||||||
}
|
|
||||||
end
|
|
||||||
builder.to_html().split(/\n/)[1..-1].join
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def dir_files()
|
|
||||||
# Remove "." and ".." from file list
|
|
||||||
Dir.entries(".").filter {|f| f !~ /^\.\.?$/ }
|
|
||||||
end
|
|
||||||
|
|
||||||
def process_dir(dir)
|
|
||||||
DirNode.new(:dir, dir,
|
|
||||||
Dir.chdir(dir) do
|
|
||||||
dir_files.map do |f|
|
|
||||||
if File.file? f
|
|
||||||
FileNode.new(:file, f)
|
|
||||||
else
|
|
||||||
process_dir f
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
$sidebar = Sidebar.new
|
|
||||||
|
|
||||||
|
|
||||||
class Perc < Sinatra::Application
|
|
||||||
set :views, "."
|
|
||||||
set :markdown, :layout_engine => :erb
|
|
||||||
# @sidebar = Sidebar.new
|
|
||||||
|
|
||||||
get "/" do
|
|
||||||
erb :main
|
|
||||||
end
|
|
||||||
|
|
||||||
get "/*.*" do |path, ext|
|
|
||||||
if ext == "md"
|
|
||||||
md = markdown File.read(path + ".md")
|
|
||||||
|
|
||||||
else
|
|
||||||
erb path.to_sym
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
helpers do
|
|
||||||
def tree
|
|
||||||
$sidebar.html
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
require './app'
|
|
||||||
run Perc
|
|
Loading…
Add table
Add a link
Reference in a new issue