Class: String

Inherits:
Object
  • Object
show all
Defined in:
lib/admiral-tools-figma/helper/system/system.rb,
lib/admiral-tools-figma/helper/figma/helpers/string_format.rb

Constant Summary collapse

FORMAT_STYLE_CAMELCASE =
'camelcase'
FORMAT_STYLE_SNAKECASE =
'snakecase'
FORMAT_STYLE_KEBABCASE =
'kebabcase'

Instance Method Summary collapse

Instance Method Details

#camelcase(*separators) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 31

def camelcase(*separators)
  case separators.first
  when Symbol, TrueClass, FalseClass, NilClass
    first_letter = separators.shift
  end

  separators = ['_', '\s'] if separators.empty?

  str = dup

  separators.each do |s|
    str = str.gsub(/(?:#{s}+)([a-zA-Z0-9])/) { Regexp.last_match(1).upcase }
  end

  case first_letter
  when :upper, true
    str = str.gsub(/(\A|\s)([a-z])/) { Regexp.last_match(1) + Regexp.last_match(2).upcase }
  when :lower, false
    str = str.gsub(/(\A|\s)([A-Z])/) { Regexp.last_match(1) + Regexp.last_match(2).downcase }
  end

  str
end

#default_formatObject



55
56
57
58
59
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 55

def default_format
  available_symbols_regex = /[^a-zA-Z0-9_]/
  separator_symbols = [' ', '_', '-', '/']
  camelcase(separator_symbols).gsub(available_symbols_regex, '').lowercase_first_letter
end

#extract_by_regex(regex) ⇒ Object



14
15
16
# File 'lib/admiral-tools-figma/helper/system/system.rb', line 14

def extract_by_regex(regex)
  (regex.match(self) || [])[0]
end

#kebabcaseObject



27
28
29
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 27

def kebabcase
  snakecase.gsub(/_/, '-')
end

#lowercase_first_letterObject



12
13
14
15
16
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 12

def lowercase_first_letter
  return self unless length.positive?

  self[0, 1].downcase + self[1..-1]
end

#snakecaseObject



18
19
20
21
22
23
24
25
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 18

def snakecase
  gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
    .gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .tr('-', '_')
    .gsub(/\s/, '_')
    .gsub(/__+/, '_')
    .downcase
end

#uppercase_first_letterObject



8
9
10
# File 'lib/admiral-tools-figma/helper/figma/helpers/string_format.rb', line 8

def uppercase_first_letter
  capitalize
end