Module: AppleCore::ActionController::ResourceNaming

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

Constant Summary collapse

CONTROLLER_RESOURCE_NAME_PATTERN =
/
  \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>
      (?<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



43
44
45
# File 'lib/apple_core/action_controller/resource_naming.rb', line 43

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

Instance Method Details

#name_componentsObject



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

def name_components
  name.match(CONTROLLER_RESOURCE_NAME_PATTERN).named_captures
end

#plural_resource_base_class_nameObject



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

def plural_resource_base_class_name
  @plural_resource_base_class_name ||= resource_name
                                         .pluralize
end

#plural_underscored_base_resource_nameObject



47
48
49
50
51
# File 'lib/apple_core/action_controller/resource_naming.rb', line 47

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

#resource_nameObject



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

def resource_name
  name[CONTROLLER_RESOURCE_NAME_PATTERN, 'resource_name']
end

#singular_resource_base_class_nameObject



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

def singular_resource_base_class_name
  @singular_resource_base_class_name ||= plural_resource_base_class_name
                                           .singularize
end

#singular_underscored_base_resource_nameObject



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

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