Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions lib/jekyll-admin/data_file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class DataFile
def initialize(id)
@id ||= File.extname(id).empty? ? "#{id}.yml" : id
end
alias_method :path, :id
alias_method :relative_path, :id

def exists?
@exists ||= File.exist?(absolute_path)
Expand Down Expand Up @@ -52,15 +52,15 @@ def title
@title ||= Jekyll::Utils.titleize_slug(slug.tr("_", "-"))
end

# Return path relative to configured `data_dir`
def relative_path
id.sub("/#{DataFile.data_dir}/", "")
# Returns path relative to site source
def path
ensure_leading_slash(File.join(DataFile.data_dir, relative_path))
end

# Return the absolute path to given data file
def absolute_path
sanitized_path id
sanitized_path(path)
end
alias_method :file_path, :absolute_path

# Mimics Jekyll's native to_liquid functionality by returning a hash
# of data file metadata
Expand All @@ -69,13 +69,10 @@ def to_liquid
end

def self.all
data_dir = sanitized_path DataFile.data_dir
files = Dir["#{data_dir}/**/*.{#{EXTENSIONS.join(",")}}"].reject do |d|
File.directory?(d)
end

files.map do |path|
new path_without_site_source(path)
data_dir = Jekyll.sanitized_path(JekyllAdmin.site.source, DataFile.data_dir)
data_dir = Pathname.new(data_dir)
Dir["#{data_dir}/**/*.{#{EXTENSIONS.join(",")}}"].map do |path|
new(Pathname.new(path).relative_path_from(data_dir).to_s)
end
end

Expand Down
2 changes: 1 addition & 1 deletion spec/jekyll-admin/data_file_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
let(:data_dir) { "_data" }
let(:relative_path) { "data_file.yml" }
let(:absolute_path) { in_source_dir(relative_path) }
let(:id) { "/#{data_dir}/data_file.yml" }
let(:id) { "data_file.yml" }

subject { described_class.new(id) }

Expand Down