<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2,6 +2,7 @@
 
 === Edge
 
+* Populate config.extensions so extensions can be disabled easily. [Jason Garber]
 * Convert integration specs to Cucumber stories and update RSpec. [Sean 
 Cribbs]
 * Use ActionView::PathSet instead of normal arrays for view paths. [Pat</diff>
      <filename>CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version =&gt; 20081208005628) do
+ActiveRecord::Schema.define(:version =&gt; 20081203140407) do
 
   create_table &quot;config&quot;, :force =&gt; true do |t|
     t.string &quot;key&quot;,   :limit =&gt; 40, :default =&gt; &quot;&quot;, :null =&gt; false</diff>
      <filename>db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,13 +9,12 @@ module Radiant
 
   class Configuration &lt; Rails::Configuration
     attr_accessor :extension_paths
-    attr_accessor :extensions
+    attr_writer :extensions
     attr_accessor :view_paths
 
     def initialize
       self.view_paths = []
       self.extension_paths = default_extension_paths
-      self.extensions = [ :all ]
       super
     end
 
@@ -27,7 +26,17 @@ module Radiant
       paths.unshift(RADIANT_ROOT + &quot;/test/fixtures/extensions&quot;) if env == &quot;test&quot;
       paths
     end
-
+    
+    def extensions
+      @extensions ||= all_available_extensions
+    end
+    
+    def all_available_extensions
+      extension_paths.map do |path|
+        Dir[&quot;#{path}/*&quot;].select {|f| File.directory?(f) }
+      end.flatten.map {|f| File.basename(f).sub(/^\d+_/, '') }.sort.map(&amp;:to_sym)
+    end
+    
     def admin
       AdminUI.instance
     end
@@ -159,7 +168,17 @@ module Radiant
       extension_loader.add_controller_paths
       super
     end
-
+    
+    def extensions
+      @extensions ||= all_available_extensions
+    end
+    
+    def all_available_extensions
+      extension_paths.map do |path|
+        Dir[&quot;#{path}/*&quot;].select {|f| File.directory?(f) }
+      end.flatten.map {|f| File.basename(f).sub(/^\d+_/, '') }.sort.map(&amp;:to_sym)
+    end
+    
     def admin
       configuration.admin
     end</diff>
      <filename>lib/radiant/initializer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,6 +27,23 @@ describe Radiant::Configuration do
     @configuration.extension_paths.should include(&quot;#{RADIANT_ROOT}/vendor/extensions&quot;) 
   end
   
+  it &quot;should initialize the extensions&quot; do
+    @configuration.extensions.should be_kind_of(Array)
+    @configuration.extensions.should include(:archive, :textile_filter, :markdown_filter) 
+  end
+  
+  it &quot;should remove excluded extensions&quot; do
+    @configuration.extensions -= [:archive]
+    @configuration.extensions.should be_kind_of(Array)
+    @configuration.extensions.should_not include(:archive) 
+  end
+  
+  it &quot;should have extensions only found in extension paths&quot; do
+    @configuration.extension_paths = [RADIANT_ROOT + &quot;/test/fixtures/extensions&quot;]
+    @configuration.extensions.should include(:basic, :overriding, :load_order_green) 
+    @configuration.extensions.should_not include(:archive, :textile_filter, :markdown_filter) 
+  end
+  
   it &quot;should have access to the AdminUI&quot; do
     @configuration.admin.should == Radiant::AdminUI.instance
   end</diff>
      <filename>spec/lib/radiant/initializer_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c04a4fc8f3b2957d20ace42a674405d6f85c4c05</id>
    </parent>
  </parents>
  <author>
    <name>Jason Garber</name>
    <email>jg@jasongarber.com</email>
  </author>
  <url>http://github.com/imajes/radiant/commit/eb80a6313fad8af9a20b466128dc4ba6987aaf7e</url>
  <id>eb80a6313fad8af9a20b466128dc4ba6987aaf7e</id>
  <committed-date>2009-04-25T14:21:16-07:00</committed-date>
  <authored-date>2009-04-25T10:55:23-07:00</authored-date>
  <message>Populate config.extensions so extensions can be disabled easily. [#51 state:resolved]</message>
  <tree>26597cc23d051e483d74ec6e01cfbfb911f53ce0</tree>
  <committer>
    <name>Josh French</name>
    <email>josh@digitalpulp.com</email>
  </committer>
</commit>
