class CloudCannonJekyll::OldDataReader
Reads data files and creates a collections-style hash representation Aims to replicate the data reading logic in Jekyll
2.5
Attributes
site[R]
Public Class Methods
new(site)
click to toggle source
# File lib/cloudcannon-jekyll/readers/old-data-reader.rb, line 12 def initialize(site) @site = site @safe = site.safe @content = {} end
Public Instance Methods
read(dir)
click to toggle source
# File lib/cloudcannon-jekyll/readers/old-data-reader.rb, line 18 def read(dir) base = Jekyll.sanitized_path(@site.source, dir) read_data_to(base, @content) @content end
read_data_file(path)
click to toggle source
# File lib/cloudcannon-jekyll/readers/old-data-reader.rb, line 44 def read_data_file(path) { "path" => path, } end
read_data_to(dir, data)
click to toggle source
# File lib/cloudcannon-jekyll/readers/old-data-reader.rb, line 24 def read_data_to(dir, data) return unless File.directory?(dir) && (!@safe || !File.symlink?(dir)) entries = Dir.chdir(dir) do Dir["*.{yaml,yml,json,csv}"] + Dir["*"].select { |fn| File.directory?(fn) } end entries.each do |entry| path = Jekyll.sanitized_path(dir, entry) next if File.symlink?(path) && @safe key = sanitize_filename(File.basename(entry, ".*")) if File.directory?(path) read_data_to(path, data[key] = {}) else data[key] = read_data_file(path) end end end
sanitize_filename(name)
click to toggle source
# File lib/cloudcannon-jekyll/readers/old-data-reader.rb, line 50 def sanitize_filename(name) name.gsub!(%r![^\w\s_-]+!, "") name.gsub!(%r!(^|\b\s)\s+($|\s?\b)!, '\\1\\2') name.gsub(%r!\s+!, "_") end