Module: NoraMark::NodeUtil

Included in:
Html::TagWriter, Transformer
Defined in:
lib/nora_mark/node_util.rb

Instance Method Summary collapse

Instance Method Details

#_node(klass, name, children_ = nil, ids: [], children: nil, classes: [], params: [], n: {}, attrs: [], template: nil, class_if_empty: nil, line_no: nil, body_empty: nil, raw_text: nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/nora_mark/node_util.rb', line 3

def _node(klass, name, children_ = nil, ids: [], children: nil, classes: [], params: [], n: {}, attrs: [], template: nil, class_if_empty: nil, line_no: nil, body_empty: nil, raw_text: nil)
  children_arg = children || children_
  if !children_arg.nil?
    children_arg = children_arg.to_ary if children_arg.kind_of? NodeSet
    children_arg = [children_arg] if !children_arg.kind_of? Array
    children_arg = children_arg.map { |node| (node.is_a? String) ? Text.new(node, 0) : node }
  end
  if !template.nil?
    node = klass.new(name, template.ids, template.classes, template.params, template.n, template.children, template.line_no)
    node.ids = (node.ids || [] + ids) if ids.size > 0
    node.classes = (node.classes || [])
    node.classes = node.classes + classes
    if node.classes.size == 0 && class_if_empty
      node.classes << class_if_empty
    end
    node.params = params if params.size > 0
    node.n = n if n.size > 0
    node.children = children_arg if !children_arg.nil?
    node.attrs = template.attrs || attrs || {}
  else
    node = klass.new(name, ids, classes || [], params, n, children_arg, 0)
    node.attrs = attrs || {}
    if node.classes.size == 0 && class_if_empty
      node.classes << class_if_empty
    end
  end
  node.line_no = line_no
  node.body_empty = body_empty
  node.raw_text = raw_text
  node.reparent
  node
end

#block(*args, **kwargs) ⇒ Object



36
37
38
# File 'lib/nora_mark/node_util.rb', line 36

def block(*args, **kwargs)
  _node(Block, *args, **kwargs)
end

#inline(*args, **kwargs) ⇒ Object



40
41
42
# File 'lib/nora_mark/node_util.rb', line 40

def inline(*args, **kwargs)
  _node(Inline, *args, **kwargs)
end

#text(value, raw_text: nil) ⇒ Object



44
45
46
47
48
# File 'lib/nora_mark/node_util.rb', line 44

def text value, raw_text: nil
  text = Text.new(value, 0)
  text.raw_text = raw_text
  text
end