baccarat/_plugins/less_converter.rb

51 lines
1.3 KiB
Ruby

module Jekyll
# Compiled LESS CSS into CSS. You must specify an empty YAML front matter
# at the beginning of the file.
# .less -> .css
class LessConverter < Converter
safe true
priority :low
pygments_prefix "\n"
pygments_suffix "\n"
def setup
return if @setup
require 'less'
@setup = true
rescue LoadError
STDERR.puts 'You are missing a library required for less. Please run:'
STDERR.puts ' $ [sudo] gem install less'
raise FatalException.new("Missing dependency: less")
end
def matches(ext)
ext =~ /less/i
end
def output_ext(ext)
".css"
end
def convert(content)
setup
if content =~ /\@import\s["'](\w+)["'];/ then
file = nil
if File.extname($1) != 'less' then file = Dir.getwd()+'/_temp/stylesheets/'+$1+'.less'
else file = Dir.getwd()+'_temp/stylesheets/'+$1 end
included = File.open(file)
included_contents = included.read
content = included_contents << content
content.gsub!(/\@import\s["'](\w+)["'];/,'')
end
begin
parser = Less::Parser.new
parser.parse(content).to_css(:compress => true)
# Less::Engine.new(content).to_css
rescue => e
puts "Less Exception: #{e.message}"
end
end
end
end