fbe 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/lib/fbe/award.rb +1 -1
- data/lib/fbe/conclude.rb +14 -2
- data/lib/fbe/copy.rb +4 -1
- data/lib/fbe/fb.rb +6 -0
- data/lib/fbe/issue.rb +13 -1
- data/lib/fbe/octo.rb +200 -0
- data/lib/fbe/pmp.rb +7 -3
- data/lib/fbe/regularly.rb +8 -0
- data/lib/fbe/repeatedly.rb +3 -0
- data/lib/fbe/sec.rb +7 -1
- data/lib/fbe/who.rb +11 -1
- data/lib/fbe.rb +1 -1
- data/test/fbe/test_award.rb +1 -0
- data/test/fbe/test_copy.rb +11 -0
- data/test/fbe/test_octo.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 705cf29669f71d490c86421f566b0ec05c61fa1d8352b97d752ea26b8bcbb294
         | 
| 4 | 
            +
              data.tar.gz: e68fc23391048fac0a41a5b26af5ac85c4a34b3c434845710736d093d7eeb714
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 20ca9dfe05821edf5df55fccc51303fa23598e81dd15361cfb8b8f23db99b399c9e984ed0a1e1e97f43a0ebd048bd0beec5d8f870163cf0cea5c264fc1a505fc
         | 
| 7 | 
            +
              data.tar.gz: e8fdc7f6988f441cf0d0cb63c52f29a95f17c9681be435eb6c57012403e903e0ce65bd4b60402e802485221f3c7d7ca0cc847d1ba2f40e318af9be82ab989dcc
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -45,9 +45,9 @@ Metrics/BlockLength: | |
| 45 45 | 
             
            Metrics/AbcSize:
         | 
| 46 46 | 
             
              Enabled: false
         | 
| 47 47 | 
             
            Metrics/CyclomaticComplexity:
         | 
| 48 | 
            -
               | 
| 48 | 
            +
              Enabled: false
         | 
| 49 49 | 
             
            Metrics/PerceivedComplexity:
         | 
| 50 | 
            -
               | 
| 50 | 
            +
              Enabled: false
         | 
| 51 51 | 
             
            Metrics/ClassLength:
         | 
| 52 52 | 
             
              Enabled: false
         | 
| 53 53 | 
             
            Layout/EmptyLineAfterGuardClause:
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -24,7 +24,7 @@ source 'https://rubygems.org' | |
| 24 24 | 
             
            gemspec
         | 
| 25 25 |  | 
| 26 26 | 
             
            gem 'graphql-client'
         | 
| 27 | 
            -
            gem 'minitest', '5.25. | 
| 27 | 
            +
            gem 'minitest', '5.25.1', require: false
         | 
| 28 28 | 
             
            gem 'minitest-reporters', '1.7.1', require: false
         | 
| 29 29 | 
             
            gem 'rake', '13.2.1', require: false
         | 
| 30 30 | 
             
            gem 'rspec-rails', '6.1.4', require: false
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -141,7 +141,7 @@ GEM | |
| 141 141 | 
             
                  crass (~> 1.0.2)
         | 
| 142 142 | 
             
                  nokogiri (>= 1.12.0)
         | 
| 143 143 | 
             
                loog (0.6.0)
         | 
