Class: Doing::Note

Inherits:
Array
  • Object
show all
Defined in:
lib/doing/note.rb

Overview

This class describes an item note.

Instance Method Summary collapse

Methods inherited from Array

#highlight_tags, #log_tags, #nested_hash, #tags_to_array, #time_string, #to_tags, #to_tags!

Constructor Details

#initialize(note = []) ⇒ Note

Initializes a new note

Parameters:

  • note (Array) (defaults to: [])

    Initial note, can be string or array



15
16
17
18
19
# File 'lib/doing/note.rb', line 15

def initialize(note = [])
  super()

  add(note) if note
end

Instance Method Details

#add(note, replace: false) ⇒ Object

Add note contents, optionally replacing existing note

Parameters:

  • note (Array)

    The note to add, can be String, Array, or Note

  • replace (Boolean) (defaults to: false)

    replace existing content



29
30
31
32
33
34
35
36
# File 'lib/doing/note.rb', line 29

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

#compressArray

Remove blank lines and comments (#)

Returns:

  • (Array)

    compressed array



43
44
45
# File 'lib/doing/note.rb', line 43

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

#compress!Object



47
48
49
# File 'lib/doing/note.rb', line 47

def compress!
  replace compress
end

#equal?(other) ⇒ Boolean

Test if a note is equal (compare string representations)

Parameters:

  • other (Note)

    The other Note

Returns:

  • (Boolean)

    true if equal



83
84
85
86
87
# File 'lib/doing/note.rb', line 83

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

  to_s == other.to_s
end

#strip_linesArray

Remove leading/trailing whitespace for every line of note

Returns:

  • (Array)

    Stripped note



57
58
59
# File 'lib/doing/note.rb', line 57

def strip_lines
  map(&:strip)
end

#strip_lines!Object



61
62
63
# File 'lib/doing/note.rb', line 61

def strip_lines!
  replace strip_lines
end

#to_sObject

Note as multi-line string



67
68
69
# File 'lib/doing/note.rb', line 67

def to_s
  compress.strip_lines.map { |l| "\t\t#{l}" }.join("\n")
end