module Precious::Helpers

Constants

EMOJI_PATHNAME

Public Instance Methods

clean_url(url) click to toggle source

Remove all slashes from the start of string. Remove all double slashes

# File lib/gollum/helpers.rb, line 44
def clean_url(url)
  return url if url.nil?
  url.gsub('%2F', '/').gsub(%r{/{2,}}, '/').gsub(%r{^/}, '')
end
emoji(name) click to toggle source
# File lib/gollum/helpers.rb, line 66
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
encodeURI(uri) click to toggle source

stackoverflow.com/questions/65423458/ruby-2-7-says-uri-escape-is-obsolete-what-replaces-it/65462786#65462786 Encode URI while leaving slashes intact

# File lib/gollum/helpers.rb, line 38
def encodeURI(uri)
  encodeURIComponent(uri).gsub('%2F', '/')
end
find_per_page_upload_subdir(referer, host_with_port, base_path) click to toggle source
# File lib/gollum/helpers.rb, line 9
def find_per_page_upload_subdir(referer, host_with_port, base_path)
  base = base_path ? remove_leading_and_trailing_slashes(base_path) : ''
  dir = referer.match(/^https?:\/\/#{host_with_port}\/#{base}\/?(.*)/)[1]
  
  # remove gollum/* subpath if necessary
  dir.sub!(/^gollum\/[-\w]+\//, '')
  # remove file extension
  dir.sub!(/#{::File.extname(dir)}$/, '')
  # revert escaped whitespaces
  dir.gsub!(/%20/, ' ')
  
  return ::File.join('uploads', dir)
end
forbid(msg = "Forbidden. This wiki is set to no-edit mode.") click to toggle source
# File lib/gollum/helpers.rb, line 49
def forbid(msg = "Forbidden. This wiki is set to no-edit mode.")
  @message = msg
  status 403
  halt mustache :error
end
not_found(msg = nil) click to toggle source
# File lib/gollum/helpers.rb, line 55
def not_found(msg = nil)
  @message = msg || "The requested page does not exist."
  status 404
  return mustache :error
end
not_found_proc() click to toggle source
# File lib/gollum/helpers.rb, line 61
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
remove_leading_and_trailing_slashes(str) click to toggle source
# File lib/gollum/helpers.rb, line 32
def remove_leading_and_trailing_slashes(str)
  str.sub(%r{^(/+)}, '').sub(%r{/+$}, '')
end
sanitize_empty_params(param) click to toggle source
# File lib/gollum/helpers.rb, line 23
def sanitize_empty_params(param)
  [nil, ''].include?(param) ? nil : CGI.unescape(param)
end
strip_page_name(name) click to toggle source
# File lib/gollum/helpers.rb, line 27
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