Module: Rutter::Naming

Defined in:
lib/rutter/naming.rb

Overview

Conveniences for inflecting and working with names in Rutter.

Class Method Summary collapse

Class Method Details

.classify(string) ⇒ String

Return a CamelCase version of the string.

Revised version of Hanami::Utils::String.classify implementation.

Examples:

string = "rutter_naming"
Rutter::Naming.classify(string) # => 'RutterNaming'

Parameters:

  • string (String)

    String to be transformed.

Returns:

  • (String)

    The transformed string



44
45
46
47
48
49
# File 'lib/rutter/naming.rb', line 44

def classify(string)
  words = underscore(string).split(%r{_|::|\/|\-}).map!(&:capitalize)
  delimiters = underscore(string).scan(%r{_|::|\/|\-})
  delimiters.map! { |delimiter| delimiter == "_" ? "" : "::" }
  words.zip(delimiters).join
end

.cleanpath(path) ⇒ String

Normalize the given path.

Parameters:

  • path (String)

    Path to be normalized.

Returns:

  • (String)

    Normalized path.



73
74
75
# File 'lib/rutter/naming.rb', line 73

def cleanpath(path)
  Pathname.new("/#{path}").cleanpath.to_s
end

.join(part) ⇒ String .join(part) ⇒ String

Join the given arguments with the separator.

Overloads:

  • .join(part) ⇒ String

    Parameters:

    • part (String, nil)

      First part to join.

  • .join(part) ⇒ String

    Parameters:

    • ... (String, nil)

      Another part to join.

Parameters:

  • sep (String) (defaults to: "/")

    Part separator.

Returns:

  • (String)


90
91
92
93
# File 'lib/rutter/naming.rb', line 90

def join(*part, sep: "/")
  part.reject { |s| s.nil? || s == "" }
      .join(sep)
end

.route_name(string) ⇒ Symbol

Normalize the given string/symbol to a valid route name.

Parameters:

  • string (String, Symbol)

    Name to be normalized.

Returns:

  • (Symbol)

    Normalized route name.



58
59
60
61
62
63
64
# File 'lib/rutter/naming.rb', line 58

def route_name(string)
  string = underscore(string)
  string.tr!("/", "_")
  string.gsub!(/[_]{2,}/, "_")
  string.gsub!(/\A_|_\z/, "")
  string.to_sym
end

.underscore(string) ⇒ String

Return a downcased and underscore separated version of the string.

Revised version of Hanami::Utils::String.underscore implementation.

Examples:

string = "RutterNaming"
Rutter::Naming.underscore(string) # => 'rutter_naming'

Parameters:

  • string (String)

    String to be transformed.

Returns:

  • (String)

    The transformed string.



21
22
23
24
25
26
27
28
29
# File 'lib/rutter/naming.rb', line 21

def underscore(string)
  string = +string.to_s
  string.gsub!("::", "/")
  string.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  string.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  string.gsub!(/[[:space:]]|\-/, '\1_\2')
  string.downcase!
  string
end