Class: DNote::Note
- Inherits:
-
Object
- Object
- DNote::Note
- 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
-
#capture ⇒ Object
readonly
Contextual lines of code.
-
#file ⇒ Object
readonly
The file in which the note is made.
-
#label ⇒ Object
readonly
The type of note.
-
#line ⇒ Object
readonly
The line number of the note.
-
#mark ⇒ Object
readonly
Remark marker used in parsing the note.
-
#notes ⇒ Object
readonly
Set of notes to which this note belongs.
-
#text ⇒ Object
readonly
The verbatim text of the note.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Sort by file name and line number.
- #code ⇒ Object
-
#code? ⇒ Boolean
Is there code to show?.
-
#initialize(notes, file, label, line, text, mark) ⇒ Note
constructor
Initialize new Note instance.
-
#textline ⇒ Object
Remove newlines from note text.
-
#to_h ⇒ Object
Convert to Hash.
-
#to_h_raw ⇒ Object
Convert to Hash, leaving the note text verbatim.
-
#to_json(*args) ⇒ Object
Convert to JSON.
-
#to_s ⇒ Object
Convert to string representation.
-
#to_str ⇒ Object
Convert to string representation.
-
#to_yaml(*args) ⇒ Object
Convert to YAML.
-
#url ⇒ Object
Return line URL based on URL template.
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
#capture ⇒ Object (readonly)
Contextual lines of code.
29 30 31 |
# File 'lib/dnote/note.rb', line 29 def capture @capture end |
#file ⇒ Object (readonly)
The file in which the note is made.
14 15 16 |
# File 'lib/dnote/note.rb', line 14 def file @file end |
#label ⇒ Object (readonly)
The type of note.
17 18 19 |
# File 'lib/dnote/note.rb', line 17 def label @label end |
#line ⇒ Object (readonly)
The line number of the note.
20 21 22 |
# File 'lib/dnote/note.rb', line 20 def line @line end |
#mark ⇒ Object (readonly)
Remark marker used in parsing the note.
26 27 28 |
# File 'lib/dnote/note.rb', line 26 def mark @mark end |
#notes ⇒ Object (readonly)
Set of notes to which this note belongs.
11 12 13 |
# File 'lib/dnote/note.rb', line 11 def notes @notes end |
#text ⇒ Object (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 |
#code ⇒ Object
101 102 103 |
# File 'lib/dnote/note.rb', line 101 def code unindent(capture).join end |
#code? ⇒ Boolean
Is there code to show?
106 107 108 |
# File 'lib/dnote/note.rb', line 106 def code? !capture.empty? end |
#textline ⇒ Object
Remove newlines from note text.
53 54 55 |
# File 'lib/dnote/note.rb', line 53 def textline text.tr("\n", " ") end |
#to_h ⇒ Object
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_raw ⇒ Object
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_s ⇒ Object
Convert to string representation.
43 44 45 |
# File 'lib/dnote/note.rb', line 43 def to_s "#{label}: #{text}" end |
#to_str ⇒ Object
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 |
#url ⇒ Object
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 |