lib/epic.rb in epic-0.0.2 vs lib/epic.rb in epic-0.0.3
- old
+ new
@@ -1,161 +1,12 @@
dir = File.dirname(__FILE__)
$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
require 'rubygems'
-require 'file'
+require 'f'
require 'g'
require 'active_support'
require 'w3c_validators'
-module Epic
- module Validator
- class Configuration
- attr_accessor :base_path, :tmp_path, :doctype, :jslint_settings
- end
-
- class Base
- class << self
- def configuration
- @@configuration ||= Epic::Validator::Configuration.new
- end
-
- def configure
- yield configuration
- end
- end
-
- def configuration
- self.class.configuration
- end
-
- # Parses out the <tt>base_path</tt> setting from a path to display it in a
- # less verbose way.
- #
- def display_path(path)
- path = File.expand_path(path)
- path.gsub(base_path.to_s, "")
- end
-
- def base_path
- configuration.base_path || ""
- end
-
- def tmp_path
- configuration.tmp_path || ""
- end
- end
-
- class HTML < Base
- def validator
- @validator ||= W3CValidators::MarkupValidator.new
- end
-
- def validate(path)
- $stdout.print " #{path} validating . . . "
-
- doctype = configuration.doctype || "HTML 4.01 Transitional"
- validator.set_doctype!(doctype)
-
- results = validator.validate_file(path)
-
- valid = results.errors.length <= 0
-
- if valid
- $stdout.puts "OK"
- else
- $stdout.puts "validation errors"
- results.errors.each do |err|
- $stdout.puts
- $stdout.puts err.to_s
- end
- end
-
- valid
- end
- end
-
- class JavaScript < Base
- def use_jslint_settings?
- !jslint_settings.blank?
- end
-
- def jslint_settings
- configuration.jslint_settings
- end
-
- def jslint_settings_count
- jslint_settings.to_s.split("\n").size
- end
-
- def pre_process(content)
- content
- end
-
- def validate(path)
- display = display_path(path)
- $stdout.print " #{display} validating . . . "
- output = ""
-
- File.open(path) do |f|
- output = f.read
- end
-
- output = pre_process(output)
-
- FileUtils.mkdir_p(tmp_path)
-
- js_fragment_path = File.expand_path("#{tmp_path}/#{File.basename(path)}_fragment")
- fragment_display_path = display_path(js_fragment_path)
-
- if File.exists?(js_fragment_path)
- puts "That already exists?"
- else
- File.open(js_fragment_path,'w') do |f|
- f.puts jslint_settings if use_jslint_settings?
- f.puts output
- end
-
- jslint_path = File.expand_path("#{File.dirname(__FILE__)}/../vendor/ext/jslint.js")
- raise "#{jslint_path} does not exist" unless File.exists?(jslint_path)
- rhino_path = File.expand_path("#{File.dirname(__FILE__)}/../vendor/ext/js.jar")
- raise "#{rhino_path} does not exist" unless File.exists?(rhino_path)
-
- results = F.execute("java -jar #{rhino_path} #{jslint_path} #{js_fragment_path}", :return => true)
-
- if results =~ /jslint: No problems found/
- $stdout.puts "OK"
- else
- $stdout.puts "errors found!"
- results.split("\n").each do |result|
- if result =~ /line (\d+) character (\d+): (.*)/
- line_number = $1.to_i
- error = "Error at #{fragment_display_path} line #{line_number-jslint_settings_count} character #{$2}: #{$3}"
- error += F.get_line_from_file(js_fragment_path, line_number)
-
- $stdout.puts error
- end
- end
- message = "JavaScript Errors embedded in #{display}"
- g(message)
- raise message
- end
- end
- end
- end
-
- class JSON < JavaScript
- def pre_process(output)
- output
- end
-
- def jslint_settings
- end
- end
-
- class Stylesheet < Base
- def validate(filename)
- true
- end
- end
- end
-end
\ No newline at end of file
+require 'epic/base'
+require 'epic/validator'
+require 'epic/compressor'