Sha256: a188e7fec4fa78ecb2948e1c164e69812ce77e276b9c563055442fb0006a7a6a
Contents?: true
Size: 1.59 KB
Versions: 5
Compression:
Stored size: 1.59 KB
Contents
require "pupu/dsl" require "pupu/pupu" module Pupu class Parser def initialize(plugin_name, plugin_params) @plugin = Pupu[plugin_name, plugin_params] @output = Array.new @dsl = DSL.new(@plugin) @@loaded ||= Hash.new @@loaded[@plugin.name] = Array.new end def loaded? # The reason why just array with plugin names isn't enough is that every time it can be called # with different parameters. For example pupu :mootools and then pupu :mootools, :more => true @@loaded[@plugin.name] && @dsl.files.all? do |file| @@loaded[@plugin.name].include?(file) end false # FIXME: there is a bug in this method, it returns true in every case (not so important) end def add_initializers js_initializer = @plugin.initializer(:javascript) css_initializer = @plugin.initializer(:stylesheet) @output.push("\n<link href='#{css_initializer.url}' media='screen' rel='stylesheet' type='text/css' />") if css_initializer @output.push("\n<script src='#{js_initializer.url}' type='text/javascript'></script>") if js_initializer end def add_dependencies @dsl.get_dependencies.each do |dependency| parser = Parser.new(dependency.name, dependency.params) @output.push(parser.parse!) unless parser.loaded? end end def parse! @dsl.instance_eval(File.read(@plugin.file("config.rb").path)) self.add_dependencies @@loaded[@plugin.name].push(*@dsl.files) @output.push(@dsl.output) self.add_initializers return @output.join("\n") end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
pupu-0.0.3.pre | lib/pupu/parser.rb |
pupu-0.0.2.pre | lib/pupu/parser.rb |
pupu-0.0.2 | lib/pupu/parser.rb |
pupu-0.1.pre | lib/pupu/parser.rb |
pupu-0.0.1 | lib/pupu/parser.rb |