| 144 | 
            -
                minitest (5.25. | 
| 144 | 
            +
                minitest (5.25.1)
         | 
| 145 145 | 
             
                minitest-reporters (1.7.1)
         | 
| 146 146 | 
             
                  ansi
         | 
| 147 147 | 
             
                  builder
         | 
| @@ -287,7 +287,7 @@ PLATFORMS | |
| 287 287 | 
             
            DEPENDENCIES
         | 
| 288 288 | 
             
              fbe!
         | 
| 289 289 | 
             
              graphql-client
         | 
| 290 | 
            -
              minitest (= 5.25. | 
| 290 | 
            +
              minitest (= 5.25.1)
         | 
| 291 291 | 
             
              minitest-reporters (= 1.7.1)
         | 
| 292 292 | 
             
              rake (= 13.2.1)
         | 
| 293 293 | 
             
              rspec-rails (= 6.1.4)
         | 
    
        data/lib/fbe/award.rb
    CHANGED
    
    
    
        data/lib/fbe/conclude.rb
    CHANGED
    
    | @@ -28,6 +28,12 @@ require_relative 'octo' | |
| 28 28 | 
             
            require_relative 'if_absent'
         | 
| 29 29 |  | 
| 30 30 | 
             
            # Create a conclude code block.
         | 
| 31 | 
            +
            #
         | 
| 32 | 
            +
            # @param [Factbase] fb The factbase
         | 
| 33 | 
            +
            # @param [String] judge The name of the judge, from the +judges+ tool
         | 
| 34 | 
            +
            # @param [Hash] global The hash for global caching
         | 
| 35 | 
            +
            # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 36 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 31 37 | 
             
            def Fbe.conclude(fb: Fbe.fb, judge: $judge, loog: $loog, options: $options, global: $global, &)
         | 
| 32 38 | 
             
              c = Fbe::Conclude.new(fb:, judge:, loog:, options:, global:)
         | 
| 33 39 | 
             
              c.instance_eval(&)
         | 
| @@ -38,7 +44,14 @@ end | |
| 38 44 | 
             
            # Copyright:: Copyright (c) 2024 Zerocracy
         | 
| 39 45 | 
             
            # License:: MIT
         | 
| 40 46 | 
             
            class Fbe::Conclude
         | 
| 41 | 
            -
               | 
| 47 | 
            +
              # Ctor.
         | 
| 48 | 
            +
              #
         | 
| 49 | 
            +
              # @param [Factbase] fb The factbase
         | 
| 50 | 
            +
              # @param [String] judge The name of the judge, from the +judges+ tool
         | 
| 51 | 
            +
              # @param [Hash] global The hash for global caching
         | 
| 52 | 
            +
              # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 53 | 
            +
              # @param [Loog] logg The logging facility
         | 
| 54 | 
            +
              def initialize(fb:, judge:, global:, options:, loog:)
         | 
| 42 55 | 
             
                @fb = fb
         | 
| 43 56 | 
             
                @judge = judge
         | 
| 44 57 | 
             
                @loog = loog
         | 
| @@ -106,7 +119,6 @@ class Fbe::Conclude | |
| 106 119 | 
             
                @follows.each do |follow|
         | 
| 107 120 | 
             
                  v = prev.send(follow)
         | 
| 108 121 | 
             
                  fact.send("#{follow}=", v)
         | 
| 109 | 
            -
                  fact.cause = prev._id
         | 
| 110 122 | 
             
                end
         | 
| 111 123 | 
             
                r = yield fact, prev
         | 
| 112 124 | 
             
                return unless r.is_a?(String)
         | 
    
        data/lib/fbe/copy.rb
    CHANGED
    
    | @@ -29,11 +29,14 @@ require_relative 'fb' | |
| 29 29 | 
             
            #
         | 
| 30 30 | 
             
            # @param [Factbase::Fact] source The source
         | 
| 31 31 | 
             
            # @param [Factbase::Fact] target The targer
         | 
| 32 | 
            -
             | 
| 32 | 
            +
            # @param [Array<String>] except List of properties to NOT copy
         | 
| 33 | 
            +
            def Fbe.copy(source, target, except: [])
         | 
| 33 34 | 
             
              raise 'The source is nil' if source.nil?
         | 
| 34 35 | 
             
              raise 'The target is nil' if target.nil?
         | 
| 36 | 
            +
              raise 'The except is nil' if except.nil?
         | 
| 35 37 | 
             
              source.all_properties.each do |k|
         | 
| 36 38 | 
             
                next unless target[k].nil?
         | 
| 39 | 
            +
                next if except.include?(k)
         | 
| 37 40 | 
             
                source[k].each do |v|
         | 
| 38 41 | 
             
                  target.send(:"#{k}=", v)
         | 
| 39 42 | 
             
                end
         | 
    
        data/lib/fbe/fb.rb
    CHANGED
    
    | @@ -30,6 +30,12 @@ require 'factbase/pre' | |
| 30 30 | 
             
            require 'factbase/rules'
         | 
| 31 31 | 
             
            require_relative '../fbe'
         | 
| 32 32 |  | 
| 33 | 
            +
            # Returns an instance of +Factbase+ (cached).
         | 
| 34 | 
            +
            #
         | 
| 35 | 
            +
            # @param [Factbase] fb The global factbase provided by the +judges+ tool
         | 
| 36 | 
            +
            # @param [Hash] global The hash for global caching
         | 
| 37 | 
            +
            # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 38 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 33 39 | 
             
            def Fbe.fb(fb: $fb, global: $global, options: $options, loog: $loog)
         | 
| 34 40 | 
             
              global[:fb] ||=
         | 
| 35 41 | 
             
                begin
         | 
    
        data/lib/fbe/issue.rb
    CHANGED
    
    | @@ -24,6 +24,18 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            require_relative '../fbe'
         | 
| 26 26 |  | 
| 27 | 
            +
            # Converts an ID of GitHub issue into a nicely formatting string.
         | 
| 28 | 
            +
            #
         | 
| 29 | 
            +
            # @param [Factbase::Fact] fact The fact, where to get the ID of GitHub issue
         | 
| 30 | 
            +
            # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 31 | 
            +
            # @param [Hash] global The hash for global caching
         | 
| 32 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 27 33 | 
             
            def Fbe.issue(fact, options: $options, global: $global, loog: $loog)
         | 
| 28 | 
            -
               | 
| 34 | 
            +
              rid = fact['repository']
         | 
| 35 | 
            +
              raise "There is no 'repository' property" if rid.nil?
         | 
| 36 | 
            +
              rid = rid.first.to_i
         | 
| 37 | 
            +
              issue = fact['issue']
         | 
| 38 | 
            +
              raise "There is no 'issue' property" if issue.nil?
         | 
| 39 | 
            +
              issue = issue.first.to_i
         | 
| 40 | 
            +
              "#{Fbe.octo(global:, options:, loog:).repo_name_by_id(rid)}##{issue}"
         | 
| 29 41 | 
             
            end
         | 
    
        data/lib/fbe/octo.rb
    CHANGED
    
    | @@ -498,6 +498,206 @@ class Fbe::FakeOctokit | |
| 498 498 | 
             
                    },
         | 
| 499 499 | 
             
                    created_at: random_time,
         | 
| 500 500 | 
             
                    public: true
         | 
| 501 | 
            +
                  },
         | 
