diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 367e7c2..0000000 --- a/Gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source 'https://rubygems.org' - -gem 'sequel' -gem 'pg' -gem 'zero', :git => 'https://github.com/libzero/zero.git' -gem 'slim' -gem 'sass' -gem 'kramdown' -gem 'puma' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 1940430..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,34 +0,0 @@ -GIT - remote: https://github.com/libzero/zero.git - revision: dde9fc410fb50bc44b128fb1032b15f09c53e0f7 - specs: - zero (0.2.0) - tilt - -GEM - remote: https://rubygems.org/ - specs: - kramdown (1.3.2) - pg (0.17.1) - puma (2.7.1) - rack (>= 1.1, < 2.0) - rack (1.5.2) - sass (3.2.14) - sequel (4.7.0) - slim (2.0.2) - temple (~> 0.6.6) - tilt (>= 1.3.3, < 2.1) - temple (0.6.7) - tilt (2.0.0) - -PLATFORMS - ruby - -DEPENDENCIES - kramdown - pg - puma - sass - sequel - slim - zero! diff --git a/config.ru b/config.ru deleted file mode 100644 index 0ae6374..0000000 --- a/config.ru +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env rackup -require File.expand_path('../lib/boot.rb', __FILE__) - -Renderer.find_templates('templates') -run Application.new(Router, { - :renderer => Renderer, - :query => {} -}) diff --git a/config.yml.example b/config.yml.example deleted file mode 100644 index d98d583..0000000 --- a/config.yml.example +++ /dev/null @@ -1 +0,0 @@ -:db: "postgres://localhost/blogdb" diff --git a/controller/atom.rb b/controller/atom.rb deleted file mode 100644 index 8828ce9..0000000 --- a/controller/atom.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Routes - class Atom - def self.call(session) - Post - end - end -end diff --git a/controller/image.rb b/controller/image.rb deleted file mode 100644 index 3943a41..0000000 --- a/controller/image.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Routes - class Images - def self.call(session) - file = "images/#{session.request.path.gsub(/images/, '')}" - return RouteNotFound unless File.exist?(file) - session.response.body = File.read(file) - session.response.content_type = 'image/png' - nil - end - end -end diff --git a/controller/method_not_allowed.rb b/controller/method_not_allowed.rb deleted file mode 100644 index 1511646..0000000 --- a/controller/method_not_allowed.rb +++ /dev/null @@ -1,10 +0,0 @@ -module Routes - class MethodNotAllowed - def self.call(session) - session.response.status = 405 - session.response.content_type = 'text/html' - session.response.body = 'Method not supported by this resource!' - nil - end - end -end diff --git a/controller/post.rb b/controller/post.rb deleted file mode 100644 index 64c7251..0000000 --- a/controller/post.rb +++ /dev/null @@ -1,63 +0,0 @@ -module Routes - class Post < Controller - PREV_AND_NEXT_QUERY = < ? and released order by written limit 1 - ) younger -SQL - - def self.get(session) - posts = define_posts_query(session) - if session.options[:id] - posts = posts.filter(:posts__id => session.options[:id].to_i) - return RouteNotFound if posts.empty? - set_previous_and_next_post(session, posts) - else - if session.request.params['search'] - posts = load_fulltextsearch(session, posts) - end - page = session.request.params['page'].to_i - per_page = session.request.params['per_page'].to_i - per_page = 10 if per_page && per_page < 1 - set_page_information(session, posts, page, per_page) - posts = posts.limit(per_page).offset(page * per_page) - end - session.options[:posts] = posts - session.options[:render] = 'posts/index' - end - - def self.define_posts_query(session) - posts = DB[:posts]. - filter(:released => true). - select(:posts__id___post_id, :written, :title, :content, :username). - join(:accounts, :id___account_id => :account_id). - reverse_order(:written, :posts__id) - end - - # load posts depending on the pagination - def self.set_page_information(session, posts, page, per_page) - # compute pages - session.options[:page] = page if page - session.options[:query][:per_page] = per_page if per_page - session.options[:pages] = posts.count / per_page - end - - # load a single posts and the ids of the next and previous posts - def self.set_previous_and_next_post(session, posts) - written = posts.first[:written] - session.options[:post_ids_pn] = DB[PREV_AND_NEXT_QUERY, written, written].first - end - - # adjust query to use fulltext search - def self.load_fulltextsearch(session, posts) - session.options[:query][:search] = session.request.params['search'] - posts.filter( - 'posts.search_field @@ to_tsquery(\'english\', ?)', - session.request.params['search'].tr(' ', '&') - ) - end - end -end diff --git a/controller/route_not_found.rb b/controller/route_not_found.rb deleted file mode 100644 index 5d46cce..0000000 --- a/controller/route_not_found.rb +++ /dev/null @@ -1,8 +0,0 @@ -module Routes - class RouteNotFound < Controller - def self.get(session) - session.options[:render] = 'error/route_not_found' - session.response.status = 404 - end - end -end diff --git a/controller/stylesheet.rb b/controller/stylesheet.rb deleted file mode 100644 index fa93ad3..0000000 --- a/controller/stylesheet.rb +++ /dev/null @@ -1,8 +0,0 @@ -module Routes - class Stylesheet - def self.call(session) - session.options[:render] = 'stylesheet/index' - session.options[:renderer] - end - end -end diff --git a/controller/welcome.rb b/controller/welcome.rb deleted file mode 100644 index 2d0467e..0000000 --- a/controller/welcome.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Routes - class Welcome - def self.call(session) - Post - end - end -end diff --git a/images/irongrip-zero.png b/images/irongrip-zero.png deleted file mode 100644 index 52cef97..0000000 Binary files a/images/irongrip-zero.png and /dev/null differ diff --git a/lib/application.rb b/lib/application.rb deleted file mode 100644 index 563df7f..0000000 --- a/lib/application.rb +++ /dev/null @@ -1,19 +0,0 @@ -class Application - def initialize(start, defaults = {}) - @start = start - @defaults = defaults - end - - def call(env) - session = Session.new( - ::Zero::Request.new(env), - ::Zero::Response.new, - Render.new(@defaults.clone) - ) - worker = @start - while not worker.nil? - worker = worker.call(session) - end - session.response.to_a - end -end diff --git a/lib/boot.rb b/lib/boot.rb deleted file mode 100644 index 3e528c8..0000000 --- a/lib/boot.rb +++ /dev/null @@ -1,16 +0,0 @@ -$LOAD_PATH << File.expand_path('..', __FILE__) - -require 'libraries' -require 'session' -require 'application' -require 'controller' -require 'renderer' -require 'render' -require 'router' - -config = YAML.load_file(File.expand_path('../../config.yml', __FILE__)) -DB = Sequel.connect(config[:db]) - -Dir[File.expand_path('../../controller', __FILE__) + '/**'].each do |controller| - require controller -end diff --git a/lib/controller.rb b/lib/controller.rb deleted file mode 100644 index 8f9dc15..0000000 --- a/lib/controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -class Controller - def self.call(session) - return call_method(session) if respond_to? session.request.method - Routes::MethodNotAllowed.call(session) - end - - def self.call_method(session) - result = send(session.request.method, session) - return result if result.kind_of?(Class) - session.options[:renderer] - end -end diff --git a/lib/libraries.rb b/lib/libraries.rb deleted file mode 100644 index 35cee50..0000000 --- a/lib/libraries.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'bundler/setup' -require 'yaml' -require 'sass' -require 'tilt' -require 'tilt/sass' -require 'sequel' -require 'zero' -require 'slim' -require 'kramdown' diff --git a/lib/render.rb b/lib/render.rb deleted file mode 100644 index 5acaa46..0000000 --- a/lib/render.rb +++ /dev/null @@ -1,46 +0,0 @@ -# defines a render container with some helper functions to keep the templates -# small -class Render - SLASH = '/' - - def initialize(options) - @options = options - end - - def [](key) - fetch(key) - end - - def []=(key, value) - @options[key] = value - end - - def fetch(key) - @options[key] - end - - def has_key?(key) - @options.has_key?(key) - end - - def options - @options - end - - def link_to(*params) - query = [] - while params.last.kind_of? Hash - query.push params.pop - end - return path(params) if query.empty? - path(params) + '?' + query_string(query) - end - - def path(params) - SLASH + params.join(SLASH) - end - - def query_string(query) - URI.encode_www_form(query.inject(:merge)) - end -end diff --git a/lib/renderer.rb b/lib/renderer.rb deleted file mode 100644 index 9d21605..0000000 --- a/lib/renderer.rb +++ /dev/null @@ -1,84 +0,0 @@ -class Renderer - COMPONENT_MATCHER = %r{/?(?