class SublimeDSL::SublimeText::Package::Reader
A DSL read 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/reader.rb, line 15 def initialize(name) @package_name = name @root = '.' @alt_root = nil @include = nil @exclude = '*.keyboard.rb' end
Public Instance Methods
dir()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/reader.rb, line 23 def dir "#{root}/#{package_name}" end
package()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/reader.rb, line 27 def package @package ||= read end
Private Instance Methods
files()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/reader.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
read()
click to toggle source
# File lib/sublime_dsl/sublime_text/package/reader.rb, line 63 def read validate if files.empty? Console.info "#{dir}: nothing to read" return nil end Console.info "processing DSL files in #{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 if File.basename(file) =~ /\.rb$/ DSLReader.new file, package else package.other_files << file end rescue => ex Console.error "error when reading #{file}:" raise ex end end package end
selected_file(file)
click to toggle source
# File lib/sublime_dsl/sublime_text/package/reader.rb, line 92 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/reader.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