Skip to content

Commit

Permalink
drop redundant enum case prefixes in Swift
Browse files Browse the repository at this point in the history
  • Loading branch information
DivineDominion committed Dec 27, 2017
1 parent 7b75b01 commit d0229d7
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions swift/cocoaconv.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,12 @@ def indented_case_descriptions(indent)

def self.description_for(type_name, enum_case)
case_name = case_only(enum_case)
swift_case_name = case_name.camelize(lowercase_first: true)

# Drop redundant enum base prefixes:
# ".formatLatex" => ".latex"
# ".extCritic" => ".critic"
swift_case_name = case_name.camelize(drop_prefix: case_name.start_with?("EXT_", "FORMAT_"),
lowercase_first: true)
%Q{case .#{swift_case_name}: return "#{type_name}.#{swift_case_name}"}
end

Expand All @@ -79,9 +84,10 @@ def self.case_only(line)
end

class String
def camelize(lowercase_first: false)
def camelize(drop_prefix: false, lowercase_first: false)
self
.split('_')
.drop(drop_prefix ? 1 : 0)
.map.with_index { |part, i|
if lowercase_first && i == 0
part.downcase
Expand Down Expand Up @@ -129,13 +135,8 @@ def self.case(type_name, line)
# Drop redundant enum base prefixes:
# "MMD6OutputFormatFormatLatex" => "MMD6OutputFormatLatex"
# "MMD6ParserExtensionExtCritic" => "MMD6ParserExtensionCritic"
camelized_case_name = if casename.start_with?("EXT_")
casename[4..-1].camelize
elsif casename.start_with?("FORMAT_")
casename[7..-1].camelize
else
casename.camelize
end
drop_prefix = casename.start_with?("EXT_", "FORMAT_")
camelized_case_name = casename.camelize(drop_prefix: drop_prefix)
return %Q{#{indent}#{type_name}#{camelized_case_name} = #{casename},}
end

Expand Down

0 comments on commit d0229d7

Please sign in to comment.