jekyll-antex 0.4.0 → 0.5.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/antex/alias.rb +0 -1
 - data/lib/jekyll/antex/block.rb +22 -18
 - data/lib/jekyll/antex/dealiaser.rb +48 -0
 - data/lib/jekyll/antex/version.rb +1 -1
 - data/lib/jekyll/antex.rb +47 -6
 - metadata +9 -9
 - data/lib/jekyll/antex/generator.rb +0 -67
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 04f40e277c4a44f0177d6528c0b23cf3fe814d02b0d62bf8b33285649f6ff77a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 86af7068b8c90b17ddeed5e17ecb5406868374c8ab2516dd40805c1ef415fd73
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8bc58c1233337a4a117b66a6adf30398e166f5b2f87aef95dcac232031c8fd1911e3997a656f3b02d6ee587e5fb76fbe6095ecaba8aafa6527a2ba654c20f348
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ad91f452823da9f27eb777238ae95cff9fea0803fe5a8dc0dc142d642aa818dd5192dd832a054526040cf6bbe1f79a49ee83cbdd72607ee99945a05ab7e5f6b7
         
     | 
    
        data/lib/jekyll/antex/alias.rb
    CHANGED
    
    
    
        data/lib/jekyll/antex/block.rb
    CHANGED
    
    | 
         @@ -9,6 +9,10 @@ require 'jekyll/antex/options' 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            module Jekyll
         
     | 
| 
       11 
11 
     | 
    
         
             
              module Antex
         
     | 
| 
      
 12 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 13 
     | 
    
         
            +
                  attr_accessor :jobs
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       12 
16 
     | 
    
         
             
                class Block < Liquid::Block
         
     | 
| 
       13 
17 
     | 
    
         
             
                  def initialize(tag, markup, tokens)
         
     | 
| 
       14 
18 
     | 
    
         
             
                    @markup = markup
         
     | 
| 
         @@ -18,45 +22,47 @@ module Jekyll 
     | 
|
| 
       18 
22 
     | 
    
         
             
                  def render(context)
         
     | 
| 
       19 
23 
     | 
    
         
             
                    options = build_options registers: context.registers, markup: @markup
         
     | 
| 
       20 
24 
     | 
    
         
             
                    job = ::Antex::Job.new snippet: super, options: options
         
     | 
| 
       21 
     | 
    
         
            -
                    job. 
     | 
| 
      
 25 
     | 
    
         
            +
                    Jekyll::Antex.jobs.store(job.hash, job)
         
     | 
| 
       22 
26 
     | 
    
         
             
                    add_static_file context.registers[:site], job
         
     | 
| 
       23 
     | 
    
         
            -
                    render_html 
     | 
| 
      
 27 
     | 
    
         
            +
                    self.class.render_html(job)
         
     | 
| 
       24 
28 
     | 
    
         
             
                  end
         
     | 
| 
       25 
29 
     | 
    
         | 
| 
       26 
30 
     | 
    
         
             
                  private
         
     | 
| 
       27 
31 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                  def render_html(job)
         
     | 
| 
       29 
     | 
    
         
            -
                    img_tag = render_img_tag  
     | 
| 
       30 
     | 
    
         
            -
                                             set_box: job.set_box
         
     | 
| 
      
 32 
     | 
    
         
            +
                  def self.render_html(job)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    img_tag = render_img_tag job
         
     | 
| 
       31 
34 
     | 
    
         
             
                    classes = job.options['classes'].join(' ')
         
     | 
| 
       32 
35 
     | 
    
         
             
                    "<span class='#{classes}'>#{img_tag}</span>"
         
     | 
| 
       33 
36 
     | 
    
         
             
                  end
         
     | 
| 
       34 
