Sha256: d0cfeb05e6d349ec66941baf4499ca9fd812b220861ae596bcd2e8bfdbba82fc
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
module Pleeease class NodeRunner< Struct.new(:script, :environment) def run IO.popen(env, cmd, "r+") do |f| # pump stdout lines = [] f.each do |line| lines << line end lines.join end end def env environment || ENV end def cmd [ 'node', '-e', script ] end end class Runner < Struct.new(:css) NodePath = File.expand_path('../../../node_modules', __FILE__) def process node_runner.run rescue raise Error.new("could not process the input file: #{$!.message}") end private def node_runner NodeRunner.new(script, env) end def script <<-EOS var pleeease = require('pleeease'), fs = require('fs'); var css = "#{escape_js(css)}" var options = {}; var fixed = pleeease.process(css, options); console.log(fixed); EOS end def env { 'NODE_PATH' => NodePath } end JS_ESCAPE_MAP = { '\\' => '\\\\', '</' => '<\/', "\r\n" => '\n', "\n" => '\n', "\r" => '\n', '"' => '\\"', "'" => "\\'" } def escape_js(javascript) javascript.gsub(/(\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) {|match| JS_ESCAPE_MAP[match] } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pleeease-0.0.3 | lib/pleeease/runner.rb |