56 lines · 1.1 KB · Ruby
RawDownload
# frozen_string_literal: true require 'active_support/subscriber' module Docs  class Subscriber < ActiveSupport::Subscriber    cattr_accessor :namespace     def self.subscribe_to(notifier)      attach_to(namespace, new, notifier)    end     private     delegate :puts, :print, :tty?, to: :$stdout     def log(msg)      puts "\r" + justify(msg)    end     def format_url(url)      url.to_s.remove %r{\Ahttps?://}    end     def format_path(path)      path.to_s.remove File.join(File.expand_path('.'), '')    end     def justify(str)      return str unless terminal_width      str = str.dup       max_length = if tag = str.slice!(/ \[.+\]\z/)        terminal_width - tag.length      else        terminal_width      end       str.truncate(max_length).ljust(max_length) << tag.to_s    end     def terminal_width      return @terminal_width if defined? @terminal_width       @terminal_width = if !tty?        nil      elsif ENV['COLUMNS']        ENV['COLUMNS'].to_i      else        `stty size`.scan(/\d+/).last.to_i      end    rescue      @terminal_width = nil    end  endend