Class: Zold::Calculate
- Inherits:
-
Object
- Object
- Zold::Calculate
- Defined in:
- lib/zold/commands/calculate.rb
Overview
Calculate score
Instance Method Summary collapse
- #calculate(opts) ⇒ Object
-
#initialize(log: Log::Quiet.new) ⇒ Calculate
constructor
A new instance of Calculate.
- #run(args = []) ⇒ Object
Constructor Details
Instance Method Details
#calculate(opts) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/zold/commands/calculate.rb', line 66 def calculate(opts) start = Time.now mstart = Time.now strength = opts[:strength] raise "Invalid strength: #{strength}" if strength <= 0 || strength > 8 score = Zold::Score.new( Time.now, opts[:host], opts[:port].to_i, opts[:invoice], strength: strength ) loop do msg = score.to_s msg += (score.value > 0 ? ' ' + score.hash : '') unless opts['hide-hash'] msg += " #{(Time.now - mstart).round(2)}s" unless opts['hide-time'] @log.info(msg) break if score.value >= opts[:max].to_i mstart = Time.now score = score.next end seconds = (Time.now - start).round(2) @log.info("Took #{seconds} seconds, #{seconds / score.value} per value") score end |
#run(args = []) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/zold/commands/calculate.rb', line 36 def run(args = []) opts = Slop.parse(args, help: true, suppress_errors: true) do |o| o. = "Usage: zold push [ID...] [options] Available options:" o.string '--invoice', 'The invoice you want to collect money to' o.integer '--port', "TCP port to open for the Net (default: #{Remotes::PORT})", default: Remotes::PORT o.string '--host', 'Host name (default: 127.0.0.1)', default: '127.0.0.1' o.integer '--strength', "The strength of the score (default: #{Score::STRENGTH})", default: Score::STRENGTH o.integer '--max', 'Maximum value to find and then stop (default: 8)', default: 8 o.bool '--hide-hash', 'Don\'t print hash', default: false o.bool '--hide-time', 'Don\'t print calculation time per each score', default: false o.bool '--help', 'Print instructions' end if opts.help? @log.info(opts.to_s) return end calculate(opts) end |