Module: TruncateMiddle

Defined in:
lib/truncate_middle.rb,
lib/truncate_middle/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#truncate_middle(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/truncate_middle.rb', line 4

def truncate_middle(opts = {})
  defaults = {
    length: 80,
    separator: "..."
  }

  raise ArgumentError, "Options is not hash" unless opts.is_a?(Hash)

  opts.delete_if{ |k, v| v.nil? }.reversive_merge!(defaults)
  opts[:separator] = opts[:separator].to_s

  raise ArgumentError, "Length is not integer" unless opts[:length].is_a?(Integer)

  if opts[:length] <= opts[:separator].size
    raise ArgumentError, "Length option should be more than separator length"
  end

  return self if size <= opts[:length]
  return [self[0], opts[:separator]].join if opts[:length] == opts[:separator].size + 1

  opts[:length] -= opts[:separator].size
  left_corner  = opts[:length] / 2
  right_corner = size - (opts[:length] - left_corner)

  [self[0...left_corner], opts[:separator], self[right_corner..size]].join
end

#truncate_middle!(opts = {}) ⇒ Object



31
32
33
# File 'lib/truncate_middle.rb', line 31

def truncate_middle!(opts = {})
  replace truncate_middle(opts)
end