Module: Literal::Modifiers::Abstract

Included in:
Attributable::Formatter::AbstractNodeMethods
Defined in:
lib/literal/modifiers/abstract.rb

Instance Method Summary collapse

Instance Method Details

#abstract(method_name) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/literal/modifiers/abstract.rb', line 12

def abstract(method_name)
	@abstract = true

	abstract_methods << Literal::Method.new(method_name, self)

	method_name
end

#abstract!Object



4
5
6
# File 'lib/literal/modifiers/abstract.rb', line 4

def abstract!
	@abstract = true
end

#abstract?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/literal/modifiers/abstract.rb', line 8

def abstract?
	!!@abstract
end

#abstract_methodsObject



27
28
29
30
31
32
33
34
35
# File 'lib/literal/modifiers/abstract.rb', line 27

def abstract_methods
	return @abstract_methods if defined?(@abstract_methods)

	if is_a?(Class) && superclass.is_a?(Literal::Modifiers::Abstract)
		@abstract_methods = superclass.abstract_methods.dup
	else
		@abstract_methods = Concurrent::Array.new
	end
end

#included(submodule) ⇒ Object



20
21
22
23
24
25
# File 'lib/literal/modifiers/abstract.rb', line 20

def included(submodule)
	submodule.extend(Literal::Modifiers::Abstract)
	submodule.abstract_methods.concat(abstract_methods)

	super
end