diff --git a/lib/noosfero.rb b/lib/noosfero.rb index af3e55f..04550fa 100644 --- a/lib/noosfero.rb +++ b/lib/noosfero.rb @@ -3,23 +3,28 @@ module Noosfero VERSION = '0.3.0' SVN_ROOT = 'https://svn.colivre.coop.br/svn/noosfero' - def self.controllers_in_directory(dir) - app_controller_path = Dir.glob(File.join(RAILS_ROOT, 'app', 'controllers', dir, '*_controller.rb')) + def self.pattern_for_controllers_in_directory(dir) + disjunction = controllers_in_directory(dir).join('|') + pattern = disjunction.blank? ? '' : ('(' + disjunction + ')') + Regexp.new(pattern) + end - # FIXME we can remove this line here if the controllers needed by application are not loaded - # directly - design_controller_path = Dir.glob(File.join(RAILS_ROOT, 'app', 'design_blocks', '*', 'controllers', '*_controller.rb')) + def self.pattern_for_controllers_from_design_blocks + items = Dir.glob(File.join(RAILS_ROOT, 'app', 'design_blocks', '*', 'controllers', '*_controller.rb')).map do |item| + item.gsub(/^.*\/([^\/]+)_controller.rb$/, '\1') + end.join('|') + Regexp.new(items.blank? ? '' : ('(' + items + ')')) + end - (app_controller_path + design_controller_path).map do |item| + private + + def self.controllers_in_directory(dir) + app_controller_path = Dir.glob(File.join(RAILS_ROOT, 'app', 'controllers', dir, '*_controller.rb')) + app_controller_path.map do |item| item.gsub(/^.*\/([^\/]+)_controller.rb$/, '\1') end end - def self.pattern_for_controllers_in_directory(dir) - disjunction = controllers_in_directory(dir).join('|') - pattern = disjunction.blank? ? '' : (('(' + disjunction + ')')) - Regexp.new(pattern) - end end require 'noosfero/constants' diff --git a/test/unit/noosfero_test.rb b/test/unit/noosfero_test.rb index 70e0e74..04da669 100644 --- a/test/unit/noosfero_test.rb +++ b/test/unit/noosfero_test.rb @@ -17,4 +17,10 @@ class NoosferoTest < Test::Unit::TestCase Dir.stubs(:glob).returns([]) assert_equal(//, Noosfero.pattern_for_controllers_in_directory('lala')) end + + should 'support controllers from design_blocks directory' do + Dir.expects(:glob).with("#{RAILS_ROOT}/app/design_blocks/*/controllers/*_controller.rb").returns(['app/design_blocks/block1/controllers/block1_controller.rb', 'app/design_blocks/block2/controllers/block2_controller.rb']) + assert_equal(/(block1|block2)/, Noosfero.pattern_for_controllers_from_design_blocks) + end + end -- libgit2 0.21.2