Skip to content
This repository was archived by the owner on Aug 21, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
* Martin Kuckert @MKuckert
* Ivan Lazarevic @kopipejst
* Matt DuVall @mduvall twitter:@mduvall_
* Mekka Okereke @mekka @mekkaokereke
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ gemspec
# optional runtime dependencies
gem "sass"
gem "compass"
gem "therubyracer"
gem "less", :require => false

gem "rake", :require => false
gem "debugger"
Expand Down
73 changes: 53 additions & 20 deletions lib/csscss/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,64 @@ def run
execute
end

def gem_installed?(gem_name)
begin
require gem_name
rescue LoadError
return false
end
true
end

def load_sass_file(filename)
if !gem_installed?('sass') then
puts "Must install sass gem before parsing sass/scss files"
exit 1
end

sass_options = {cache:false}
sass_options[:load_paths] = Compass.configuration.sass_load_paths if @compass
begin
Sass::Engine.for_file(filename, sass_options).render
rescue Sass::SyntaxError => e
if e.message =~ /compass/ && !@compass
puts "Enable --compass option to use compass's extensions"
exit 1
else
raise e
end
end
end

def load_less_file(filename)
if !gem_installed?('less') then
puts "Must install less gem before parsing less files (try \"gem install less\", or add less to your Gemfile)"
exit 1
end

begin
contents = open(filename) {|f| f.read }
Less::Parser.new.parse(contents).to_css
rescue Less::ParseError => e
puts "Less parse error"
exit 1
end
end

def load_css_file(filename)
open(filename) {|f| f.read }
end

def execute
warn_old_debug_flag if ENV["CSSCSS_DEBUG"]

all_contents = @argv.map do |filename|
all_contents= @argv.map do |filename|
if %w(.scss .sass).include?(File.extname(filename).downcase) && !(filename =~ URI.regexp)
begin
require "sass"
rescue LoadError
abort "Must install sass gem before parsing sass/scss files"
end

sass_options = {cache:false}
sass_options[:load_paths] = Compass.configuration.sass_load_paths if @compass
begin
Sass::Engine.for_file(filename, sass_options).render
rescue Sass::SyntaxError => e
if e.message =~ /compass/ && !@compass
puts "Enable --compass option to use compass's extensions"
exit 1
else
raise e
end
end
load_sass_file(filename)
elsif %w(.less).include?(File.extname(filename).downcase) && !(filename =~ URI.regexp)
load_less_file(filename)
else
open(filename) {|f| f.read }
load_css_file(filename)
end
end.join("\n")

Expand Down
41 changes: 41 additions & 0 deletions test/csscss/cli_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require "test_helper.rb"

module Csscss

def less_gem_installed
begin
require "less"
rescue LoadError
puts "Less Gem does not appear to be installed. Skipping Less tests"
false
end
true
end

describe CLI do
it "parses valid less and sass files the same as css files" do
css_types = []

css_check = Csscss::CLI.new("filename")
css_file = css_check.load_css_file("test/csscss/test_input_files/test.css")
#css_types.push css_file

if (css_check.gem_installed?('less')) then
less_check = Csscss::CLI.new("filename")
less_file = less_check.load_less_file("test/csscss/test_input_files/test.less")
css_types.push less_file
else
puts "Less not installed, skipping less parsing tests..."
end

if (css_check.gem_installed?('sass')) then
sass_check = Csscss::CLI.new("filename")
sass_file = sass_check.load_sass_file("test/csscss/test_input_files/test.sass")
css_types.push sass_file
else
puts "Sass not installed, skipping sass parsing tests..."
end

end
end
end
2 changes: 2 additions & 0 deletions test/csscss/test_input_files/test.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.me { border: 1px solid; }
.me2 { border: 1px solid; }
14 changes: 14 additions & 0 deletions test/csscss/test_input_files/test.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.me {
border: 1px solid;
font-family: Arial;
background: #005555;
}

.me2
{
border: 1px solid;
font-family: Arial;
background: #005555;
}


13 changes: 13 additions & 0 deletions test/csscss/test_input_files/test.sass
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.me
border: 1px solid
font-family: Arial
background: #005555


.me2
border: 1px solid
font-family: Arial
background: #005555