jekyll-recker 2.3.1 → 2.4.0
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/lib/jekyll_recker/entry.rb +1 -1
- data/lib/jekyll_recker/filters.rb +1 -1
- data/lib/jekyll_recker/generators.rb +51 -40
- data/lib/jekyll_recker/graphs.rb +8 -4
- data/lib/jekyll_recker/site.rb +10 -5
- data/lib/jekyll_recker/social.rb +16 -9
- data/lib/jekyll_recker/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7f3c029100fd9fc95b7f7b065e17bbb5cd2baf321fd0b3f93aeac96505e816d6
         | 
| 4 | 
            +
              data.tar.gz: f66cd31401dd09fd965f34372c117dd26ab582cb8d761d5a00fa1a41352c3e31
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2171c0a55cb2e419ae0c120880fef8e11fd4d01b554327f2adca939f8a92c5c0e0b37934acf58d64bbf276688cc7785aa4c06b46db5a224be721b71a0a3d4805
         | 
| 7 | 
            +
              data.tar.gz: f07aadca9f824b3c22bcbca26c208fe29e1ffa6fee993984263456f951d861d58ec2697aed963a9bbd7924c3d8b6282ef2f6857f335ab8a343b3486fef039e88
         | 
    
        data/lib/jekyll_recker/entry.rb
    CHANGED
    
    
| @@ -8,28 +8,41 @@ module JekyllRecker | |
| 8 8 | 
             
                  include Date
         | 
| 9 9 | 
             
                  include Logging
         | 
| 10 10 | 
             
                  include Math
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                # Stats Generator
         | 
| 14 | 
            -
                class Stats < Jekyll::Generator
         | 
| 15 | 
            -
                  include Base
         | 
| 16 11 |  | 
| 17 12 | 
             
                  attr_reader :site
         | 
| 18 13 |  | 
| 14 | 
            +
                  def name
         | 
| 15 | 
            +
                    self.class.name.split('::').last.downcase
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 19 18 | 
             
                  def generate(site)
         | 
| 20 19 | 
             
                    @site = Site.new(site)
         | 
| 21 | 
            -
                    generate_stats!
         | 
| 22 20 | 
             
                    if @site.production?
         | 
| 23 | 
            -
                      info  | 
| 21 | 
            +
                      info "skipping #{name} generator"
         | 
| 24 22 | 
             
                    else
         | 
| 25 | 
            -
                      info  | 
| 26 | 
            -
                       | 
| 23 | 
            +
                      info "running #{name} generator"
         | 
| 24 | 
            +
                      data = crunch
         | 
| 25 | 
            +
                      File.open(data_file_target, 'w') { |f| f.write(JSON.pretty_generate(data)) } unless data.nil?
         | 
| 27 26 | 
             
                    end
         | 
| 28 27 | 
             
                  end
         | 
| 29 28 |  | 
| 30 | 
            -
                  def  | 
| 31 | 
            -
                     | 
| 32 | 
            -
             | 
| 29 | 
            +
                  def data_file_target
         | 
| 30 | 
            +
                    File.join site.data_dir, "#{name}.json"
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                # Stats Generator
         | 
| 35 | 
            +
                class Stats < Jekyll::Generator
         | 
| 36 | 
            +
                  include Base
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  attr_reader :site
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def crunch
         | 
| 41 | 
            +
                    generate_stats
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def generate_stats
         | 
| 45 | 
            +
                    {
         | 
| 33 46 | 
             
                      'total_words' => total(site.word_counts),
         | 
| 34 47 | 
             
                      'average_words' => average(site.word_counts),
         | 
| 35 48 | 
             
                      'total_posts' => site.entries.size,
         | 
| @@ -51,45 +64,44 @@ module JekyllRecker | |
| 51 64 | 
             
                  end
         | 
| 52 65 |  | 
| 53 66 | 
             
                  def swears
         | 
| 54 | 
            -
                     | 
| 55 | 
            -
                      ass
         | 
| 56 | 
            -
                      asshole
         | 
| 57 | 
            -
                      booger
         | 
| 58 | 
            -
                      crap
         | 
| 59 | 
            -
                      damn
         | 
| 60 | 
            -
                      fart
         | 
| 61 | 
            -
                      fuck
         | 
| 62 | 
            -
                      hell
         | 
| 63 | 
            -
                      jackass
         | 
| 64 | 
            -
                      piss
         | 
| 65 | 
            -
                      poop
         | 
| 66 | 
            -
                      shit
         | 
| 67 | 
            -
                    ]
         | 
