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



83
84
85
# File 'lib/apple_core/action_controller/resource_naming.rb', line 83

def name_components
  @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_resource_class_nameObject



78
79
80
81
# File 'lib/apple_core/action_controller/resource_naming.rb', line 78

def plural_resource_class_name
  @plural_resource_class_name ||= singular_resource_class_name
                                    .pluralize
end

#plural_underscored_base_resource_nameObject



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

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

#resource_nameObject



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

def resource_name
  @resource_name ||= name_components['resource_name']
                       .singularize
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_resource_class_nameObject



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

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

#singular_underscored_base_resource_nameObject



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

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