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
        )?
        (?<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



45
46
47
# File 'lib/apple_core/action_controller/resource_naming.rb', line 45

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

Instance Method Details

#base_resource_nameObject



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

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

#name_componentsObject



85
86
87
# File 'lib/apple_core/action_controller/resource_naming.rb', line 85

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

#plural_resource_base_class_nameObject



66
67
68
69
# File 'lib/apple_core/action_controller/resource_naming.rb', line 66

def plural_resource_base_class_name
  @plural_resource_base_class_name ||= base_resource_name
                                         .pluralize
end

#plural_resource_class_nameObject



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

def plural_resource_class_name
  @plural_resource_class_name ||= singular_resource_class_name
                                    .pluralize
end

#plural_underscored_base_resource_nameObject



55
56
57
58
59
# File 'lib/apple_core/action_controller/resource_naming.rb', line 55

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

#singular_resource_base_class_nameObject



61
62
63
64
# File 'lib/apple_core/action_controller/resource_naming.rb', line 61

def singular_resource_base_class_name
  @singular_resource_base_class_name ||= plural_resource_base_class_name
                                           .singularize
end

#singular_resource_class_nameObject



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

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

#singular_underscored_base_resource_nameObject



49
50
51
52
53
# File 'lib/apple_core/action_controller/resource_naming.rb', line 49

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