class SublimeDSL::SublimeText::Package::Importer
An import operation with its options.
Attributes
alt_root[RW]
exclude[RW]
include[RW]
package_name[R]
root[RW]
Public Class Methods
new(name)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 15 def initialize(name) @package_name = name @root = SublimeText.packages_dir @alt_root = nil @include = nil @exclude = '*.cache;*.pyc' end
Public Instance Methods
dir()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 23 def dir "#{root}/#{package_name}" end
package()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 27 def package @package ||= import end
Private Instance Methods
files()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 39 def files @files ||= begin files = Dir["#{dir}/*"] if self.include specs = self.include.split(';') files.select! do |f| f = File.basename(f) specs.any? { |s| File.fnmatch(s, f) } end end if self.exclude specs = self.exclude.split(';') files.reject! do |f| f = File.basename(f) specs.any? { |s| File.fnmatch(s, f) } end end files end end
import()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 63 def import validate if files.empty? Console.info "#{dir}: nothing to import" return nil end Console.info "importing package from #{dir}" package = Package.new(package_name) files.each.with_index(1) do |file, index| file = selected_file(file) Console.progress index, files.length, file begin case File.extname(file).downcase when '.tmtheme' package.themes << TextMate::Theme.import(file) when '.tmlanguage' package.grammars << TextMate::Grammar.import(file) when '.tmpreferences' package.preferences << TextMate::Preference.import(file) when '.tmsnippet', '.sublime-snippet' package.snippets << TextMate::Snippet.import(file) when '.sublime-settings' package.setting_sets << SettingSet.import(file) when '.sublime-macro' package.macros << Macro.import(file) when '.sublime-commands' package.command_sets << CommandSet.import(file) when '.sublime-menu' package.menus << Menu.import(file) when '.sublime-mousemap' package.mousemaps << MouseMap.import(file) when '.sublime-keymap' package.keymaps << KeyMap.import(file) when '.sublime-build' # not worth it package.other_files << file when '.sublime-completions' # only HTML & PHP, not surviving in ST 3 package.other_files << file else package.other_files << file end rescue => ex Console.error "error when importing #{file}:" raise ex end end package end
selected_file(file)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 117 def selected_file(file) return file unless alt_root alt_file = file.sub(root, alt_root) File.exist?(alt_file) ? alt_file : file end
validate()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/importer.rb, line 33 def validate File.directory?(dir) or raise OptionError, "no such directory: #{dir}" alt_root.nil? || File.directory?(alt_root) or raise OptionError, "no such directory: #{alt_root}" end