Sha256: b5c7678e58e40219b21e4b6b8eef6a36cd9200bfa57ec1a8e7ec29f02f6ff186

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

require 'safe_yaml'
require 'fileutils'

module JekyllImport
  module Marley
    def self.regexp
      { :id    => /^\d{0,4}-{0,1}(.*)$/,
        :title => /^#\s*(.*)\s+$/,
        :title_with_date => /^#\s*(.*)\s+\(([0-9\/]+)\)$/,
        :published_on => /.*\s+\(([0-9\/]+)\)$/,
        :perex => /^([^\#\n]+\n)$/,
        :meta  => /^\{\{\n(.*)\}\}\n$/mi # Multiline Regexp 
      }
    end

    def self.process(marley_data_dir)
      raise ArgumentError, "marley dir #{marley_data_dir} not found" unless File.directory?(marley_data_dir)

      FileUtils.mkdir_p "_posts"

      posts = 0
      Dir["#{marley_data_dir}/**/*.txt"].each do |f|
        next unless File.exists?(f)

        #copied over from marley's app/lib/post.rb
        file_content  = File.read(f)
        meta_content  = file_content.slice!( self.regexp[:meta] )
        body          = file_content.sub( self.regexp[:title], '').sub( self.regexp[:perex], '').strip
   
        title = file_content.scan( self.regexp[:title] ).first.to_s.strip
        prerex = file_content.scan( self.regexp[:perex] ).first.to_s.strip
        published_on = DateTime.parse( post[:published_on] ) rescue File.mtime( File.dirname(f) )
        meta          = ( meta_content ) ? YAML::load( meta_content.scan( self.regexp[:meta]).to_s ) : {}
        meta['title'] = title
        meta['layout'] = 'post'

        formatted_date = published_on.strftime('%Y-%m-%d')
        post_name =  File.dirname(f).split(%r{/}).last.gsub(/\A\d+-/, '')

        name = "#{formatted_date}-#{post_name}" 
        File.open("_posts/#{name}.markdown", "w") do |f|
          f.puts meta.to_yaml
          f.puts "---\n"
          f.puts "\n#{prerex}\n\n" if prerex
          f.puts body
        end
        posts += 1
      end
      "Created #{posts} posts!"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jekyll-import-0.1.0.beta3 lib/jekyll/jekyll-import/marley.rb
jekyll-import-0.1.0.beta2 lib/jekyll/jekyll-import/marley.rb
jekyll-import-0.1.0.beta1 lib/jekyll/jekyll-import/marley.rb