Sha256: 4d8a239414e1a45079b9fed58cda1e776f6dfa398969d3d30da9d93da012e4e0

Contents?: true

Size: 956 Bytes

Versions: 14

Compression:

Stored size: 956 Bytes

Contents

# frozen_string_literal: true

module Doing
  ##
  ## This class describes an item note.
  ##
  class Note < Array
    def initialize(note = [])
      super()

      add(note) if note
    end

    def add(note, replace: false)
      clear if replace
      if note.is_a?(String)
        append_string(note)
      elsif note.is_a?(Array)
        append(note)
      end
    end

    def append(lines)
      concat(lines)
      replace compress
    end

    def append_string(input)
      concat(input.split(/\n/).map(&:strip))
      replace compress
    end

    def compress!
      replace compress
    end

    def compress
      delete_if { |l| l =~ /^\s*$/ || l =~ /^#/ }
    end

    def strip_lines!
      replace strip_lines
    end

    def strip_lines
      map(&:strip)
    end

    def to_s
      compress.strip_lines.join("\n")
    end

    def equal?(other)
      return false unless other.is_a?(Note)

      to_s == other.to_s
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
doing-2.0.25 lib/doing/note.rb
doing-2.0.24 lib/doing/note.rb
doing-2.0.23 lib/doing/note.rb
doing-2.0.22 lib/doing/note.rb
doing-2.0.21 lib/doing/note.rb
doing-2.0.20 lib/doing/note.rb
doing-2.0.19 lib/doing/note.rb
doing-2.0.18 lib/doing/note.rb
doing-2.0.17 lib/doing/note.rb
doing-2.0.16 lib/doing/note.rb
doing-2.0.15 lib/doing/note.rb
doing-2.0.13 lib/doing/note.rb
doing-2.0.11 lib/doing/note.rb
doing-2.0.10 lib/doing/note.rb