| 67 | 
            +
                    site.recker_config.fetch('swears', [])
         | 
| 68 68 | 
             
                  end
         | 
| 69 69 | 
             
                end
         | 
| 70 70 |  | 
| 71 | 
            -
                #  | 
| 72 | 
            -
                class  | 
| 71 | 
            +
                # Graphs Generator
         | 
| 72 | 
            +
                class Graphs < Jekyll::Generator
         | 
| 73 73 | 
             
                  include Base
         | 
| 74 74 |  | 
| 75 | 
            -
                   | 
| 75 | 
            +
                  def crunch
         | 
| 76 | 
            +
                    JekyllRecker::Graphs.generate_graphs(site)
         | 
| 77 | 
            +
                    nil
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 76 80 |  | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 81 | 
            +
                # Git Generator
         | 
| 82 | 
            +
                class Git < Jekyll::Generator
         | 
| 83 | 
            +
                  include Base
         | 
| 79 84 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
                       | 
| 83 | 
            -
                     | 
| 85 | 
            +
                  def crunch
         | 
| 86 | 
            +
                    {
         | 
| 87 | 
            +
                      'commit_count' => Shell.run('git rev-list --count master').chomp
         | 
| 88 | 
            +
                    }
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
                end
         | 
| 84 91 |  | 
| 85 | 
            -
             | 
| 92 | 
            +
                # Image Resize Generator
         | 
| 93 | 
            +
                class ImageResize < Jekyll::Generator
         | 
| 94 | 
            +
                  include Base
         | 
| 86 95 |  | 
| 96 | 
            +
                  def crunch
         | 
| 97 | 
            +
                    load_deps!
         | 
| 87 98 | 
             
                    info 'checking images'
         | 
| 88 99 | 
             
                    resizeable_images.each do |f, d|
         | 
| 89 100 | 
             
                      info "resizing #{f} to fit #{d}"
         | 
| 90 101 | 
             
                      image = MiniMagick::Image.new(f)
         | 
| 91 102 | 
             
                      image.resize d
         | 
| 92 103 | 
             
                    end
         | 
| 104 | 
            +
                    nil
         | 
| 93 105 | 
             
                  end
         | 
| 94 106 |  | 
| 95 107 | 
             
                  def too_big?(width, height)
         | 
| @@ -101,13 +113,12 @@ module JekyllRecker | |
| 101 113 | 
             
                    require 'mini_magick'
         | 
| 102 114 | 
             
                  end
         | 
| 103 115 |  | 
| 104 | 
            -
                  def  | 
| 105 | 
            -
                     | 
| 116 | 
            +
                  def images_without_graphs
         | 
| 117 | 
            +
                    site.images.reject { |i| i.include?('/graphs/') }
         | 
| 106 118 | 
             
                  end
         | 
| 107 119 |  | 
| 108 120 | 
             
                  def resizeable_images
         | 
| 109 | 
            -
                     | 
| 110 | 
            -
                    with_sizes = without_graphs.map { |f| [f, FastImage.size(f)].flatten }
         | 
| 121 | 
            +
                    with_sizes = images_without_graphs.map { |f| [f, FastImage.size(f)].flatten }
         | 
| 111 122 | 
             
                    with_sizes.select! { |f| too_big?(f[1], f[2]) }
         | 
| 112 123 | 
             
                    with_sizes.map do |f, w, h|
         | 
| 113 124 | 
             
                      dimensions = if w > h
         | 
    
        data/lib/jekyll_recker/graphs.rb
    CHANGED
    
    | @@ -66,14 +66,18 @@ module JekyllRecker | |
| 66 66 | 
             
                class Swears
         | 
| 67 67 | 
             
                  include Base
         | 
| 68 68 |  | 
| 69 | 
            -
                  attr_reader :results
         | 
| 70 | 
            -
             | 
| 71 69 | 
             
                  def initialize(site)
         | 
| 72 | 
            -
                    @ | 
| 73 | 
            -
                    @results.delete('total')
         | 
| 70 | 
            +
                    @data_dir = site.data_dir
         | 
| 74 71 | 
             
                    @graphs_dir = site.graphs_dir
         | 
| 75 72 | 
             
                  end
         | 
| 76 73 |  | 
| 74 | 
            +
                  def results
         | 
| 75 | 
            +
                    path = File.join(@data_dir, 'stats.json')
         | 
| 76 | 
            +
                    data = JSON.parse(File.read(path))['swears']
         | 
| 77 | 
            +
                    data.delete('total')
         | 
| 78 | 
            +
                    data
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
             | 
| 77 81 | 
             
                  def write
         | 
