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

Returns a new instance of 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

Returns:

  • (Boolean)


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

def end_of_string?
  return @type == :eos
end

#eql?(other_token) ⇒ Boolean

Returns:

  • (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

Returns:

  • (Boolean)


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

def invalid?
  return @type = :invalid_token
end

#mask_root_marker?Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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