| 502 | 
            +
                  {
         | 
| 503 | 
            +
                    id: 42,
         | 
| 504 | 
            +
                    created_at: Time.now,
         | 
| 505 | 
            +
                    actor: { id: 42 },
         | 
| 506 | 
            +
                    type: 'PullRequestEvent',
         | 
| 507 | 
            +
                    repo: { id: repo },
         | 
| 508 | 
            +
                    payload: {
         | 
| 509 | 
            +
                      action: 'closed',
         | 
| 510 | 
            +
                      number: 172,
         | 
| 511 | 
            +
                      ref_type: 'tag',
         | 
| 512 | 
            +
                      ref: 'foo',
         | 
| 513 | 
            +
                      pull_request: {
         | 
| 514 | 
            +
                        url: 'https://api.github.com/repos/yegor256/judges/pulls/93',
         | 
| 515 | 
            +
                        id: 1_990_323_142,
         | 
| 516 | 
            +
                        node_id: 'PR_kwDOL6GCO852oevG',
         | 
| 517 | 
            +
                        number: 172,
         | 
| 518 | 
            +
                        state: 'closed',
         | 
| 519 | 
            +
                        locked: false,
         | 
| 520 | 
            +
                        title: '#999 new feature',
         | 
| 521 | 
            +
                        user: {
         | 
| 522 | 
            +
                          login: 'test',
         | 
| 523 | 
            +
                          id: 88_084_038,
         | 
| 524 | 
            +
                          node_id: 'MDQ6VXNlcjE2NDYwMjA=',
         | 
| 525 | 
            +
                          type: 'User',
         | 
| 526 | 
            +
                          site_admin: false
         | 
| 527 | 
            +
                        },
         | 
| 528 | 
            +
                        base: {
         | 
| 529 | 
            +
                          label: 'zerocracy:master',
         | 
| 530 | 
            +
                          ref: 'master',
         | 
| 531 | 
            +
                          user: {
         | 
| 532 | 
            +
                            login: 'zerocracy',
         | 
| 533 | 
            +
                            id: 24_234_201
         | 
| 534 | 
            +
                          },
         | 
| 535 | 
            +
                          repo: {
         | 
| 536 | 
            +
                            id: repo,
         | 
| 537 | 
            +
                            node_id: 'R_kgDOK2_4Aw',
         | 
| 538 | 
            +
                            name: 'baza',
         | 
| 539 | 
            +
                            full_name: 'zerocracy/baza',
         | 
| 540 | 
            +
                            private: false
         | 
| 541 | 
            +
                          }
         | 
| 542 | 
            +
                        },
         | 
| 543 | 
            +
                        head: {
         | 
| 544 | 
            +
                          ref: 'zerocracy/baza'
         | 
| 545 | 
            +
                        },
         | 
| 546 | 
            +
                        merged_at: Time.now,
         | 
| 547 | 
            +
                        comments: 2,
         | 
| 548 | 
            +
                        review_comments: 2,
         | 
| 549 | 
            +
                        commits: 1,
         | 
| 550 | 
            +
                        additions: 3,
         | 
| 551 | 
            +
                        deletions: 3,
         | 
| 552 | 
            +
                        changed_files: 2
         | 
| 553 | 
            +
                      }
         | 
| 554 | 
            +
                    }
         | 
| 555 | 
            +
                  }
         | 
