Sha256: e0922b0024e3386a1404be01fa21d4bd6eecd22779a9d5f5f7f44dbad38b9cb0

Contents?: true

Size: 955 Bytes

Versions: 3

Compression:

Stored size: 955 Bytes

Contents

# frozen_string_literal: true

# String helpers
class String
  def nil_if_missing
    if self =~ /missing value/
      return nil
    else
      self
    end
  end

  def split_hook
    elements = split(/\|\|/)
    {
      name: elements[0].nil_if_missing,
      url: elements[1].nil_if_missing,
      path: elements[2].nil_if_missing
    }
  end

  def split_hooks
    split(/\^\^/).map(&:split_hook)
  end

  def valid_hook
    if File.exist?(self)
      File.expand_path(self)
    elsif self =~ /^\[.*?\]\((.*?)\)$/
      mdlink = $1
      mdlink.valid_hook
    else
      self
    end
  end

  def valid_hook!
    replace valid_hook
  end

  # Capitalize only if no uppercase
  def cap
    if self !~ /[A-Z]/
      capitalize
    else
      self
    end
  end

  def cap!
    replace cap
  end

  def clip
    res = `/bin/echo -n #{Shellwords.escape(self)} | pbcopy`.strip
    raise 'Failed to copy to clipboard' unless res.empty?

    true
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hookapp-2.0.5 lib/hook/string.rb
hookapp-2.0.4 lib/hook/string.rb
hookapp-2.0.3 lib/hook/string.rb