Skip to content

Commit 9f06aa1

Browse files
committed
Merge pull request zendesk#51 from zendesk/grosser/core_ext
core ext are bad :)
2 parents 244c5bf + b79fbcd commit 9f06aa1

File tree

10 files changed

+35
-45
lines changed

10 files changed

+35
-45
lines changed

lib/zendesk_api.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
require 'zendesk_api/core_ext/modulize'
3-
require 'zendesk_api/core_ext/snakecase'
41
require 'zendesk_api/core_ext/inflection'
52
require 'zendesk_api/client'
63

lib/zendesk_api/association.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
require 'zendesk_api/helpers'
2+
13
module ZendeskAPI
24
# Represents an association between two resources
35
class Association
@@ -50,7 +52,7 @@ def generate_path(*args)
5052

5153
def side_load(resources, side_loads)
5254
key = "#{options.name}_id"
53-
plural_key = "#{options.name.to_s.singular}_ids"
55+
plural_key = "#{Inflection.singular options.name.to_s}_ids"
5456

5557
resources.each do |resource|
5658
if resource.key?(plural_key) # Grab associations from child_ids field on resource
@@ -230,7 +232,7 @@ def has(resource_name, class_level_options = {})
230232
# @param [Symbol] resource The underlying resource name
231233
# @param [Hash] opts The options to pass to the method definition.
232234
def has_many(resource_name, class_level_opts = {})
233-
klass = get_class(class_level_opts.delete(:class)) || get_class(resource_name.to_s.singular)
235+
klass = get_class(class_level_opts.delete(:class)) || get_class(Inflection.singular(resource_name.to_s))
234236

235237
class_level_association = {
236238
:class => klass,
@@ -259,7 +261,7 @@ def has_many(resource_name, class_level_opts = {})
259261

260262
# find and cache association
261263
instance_association = Association.new(class_level_association.merge(:parent => self))
262-
singular_resource_name = resource_name.to_s.singular
264+
singular_resource_name = Inflection.singular(resource_name.to_s)
263265

264266
resources = if (ids = method_missing("#{singular_resource_name}_ids")) && ids.any?
265267
ids.map do |id|
@@ -296,7 +298,7 @@ def has_many(resource_name, class_level_opts = {})
296298
# reopened under a different superclass, an error will be thrown
297299
def get_class(resource)
298300
return false if resource.nil?
299-
res = resource.to_s.modulize
301+
res = ZendeskAPI::Helpers.modulize_string(resource.to_s)
300302

301303
begin
302304
const_get(res)
@@ -318,7 +320,7 @@ def const_missing(*args)
318320
# reopened under a different superclass, an error will be thrown
319321
def get_class(resource)
320322
return false if resource.nil?
321-
res = resource.to_s.modulize.split("::")
323+
res = ZendeskAPI::Helpers.modulize_string(resource.to_s).split("::")
322324

323325
begin
324326
res[1..-1].inject(ZendeskAPI.const_get(res[0])) do |iter, k|

lib/zendesk_api/client.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def method_missing(method, *args, &block)
3232
method = method.to_s
3333
options = args.last.is_a?(Hash) ? args.pop : {}
3434
return instance_variable_get("@#{method}") if !options.delete(:reload) && instance_variable_defined?("@#{method}")
35-
instance_variable_set("@#{method}", ZendeskAPI::Collection.new(self, ZendeskAPI.get_class(method.singular), options))
35+
instance_variable_set("@#{method}", ZendeskAPI::Collection.new(self, ZendeskAPI.get_class(Inflection.singular(method)), options))
3636
end
3737

3838
# Plays a view playlist.
Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
11
require 'inflection'
22

33
Inflection.plural_rule 'forum', 'forums'
4-
5-
class String
6-
def singular
7-
Inflection.singular(self)
8-
end
9-
10-
def plural
11-
Inflection.plural(self)
12-
end
13-
end

lib/zendesk_api/core_ext/modulize.rb

Lines changed: 0 additions & 10 deletions
This file was deleted.

lib/zendesk_api/core_ext/snakecase.rb

Lines changed: 0 additions & 12 deletions
This file was deleted.

lib/zendesk_api/helpers.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module ZendeskAPI
2+
module Helpers
3+
# From https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/modulize.rb
4+
def self.modulize_string(string)
5+
#gsub('__','/'). # why was this ever here?
6+
string.gsub(/__(.?)/){ "::#{$1.upcase}" }.
7+
gsub(/\/(.?)/){ "::#{$1.upcase}" }.
8+
gsub(/(?:_+|-+)([a-z])/){ $1.upcase }.
9+
gsub(/(\A|\s)([a-z])/){ $1 + $2.upcase }
10+
end
11+
12+
# From https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
13+
def self.snakecase_string(string)
14+
#gsub(/::/, '/').
15+
string.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
16+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
17+
tr('-', '_').
18+
gsub(/\s/, '_').
19+
gsub(/__+/, '_').
20+
downcase
21+
end
22+
end
23+
end

lib/zendesk_api/resource.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'zendesk_api/helpers'
12
require 'zendesk_api/trackie'
23
require 'zendesk_api/actions'
34
require 'zendesk_api/association'
@@ -12,12 +13,12 @@ class Data
1213
class << self
1314
# The singular resource name taken from the class name (e.g. ZendeskAPI::Ticket -> ticket)
1415
def singular_resource_name
15-
@singular_resource_name ||= to_s.split("::").last.snakecase
16+
@singular_resource_name ||= ZendeskAPI::Helpers.snakecase_string(to_s.split("::").last)
1617
end
1718

1819
# The resource name taken from the class name (e.g. ZendeskAPI::Ticket -> tickets)
1920
def resource_name
20-
@resource_name ||= singular_resource_name.plural
21+
@resource_name ||= Inflection.plural(singular_resource_name)
2122
end
2223

2324
alias :model_key :resource_name

spec/string_spec.rb renamed to spec/inflection_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
describe String do
44
specify "the plural of forum if forums" do
5-
"forum".plural.should == "forums"
5+
Inflection.plural("forum").should == "forums"
66
end
77
end

spec/spec_helper.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
21
$:.unshift(File.join(File.dirname(__FILE__), "macros"))
32

43
ENV['TZ'] = 'CET' # something that is not local and not utc so we find all the bugs

0 commit comments

Comments
 (0)