| 556 | 
            +
                ]
         | 
| 557 | 
            +
              end
         | 
| 558 | 
            +
             | 
| 559 | 
            +
              def pull_request_comments(_name, _number)
         | 
| 560 | 
            +
                [
         | 
| 561 | 
            +
                  {
         | 
| 562 | 
            +
                    pull_request_review_id: 2_227_372_510,
         | 
| 563 | 
            +
                    id: 1_709_082_318,
         | 
| 564 | 
            +
                    path: 'test/baza/test_locks.rb',
         | 
| 565 | 
            +
                    commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
         | 
| 566 | 
            +
                    original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
         | 
| 567 | 
            +
                    user: {
         | 
| 568 | 
            +
                      login: 'Reviewer',
         | 
| 569 | 
            +
                      id: 2_566_462
         | 
| 570 | 
            +
                    },
         | 
| 571 | 
            +
                    body: 'Most likely, parentheses were missed here.',
         | 
| 572 | 
            +
                    created_at: '2024-08-08T09:41:46Z',
         | 
| 573 | 
            +
                    updated_at: '2024-08-08T09:42:46Z',
         | 
| 574 | 
            +
                    reactions: {
         | 
| 575 | 
            +
                      url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082318/reactions',
         | 
| 576 | 
            +
                      total_count: 0
         | 
| 577 | 
            +
                    },
         | 
| 578 | 
            +
                    start_line: 'null',
         | 
| 579 | 
            +
                    original_start_line: 'null',
         | 
| 580 | 
            +
                    start_side: 'null',
         | 
| 581 | 
            +
                    line: 'null',
         | 
| 582 | 
            +
                    original_line: 62,
         | 
| 583 | 
            +
                    side: 'RIGHT',
         | 
| 584 | 
            +
                    original_position: 25,
         | 
| 585 | 
            +
                    position: 'null',
         | 
| 586 | 
            +
                    subject_type: 'line'
         | 
| 587 | 
            +
                  },
         | 
| 588 | 
            +
                  {
         | 
| 589 | 
            +
                    pull_request_review_id: 2_227_372_510,
         | 
| 590 | 
            +
                    id: 1_709_082_319,
         | 
| 591 | 
            +
                    path: 'test/baza/test_locks.rb',
         | 
| 592 | 
            +
                    commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
         | 
| 593 | 
            +
                    original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
         | 
| 594 | 
            +
                    user: {
         | 
| 595 | 
            +
                      login: 'test',
         | 
| 596 | 
            +
                      id: 88_084_038
         | 
| 597 | 
            +
                    },
         | 
| 598 | 
            +
                    body: 'definitely a typo',
         | 
| 599 | 
            +
                    created_at: '2024-08-08T09:42:46Z',
         | 
| 600 | 
            +
                    updated_at: '2024-08-08T09:42:46Z',
         | 
| 601 | 
            +
                    reactions: {
         | 
| 602 | 
            +
                      url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082319/reactions',
         | 
| 603 | 
            +
                      total_count: 0
         | 
| 604 | 
            +
                    },
         | 
| 605 | 
            +
                    start_line: 'null',
         | 
| 606 | 
            +
                    original_start_line: 'null',
         | 
| 607 | 
            +
                    start_side: 'null',
         | 
| 608 | 
            +
                    line: 'null',
         | 
| 609 | 
            +
                    original_line: 62,
         | 
| 610 | 
            +
                    side: 'RIGHT',
         | 
| 611 | 
            +
                    original_position: 25,
         | 
| 612 | 
            +
                    in_reply_to_id: 1_709_082_318,
         | 
| 613 | 
            +
                    position: 'null',
         | 
| 614 | 
            +
                    subject_type: 'line'
         | 
| 615 | 
            +
                  }
         | 
| 616 | 
            +
                ]
         | 
