class Gluey::Dependencies::TextsBundle

Constants

JS_ESCAPE_MAP

Public Class Methods

new(dir, logical_path, context) click to toggle source
Calls superclass method Gluey::Dependencies::SingleFile::new
# File lib/gluey/workshop/dependencies/texts_bundle.rb, line 14
def initialize(dir, logical_path, context)
  tmp_dir = "#{context.cache_path}/.texts_bundle"
  Dir.mkdir tmp_dir unless Dir.exists? tmp_dir
  @cache_path = "#{tmp_dir}/#{logical_path.gsub '/', '-'}"
  Dir.mkdir @cache_path unless Dir.exists? @cache_path

  @dir_dep = ::Gluey::Dependencies::Directory.new(dir, '**/*')
  @dependencies = []
  super "#{@cache_path}.texts_bundle"
end

Public Instance Methods

actualize() click to toggle source
# File lib/gluey/workshop/dependencies/texts_bundle.rb, line 33
def actualize
  # remove deleted files
  @dependencies.delete_if{|dep| !dep.exists? }
  # add new files
  new_files = (@dir_dep.files_list - @dependencies.map(&:file)).map do |f|
    text_name = f[/#{@dir_dep.file}\/(.+)$/, 1]
    ::Gluey::Dependencies::SingleFile.new f, text_name: text_name
  end
  @dependencies.concat new_files
  @dir_dep.actualize
  @dependencies.each{|dep| dep.actualize if dep.changed? }

  write_bundle
  @mtime = File.mtime(@file).to_i
  self
end
changed?() click to toggle source
# File lib/gluey/workshop/dependencies/texts_bundle.rb, line 25
def changed?
  @dependencies.any?{|d| d.changed?} || @dir_dep.changed? || (File.mtime(@file).to_i != @mtime rescue true)
end
mark() click to toggle source
# File lib/gluey/workshop/dependencies/texts_bundle.rb, line 29
def mark
  @dependencies.map(&:mark).join
end

Private Instance Methods

write_bundle() click to toggle source
# File lib/gluey/workshop/dependencies/texts_bundle.rb, line 52
def write_bundle
  File.open @file, 'w' do |f|
    f.write '{'
    @dependencies.each_with_index do |dep, i|
      f.write "#{', ' if i!=0}\"#{dep.data[:text_name]}\": "
      text = File.read dep.file
      text.gsub!(/(\\|\r\n|[\n\r"'])/u){|match| JS_ESCAPE_MAP[match] }
      f.write "\"#{text}\""
    end
    f.write '}'
  end
end