Class Haml::Exec::SassConvert
In: lib/haml/exec.rb
Parent: Generic

The `sass-convert` executable.

Methods

Public Class methods

@param args [Array<String>] The command-line arguments

[Source]

     # File lib/haml/exec.rb, line 645
645:       def initialize(args)
646:         super
647:         require 'sass'
648:         @options[:for_tree] = {}
649:         @options[:for_engine] = {:cache => false, :read_cache => true}
650:       end

Public Instance methods

Processes the options set by the command-line arguments, and runs the CSS compiler appropriately.

[Source]

     # File lib/haml/exec.rb, line 725
725:       def process_result
726:         require 'sass'
727: 
728:         if @options[:recursive]
729:           process_directory
730:           return
731:         end
732: 
733:         super
734:         input = @options[:input]
735:         raise "Error: '#{input.path}' is a directory (did you mean to use --recursive?)" if File.directory?(input)
736:         output = @options[:output]
737:         output = input if @options[:in_place]
738:         process_file(input, output)
739:       end

Tells optparse how to parse the arguments.

@param opts [OptionParser]

[Source]

     # File lib/haml/exec.rb, line 655
655:       def set_opts(opts)
656:         opts.banner = "Usage: sass-convert [options] [INPUT] [OUTPUT]\n\nDescription:\n  Converts between CSS, Sass, and SCSS files.\n  E.g. converts from SCSS to Sass,\n  or converts from CSS to SCSS (adding appropriate nesting).\n\nOptions:\n"
657: 
658:         opts.on('-F', '--from FORMAT',
659:           'The format to convert from. Can be css, scss, sass, less, or sass2.',
660:           'sass2 is the same as sass, but updates more old syntax to new.',
661:           'By default, this is inferred from the input filename.',
662:           'If there is none, defaults to css.') do |name|
663:           @options[:from] = name.downcase.to_sym
664:           unless [:css, :scss, :sass, :less, :sass2].include?(@options[:from])
665:             raise "Unknown format for sass-convert --from: #{name}"
666:           end
667:           try_less_note if @options[:from] == :less
668:         end
669: 
670:         opts.on('-T', '--to FORMAT',
671:           'The format to convert to. Can be scss or sass.',
672:           'By default, this is inferred from the output filename.',
673:           'If there is none, defaults to sass.') do |name|
674:           @options[:to] = name.downcase.to_sym
675:           unless [:scss, :sass].include?(@options[:to])
676:             raise "Unknown format for sass-convert --to: #{name}"
677:           end
678:         end
679: 
680:         opts.on('-R', '--recursive',
681:           'Convert all the files in a directory. Requires --from and --to.') do
682:           @options[:recursive] = true
683:         end
684: 
685:         opts.on('-i', '--in-place',
686:           'Convert a file to its own syntax.',
687:           'This can be used to update some deprecated syntax.') do
688:           @options[:in_place] = true
689:         end
690: 
691:         opts.on('--dasherize', 'Convert underscores to dashes') do
692:           @options[:for_tree][:dasherize] = true
693:         end
694: 
695:         opts.on('--old', 'Output the old-style ":prop val" property syntax.',
696:                          'Only meaningful when generating Sass.') do
697:           @options[:for_tree][:old] = true
698:         end
699: 
700:         opts.on('-C', '--no-cache', "Don't cache to sassc files.") do
701:           @options[:for_engine][:read_cache] = false
702:         end
703: 
704:         unless ::Haml::Util.ruby1_8?
705:           opts.on('-E encoding', 'Specify the default encoding for Sass and CSS files.') do |encoding|
706:             Encoding.default_external = encoding
707:           end
708:         end
709: 
710:         super
711:       end

[Validate]