Class: Prosereflect::CodeBlockWrapper

Inherits:
Node
  • Object
show all
Defined in:
lib/prosereflect/code_block_wrapper.rb

Overview

CodeBlockWrapper class represents a pre tag that wraps code blocks in ProseMirror.

Constant Summary collapse

PM_TYPE =
"code_block_wrapper"

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 = {}) ⇒ CodeBlockWrapper

Returns a new instance of CodeBlockWrapper.



20
21
22
23
24
25
26
# File 'lib/prosereflect/code_block_wrapper.rb', line 20

def initialize(attributes = {})
  attributes[:content] ||= []
  attributes[:attrs] = {
    "line_numbers" => false,
  }
  super
end

Class Method Details

.create(attrs = nil) ⇒ Object



28
29
30
# File 'lib/prosereflect/code_block_wrapper.rb', line 28

def self.create(attrs = nil)
  new(attrs: attrs)
end

Instance Method Details

#add_code_block(code = nil) ⇒ Object



42
43
44
45
46
47
# File 'lib/prosereflect/code_block_wrapper.rb', line 42

def add_code_block(code = nil)
  block = CodeBlock.new
  block.content = code if code
  add_child(block)
  block
end

#code_blocksObject



49
50
51
# File 'lib/prosereflect/code_block_wrapper.rb', line 49

def code_blocks
  content
end

#line_numbersObject



38
39
40
# File 'lib/prosereflect/code_block_wrapper.rb', line 38

def line_numbers
  @line_numbers || attrs&.[]("line_numbers") || false
end

#line_numbers=(value) ⇒ Object



32
33
34
35
36
# File 'lib/prosereflect/code_block_wrapper.rb', line 32

def line_numbers=(value)
  @line_numbers = value
  self.attrs ||= {}
  attrs["line_numbers"] = value
end

#text_contentObject



53
54
55
# File 'lib/prosereflect/code_block_wrapper.rb', line 53

def text_content
  code_blocks.map(&:text_content).join("\n")
end

#to_hObject



57
58
59
60
61
62
63
# File 'lib/prosereflect/code_block_wrapper.rb', line 57

def to_h
  hash = super
  hash["attrs"] = {
    "line_numbers" => line_numbers,
  }
  hash
end