37 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                  def render_img_tag( 
     | 
| 
      
 38 
     | 
    
         
            +
                  def self.render_img_tag(job)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    "<img data-antex='#{job.hash}' src='#{img_url(job)}' />"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  def self.render_style_attribute(job_set_box, precision: 3)
         
     | 
| 
       36 
43 
     | 
    
         
             
                    <<~IMG_TAG.gsub(/(\s\s+)/m, ' ').strip!
         
     | 
| 
       37 
     | 
    
         
            -
                       
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                          src='#{src}' />
         
     | 
| 
      
 44 
     | 
    
         
            +
                      style='margin: #{job_set_box.mt.round(precision)}ex
         
     | 
| 
      
 45 
     | 
    
         
            +
                                     #{job_set_box.mr.round(precision)}ex
         
     | 
| 
      
 46 
     | 
    
         
            +
                                     #{job_set_box.mb.round(precision)}ex
         
     | 
| 
      
 47 
     | 
    
         
            +
                                     #{job_set_box.ml.round(precision)}ex;
         
     | 
| 
      
 48 
     | 
    
         
            +
                             height: #{job_set_box.th.round(precision)}ex;
         
     | 
| 
      
 49 
     | 
    
         
            +
                             width:  #{job_set_box.wd.round(precision)}ex;'
         
     | 
| 
       44 
50 
     | 
    
         
             
                    IMG_TAG
         
     | 
| 
       45 
51 
     | 
    
         
             
                  end
         
     | 
| 
       46 
52 
     | 
    
         | 
| 
       47 
53 
     | 
    
         
             
                  def add_static_file(site, job)
         
     | 
| 
       48 
54 
     | 
    
         
             
                    site.static_files << Jekyll::StaticFile.new(
         
     | 
| 
       49 
     | 
    
         
            -
                      site, *static_file_paths(job)
         
     | 
| 
      
 55 
     | 
    
         
            +
                      site, *self.class.static_file_paths(job)
         
     | 
| 
       50 
56 
     | 
    
         
             
                    )
         
     | 
| 
       51 
57 
     | 
    
         
             
                  end
         
     | 
| 
       52 
58 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                  def img_url(job)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  def self.img_url(job)
         
     | 
| 
       54 
60 
     | 
    
         
             
                    _, dest_dir, filename = static_file_paths job
         
     | 
| 
       55 
61 
     | 
    
         
             
                    url_path_prefix = job.options['url_path_prefix'] || '/'
         
     | 
| 
       56 
62 
     | 
    
         
             
                    File.join url_path_prefix, dest_dir, filename
         
     | 
| 
       57 
63 
     | 
    
         
             
                  end
         
     | 
| 
       58 
64 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                  def static_file_paths(job)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  def self.static_file_paths(job)
         
     | 
| 
       60 
66 
     | 
    
         
             
                    work_dir_prefix = %r{^#{Regexp.escape job.dirs['work']}(?=\/|$)}
         
     | 
| 
       61 
67 
     | 
    
         
             
                    # base, dir, name
         
     | 
| 
       62 
68 
     | 
    
         
             
                    [
         
     | 
| 
         @@ -75,5 +81,3 @@ module Jekyll 
     | 
|
| 
       75 
81 
     | 
    
         
             
                end
         
     | 
| 
       76 
82 
     | 
    
         
             
              end
         
     | 
| 
       77 
83 
     | 
    
         
             
            end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            Liquid::Template.register_tag('antex', Jekyll::Antex::Block)
         
     | 
| 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'jekyll/antex/alias'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'jekyll/antex/guard'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'jekyll/antex/stasher'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'jekyll/antex/options'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Jekyll
         
     | 
| 
      
 9 
     | 
    
         
            +
              module Antex
         
     | 
| 
      
 10 
     | 
    
         
            +
                module Dealiaser
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def self.run(resource)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    options = build_options(resource)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    guarder = build_guarder(options)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    aliaser = build_aliaser(options)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    content = aliaser.lift(guarder.lift(resource.content))
         
     | 
| 
      
 16 
     | 
    
         
            +
                    aliaser.bake(&method(:dealias_tag))
         
     | 
| 
      
 17 
     | 
    
         
            +
                    guarder.drop(aliaser.drop(content))
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def self.build_options(resource)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    Jekyll::Antex::Options.build(
         
     | 
| 
      
 22 
     | 
    
         
            +
                      Jekyll::Antex::Options::DEFAULTS,
         
     | 
| 
      
 23 
     | 
    
         
            +
                      resource.site.config['antex'] || {},
         
     | 
| 
      
 24 
     | 
    
         
            +
                      resource.data['antex'] || {}
         
     | 
| 
      
 25 
     | 
    
         
            +
                    )
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def self.build_guarder(options)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    Jekyll::Antex::Stasher.new(
         
     | 
| 
      
 30 
     | 
    
         
            +
                      options['guards'].values.map(&Guard.method(:new))
         
     | 
| 
      
 31 
     | 
    
         
            +
                    )
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  def self.build_aliaser(options)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    Jekyll::Antex::Stasher.new(
         
     | 
| 
      
 36 
     | 
    
         
            +
                      options['aliases'].values.map(&Alias.method(:new))
         
     | 
| 
      
 37 
     | 
    
         
            +
                    )
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  def self.dealias_tag(match, matcher)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    markup = YAML.safe_load match[:markup] if match.names.include?('markup')
         
     | 
| 
      
 42 
     | 
    
         
            +
                    markup = YAML.dump Options.build(matcher.options || {}, markup || {})
         
     | 
| 
      
 43 
     | 
    
         
            +
                    code = match['code']
         
     | 
| 
      
 44 
     | 
    
         
            +
                    "{% antex #{markup} %}#{code}{% endantex %}"
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/jekyll/antex/version.rb
    CHANGED
    
    
    
        data/lib/jekyll/antex.rb
    CHANGED
    
    | 
         @@ -3,10 +3,51 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require 'antex'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            require 'jekyll/antex/version'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'jekyll/antex/ 
     | 
| 
       7 
     | 
    
         
            -
            require 'jekyll/antex/options'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'jekyll/antex/guard'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'jekyll/antex/stasher'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'jekyll/antex/alias'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'jekyll/antex/generator'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'jekyll/antex/dealiaser'
         
     | 
| 
       12 
7 
     | 
    
         
             
            require 'jekyll/antex/block'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            require 'byebug'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            module Jekyll
         
     | 
| 
      
 12 
     | 
    
         
            +
              module Antex
         
     | 
| 
      
 13 
     | 
    
         
            +
                def self.run_jobs
         
     | 
| 
      
 14 
     | 
    
         
            +
                  jobs_count = Jekyll::Antex.jobs.count
         
     | 
| 
      
 15 
     | 
    
         
            +
                  Jekyll.logger.writer << "Compiling TeX: ".rjust(20)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Jekyll::Antex.jobs.values.each_with_index do |job, i|
         
     | 
| 
      
 17 
     | 
    
         
            +
                    progress = "job " + i.next.to_s.rjust(jobs_count.to_s.length) + " of #{jobs_count} "
         
     | 
| 
      
 18 
     | 
    
         
            +
                    Jekyll.logger.writer << progress
         
     | 
| 
      
 19 
     | 
    
         
            +
                    job.run!
         
     | 
| 
      
 20 
     | 
    
         
            +
                    Jekyll.logger.writer << "\b" * progress.length
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Jekyll.logger.writer << "#{jobs_count} jobs completed.\n"
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def self.inject_style_attributes(output)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  output.gsub(/data-antex="(?<hash>.*?)"/) do
         
     | 
| 
      
 27 
     | 
    
         
            +
                    job = Jekyll::Antex.jobs[Regexp.last_match[:hash]]
         
     | 
| 
      
 28 
     | 
    
         
            +
                    Jekyll::Antex::Block.render_style_attribute(job.set_box)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            # NOTE: I'm conflicted, but regexp flags in yaml must be easy to use.
         
     | 
| 
      
 35 
     | 
    
         
            +
            SafeYAML::OPTIONS[:whitelisted_tags].push('!ruby/regexp')
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            Jekyll::Hooks.register :site, :pre_render do
         
     | 
| 
      
 38 
     | 
    
         
            +
              Jekyll::Antex.jobs = {}
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # NOTE: we're not registering :posts since they are included in :documents.
         
     | 
| 
      
 42 
     | 
    
         
            +
            Jekyll::Hooks.register [:documents, :pages], :pre_render do |resource|
         
     | 
| 
      
 43 
     | 
    
         
            +
              resource.content = Jekyll::Antex::Dealiaser.run(resource)
         
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            Liquid::Template.register_tag('antex', Jekyll::Antex::Block)
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            Jekyll::Hooks.register :site, :post_render do |site|
         
     | 
| 
      
 49 
     | 
    
         
            +
              Jekyll::Antex.run_jobs
         
     | 
| 
      
 50 
     | 
    
         
            +
              [*site.pages, *site.documents].each do |resource|
         
     | 
| 
      
 51 
     | 
    
         
            +
                resource.output = Jekyll::Antex.inject_style_attributes(resource.output)
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,43 +1,43 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: jekyll-antex
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Paolo Brasolin
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-09-12 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name:  
     | 
| 
      
 14 
     | 
    
         
            +
              name: antex
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0.1'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0.1'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name:  
     | 
| 
      
 28 
     | 
    
         
            +
              name: jekyll
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
31 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '3.8'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
38 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '3.8'
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
42 
     | 
    
         
             
              name: byebug
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -162,9 +162,9 @@ files: 
     | 
|
| 
       162 
162 
     | 
    
         
             
            - lib/jekyll/antex.rb
         
     | 
| 
       163 
163 
     | 
    
         
             
            - lib/jekyll/antex/alias.rb
         
     | 
| 
       164 
164 
     | 
    
         
             
            - lib/jekyll/antex/block.rb
         
     | 
| 
      
 165 
     | 
    
         
            +
            - lib/jekyll/antex/dealiaser.rb
         
     | 
| 
       165 
166 
     | 
    
         
             
            - lib/jekyll/antex/defaults.yml
         
     | 
| 
       166 
167 
     | 
    
         
             
            - lib/jekyll/antex/error.rb
         
     | 
| 
       167 
     | 
    
         
            -
            - lib/jekyll/antex/generator.rb
         
     | 
| 
       168 
168 
     | 
    
         
             
            - lib/jekyll/antex/guard.rb
         
     | 
| 
       169 
169 
     | 
    
         
             
            - lib/jekyll/antex/options.rb
         
     | 
| 
       170 
170 
     | 
    
         
             
            - lib/jekyll/antex/stasher.rb
         
     | 
| 
         @@ -1,67 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'jekyll'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'jekyll/utils'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            require 'jekyll/antex/alias'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'jekyll/antex/guard'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'jekyll/antex/stasher'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'jekyll/antex/options'
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            # NOTE: I'm pretty conflicted about this.
         
     | 
| 
       12 
     | 
    
         
            -
            SafeYAML::OPTIONS[:whitelisted_tags].push('!ruby/regexp')
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            module Jekyll
         
     | 
| 
       15 
     | 
    
         
            -
              module Antex
         
     | 
| 
       16 
     | 
    
         
            -
                class Generator < Jekyll::Generator
         
     | 
| 
       17 
     | 
    
         
            -
                  def generate(site)
         
     | 
| 
       18 
     | 
    
         
            -
                    site.pages.each do |page|
         
     | 
| 
       19 
     | 
    
         
            -
                      dealias_resource_content! site: site, resource: page
         
     | 
| 
       20 
     | 
    
         
            -
                    end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    # NOTE: jekyll deprecated direct access to site.posts.each
         
     | 
| 
       23 
     | 
    
         
            -
                    site.posts.docs.each do |post|
         
     | 
| 
       24 
     | 
    
         
            -
                      dealias_resource_content! site: site, resource: post
         
     | 
| 
       25 
     | 
    
         
            -
                    end
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  private
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  def dealias_resource_content!(site:, resource:)
         
     | 
| 
       31 
     | 
    
         
            -
                    options = build_options site: site, resource: resource
         
     | 
| 
       32 
     | 
    
         
            -
                    guardian = Jekyll::Antex::Stasher.new(build_guards(options['guards']))
         
     | 
| 
       33 
     | 
    
         
            -
                    dealiaser = Jekyll::Antex::Stasher.new(build_aliases(options['aliases']))
         
     | 
| 
       34 
     | 
    
         
            -
                    resource.content = guardian.lift(resource.content)
         
     | 
| 
       35 
     | 
    
         
            -
                    resource.content = dealiaser.lift(resource.content)
         
     | 
| 
       36 
     | 
    
         
            -
                    dealiaser.bake(&self.class.method(:dealias_tag))
         
     | 
| 
       37 
     | 
    
         
            -
                    resource.content = dealiaser.drop(resource.content)
         
     | 
| 
       38 
     | 
    
         
            -
                    resource.content = guardian.drop(resource.content)
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                  def build_options(site:, resource:)
         
     | 
| 
       42 
     | 
    
         
            -
                    Jekyll::Antex::Options.build Jekyll::Antex::Options::DEFAULTS,
         
     | 
| 
       43 
     | 
    
         
            -
                                                 site.config['antex'] || {},
         
     | 
| 
       44 
     | 
    
         
            -
                                                 resource.data['antex'] || {}
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                  def build_guards(options_hash)
         
     | 
| 
       48 
     | 
    
         
            -
                    options_hash.values.map do |args|
         
     | 
| 
       49 
     | 
    
         
            -
                      Guard.new Jekyll::Utils.symbolize_hash_keys(args)
         
     | 
| 
       50 
     | 
    
         
            -
                    end
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  def build_aliases(options_hash)
         
     | 
| 
       54 
     | 
    
         
            -
                    options_hash.values.map do |args|
         
     | 
| 
       55 
     | 
    
         
            -
                      Alias.new Jekyll::Utils.symbolize_hash_keys(args)
         
     | 
| 
       56 
     | 
    
         
            -
                    end
         
     | 
| 
       57 
     | 
    
         
            -
                  end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                  def self.dealias_tag(match, matcher)
         
     | 
| 
       60 
     | 
    
         
            -
                    markup = YAML.safe_load match[:markup] if match.names.include?('markup')
         
     | 
| 
       61 
     | 
    
         
            -
                    markup = YAML.dump Options.build(matcher.options || {}, markup || {})
         
     | 
| 
       62 
     | 
    
         
            -
                    code = match['code']
         
     | 
| 
       63 
     | 
    
         
            -
                    "{% antex #{markup} %}#{code}{% endantex %}"
         
     | 
| 
       64 
     | 
    
         
            -
                  end
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
              end
         
     | 
| 
       67 
     | 
    
         
            -
            end
         
     |