Skip to content

Commit

Permalink
Merge pull request activeadmin#800 from pcreux/patch-issue-799
Browse files Browse the repository at this point in the history
Camelcased and underscored names use safe_resource_name. Closes activeadmin#799.
  • Loading branch information
pcreux committed Jan 22, 2012
2 parents f92c7fe + fab40e8 commit b5b97e1
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 10 deletions.
13 changes: 12 additions & 1 deletion lib/active_admin/page.rb
Expand Up @@ -32,11 +32,22 @@ def initialize(namespace, name, options)
include Resource::Naming include Resource::Naming


# plural_resource_name is singular # plural_resource_name is singular
def resource_name
name
end

def safe_resource_name
name
end


# Force plural to be singular
def plural_resource_name def plural_resource_name
name name
end end


def resource_name # Force plural to be singular
def plural_safe_resource_name
name name
end end


Expand Down
2 changes: 1 addition & 1 deletion lib/active_admin/resource.rb
Expand Up @@ -133,7 +133,7 @@ def csv_builder


# @deprecated # @deprecated
def resource def resource
@resource_class resource_class
end end
ActiveAdmin::Deprecation.deprecate self, :resource, ActiveAdmin::Deprecation.deprecate self, :resource,
"ActiveAdmin::Resource#resource is deprecated. Please use #resource_class instead." "ActiveAdmin::Resource#resource is deprecated. Please use #resource_class instead."
Expand Down
20 changes: 15 additions & 5 deletions lib/active_admin/resource/naming.rb
@@ -1,14 +1,14 @@
module ActiveAdmin module ActiveAdmin
class Resource class Resource
module Naming module Naming
# Returns the name to call this resource such as "Bank Account" # Returns the user facing name. Example: "Bank Account"
def resource_name def resource_name
@resource_name ||= @options[:as] @resource_name ||= @options[:as]
@resource_name ||= singular_human_name @resource_name ||= singular_human_name
@resource_name ||= resource_class.name.gsub('::',' ') @resource_name ||= safe_resource_name
end end


# Returns the plural version of this resource such as "Bank Accounts" # Returns the plural version of the user facing name. Example: "Bank Accounts"
def plural_resource_name def plural_resource_name
@plural_resource_name ||= @options[:as].pluralize if @options[:as] @plural_resource_name ||= @options[:as].pluralize if @options[:as]
@plural_resource_name ||= plural_human_name @plural_resource_name ||= plural_human_name
Expand All @@ -20,13 +20,22 @@ def resource_key
camelized_resource_name camelized_resource_name
end end


def safe_resource_name
@safe_resource_name ||= @options[:as]
@safe_resource_name ||= resource_class.name.gsub('::',' ')
end

def plural_safe_resource_name
safe_resource_name.pluralize
end

# A camelized safe representation for this resource # A camelized safe representation for this resource
def camelized_resource_name def camelized_resource_name
resource_name.titleize.gsub(' ', '') safe_resource_name.titleize.gsub(' ', '')
end end


def plural_camelized_resource_name def plural_camelized_resource_name
plural_resource_name.titleize.gsub(' ', '') plural_safe_resource_name.titleize.gsub(' ', '')
end end


# An underscored safe representation internally for this resource # An underscored safe representation internally for this resource
Expand All @@ -39,6 +48,7 @@ def plural_underscored_resource_name
plural_camelized_resource_name.underscore plural_camelized_resource_name.underscore
end end



private private


# @return [String] Titleized human name via ActiveRecord I18n or nil # @return [String] Titleized human name via ActiveRecord I18n or nil
Expand Down
15 changes: 13 additions & 2 deletions spec/unit/config_shared_examples.rb
Expand Up @@ -29,9 +29,20 @@
expect { config.plural_resource_name }.should_not raise_error expect { config.plural_resource_name }.should_not raise_error
end end


it "implements #safe_resource_name" do
expect { config.safe_resource_name }.should_not raise_error
end

describe "#camelized_resource_name" do describe "#camelized_resource_name" do
it "returns a camelized version of the resource_name" do it "returns a camelized version of the safe_resource_name" do
config.should_receive(:resource_name).and_return "My resource" config.should_receive(:safe_resource_name).and_return "My resource"
config.camelized_resource_name.should == "MyResource"
end
end

describe "#plural_camelized_resource_name" do
it "returns a camelized version of the plural_safe_resource_name" do
config.should_receive(:safe_resource_name).and_return "My resource"
config.camelized_resource_name.should == "MyResource" config.camelized_resource_name.should == "MyResource"
end end
end end
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/resource/naming_spec.rb
Expand Up @@ -15,7 +15,7 @@ def config(options = {})


describe "underscored resource name" do describe "underscored resource name" do
context "when class" do context "when class" do
it "should be the underscored singular resource name" do it "should be the underscored safe resource name" do
config.underscored_resource_name.should == "category" config.underscored_resource_name.should == "category"
end end
end end
Expand Down

0 comments on commit b5b97e1

Please sign in to comment.