Class: Pupu::Parser
- Inherits:
-
Object
- Object
- Pupu::Parser
- Defined in:
- lib/pupu/parser.rb
Instance Method Summary collapse
- #add_dependencies ⇒ Object
- #add_initializers ⇒ Object
-
#initialize(plugin_name, plugin_params) ⇒ Parser
constructor
A new instance of Parser.
- #loaded? ⇒ Boolean
- #parse! ⇒ Object
Constructor Details
#initialize(plugin_name, plugin_params) ⇒ Parser
Returns a new instance of Parser.
8 9 10 11 12 13 14 |
# File 'lib/pupu/parser.rb', line 8 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 |
Instance Method Details
#add_dependencies ⇒ Object
33 34 35 36 37 38 |
# File 'lib/pupu/parser.rb', line 33 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 |
#add_initializers ⇒ Object
26 27 28 29 30 31 |
# File 'lib/pupu/parser.rb', line 26 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 |
#loaded? ⇒ Boolean
16 17 18 19 20 21 22 23 24 |
# File 'lib/pupu/parser.rb', line 16 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 |
#parse! ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/pupu/parser.rb', line 40 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 |