Module: StewEucen::Acts::IntactCase::Array

Defined in:
lib/intact_case/modules.rb

Overview

Methods to include into Array class.

Examples:

Include into String class.

Array.send :include, StewEucen::Acts::IntactCase::Array

Author:

  • StewEucen

Since:

  • Release 1.0.0

Instance Method Summary collapse

Instance Method Details

#compound(delimiter = '_') ⇒ string

Concatenate tokens (camelCase/StudlyCaps/snake_case).

Examples:

tokens from snake_case

['camel', 'Case'].compound           #=> 'camelCase'
['Studly', 'Caps'].compound          #=> 'StudlyCaps'
['XML', 'HTML', 'Request'].compound  #=> 'XML_HTMLRequest'
['get', 'utc_', 'day'].compound      #=> 'get_utc__day'
['', 'webkit', 'flex'].compound('-') #=> '-webkit-flex'

Parameters:

  • delimiter (string) (defaults to: '_')

    Delimiter between acronym.

Returns:

  • (string)

    camelCase/StudlyCaps/snake_case.

Author:

  • StewEucen

Since:

  • Release 1.0.0



255
256
257
258
259
260
261
262
263
# File 'lib/intact_case/modules.rb', line 255

def compound(delimiter = '_')
  compounded = self.join(delimiter)
  # When snake_case.
  return compounded if /[A-Z]/ !~ compounded

  d = Regexp.escape(delimiter)
  p = /(?<=.[a-z])#{d}|(?<!#{d})#{d}(?=[A-Z][a-z])/
  compounded.gsub(p, '')
end