Class: Less::Command
- Inherits:
-
Object
- Object
- Less::Command
- Defined in:
- lib/less/command.rb
Instance Attribute Summary collapse
-
#destination ⇒ Object
Returns the value of attribute destination.
-
#options ⇒ Object
Returns the value of attribute options.
-
#source ⇒ Object
Returns the value of attribute source.
Instance Method Summary collapse
- #compress? ⇒ Boolean
- #debug? ⇒ Boolean
- #err(s = '', type = '') ⇒ Object
-
#initialize(options) ⇒ Command
constructor
A new instance of Command.
-
#log(s = '') ⇒ Object
Just a logging function to avoid typing ‘*’.
- #parse(is_new = false) ⇒ Object
- #run! ⇒ Object
-
#watch ⇒ Object
little function which allows us to Ctrl-C exit inside the passed block.
- #watch? ⇒ Boolean
Constructor Details
#initialize(options) ⇒ Command
Returns a new instance of Command.
5 6 7 8 9 10 |
# File 'lib/less/command.rb', line 5 def initialize $verbose = [:debug] @source = [:source] @destination = ([:destination] || [:source]).gsub /\.(less|lss)/, '.css' @options = end |
Instance Attribute Details
#destination ⇒ Object
Returns the value of attribute destination.
3 4 5 |
# File 'lib/less/command.rb', line 3 def destination @destination end |
#options ⇒ Object
Returns the value of attribute options.
3 4 5 |
# File 'lib/less/command.rb', line 3 def @options end |
#source ⇒ Object
Returns the value of attribute source.
3 4 5 |
# File 'lib/less/command.rb', line 3 def source @source end |
Instance Method Details
#compress? ⇒ Boolean
13 |
# File 'lib/less/command.rb', line 13 def compress?() @options[:compress] end |
#debug? ⇒ Boolean
14 |
# File 'lib/less/command.rb', line 14 def debug?() @options[:debug] end |
#err(s = '', type = '') ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/less/command.rb', line 91 def err s = '', type = '' type = type.strip + ' ' unless type.empty? $stderr.print "! #{type}Error: #{s}" if @options[:growl] growl = Growl.new growl.title = "LESS" growl. = "#{type}Error in #@source!" growl.run false end end |
#log(s = '') ⇒ Object
Just a logging function to avoid typing ‘*’
87 88 89 |
# File 'lib/less/command.rb', line 87 def log s = '' print '* ' + s.to_s end |
#parse(is_new = false) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/less/command.rb', line 54 def parse is_new = false begin # Create a new Less object with the contents of a file css = Less::Engine.new(File.new(@source), @options).to_css css = css.delete " \n" if compress? File.open( @destination, "w" ) do |file| file.write css end act, file = (is_new ? 'Created' : 'Updated'), @destination.split('/').last print "* #{act} #{file}\n: " if watch? Growl.notify "#{act} #{file}", :title => 'LESS' if @options[:growl] && @options[:verbose] rescue Errno::ENOENT => e abort "#{e}" rescue SyntaxError => e err "#{e}\n", "Syntax" rescue CompileError => e err "#{e}\n", "Compile" rescue MixedUnitsError => e err "`#{e}` you're mixing units together! What do you expect?\n", "Mixed Units" rescue PathError => e err "`#{e}` was not found.\n", "Path" rescue VariableNameError => e err "#{e} is undefined.\n", "Variable Name" rescue MixinNameError => e err "#{e} is undefined.\n", "Mixin Name" else true end end |
#run! ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/less/command.rb', line 27 def run! if watch? parse(true) unless File.exist? @destination log "Watching for changes in #@source... Ctrl-C to abort.\n: " # Main watch loop loop do watch { sleep 1 } # File has changed if File.stat( @source ).mtime > File.stat( @destination ).mtime print Time.now.strftime("%H:%M:%S -- ") if @options[:timestamps] print "Change detected... " # Loop until error is fixed until parse log "Press [return] to continue..." watch { $stdin.gets } end end end else parse end end |
#watch ⇒ Object
little function which allows us to Ctrl-C exit inside the passed block
18 19 20 21 22 23 24 25 |
# File 'lib/less/command.rb', line 18 def watch begin yield rescue Interrupt puts exit 0 end end |
#watch? ⇒ Boolean
12 |
# File 'lib/less/command.rb', line 12 def watch?() @options[:watch] end |