Sha256: 4dc7f1a2fb4ce59091cee0d346ce382a4c68429d2e6e74c97f135852811929c3

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

# ~*~ encoding: utf-8 ~*~
require 'gemojione'

module Precious
  module Helpers

    EMOJI_PATHNAME = Pathname.new(Gemojione.images_path).freeze

    def sanitize_empty_params(param)
      [nil, ''].include?(param) ? nil : CGI.unescape(param)
    end

    def strip_page_name(name)
      # Check if name already has a format extension, and if so, strip it.
      Gollum::Page.valid_extension?(name) ? Gollum::Page.strip_filename(name) : name
    end

    # Remove all slashes from the start of string.
    # Remove all double slashes
    def clean_url(url)
      return url if url.nil?
      url.gsub('%2F', '/').gsub(/^\/+/, '').gsub('//', '/')
    end

    def forbid(msg = "Forbidden. This wiki is set to no-edit mode.")
      @message = msg
      status 403
      halt mustache :error
    end

    def not_found(msg = nil)
      @message = msg || "The requested page does not exist."
      status 404
      return mustache :error
    end
    
    def not_found_proc
      not_found_msg = 'Not found.'
      Proc.new {[404, {'Content-Type' => 'text/html', 'Content-Length' => not_found_msg.length.to_s}, [not_found_msg]]}
    end
    
    def emoji(name)
      if emoji = Gemojione.index.find_by_name(name)
        IO.read(EMOJI_PATHNAME.join("#{emoji['unicode'].downcase}.png"))
      else
        fail ArgumentError, "emoji `#{name}' not found"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gollum-5.0.1 lib/gollum/helpers.rb
gollum-5.0.0 lib/gollum/helpers.rb