Module: TurkishSupportHelpers

Included in:
TurkishSupport
Defined in:
lib/turkish_support/helpers.rb,
lib/turkish_support/constants.rb

Constant Summary collapse

ALPHA =
{
  lower:    'abcçdefgğhıijklmnoöpqrsştuüvwxyz',
  upper:    'ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ',
  tr_lower: 'çğıiöşü',
  tr_upper: 'ÇĞIİÖŞÜ'
}.freeze
ALPHABET =
ALPHA[:upper] + ALPHA[:lower]
META_CHARS =
{
  '\w' => '[\p{Latin}\d_]',
  '\W' => '[^\p{Latin}\d_]'
}.freeze
RE_RE_METHS =

Regexp required methods

i(match scan).freeze
RE_OP_METHS =

Regexp optional methods

i(
  []
  []=
  =~
  index
  rindex
  partition
  rpartition
  slice
  slice!
  split
  sub
  sub!
  gsub
  gsub!
).freeze
i(
  downcase
  downcase!
  upcase
  upcase!
  capitalize
  capitalize!
).freeze
RANGE_REGEXP =
/\[[^\]]*?([#{ALPHABET}]-[#{ALPHABET}])[^\[]*?\]/
CONJUCTIONS =
%w(ve ile veya).freeze
SPECIAL_CHARS =
%q{("'}.freeze

Instance Method Summary collapse

Instance Method Details

#conjuction?(string) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/turkish_support/helpers.rb', line 47

def conjuction?(string)
  CONJUCTIONS.include? string
end

#prepare_for(meth, string) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/turkish_support/helpers.rb', line 26

def prepare_for(meth, string)
  valid_meths = i(upcase downcase capitalize)
  unless valid_meths.include?(meth) && string.is_a?(String)
    raise ArgumentError, 'Invalid arguments for method `prepare_for`!'
  end

  method("prepare_for_#{meth}").call(string)
end

#start_with_a_special_char?(string) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/turkish_support/helpers.rb', line 51

def start_with_a_special_char?(string)
  string =~ /^[#{SPECIAL_CHARS}]/
end

#tr_char?(ch) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/turkish_support/helpers.rb', line 35

def tr_char?(ch)
  tr_lower?(ch) || tr_upper?(ch)
end

#tr_lower?(ch) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/turkish_support/helpers.rb', line 39

def tr_lower?(ch)
  ALPHA[:tr_lower].include? ch
end

#tr_upper?(ch) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/turkish_support/helpers.rb', line 43

def tr_upper?(ch)
  ALPHA[:tr_upper].include? ch
end

#translate_range(range_as_string, casefold = false) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/turkish_support/helpers.rb', line 17

def translate_range(range_as_string, casefold = false)
  return '' unless range_as_string

  range_as_string.gsub!(/\[\]/, '')
  first, last = range_as_string.split('-')

  expand_range(first, last, casefold)
end

#translate_regexp(pattern) ⇒ Object

rubocop:disable Metrics/AbcSize



2
3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/turkish_support/helpers.rb', line 2

def translate_regexp(pattern) # rubocop:disable Metrics/AbcSize
  Regexp.new(pattern) unless pattern.is_a? Regexp
  re = pattern.source
  options = pattern.options

  while re.match(RANGE_REGEXP)
    re.scan(RANGE_REGEXP).flatten.compact.each do |matching|
      re.gsub! matching, translate_range(matching, pattern.casefold?)
    end
  end

  META_CHARS.each { |k, v| re.gsub!(k, v) }
  Regexp.new(re.force_encoding('UTF-8'), Regexp::FIXEDENCODING | options)
end