51 lines
1.3 KiB
Ruby
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
|