Class: JuscrCompiler

Inherits:
Object
  • Object
show all
Defined in:
lib/juscrcompiler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(compress = true) ⇒ JuscrCompiler

Returns a new instance of JuscrCompiler.



12
13
14
15
16
17
18
19
20
21
# File 'lib/juscrcompiler.rb', line 12

def initialize(compress = true)
  begin
    compress = compress.nil? ? false : true;
    @compress = compress
    @root = Dir.getwd + '/'
  rescue RuntimeError => e
    puts e.message  
    puts e.backtrace.inspect
  end  
end

Instance Attribute Details

#directoryObject

Returns the value of attribute directory.



6
7
8
# File 'lib/juscrcompiler.rb', line 6

def directory
  @directory
end

Instance Method Details

#compile(files, filename, message = "// File generated #{Time.now.to_s} by juscr") ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/juscrcompiler.rb', line 23

def compile(files, filename, message = "// File generated #{Time.now.to_s} by juscr")
  @files = (files.is_a? String) ? [files] : files
  @filename = filename
  @message = message + "\n"
  
  merge
  compress if @compress
  
  @compiled_content = @merged.join("\n")
  
  create_file
end

#compressObject



51
52
53
54
55
# File 'lib/juscrcompiler.rb', line 51

def compress
  @merged.each_index do |i|
    @merged[i] = JSMin.minify(@merged[i])
  end
end

#compress?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/juscrcompiler.rb', line 8

def compress?
  @compress
end

#create_fileObject



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/juscrcompiler.rb', line 62

def create_file
  begin
    is_new_file = (File.exists? "#{@root}#{@filename}") ? false : true
    File.open("#{@root}#{@filename}", "w+") do |the_file|
      the_file.syswrite @message + @compiled_content
      puts is_new_file ? "created #{@root}#{@filename}" : "updated #{@root}#{@filename}"
    end
  rescue IOError => e
    puts "#{e.class} #{e.message} #{e.backtrace.join($/)}"
  end

end

#mergeObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/juscrcompiler.rb', line 36

def merge
  @merged = Array.new
  @files.each do |file|
    begin
      raise IOError, "#{file} does not exist", caller unless File.exists? "#{@root}#{file}"
      File.open("#{@root}#{file}", "r") do |the_file|
        @merged.push read_file the_file unless the_file.nil?
      end
    rescue RuntimeError => e
      puts e.message
      puts e.backtrace.inspect
    end
  end
end

#read_file(file) ⇒ Object



57
58
59
60
# File 'lib/juscrcompiler.rb', line 57

def read_file(file)
  n = File.size?(file)
  file.sysread(n)
end