| 617 | 
            +
              end
         | 
| 618 | 
            +
             | 
| 619 | 
            +
              def issue_comments(_name, _number)
         | 
| 620 | 
            +
                [
         | 
| 621 | 
            +
                  {
         | 
| 622 | 
            +
                    pull_request_review_id: 2_227_372_510,
         | 
| 623 | 
            +
                    id: 1_709_082_320,
         | 
| 624 | 
            +
                    path: 'test/baza/test_locks.rb',
         | 
| 625 | 
            +
                    commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
         | 
| 626 | 
            +
                    original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
         | 
| 627 | 
            +
                    user: {
         | 
| 628 | 
            +
                      login: 'Reviewer',
         | 
| 629 | 
            +
                      id: 2_566_462
         | 
| 630 | 
            +
                    },
         | 
| 631 | 
            +
                    body: 'reviewer comment',
         | 
| 632 | 
            +
                    created_at: '2024-08-08T09:41:46Z',
         | 
| 633 | 
            +
                    updated_at: '2024-08-08T09:42:46Z',
         | 
| 634 | 
            +
                    reactions: {
         | 
| 635 | 
            +
                      url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082320/reactions',
         | 
| 636 | 
            +
                      total_count: 1
         | 
| 637 | 
            +
                    },
         | 
| 638 | 
            +
                    start_line: 'null',
         | 
| 639 | 
            +
                    original_start_line: 'null',
         | 
| 640 | 
            +
                    start_side: 'null',
         | 
| 641 | 
            +
                    line: 'null',
         | 
| 642 | 
            +
                    original_line: 62,
         | 
| 643 | 
            +
                    side: 'RIGHT',
         | 
| 644 | 
            +
                    original_position: 25,
         | 
| 645 | 
            +
                    position: 'null',
         | 
| 646 | 
            +
                    subject_type: 'line'
         | 
| 647 | 
            +
                  },
         | 
| 648 | 
            +
                  {
         | 
| 649 | 
            +
                    pull_request_review_id: 2_227_372_510,
         | 
| 650 | 
            +
                    id: 1_709_082_321,
         | 
| 651 | 
            +
                    path: 'test/baza/test_locks.rb',
         | 
| 652 | 
            +
                    commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
         | 
| 653 | 
            +
                    original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
         | 
| 654 | 
            +
                    user: {
         | 
| 655 | 
            +
                      login: 'test',
         | 
| 656 | 
            +
                      id: 88_084_038
         | 
| 657 | 
            +
                    },
         | 
| 658 | 
            +
                    body: 'author comment',
         | 
| 659 | 
            +
                    created_at: '2024-08-08T09:42:46Z',
         | 
| 660 | 
            +
                    updated_at: '2024-08-08T09:42:46Z',
         | 
| 661 | 
            +
                    reactions: {
         | 
| 662 | 
            +
                      url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082321/reactions',
         | 
| 663 | 
            +
                      total_count: 1
         | 
| 664 | 
            +
                    },
         | 
| 665 | 
            +
                    start_line: 'null',
         | 
| 666 | 
            +
                    original_start_line: 'null',
         | 
| 667 | 
            +
                    start_side: 'null',
         | 
| 668 | 
            +
                    line: 'null',
         | 
| 669 | 
            +
                    original_line: 62,
         | 
| 670 | 
            +
                    side: 'RIGHT',
         | 
| 671 | 
            +
                    original_position: 25,
         | 
| 672 | 
            +
                    in_reply_to_id: 1_709_082_318,
         | 
| 673 | 
            +
                    position: 'null',
         | 
| 674 | 
            +
                    subject_type: 'line'
         | 
| 675 | 
            +
                  }
         | 
| 676 | 
            +
                ]
         | 
| 677 | 
            +
              end
         | 
| 678 | 
            +
             | 
| 679 | 
            +
              def issue_comment_reactions(_name, _comment)
         | 
