lib/knj/compiler.rb in knjrbfw-0.0.8 vs lib/knj/compiler.rb in knjrbfw-0.0.9
- old
+ new
@@ -1,39 +1,39 @@
#This class can compile Ruby-files into Ruby-methods on a special class and then call these methods to run the code from the file. The theory is that this can be faster...
class Knj::Compiler
- def initialize(args = {})
- @args = args
- @mutex = Mutex.new
-
- if @args[:cache_hash]
+ def initialize(args = {})
+ @args = args
+ @mutex = Mutex.new
+
+ if @args[:cache_hash]
@compiled = @args[:cache_hash]
else
@compiled = {}
end
- end
-
- #Compiles file into cache as a method.
- def compile_file(args)
- raise "File does not exist." if !File.exist?(args[:filepath])
- defname = def_name_for_file_path(args[:filepath])
-
- evalcont = "class Knj::Compiler::Container; def self.#{defname};"
- evalcont += File.read(args[:filepath])
- evalcont += ";end;end"
-
- eval(evalcont, nil, args[:fileident])
+ end
+
+ #Compiles file into cache as a method.
+ def compile_file(args)
+ raise "File does not exist." if !File.exist?(args[:filepath])
+ defname = def_name_for_file_path(args[:filepath])
+
+ evalcont = "class Knj::Compiler::Container; def self.#{defname};"
+ evalcont << File.read(args[:filepath])
+ evalcont << ";end;end"
+
+ eval(evalcont, nil, args[:fileident])
@compiled[args[:filepath]] = Time.new
- end
-
- #Returns the method name for a filepath.
- def def_name_for_file_path(filepath)
- return filepath.gsub("/", "_").gsub(".", "_")
- end
-
- #Compile and evaluate a file - it will be cached.
- def eval_file(args)
- #Compile if it hasnt been compiled yet.
+ end
+
+ #Returns the method name for a filepath.
+ def def_name_for_file_path(filepath)
+ return filepath.gsub("/", "_").gsub(".", "_")
+ end
+
+ #Compile and evaluate a file - it will be cached.
+ def eval_file(args)
+ #Compile if it hasnt been compiled yet.
if !@compiled.key?(args[:filepath])
@mutex.synchronize do
compile_file(args) if !@compiled.key?(args[:filepath])
end
end
@@ -44,13 +44,13 @@
@mutex.synchronize do
compile_file(args)
end
end
- #Call the compiled function.
- defname = def_name_for_file_path(args[:filepath])
- Knj::Compiler::Container.send(defname)
- end
-
- #This class holds the compiled methods.
- class Knj::Compiler::Container; end
+ #Call the compiled function.
+ defname = def_name_for_file_path(args[:filepath])
+ Knj::Compiler::Container.send(defname)
+ end
+
+ #This class holds the compiled methods.
+ class Knj::Compiler::Container; end
end
\ No newline at end of file