Class: Fbe::Award

Inherits:
Object
  • Object
show all
Defined in:
lib/fbe/award.rb

Overview

A generator of awards.

First, you should create a policy, using the same Lisp-ish syntax as we use in queries to a Factbase, for example:

require 'fbe/award'
a = Fbe::Award.new('(award (in loc "lines") (give (times loc 5) "for LoC"))')

Then, you can either get a bill from it:

b = a.bill(loc: 345)
puts b.points  # how many points to reward, a number
puts b.greeting  # how to explain the reward, a text

Or else, you can get a policy text:

p = a.policy
puts p.markdown  # Markdown of the policy
Author

Yegor Bugayenko (yegor256@gmail.com)

Copyright

Copyright © 2024 Yegor Bugayenko

License

MIT

Defined Under Namespace

Classes: BTerm, Bill, PTerm, Policy

Instance Method Summary collapse

Constructor Details

#initialize(query = J.pmp.hr.send($judge.gsub('-', '_'))) ⇒ Award

Returns a new instance of Award.



50
51
52
# File 'lib/fbe/award.rb', line 50

def initialize(query = J.pmp.hr.send($judge.gsub('-', '_')))
  @query = query
end

Instance Method Details

#bill(vars = {}) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/fbe/award.rb', line 54

def bill(vars = {})
  term = Factbase::Syntax.new(@query, term: Fbe::Award::BTerm).to_term
  bill = Bill.new
  vars.each { |k, v| bill.set(k, v) }
  term.bill_to(bill)
  bill
end

#policyObject



62
63
64
65
66
67
# File 'lib/fbe/award.rb', line 62

def policy
  term = Factbase::Syntax.new(@query, term: Fbe::Award::PTerm).to_term
  policy = Policy.new
  term.publish_to(policy)
  policy
end