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