Class: Fbe::Award
- Inherits:
-
Object
- Object
- Fbe::Award
- 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
-
#bill(vars = {}) ⇒ Fbe::Award::Bill
Build a bill object from this award query.
-
#initialize(query = nil, judge: $judge, global: $global, options: $options, loog: $loog) ⇒ Award
constructor
Ctor.
-
#policy ⇒ Fbe::Award::Policy
Build a policy object from this award query.
Constructor Details
#initialize(query = nil, judge: $judge, global: $global, options: $options, loog: $loog) ⇒ Award
Ctor.
53 54 55 56 |
# File 'lib/fbe/award.rb', line 53 def initialize(query = nil, judge: $judge, global: $global, options: $options, loog: $loog) query = Fbe.pmp(fb: Fbe.fb, global:, options:, loog:).hr.send(judge.gsub('-', '_')) if query.nil? @query = query end |
Instance Method Details
#bill(vars = {}) ⇒ Fbe::Award::Bill
Build a bill object from this award query.
61 62 63 64 65 66 67 |
# File 'lib/fbe/award.rb', line 61 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 |