Class: Habaki::Declaration

Inherits:
Node
  • Object
show all
Defined in:
lib/habaki/declaration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Node

#to_s

Constructor Details

#initialize(property = nil, important = false) ⇒ Declaration



13
14
15
16
17
# File 'lib/habaki/declaration.rb', line 13

def initialize(property = nil, important = false)
  @property = property
  @important = important
  @values = Values.new
end

Instance Attribute Details

#importantBoolean



8
9
10
# File 'lib/habaki/declaration.rb', line 8

def important
  @important
end

#positionSourcePosition



11
12
13
# File 'lib/habaki/declaration.rb', line 11

def position
  @position
end

#propertyString



4
5
6
# File 'lib/habaki/declaration.rb', line 4

def property
  @property
end

#valuesValues



6
7
8
# File 'lib/habaki/declaration.rb', line 6

def values
  @values
end

Instance Method Details

#checkBoolean

check validity



27
28
29
# File 'lib/habaki/declaration.rb', line 27

def check
  Habaki::FormalSyntax::Matcher.new(self).match?
end

#read_from_katana(decl) ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.



40
41
42
43
44
45
# File 'lib/habaki/declaration.rb', line 40

def read_from_katana(decl)
  @property = decl.property.downcase if decl.property
  @important = decl.important
  @values = Values.read_from_katana(decl.values)
  @position = SourcePosition.new(decl.position.line, decl.position.column)
end

#string(format = Formatter::Base.new) ⇒ String



33
34
35
# File 'lib/habaki/declaration.rb', line 33

def string(format = Formatter::Base.new)
  "#{format.declaration_prefix}#{@property}: #{@values.string(format)}#{important_string}"
end

#valueValue

shortcut to first value



21
22
23
# File 'lib/habaki/declaration.rb', line 21

def value
  @values.first
end