| 680 | 
            +
                [
         | 
| 681 | 
            +
                  {
         | 
| 682 | 
            +
                    id: 248_923_574,
         | 
| 683 | 
            +
                    user: {
         | 
| 684 | 
            +
                      login: 'user',
         | 
| 685 | 
            +
                      id: 8_086_956
         | 
| 686 | 
            +
                    },
         | 
| 687 | 
            +
                    content: 'heart'
         | 
| 688 | 
            +
                  }
         | 
| 689 | 
            +
                ]
         | 
| 690 | 
            +
              end
         | 
| 691 | 
            +
             | 
| 692 | 
            +
              def pull_request_review_comment_reactions(_name, _comment)
         | 
| 693 | 
            +
                [
         | 
| 694 | 
            +
                  {
         | 
| 695 | 
            +
                    id: 248_923_574,
         | 
| 696 | 
            +
                    user: {
         | 
| 697 | 
            +
                      login: 'user',
         | 
| 698 | 
            +
                      id: 8_086_956
         | 
| 699 | 
            +
                    },
         | 
| 700 | 
            +
                    content: 'heart'
         | 
| 501 701 | 
             
                  }
         | 
| 502 702 | 
             
                ]
         | 
| 503 703 | 
             
              end
         | 
    
        data/lib/fbe/pmp.rb
    CHANGED
    
    | @@ -24,10 +24,14 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            require 'others'
         | 
| 26 26 | 
             
            require_relative 'fb'
         | 
| 27 | 
            +
            require_relative '../fbe'
         | 
| 27 28 |  | 
| 28 | 
            -
            #  | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 29 | 
            +
            # Get configuration parameter from the "PMP" fact.
         | 
| 30 | 
            +
            #
         | 
| 31 | 
            +
            # @param [Factbase] fb The factbase
         | 
| 32 | 
            +
            # @param [Hash] global The hash for global caching
         | 
| 33 | 
            +
            # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 34 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 31 35 | 
             
            def Fbe.pmp(fb: Fbe.fb, global: $global, options: $options, loog: $loog)
         | 
| 32 36 | 
             
              others do |*args1|
         | 
| 33 37 | 
             
                area = args1.first
         | 
    
        data/lib/fbe/regularly.rb
    CHANGED
    
    | @@ -25,6 +25,14 @@ | |
| 25 25 | 
             
            require_relative '../fbe'
         | 
| 26 26 | 
             
            require_relative 'fb'
         | 
| 27 27 |  | 
| 28 | 
            +
            # Run the block provided every X days.
         | 
| 29 | 
            +
            #
         | 
| 30 | 
            +
            # @param [String] area The name of the PMP area
         | 
| 31 | 
            +
            # @param [Integer] p_every_days How frequently to run, every X days
         | 
| 32 | 
            +
            # @param [Integer] p_since_days Since when to collect stats, X days
         | 
| 33 | 
            +
            # @param [Factbase] fb The factbase
         | 
| 34 | 
            +
            # @param [String] judge The name of the judge, from the +judges+ tool
         | 
| 35 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 28 36 | 
             
            def Fbe.regularly(area, p_every_days, p_since_days = nil, fb: Fbe.fb, judge: $judge, loog: $loog, &)
         | 
| 29 37 | 
             
              pmp = fb.query("(and (eq what 'pmp') (eq area '#{area}') (exists #{p_every_days}))").each.to_a.first
         | 
| 30 38 | 
             
              interval = pmp.nil? ? 7 : pmp[p_every_days].first
         | 
    
        data/lib/fbe/repeatedly.rb
    CHANGED
    
    | @@ -30,6 +30,9 @@ require_relative 'overwrite' | |
| 30 30 | 
             
            #
         | 
| 31 31 | 
             
            # @param [String] area The name of the PMP area
         | 
| 32 32 | 
             
            # @param [Integer] p_every_hours How frequently to run, every X hours
         | 
| 33 | 
            +
            # @param [Factbase] fb The factbase
         | 
| 34 | 
            +
            # @param [String] judge The name of the judge, from the +judges+ tool
         | 
| 35 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 33 36 | 
             
            def Fbe.repeatedly(area, p_every_hours, fb: Fbe.fb, judge: $judge, loog: $loog, &)
         | 
| 34 37 | 
             
              pmp = fb.query("(and (eq what 'pmp') (eq area '#{area}') (exists #{p_every_hours}))").each.to_a.first
         | 
| 35 38 | 
             
              hours = pmp.nil? ? 24 : pmp[p_every_hours].first
         | 
    
        data/lib/fbe/sec.rb
    CHANGED
    
    | @@ -24,8 +24,14 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            require_relative '../fbe'
         | 