| 78 82 | 
             
                    g = ::Gruff::Pie.new('800x600')
         | 
| 79 83 | 
             
                    g.theme = Gruff::Themes::PASTEL
         | 
    
        data/lib/jekyll_recker/site.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'bundler'
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module JekyllRecker
         | 
| 4 6 | 
             
              # Site
         | 
| 5 7 | 
             
              class Site
         | 
| @@ -15,7 +17,6 @@ module JekyllRecker | |
| 15 17 | 
             
                  entries.first
         | 
| 16 18 | 
             
                end
         | 
| 17 19 |  | 
| 18 | 
            -
             | 
| 19 20 | 
             
                def production?
         | 
| 20 21 | 
             
                  ENV['JEKYLL_ENV'] == 'production'
         | 
| 21 22 | 
             
                end
         | 
| @@ -57,14 +58,18 @@ module JekyllRecker | |
| 57 58 | 
             
                  recker_config.fetch('graphs', 'assets/images/graphs/')
         | 
| 58 59 | 
             
                end
         | 
| 59 60 |  | 
| 61 | 
            +
                def data_dir
         | 
| 62 | 
            +
                  File.join Bundler.root, '_data'
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 60 65 | 
             
                private
         | 
| 61 66 |  | 
| 62 67 | 
             
                def build_entries
         | 
| 63 68 | 
             
                  @site.posts.docs
         | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 69 | 
            +
                       .select(&:published?)
         | 
| 70 | 
            +
                       .sort_by(&:date)
         | 
| 71 | 
            +
                       .reverse
         | 
| 72 | 
            +
                       .map { |p| Entry.new(p) }
         | 
| 68 73 | 
             
                end
         | 
| 69 74 | 
             
              end
         | 
| 70 75 | 
             
            end
         | 
    
        data/lib/jekyll_recker/social.rb
    CHANGED
    
    | @@ -46,7 +46,7 @@ module JekyllRecker | |
| 46 46 | 
             
                  def config_key
         | 
| 47 47 | 
             
                    self.class.const_get(:KEY)
         | 
| 48 48 | 
             
                  end
         | 
| 49 | 
            -
                  alias  | 
| 49 | 
            +
                  alias name config_key
         | 
| 50 50 |  | 
| 51 51 | 
             
                  def post_body
         | 
| 52 52 | 
             
                    <<~BODY
         | 
| @@ -90,22 +90,29 @@ module JekyllRecker | |
| 90 90 | 
             
                  end
         | 
| 91 91 |  | 
| 92 92 | 
             
                  def post!
         | 
| 93 | 
            -
                    message_body = ::Slack::Notifier::Util::LinkFormatter.format(post_body)
         | 
| 94 93 | 
             
                    workspaces.each do |key, config|
         | 
| 95 94 | 
             
                      info "posting to #{key} workspace"
         | 
| 96 95 | 
             
                      if @dry
         | 
| 97 | 
            -
                        puts "BEGIN MESSAGE\n#{ | 
| 96 | 
            +
                        puts "BEGIN MESSAGE\n#{post_body.strip}\nEND MESSAGE"
         | 
| 98 97 | 
             
                      else
         | 
| 99 | 
            -
                         | 
| 100 | 
            -
                          @creds[key].strip,
         | 
| 101 | 
            -
                          channel: config.fetch('channel'),
         | 
| 102 | 
            -
                          username: config.fetch('username'),
         | 
| 103 | 
            -
                          icon_emoji: config.fetch('emoji')
         | 
| 104 | 
            -
                        ).post(text: message_body)
         | 
| 98 | 
            +
                        post(key, config)
         | 
| 105 99 | 
             
                      end
         | 
| 106 100 | 
             
                    end
         | 
| 107 101 | 
             
                  end
         | 
| 108 102 |  | 
| 103 | 
            +
                  def post(key, config)
         | 
| 104 | 
            +
                    ::Slack::Notifier.new(
         | 
| 105 | 
            +
                      @creds[key].strip,
         | 
| 106 | 
            +
                      channel: config.fetch('channel'),
         | 
| 107 | 
            +
                      username: config.fetch('username'),
         | 
| 108 | 
            +
                      icon_emoji: config.fetch('emoji')
         | 
| 109 | 
            +
                    ).post(text: message_body)
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  def post_body
         | 
| 113 | 
            +
                    ::Slack::Notifier::Util::LinkFormatter.format(super)
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 109 116 | 
             
                  private
         | 
| 110 117 |  | 
| 111 118 | 
             
                  def extract_from_config(data)
         |