Class: Elisp2any::Codeblock

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/elisp2any/codeblock.rb

Overview

:nodoc:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, expressions: []) ⇒ Codeblock

TODO: delete node TODO: Remove default empty array



34
35
36
37
# File 'lib/elisp2any/codeblock.rb', line 34

def initialize(node, expressions: []) # :nodoc:
  @node = node
  @expressions = expressions
end

Class Method Details

.scan(scanner) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/elisp2any/codeblock.rb', line 8

def self.scan(scanner)
  scanner = StringScanner.new(scanner) unless scanner.respond_to?(:skip)
  expressions = []
  while (exp = Expression.scan(scanner) ||
               scanner.scan(/[ \n]+/) ||
               Aside.scan(scanner))
    expressions << exp
  end
  expressions.empty? and return
  Blanklines.scan(scanner) # optional
  new(:TODO, expressions:)
end

Instance Method Details

#append(source, end_byte) ⇒ Object

:nodoc:



39
40
41
# File 'lib/elisp2any/codeblock.rb', line 39

def append(source, end_byte) # :nodoc:
  @node.append(source, end_byte)
end

#contentObject



43
44
45
46
47
48
49
# File 'lib/elisp2any/codeblock.rb', line 43

def content
  if @node.respond_to?(:content)
    @node.content
  else
    @expressions
  end
end

#sourceObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/elisp2any/codeblock.rb', line 21

def source
  @expressions.sum(+"") do |exp|
    case exp
    in String
      exp
    else
      exp.source
    end
  end
end