Class: RubyLexer::State

Inherits:
Object
  • Object
show all
Includes:
Values
Defined in:
lib/ruby_lexer.rb

Defined Under Namespace

Modules: Values

Constant Summary

Constants included from Values

Values::EXPR_ARG, Values::EXPR_ARG_ANY, Values::EXPR_BEG, Values::EXPR_BEG_ANY, Values::EXPR_CLASS, Values::EXPR_CMDARG, Values::EXPR_DOT, Values::EXPR_END, Values::EXPR_ENDARG, Values::EXPR_ENDFN, Values::EXPR_END_ANY, Values::EXPR_FITEM, Values::EXPR_FNAME, Values::EXPR_LAB, Values::EXPR_LABEL, Values::EXPR_LABELED, Values::EXPR_LIT, Values::EXPR_MID, Values::EXPR_NONE, Values::EXPR_NUM, Values::EXPR_PAD, Values::EXPR_PAR, Values::STR_DQUOTE, Values::STR_DSYM, Values::STR_DWORD, Values::STR_FUNC_BORING, Values::STR_FUNC_ESCAPE, Values::STR_FUNC_EXPAND, Values::STR_FUNC_ICNTNT, Values::STR_FUNC_INDENT, Values::STR_FUNC_LABEL, Values::STR_FUNC_LIST, Values::STR_FUNC_QWORDS, Values::STR_FUNC_REGEXP, Values::STR_FUNC_SYMBOL, Values::STR_FUNC_TERM, Values::STR_REGEXP, Values::STR_SQUOTE, Values::STR_SSYM, Values::STR_SWORD, Values::STR_XQUOTE

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(o, names) ⇒ State

TODO: take a shared hash of strings for inspect/to_s

Raises:

  • (ArgumentError)


1301
1302
1303
1304
1305
1306
# File 'lib/ruby_lexer.rb', line 1301

def initialize o, names
  raise ArgumentError, "bad state: %p" % [o] unless Integer === o # TODO: remove

  self.n = o
  self.names = names
end

Instance Attribute Details

#nObject

Returns the value of attribute n.



1297
1298
1299
# File 'lib/ruby_lexer.rb', line 1297

def n
  @n
end

#namesObject

Returns the value of attribute names.



1298
1299
1300
# File 'lib/ruby_lexer.rb', line 1298

def names
  @names
end

Instance Method Details

#==(o) ⇒ Object



1308
1309
1310
# File 'lib/ruby_lexer.rb', line 1308

def == o
  self.equal?(o) || (o.class == self.class && o.n == self.n)
end

#=~(v) ⇒ Object



1312
1313
1314
# File 'lib/ruby_lexer.rb', line 1312

def =~ v
  (self.n & v.n) != 0
end

#inspectObject Also known as: to_s



1322
1323
1324
1325
1326
1327
1328
1329
# File 'lib/ruby_lexer.rb', line 1322

def inspect
  return "Value(0)" if n.zero? # HACK?

  names.map { |v, k| k if self =~ v }.
    compact.
    join("|").
    gsub(/(?:EXPR_|STR_(?:FUNC_)?)/, "")
end

#|(v) ⇒ Object

Raises:

  • (ArgumentError)


1316
1317
1318
1319
1320
# File 'lib/ruby_lexer.rb', line 1316

def | v
  raise ArgumentError, "Incompatible State: %p vs %p" % [self, v] unless
    self.names == v.names
  self.class.new(self.n | v.n, self.names)
end