Class: Prosereflect::CodeBlock
- Inherits:
-
Node
- Object
- Lutaml::Model::Serializable
- Node
- Prosereflect::CodeBlock
show all
- Defined in:
- lib/prosereflect/code_block.rb
Overview
CodeBlock class represents a code block in ProseMirror.
Constant Summary
collapse
- PM_TYPE =
'code_block'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Node
#add_child, #find_all, #find_children, #find_first, #marks, #marks=, #parse_content, #process_attrs_data, #raw_marks, #to_yaml
Constructor Details
#initialize(attributes = {}) ⇒ CodeBlock
Returns a new instance of CodeBlock.
21
22
23
24
25
26
27
|
# File 'lib/prosereflect/code_block.rb', line 21
def initialize(attributes = {})
attributes[:attrs] ||= {
'content' => nil,
'language' => nil
}
super
end
|
Instance Attribute Details
#highlight_lines_str ⇒ Object
Returns the value of attribute highlight_lines_str.
63
64
65
|
# File 'lib/prosereflect/code_block.rb', line 63
def highlight_lines_str
@highlight_lines_str
end
|
Class Method Details
.create(attrs = nil) ⇒ Object
29
30
31
|
# File 'lib/prosereflect/code_block.rb', line 29
def self.create(attrs = nil)
new(attrs: attrs)
end
|
Instance Method Details
#add_line(text) ⇒ Object
104
105
106
107
|
# File 'lib/prosereflect/code_block.rb', line 104
def add_line(text)
text_node = Text.new(text: text)
add_child(text_node)
end
|
#add_lines(lines) ⇒ Object
Add multiple lines of code
110
111
112
|
# File 'lib/prosereflect/code_block.rb', line 110
def add_lines(lines)
lines.each { |line| add_line(line) }
end
|
#attributes ⇒ Object
Get code block attributes as a hash
95
96
97
98
99
100
101
|
# File 'lib/prosereflect/code_block.rb', line 95
def attributes
{
language: language,
line_numbers: line_numbers,
highlight_lines: highlight_lines
}.compact
end
|
#content ⇒ Object
59
60
61
|
# File 'lib/prosereflect/code_block.rb', line 59
def content
@content || attrs&.[]('content')
end
|
#content=(value) ⇒ Object
53
54
55
56
57
|
# File 'lib/prosereflect/code_block.rb', line 53
def content=(value)
@content = value
self.attrs ||= {}
attrs['content'] = value
end
|
#highlight_lines ⇒ Object
73
74
75
76
77
|
# File 'lib/prosereflect/code_block.rb', line 73
def highlight_lines
return [] unless @highlight_lines_str
@highlight_lines_str.split(',').map(&:to_i)
end
|
#highlight_lines=(lines) ⇒ Object
65
66
67
68
69
70
71
|
# File 'lib/prosereflect/code_block.rb', line 65
def highlight_lines=(lines)
@highlight_lines_str = if lines.is_a?(Array)
lines.join(',')
else
lines.to_s
end
end
|
#language ⇒ Object
39
40
41
|
# File 'lib/prosereflect/code_block.rb', line 39
def language
@language || attrs&.[]('language')
end
|
#language=(value) ⇒ Object
33
34
35
36
37
|
# File 'lib/prosereflect/code_block.rb', line 33
def language=(value)
@language = value
self.attrs ||= {}
attrs['language'] = value
end
|
#line_numbers ⇒ Object
49
50
51
|
# File 'lib/prosereflect/code_block.rb', line 49
def line_numbers
@line_numbers || attrs&.[]('line_numbers') || false
end
|
#line_numbers=(value) ⇒ Object
43
44
45
46
47
|
# File 'lib/prosereflect/code_block.rb', line 43
def line_numbers=(value)
@line_numbers = value
self.attrs ||= {}
attrs['line_numbers'] = value
end
|
#text_content ⇒ Object
79
80
81
|
# File 'lib/prosereflect/code_block.rb', line 79
def text_content
content.to_s
end
|
#to_h ⇒ Object
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/prosereflect/code_block.rb', line 83
def to_h
hash = super
hash['attrs'] = {
'content' => content,
'language' => language
}
hash['attrs']['line_numbers'] = line_numbers if line_numbers
hash.delete('content')
hash
end
|