Class: ParaDice::Results::AndKeep

Inherits:
Object
  • Object
show all
Defined in:
lib/para_dice/results/and_keep.rb

Overview

Results class to implement a roll 5 and keep 3 style of play

Constant Summary collapse

DEFAULT_SORT_BY =

default sort order. passed to sort_by. defaults to a simple pass through

->(obj) { obj }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(default_keep = nil) ⇒ AndKeep

Returns a new instance of AndKeep.

Parameters:

  • default_keep (Regex, String) (defaults to: nil)


18
19
20
# File 'lib/para_dice/results/and_keep.rb', line 18

def initialize(default_keep = nil)
  @default_keep = default_keep
end

Instance Attribute Details

#:default_keep(: default_keep) ⇒ Fixnum

Returns the default number of dice to keep.

Returns:

  • (Fixnum)

    the default number of dice to keep



16
# File 'lib/para_dice/results/and_keep.rb', line 16

attr_accessor :default_keep, :default_low_results, :default_sort_by

#:default_low_results(: default_low_results) ⇒ Boolean

Returns keep dice off of the low end of the order. false by default.

Returns:

  • (Boolean)

    keep dice off of the low end of the order. false by default



16
# File 'lib/para_dice/results/and_keep.rb', line 16

attr_accessor :default_keep, :default_low_results, :default_sort_by

#:default_sort_by(: default_sort_by) ⇒ Proc

Returns the sort by block defaults to passing the object through to sort.

Returns:

  • (Proc)

    the sort by block defaults to passing the object through to sort



16
# File 'lib/para_dice/results/and_keep.rb', line 16

attr_accessor :default_keep, :default_low_results, :default_sort_by

#default_keepObject

Returns the value of attribute default_keep.



16
17
18
# File 'lib/para_dice/results/and_keep.rb', line 16

def default_keep
  @default_keep
end

#default_low_resultsObject

Returns the value of attribute default_low_results.



16
17
18
# File 'lib/para_dice/results/and_keep.rb', line 16

def default_low_results
  @default_low_results
end

#default_sort_byObject

Returns the value of attribute default_sort_by.



16
17
18
# File 'lib/para_dice/results/and_keep.rb', line 16

def default_sort_by
  @default_sort_by
end

Instance Method Details

#resolve(faces, keep = default_keep, low_results = false) {|obj| ... } ⇒ Array<String>

Parameters:

  • faces (Array<#to_s>)
  • keep (Regex, String) (defaults to: default_keep)

    default: default_keep

  • low_results (Boolean) (defaults to: false)

    if true take the bottom of the order

Yields:

  • (obj)

    provides obj to call methods on to determine value for use in Array.order_by. Numbers sort easy, names are trickier

Returns:



28
29
30
31
32
33
34
35
# File 'lib/para_dice/results/and_keep.rb', line 28

def resolve(faces, keep = default_keep, low_results = false, &blk)
  results_method = low_results ? :first : :last
  if block_given?
    faces.sort_by(&blk).to_a.send(results_method, keep)
  else
    faces.sort_by(&default_sort_by).to_a.send(results_method, keep)
  end
end