Class: Twilic::Core::Session::MutableShapeTable
- Inherits:
-
Object
- Object
- Twilic::Core::Session::MutableShapeTable
- Defined in:
- lib/twilic/core/session.rb
Instance Attribute Summary collapse
-
#by_id ⇒ Object
readonly
Returns the value of attribute by_id.
-
#by_keys ⇒ Object
readonly
Returns the value of attribute by_keys.
-
#next_id ⇒ Object
readonly
Returns the value of attribute next_id.
-
#observations ⇒ Object
readonly
Returns the value of attribute observations.
Instance Method Summary collapse
- #clear ⇒ Object
- #get_id(keys) ⇒ Object
- #get_keys(id) ⇒ Object
-
#initialize ⇒ MutableShapeTable
constructor
A new instance of MutableShapeTable.
- #observation_count(keys) ⇒ Object
- #observe(keys) ⇒ Object
- #register(keys) ⇒ Object
- #register_with_id(shape_id, keys) ⇒ Object
- #shape_key(keys) ⇒ Object
Constructor Details
#initialize ⇒ MutableShapeTable
Returns a new instance of MutableShapeTable.
397 398 399 400 401 402 |
# File 'lib/twilic/core/session.rb', line 397 def initialize @by_keys = {} @by_id = {} @observations = {} @next_id = 0 end |
Instance Attribute Details
#by_id ⇒ Object (readonly)
Returns the value of attribute by_id.
395 396 397 |
# File 'lib/twilic/core/session.rb', line 395 def by_id @by_id end |
#by_keys ⇒ Object (readonly)
Returns the value of attribute by_keys.
395 396 397 |
# File 'lib/twilic/core/session.rb', line 395 def by_keys @by_keys end |
#next_id ⇒ Object (readonly)
Returns the value of attribute next_id.
395 396 397 |
# File 'lib/twilic/core/session.rb', line 395 def next_id @next_id end |
#observations ⇒ Object (readonly)
Returns the value of attribute observations.
395 396 397 |
# File 'lib/twilic/core/session.rb', line 395 def observations @observations end |
Instance Method Details
#clear ⇒ Object
452 453 454 455 456 457 |
# File 'lib/twilic/core/session.rb', line 452 def clear @by_keys = {} @by_id = {} @observations = {} @next_id = 0 end |
#get_id(keys) ⇒ Object
408 409 410 411 |
# File 'lib/twilic/core/session.rb', line 408 def get_id(keys) id = @by_keys[shape_key(keys)] id ? [id, true] : [0, false] end |
#get_keys(id) ⇒ Object
413 414 415 416 |
# File 'lib/twilic/core/session.rb', line 413 def get_keys(id) keys = @by_id[id] keys ? [keys.dup, true] : [nil, false] end |
#observation_count(keys) ⇒ Object
448 449 450 |
# File 'lib/twilic/core/session.rb', line 448 def observation_count(keys) @observations[shape_key(keys)] || 0 end |
#observe(keys) ⇒ Object
443 444 445 446 |
# File 'lib/twilic/core/session.rb', line 443 def observe(keys) sk = shape_key(keys) @observations[sk] = (@observations[sk] || 0) + 1 end |
#register(keys) ⇒ Object
418 419 420 421 422 423 424 425 426 427 428 |
# File 'lib/twilic/core/session.rb', line 418 def register(keys) sk = shape_key(keys) id = @by_keys[sk] return id if id id = @next_id @next_id += 1 @by_id[id] = keys.dup @by_keys[sk] = id id end |
#register_with_id(shape_id, keys) ⇒ Object
430 431 432 433 434 435 436 437 438 439 440 441 |
# File 'lib/twilic/core/session.rb', line 430 def register_with_id(shape_id, keys) sk = shape_key(keys) if @by_id.key?(shape_id) return shape_key(@by_id[shape_id]) == sk end return false if @by_keys.key?(sk) && @by_keys[sk] != shape_id @by_id[shape_id] = keys.dup @by_keys[sk] = shape_id @next_id = [@next_id, shape_id + 1].max true end |
#shape_key(keys) ⇒ Object
404 405 406 |
# File 'lib/twilic/core/session.rb', line 404 def shape_key(keys) keys.join("\0") end |