File tree Expand file tree Collapse file tree 3 files changed +42
-1
lines changed
Expand file tree Collapse file tree 3 files changed +42
-1
lines changed Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ module ActionPolicy
4+ module Ext
5+ # Add `classify` to Symbol
6+ module SymbolClassify
7+ refine Symbol do
8+ if "" . respond_to? ( :classify )
9+ def classify
10+ to_s . classify
11+ end
12+ else
13+ def classify
14+ word = to_s . capitalize
15+ word . gsub! ( /(?:_)([a-z\d ]*)/ ) { $1. capitalize }
16+ word
17+ end
18+ end
19+ end
20+ end
21+ end
22+ end
Original file line number Diff line number Diff line change @@ -12,6 +12,9 @@ module LookupChain
1212 using ActionPolicy ::Ext ::StringConstantize
1313 end
1414
15+ require "action_policy/ext/symbol_classify"
16+ using ActionPolicy ::Ext ::SymbolClassify
17+
1518 require "action_policy/ext/module_namespace"
1619 using ActionPolicy ::Ext ::ModuleNamespace
1720
@@ -111,7 +114,7 @@ def policy_class_name_for(record)
111114 SYMBOL_LOOKUP = -> ( record , namespace : nil , **) {
112115 next unless record . is_a? ( Symbol )
113116
114- policy_name = "#{ record . to_s . classify } Policy"
117+ policy_name = "#{ record . classify } Policy"
115118 if namespace . nil?
116119 policy_name . safe_constantize
117120 else
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require "test_helper"
4+
5+ require "action_policy/ext/symbol_classify"
6+ using ActionPolicy ::Ext ::SymbolClassify
7+
8+ class TestSymbolClassify < Minitest ::Test
9+ def test_simple_name
10+ assert_equal "Test" , :test . classify
11+ end
12+
13+ def test_underscored_name
14+ assert_equal "TeStO" , :te_st_o . classify
15+ end
16+ end
You can’t perform that action at this time.
0 commit comments