class Pion

Pion!

Constants

VERSION

Version number for Pion

Attributes

options[RW]

Attributes

Public Class Methods

new(options) click to toggle source

Initialize a new Pion object

# File lib/pion.rb, line 10
def initialize(options)
  @options = method(:symbolize).call options

  fail ArgumentError, "No directory given!" unless options.key? :directory

  method(:set_options).call
end

Public Instance Methods

generate() click to toggle source

Generate urls from files

# File lib/pion.rb, line 19
def generate
  urls = []

  Dir.glob "#{options[:directory]}/**/*.#{options[:extension]}" do |file|
    hash = { file: file, url:  method(:get_url).call(file) }

    urls << hash unless file == "." || file == ".."
  end

  urls
end

Private Instance Methods

get_url(file) click to toggle source

Convert filename to clean url

# File lib/pion.rb, line 34
def get_url(file)
  url = file.gsub(/\A#{options[:directory]}/, "")
  url = url.gsub(/(\/index)?\.#{options[:extension]}\z/, "")
  url = url.gsub(/#{Regexp.escape(options[:separator])}/, "/")

  url == "" ? "/" : url
end
set_default(type, default) click to toggle source
# File lib/pion.rb, line 55
def set_default(type, default)
  options[type] = default unless options.key? type

  name = type.to_s.capitalize

  unless options[type].is_a? String
    fail ArgumentError, "#{name} must be a string"
  end
end
set_directory() click to toggle source

Set directory or fail errors if it’s faulty

# File lib/pion.rb, line 43
def set_directory
  dir = options[:directory]

  return if dir.is_a?(String) && File.directory?(dir)

  if !dir.is_a? String
    fail ArgumentError, "Directory must be a string."
  elsif !File.directory? dir
    fail ArgumentError, "Directory must be a valid directory."
  end
end
set_options() click to toggle source
# File lib/pion.rb, line 65
def set_options
  method(:set_directory).call

  method(:set_default).call :extension, "html"
  method(:set_default).call :separator, "/"
end
symbolize(hash) click to toggle source
# File lib/pion.rb, line 72
def symbolize(hash)
  fail ArgumentError, "No Hash given!" unless hash.is_a? Hash

  hash.reduce({}) do |memo, (key, value)|
    memo[key.to_sym] = value

    memo
  end
end