| 26 26 |  | 
| 27 | 
            +
            # Converts number of seconds into text.
         | 
| 28 | 
            +
            #
         | 
| 29 | 
            +
            # @param [Factbase::Fact] fact The fact, where to get the number of seconds
         | 
| 30 | 
            +
            # @param [String] prop The property in the fact, with the seconds
         | 
| 27 31 | 
             
            def Fbe.sec(fact, prop = :seconds)
         | 
| 28 | 
            -
              s = fact | 
| 32 | 
            +
              s = fact[prop.to_s]
         | 
| 33 | 
            +
              raise "There is no #{prop} property" if s.nil?
         | 
| 34 | 
            +
              s = s.first.to_i
         | 
| 29 35 | 
             
              if s < 60
         | 
| 30 36 | 
             
                format('%d seconds', s)
         | 
| 31 37 | 
             
              elsif s < 60 * 60
         | 
    
        data/lib/fbe/who.rb
    CHANGED
    
    | @@ -24,6 +24,16 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            require_relative '../fbe'
         | 
| 26 26 |  | 
| 27 | 
            +
            # Converts an ID of GitHub user into a nicely formatting string with his name.
         | 
| 28 | 
            +
            #
         | 
| 29 | 
            +
            # @param [Factbase::Fact] fact The fact, where to get the ID of GitHub user
         | 
| 30 | 
            +
            # @param [String] prop The property in the fact, with the ID
         | 
| 31 | 
            +
            # @param [Judges::Options] options The options coming from the +judges+ tool
         | 
| 32 | 
            +
            # @param [Hash] global The hash for global caching
         | 
| 33 | 
            +
            # @param [Loog] logg The logging facility
         | 
| 27 34 | 
             
            def Fbe.who(fact, prop = :who, options: $options, global: $global, loog: $loog)
         | 
| 28 | 
            -
               | 
| 35 | 
            +
              id = fact[prop.to_s]
         | 
| 36 | 
            +
              raise "There is no #{prop} property" if id.nil?
         | 
| 37 | 
            +
              id = id.first.to_i
         | 
| 38 | 
            +
              "@#{Fbe.octo(options:, global:, loog:).user_name_by_id(id)}"
         | 
| 29 39 | 
             
            end
         | 
    
        data/lib/fbe.rb
    CHANGED
    
    
    
        data/test/fbe/test_award.rb
    CHANGED
    
    | @@ -96,6 +96,7 @@ class TestAward < Minitest::Test | |
| 96 96 |  | 
| 97 97 | 
             
              def test_some_greetings
         | 
| 98 98 | 
             
                {
         | 
| 99 | 
            +
                  '(award (give (times 7 0.25 "fun")))' => 'You\'ve earned +2 points. ',
         | 
| 99 100 | 
             
                  '(award (give (times 5 0.25 "fun")))' => 'You\'ve earned +1 points. ',
         | 
| 100 101 | 
             
                  '(award (give 25 "for being a good boy"))' => 'You\'ve earned +25 points. ',
         | 
| 101 102 | 
             
                  '(award (let x 0.1) (set b (times x 14)) (give b "fun"))' => 'You\'ve earned +1 points. '
         | 
    
        data/test/fbe/test_copy.rb
    CHANGED
    
    | @@ -43,4 +43,15 @@ class TestCopy < Minitest::Test | |
| 43 43 | 
             
                assert_equal(2, f2._id)
         | 
| 44 44 | 
             
                assert_equal(42, f2.foo)
         | 
| 45 45 | 
             
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              def test_with_except
         | 
| 48 | 
            +
                fb = Factbase.new
         | 
| 49 | 
            +
                f1 = fb.insert
         | 
| 50 | 
            +
                f1._id = 1
         | 
| 51 | 
            +
                f1.foo = 42
         | 
| 52 | 
            +
                f2 = fb.insert
         | 
| 53 | 
            +
                f2._id = 2
         | 
| 54 | 
            +
                Fbe.copy(f1, f2, except: ['foo'])
         | 
| 55 | 
            +
                assert(f2['foo'].nil?)
         | 
| 56 | 
            +
              end
         | 
| 46 57 | 
             
            end
         | 
    
        data/test/fbe/test_octo.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fbe
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.55
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Yegor Bugayenko
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024-08- | 
| 11 | 
            +
            date: 2024-08-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: backtrace
         |