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, #copy, #cut, #descendants, #eq?, #find_all, #find_children, #find_first, #marks, #marks=, #node, #node_size, #nodes_between, #parse_content, #process_attrs_data, #raw_marks, #resolve, #text?, #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
100
101
102
103
|
# File 'lib/prosereflect/code_block.rb', line 100
def add_line(text)
text_node = Text.new(text: text)
add_child(text_node)
end
|
#add_lines(lines) ⇒ Object
Add multiple lines of code
106
107
108
|
# File 'lib/prosereflect/code_block.rb', line 106
def add_lines(lines)
lines.each { |line| add_line(line) }
end
|
#attributes ⇒ Object
Get code block attributes as a hash
91
92
93
94
95
96
97
|
# File 'lib/prosereflect/code_block.rb', line 91
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
|
# File 'lib/prosereflect/code_block.rb', line 83
def to_h
hash = super
hash["attrs"] = { "language" => language }
hash["attrs"]["line_numbers"] = line_numbers if line_numbers
hash
end
|