Class: DNote::Note

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

Overview

The Note class encapsulates a single note made in a source file.

Each note instance holds a reference, notes, to the set of notes being generated for a given session. This allows the note to access general options applicable to all notes.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(notes, file, label, line, text, mark) ⇒ Note

Initialize new Note instance.



32
33
34
35
36
37
38
39
40
# File 'lib/dnote/note.rb', line 32

def initialize(notes, file, label, line, text, mark)
  @notes = notes
  @file = file
  @label = label
  @line = line
  @text = text.rstrip
  @mark = mark
  @capture = []
end

Instance Attribute Details

#captureObject (readonly)

Contextual lines of code.



29
30
31
# File 'lib/dnote/note.rb', line 29

def capture
  @capture
end

#fileObject (readonly)

The file in which the note is made.



14
15
16
# File 'lib/dnote/note.rb', line 14

def file
  @file
end

#labelObject (readonly)

The type of note.



17
18
19
# File 'lib/dnote/note.rb', line 17

def label
  @label
end

#lineObject (readonly)

The line number of the note.



20
21
22
# File 'lib/dnote/note.rb', line 20

def line
  @line
end

#markObject (readonly)

Remark marker used in parsing the note.



26
27
28
# File 'lib/dnote/note.rb', line 26

def mark
  @mark
end

#notesObject (readonly)

Set of notes to which this note belongs.



11
12
13
# File 'lib/dnote/note.rb', line 11

def notes
  @notes
end

#textObject (readonly)

The verbatim text of the note.



23
24
25
# File 'lib/dnote/note.rb', line 23

def text
  @text
end

Instance Method Details

#<=>(other) ⇒ Object

Sort by file name and line number.



58
59
60
61
62
63
# File 'lib/dnote/note.rb', line 58

def <=>(other)
  s = file <=> other.file
  return s unless s == 0

  line <=> other.line
end

#codeObject



101
102
103
# File 'lib/dnote/note.rb', line 101

def code
  unindent(capture).join
end

#code?Boolean

Is there code to show?

Returns:

  • (Boolean)


106
107
108
# File 'lib/dnote/note.rb', line 106

def code?
  !capture.empty?
end

#textlineObject

Remove newlines from note text.



53
54
55
# File 'lib/dnote/note.rb', line 53

def textline
  text.tr("\n", " ")
end

#to_hObject

Convert to Hash. – TODO: Add url? TODO: Add code? Problem is that xml needs code in CDATA. ++



70
71
72
# File 'lib/dnote/note.rb', line 70

def to_h
  {"label" => label, "text" => textline, "file" => file, "line" => line}
end

#to_h_rawObject

Convert to Hash, leaving the note text verbatim.



75
76
77
# File 'lib/dnote/note.rb', line 75

def to_h_raw
  {"label" => label, "text" => text, "file" => file, "line" => line, "code" => code}
end

#to_json(*args) ⇒ Object

Convert to JSON.



80
81
82
# File 'lib/dnote/note.rb', line 80

def to_json(*args)
  to_h_raw.to_json(*args)
end

#to_sObject

Convert to string representation.



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

def to_s
  "#{label}: #{text}"
end

#to_strObject

Convert to string representation.



48
49
50
# File 'lib/dnote/note.rb', line 48

def to_str
  "#{label}: #{text}"
end

#to_yaml(*args) ⇒ Object

Convert to YAML.



85
86
87
# File 'lib/dnote/note.rb', line 85

def to_yaml(*args)
  to_h_raw.to_yaml(*args)
end

#urlObject

Return line URL based on URL template. If no template was set, then returns the file.

FIXME: Move out of Note so we can drop the reference to notes



93
94
95
96
97
98
99
# File 'lib/dnote/note.rb', line 93

def url
  if notes.url
    format(notes.url, file, line)
  else
    file
  end
end