class SublimeDSL::SublimeText::Package::Writer
A DSL writing operation with its options.
Attributes
backup[RW]
copy_other_files[RW]
package[R]
root[RW]
Public Class Methods
new(package = nil)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 15 def initialize(package = nil) @package = package @root = '.' @backup = :once @copy_other_files = true @keyboard_name = nil end
Public Instance Methods
copy_file(infile, outdir)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 89 def copy_file(infile, outdir) if File.directory?(infile) outpath = "#{outdir}/#{File.basename(infile)}" Dir.mkdir outpath unless File.directory?(outpath) Dir["#{infile}/*"].each { |f| copy_file f, outpath } else # Console.progress ... FileUtils.cp infile, outdir end end
dir()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 32 def dir "#{root}/#{@package.name}" end
keyboard()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 40 def keyboard @keyboard ||= if @keyboard_name.nil? || @keyboard_name == Keyboard.sublime.name Keyboard.sublime else Keyboard.get(@keyboard_name, root) end end
keyboard=(name)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 36 def keyboard=(name) @keyboard_name = name end
perform_backup()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 59 def perform_backup # no backup needed if not asked or no file to backup return unless backup != :never && Dir["#{dir}/*"].length > 0 # don't do it if only one backup is requested, and there is already one name = Tools.filename(package.name) return if backup == :once && Dir["#{root}/#{name}.*.zip"].length > 0 # backup time_stamp = Tools.filename(Time.now.strftime("%Y-%m-%d %H:%M:%S")) backup_file = "#{root}/#{name}.#{time_stamp}.zip" Tools.zip dir, backup_file Console.info "#{dir} backed up as #{backup_file}" end
validate()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 49 def validate File.directory?(root) or raise OptionError, "no such directory: #{root}" @backup = backup.to_sym unless [:never, :always, :once].include?(backup) warn "invalid backup option #{backup.inspect}, 'always' assumed" @backup = :always end keyboard end
write(package = nil)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 23 def write(package = nil) @package = package if package validate perform_backup FileUtils.rm_r Dir["#{dir}/*"] if File.directory?(dir) Console.info "writing package DSL to #{dir}" write_package end
write_all(collection, file)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 100 def write_all(collection, file) return if collection.empty? File.open(file, 'wb:utf-8') do |f| f.puts '# encoding: utf-8' collection.each { |e| f.puts "\n#{e.to_dsl}" } end end
write_package()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/writer.rb, line 72 def write_package Dir.mkdir dir unless File.directory?(dir) p = package p.themes.each { |t| t.write dir } p.grammars.each { |g| g.write dir } write_all p.preferences, "#{dir}/preferences.rb" TextMate::Snippet::DSLWriter.new(p.snippets).write "#{dir}/snippets.rb" write_all p.setting_sets, "#{dir}/settings.rb" write_all p.macros.sort_by(&:name), "#{dir}/macros.rb" write_all p.command_sets, "#{dir}/commands.rb" p.menus.each { |m| m.write dir } p.mousemaps.each { |m| m.write dir } p.keymaps.each { |k| k.for_keyboard(keyboard).write dir } return unless copy_other_files p.other_files.each { |f| copy_file f, dir } end