Sha256: cd49cf8f4208be035e17e1adc72681726e36ebe56ab9bba95f7c9ee2d6c8bff3

Contents?: true

Size: 1.45 KB

Versions: 18

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

if Jekyll::VERSION.start_with? '2.'
  require 'jekyll'
  require 'fileutils'

  module CloudCannonJekyll
    # Reads data files and creates a collections-style hash representation
    # Aims to replicate the data reading logic in Jekyll 2.5
    class OldDataReader
      attr_reader :site

      def initialize(site)
        @site = site
        @safe = site.safe
        @content = {}
      end

      def read(dir)
        base = Jekyll.sanitized_path(@site.source, dir)
        read_data_to(base, @content)
        @content
      end

      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 do |fn|
            File.directory?(fn)
          end
        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

      def read_data_file(path)
        {
          'path' => path
        }
      end

      def sanitize_filename(name)
        name.gsub!(/[^\w\s_-]+/, '')
        name.gsub!(/(^|\b\s)\s+($|\s?\b)/, '\\1\\2')
        name.gsub(/\s+/, '_')
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
cloudcannon-jekyll-4.1.0 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.7 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.6 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.5 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.4 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.3 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.2 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.1 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-4.0.0 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.2.4 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.2.3 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.2.2 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.2.1 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.2.0 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.1.0 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.0.2 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.0.1 lib/cloudcannon-jekyll/readers/old-data-reader.rb
cloudcannon-jekyll-3.0.0 lib/cloudcannon-jekyll/readers/old-data-reader.rb