Class: SoftLayer::ObjectMaskToken

Inherits:
Object
  • Object
show all
Defined in:
lib/softlayer/ObjectMaskToken.rb

Overview

This class is an implementation detail of the Object Mask Parser It represents a single semantic token as parsed out of an Object Mask String

The class also generates error messages that the parser can use when it encounters an unexpected token

Constant Summary collapse

KnownTokenTypes =
[
  :invalid_token,
  :eos,             # end of string
  :identifier,
  :property_set_start,
  :property_set_separator,
  :property_set_end,
  :property_type_start,
  :property_type_end,
  :property_child_separator,
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token_type, token_value = nil) ⇒ ObjectMaskToken



32
33
34
35
# File 'lib/softlayer/ObjectMaskToken.rb', line 32

def initialize(token_type, token_value = nil)
  @type = token_type
  @value = token_value
end

Instance Attribute Details

#typeObject (readonly)

Returns the value of attribute type.



17
18
19
# File 'lib/softlayer/ObjectMaskToken.rb', line 17

def type
  @type
end

#valueObject (readonly)

Returns the value of attribute value.



18
19
20
# File 'lib/softlayer/ObjectMaskToken.rb', line 18

def value
  @value
end

Class Method Details

.error_for_unexpected_token(token) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/softlayer/ObjectMaskToken.rb', line 65

def self.error_for_unexpected_token(token)
  case token.type
   when :invalid_token
     "Unrecognized token '#{token.value}'"
   when :eos
     "Unexpected end of string"
   when :identifier
     "Unexpected identifier '#{token.value}'"
   when :property_set_start
     "Unexpected '['"
   when :property_set_separator
     "Unexpected ','"
   when :property_set_end
     "Unexpected ']'"
   when :property_type_start
     "Unexpected '('"
   when :property_type_end
     "Unexpected ')'"
   when :property_child_separator
     "Unexpected '.'"
   else
     "Unexpected value (invalid token type)"
 end
end

Instance Method Details

#end_of_string?Boolean



49
50
51
# File 'lib/softlayer/ObjectMaskToken.rb', line 49

def end_of_string?
  return @type == :eos
end

#eql?(other_token) ⇒ Boolean



41
42
43
# File 'lib/softlayer/ObjectMaskToken.rb', line 41

def eql?(other_token)
  @type.eql?(other_token.type) && @value.eql?(other_token.value)
end

#inspectObject



37
38
39
# File 'lib/softlayer/ObjectMaskToken.rb', line 37

def inspect
  "<#{@type.inspect}, #{@value.inspect}>"
end

#invalid?Boolean



45
46
47
# File 'lib/softlayer/ObjectMaskToken.rb', line 45

def invalid?
  return @type = :invalid_token
end

#mask_root_marker?Boolean



53
54
55
# File 'lib/softlayer/ObjectMaskToken.rb', line 53

def mask_root_marker?
  return @type == :identifier && (@value == "mask" || @value == "filterMask")
end

#valid_property_name?Boolean



57
58
59
# File 'lib/softlayer/ObjectMaskToken.rb', line 57

def valid_property_name?
  return @type == :identifier && @value.match(/\A[a-z][a-z0-9]*\z/i)
end

#valid_property_type?Boolean



61
62
63
# File 'lib/softlayer/ObjectMaskToken.rb', line 61

def valid_property_type?
  return @type == :identifier && @value.match(/\A[a-z][a-z0-9]*(_[a-z][a-z0-9]*)*\z/i)
end