Sha256: 448b99678ea519916c199577b071ccd4e57917d0eb56f66687ded84e9e976f2b

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

module Copypasta
  class ContentsDSL
    attr_reader :contents
    attr_reader :directory

    def initialize(contents, directory)
      raise "contents must be a Copypasta::Contents" \
        unless contents.is_a?(Copypasta::Contents)

      raise "#{directory} doesn't exist." unless Dir.exist?(directory)

      @contents = contents
      @directory = directory
    end

    def create_even_if_empty!
      contents.force_create = true
    end

    def copy(filename, source: nil, only_if: nil)
      contents.entries << Copypasta::Entry::Copy.new(filename, directory: @directory, source: source, only_if: only_if).freeze
    end

    def erb(filename, source: nil, locals: {}, only_if: nil)
      contents.entries << Copypasta::Entry::ERB.new(filename, directory: @directory, source: source, locals: locals, only_if: only_if).freeze
    end

    def download(filename, source: nil, only_if: nil)
      contents.entries << Copypasta::Entry::Download.new(filename, source: source, only_if: only_if).freeze
    end

    def literal(filename, data:, only_if: nil)
      contents.entries << Copypasta::Entry::Literal.new(filename, data: data, only_if: only_if).freeze
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
copypasta-0.1.1 lib/copypasta/contents_dsl.rb
copypasta-0.1.0 lib/copypasta/contents_dsl.rb