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, #find_all, #find_children, #find_first, #marks, #marks=, #parse_content, #process_attrs_data, #raw_marks, #to_yaml

Constructor Details

#initialize(attributes = {}) ⇒ CodeBlockWrapper

Returns a new instance of CodeBlockWrapper.



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

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

Class Method Details

.create(attrs = nil) ⇒ Object



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

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

Instance Method Details

#add_code_block(code = nil) ⇒ Object



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

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

#code_blocksObject



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

def code_blocks
  content
end

#line_numbersObject



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

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

#line_numbers=(value) ⇒ Object



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

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

#text_contentObject



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

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

#to_hObject



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

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