class StringDirection::DominantStrategy

Strategy to decide direction between ltr or rtl in function of which is the main type

Public Instance Methods

run(string) click to toggle source

Get the number of ltr and rtl characters in the supplied string and infer direction from the most common type. For this strategy the direction can be ltr or rtl, but never bidi. In case of draw it returns nil.

params [String] The string to inspect @return [String, nil]

# File lib/string-direction/strategies/dominant_strategy.rb, line 10
def run(string)
  string = string.to_s
  ltr_count = chars_count(string, ltr_regex)
  rtl_count = chars_count(string, rtl_regex)
  diff = ltr_count - rtl_count
  return ltr if diff > 0
  return rtl if diff < 0
  nil
end

Private Instance Methods

chars_count(string, regex) click to toggle source
# File lib/string-direction/strategies/dominant_strategy.rb, line 22
def chars_count(string, regex)
  count = 0
  string.scan(regex) { count += 1 }
  count
end