Class: Singer::NameTransformation

Inherits:
Object
  • Object
show all
Defined in:
lib/singer/name_transformation.rb

Overview

transform between snakecase and camelcase, with some special rules

Constant Summary collapse

DASHES_OPTIONS =
%w[modularize delete preserve].freeze

Class Method Summary collapse

Class Method Details

.encase_name(name) ⇒ Object



6
7
8
9
10
11
# File 'lib/singer/name_transformation.rb', line 6

def self.encase_name(name)
	Singer.configuration.project_name_original = name
	Singer.configuration.project_name_snakecase = name.gsub(/(\w)([A-Z])/){ "#{$1}_#{$2}" }.gsub(/_+/, '_').downcase
	camelcase = Singer.configuration.project_name_snakecase.split('_').map(&:capitalize).join
	Singer.configuration.project_name_camelcase = treat_dashes_in_name(camelcase)
end

.treat_dashes_in_name(camelcase) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/singer/name_transformation.rb', line 13

def self.treat_dashes_in_name(camelcase)
	case Singer.configuration.dashes
	when 'modularize'
		camelcase.gsub(/([[:alnum:]])-+([[:alnum:]])/){ "#{$1}::#{$2.upcase}" }
	when 'delete'
		camelcase.delete('-')
	when 'preserve'
		camelcase
	else
		raise ParameterValueUnsupported, "Unsupported value #{Singer.configuration.dashes.inspect} for --dashes option"
	end
end