Class: Bade::Node

Inherits:
Object show all
Defined in:
lib/bade/node.rb

Direct Known Subclasses

DoctypeNode, KeyValueNode, MixinCommonNode, TagNode

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, parent = nil) ⇒ Node

Returns a new instance of Node.

Parameters:

  • type (Symbol)
  • parent (Node) (defaults to: nil)


42
43
44
45
46
47
48
49
# File 'lib/bade/node.rb', line 42

def initialize(type, parent = nil)
  @type = type
  @childrens = []

  if parent
    parent << self
  end
end

Instance Attribute Details

#childrensArray<Node>

Returns:



33
34
35
# File 'lib/bade/node.rb', line 33

def childrens
  @childrens
end

#dataString

Returns:



24
25
26
# File 'lib/bade/node.rb', line 24

def data
  @data
end

#escapedTrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


37
38
39
# File 'lib/bade/node.rb', line 37

def escaped
  @escaped
end

#linenoInt

Returns line number.

Returns:

  • (Int)

    line number



20
21
22
# File 'lib/bade/node.rb', line 20

def lineno
  @lineno
end

#parentNode

Returns:



29
30
31
# File 'lib/bade/node.rb', line 29

def parent
  @parent
end

#typeSymbol (readonly)

Returns:

  • (Symbol)


15
16
17
# File 'lib/bade/node.rb', line 15

def type
  @type
end

Class Method Details

.create(type, parent) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/bade/node.rb', line 81

def self.create(type, parent)
  klass = registered_types[type]

  if klass.nil?
    raise Parser::ParserInternalError, "undefined node type #{type.inspect}"
  end

  klass.new(type, parent)
end

.register_type(type, klass = self) ⇒ Object

Parameters:

  • type (Symbol)
  • klass (Class) (defaults to: self)

    registering class

Raises:

  • (StandardError)


72
73
74
75
76
# File 'lib/bade/node.rb', line 72

def self.register_type(type, klass = self)
  raise StandardError, "Class #{klass} should be subclass of #{self}" unless klass <= Node

  registered_types[type] = klass
end

.registered_typesHash<Symbol, Class>

Returns:

  • (Hash<Symbol, Class>)


65
66
67
# File 'lib/bade/node.rb', line 65

def self.registered_types
  @@registered_types ||= {}
end

Instance Method Details

#<<(node) ⇒ Object

Parameters:



53
54
55
56
57
58
# File 'lib/bade/node.rb', line 53

def << (node)
  node.parent = self
  @childrens << node

  self
end