Module: AppleCore::ActionController::ResourceNaming

Defined in:
lib/apple_core/action_controller/resource_naming.rb

Constant Summary collapse

CONTROLLER_RESOURCE_NAME_PATTERN =

rubocop:disable Lint/MixedRegexpCaptureTypes

/
  \A                                        # Beginning of String
    (?:
      (?<modules>                           #   Full Modules
        (?:                                 #     Match Root Module (Optional)
          (?<root_module>
            [^:]+                           #         The Module Name
            (?=::)                          #         Which Must Be Followed By '::'
          )
          (?:::)?                           #       Up Through the '::' But Don't
                                            #       Capture If It's The Sole Module
        )?
        (                                   #   There Can Be A Version
          V                                 #     A Literal V
          (?<version>
            \d+                             #       The Version Number
          )
          (?:::)?                           #     Up Through the '::' But Don't
                                            #     Capture If It's The Sole Module
        )?
        (?<submodules>                      #   Match Submodule List (Optional)
          (                                 #     There May Be Zero or More of These
            [^:]+                           #       The Module Name
            ::                              #       Up Through the '::'
          )*?
          (?<last_submodule>                #     The Final Submodule (Optional)
            [^:]+                           #       The Module Name
            (?=::)                          #       Which Must Be Followed By '::'
          )?
        )?
      )
      ::                                    #   Required Final Separator
    )?
    (?<controller_name>
      (?<base_resource_name>\w+?)           #     Base Resource Name
      (?:Index|Indicies)?                   #     Optional Index Suffix
    )
    Controller                              #   Literal 'Controller'
  \z                                        # End of String
/x

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

rubocop:enable Lint/MixedRegexpCaptureTypes



53
54
55
# File 'lib/apple_core/action_controller/resource_naming.rb', line 53

def self.included(base)
  base.extend(self)
end

Instance Method Details

#base_resource_nameObject



97
98
99
100
# File 'lib/apple_core/action_controller/resource_naming.rb', line 97

def base_resource_name
  @base_resource_name ||= name_components['base_resource_name']
                            .singularize
end

#name_componentsObject



93
94
95
# File 'lib/apple_core/action_controller/resource_naming.rb', line 93

def name_components
  @name_components ||= name.match(CONTROLLER_RESOURCE_NAME_PATTERN).named_captures
end

#plural_resource_base_class_nameObject



74
75
76
77
# File 'lib/apple_core/action_controller/resource_naming.rb', line 74

def plural_resource_base_class_name
  @plural_resource_base_class_name ||= base_resource_name
                                         .pluralize
end

#plural_resource_class_nameObject



88
89
90
91
# File 'lib/apple_core/action_controller/resource_naming.rb', line 88

def plural_resource_class_name
  @plural_resource_class_name ||= singular_resource_class_name
                                    .pluralize
end

#plural_underscored_base_resource_nameObject



63
64
65
66
67
# File 'lib/apple_core/action_controller/resource_naming.rb', line 63

def plural_underscored_base_resource_name
  @plural_underscored_base_resource_name ||= plural_resource_base_class_name
                                               .underscore
                                               .downcase
end

#singular_resource_base_class_nameObject



69
70
71
72
# File 'lib/apple_core/action_controller/resource_naming.rb', line 69

def singular_resource_base_class_name
  @singular_resource_base_class_name ||= plural_resource_base_class_name
                                           .singularize
end

#singular_resource_class_nameObject



79
80
81
82
83
84
85
86
# File 'lib/apple_core/action_controller/resource_naming.rb', line 79

def singular_resource_class_name
  @singular_resource_class_name ||= [
                                      name_components['modules'],
                                      base_resource_name,
                                    ]
                                      .compact
                                      .join('::')
end

#singular_underscored_base_resource_nameObject



57
58
59
60
61
# File 'lib/apple_core/action_controller/resource_naming.rb', line 57

def singular_underscored_base_resource_name
  @singular_underscored_base_resource_name ||= singular_resource_base_class_name
                                                 .underscore
                                                 .downcase
end