jekyll-scholar 6.8.0 → 7.1.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/README.md +4 -4
- data/features/nocite.feature +78 -0
- data/features/page_config.feature +30 -0
- data/jekyll-scholar.gemspec +1 -1
- data/lib/jekyll/scholar/converters/bibtex.rb +2 -2
- data/lib/jekyll/scholar/tags/nocite.rb +28 -0
- data/lib/jekyll/scholar/utilities.rb +15 -2
- data/lib/jekyll/scholar/version.rb +1 -1
- data/lib/jekyll/scholar.rb +1 -0
- metadata +8 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 287c638fa9bd7e062280db1af05a5d98cc9d509c423ce1b8d0f7d948f3498b16
         | 
| 4 | 
            +
              data.tar.gz: 606db44855a017a7694b61560ef7779c95118f461301298e7875bc1fbf5d2785
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: babca3507daca599a095c21b0c7d517bc6dd0ad3e4f3cce22763b36784fc8be09fe84d2af9b32efdf221239a4ef4b0bdbbd9b85d7eca513368e2e6e6e99297c7
         | 
| 7 | 
            +
              data.tar.gz: c40b99a30e36cce98d1bcc11fb3e9bf53dd0c605f79b1701499f7d21a91fe63f26ad836cff952d9ca8bba7d2c52b89fbb25afff87cade2faf404f4808f5d69a4
         | 
    
        data/README.md
    CHANGED
    
    | @@ -32,7 +32,7 @@ You can keep sources, configuration and plugins in a separate branch; see e.g. | |
| 32 32 | 
             
              [here](http://davidensinger.com/2013/07/automating-jekyll-deployment-to-github-pages-with-rake/)
         | 
| 33 33 | 
             
            for details.
         | 
| 34 34 |  | 
| 35 | 
            -
             | 
| 35 | 
            +
            Alternatively, you can use a [Github Actions](https://github.com/features/actions) called [jekyll-action](https://github.com/helaili/jekyll-action) to deploy your site to Github Pages
         | 
| 36 36 |  | 
| 37 37 | 
             
            Usage
         | 
| 38 38 | 
             
            -----
         | 
| @@ -53,10 +53,10 @@ configuration: | |
| 53 53 |  | 
| 54 54 | 
             
            In your Jekyll configuration file you can adjust the Jekyll-Scholar settings
         | 
| 55 55 | 
             
            using the `scholar` key. For example, the following sets the bibliography style
         | 
| 56 | 
            -
            to ` | 
| 56 | 
            +
            to `modern-language-association`.
         | 
| 57 57 |  | 
| 58 58 | 
             
                scholar:
         | 
| 59 | 
            -
                  style:  | 
| 59 | 
            +
                  style: modern-language-association
         | 
| 60 60 |  | 
| 61 61 | 
             
            The table below describes some commonly used configuration options. For a
         | 
| 62 62 | 
             
            description of all options and their defaults, see
         | 
| @@ -64,7 +64,7 @@ description of all options and their defaults, see | |
| 64 64 |  | 
| 65 65 | 
             
            | Option | Default | Description |
         | 
| 66 66 | 
             
            |--------|---------|-------------|
         | 
| 67 | 
            -
            | `style` | `apa` | Indicates the style used for the bibliography and citations. You can use any style that ships with [CiteProc-Ruby](https://github.com/inukshuk/citeproc-ruby) by name (e.g., apa,  | 
| 67 | 
            +
            | `style` | `apa` | Indicates the style used for the bibliography and citations. You can use any style that ships with [CiteProc-Ruby](https://github.com/inukshuk/citeproc-ruby) by name (e.g., apa, chicago-fullnote-bibliography) which is usually the filename as seen [here](https://github.com/citation-style-language/styles) without the `.csl` ending; note that you have to use `dependent/style` if you want to use one from that directory. Alternatively you can add a link to any CSL  style (e.g., you could link to any of the styles available at the official [CSL style repository](https://github.com/citation-style-language/styles)). |
         | 
| 68 68 | 
             
            | `locale` | `en` | Defines what language to use when formatting your references (this typically applies to localized terms, e.g., 'Eds.' for editors in English). |
         | 
| 69 69 | 
             
            | `source` | `./_bibliography` |  Indicates where your bibliographies are stored. |
         | 
| 70 70 | 
             
            | `bibliography` | `references.bib` | Indicates the name of your default bibliography. For best results, please ensure that your bibliography is encoded as ASCII or UTF-8. A string that contains a `*` will be passed to `Dir::glob`, so `**/*.bib{,tex}` will find all files named `*.bib` and `*.bibtex` under `source`.  |
         | 
| @@ -0,0 +1,78 @@ | |
| 1 | 
            +
            Feature: Nocited Bibliographies
         | 
| 2 | 
            +
              As a scholar who likes to blog
         | 
| 3 | 
            +
              I want to sort my bibliography by hand
         | 
| 4 | 
            +
              But do not want to cite anything
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              Scenario: Nocite references from a single bibliography
         | 
| 7 | 
            +
                Given I have a scholar configuration with:
         | 
| 8 | 
            +
                  | key    | value             |
         | 
| 9 | 
            +
                  | source | ./_bibliography   |
         | 
| 10 | 
            +
                And I have a "_bibliography" directory
         | 
| 11 | 
            +
                And I have a file "_bibliography/references.bib":
         | 
| 12 | 
            +
                  """
         | 
| 13 | 
            +
                  @book{ruby1,
         | 
| 14 | 
            +
                    title     = {The Ruby Programming Language},
         | 
| 15 | 
            +
                    author    = {Flanagan, David and Matsumoto, Yukihiro},
         | 
| 16 | 
            +
                    year      = {2008},
         | 
| 17 | 
            +
                    publisher = {O'Reilly Media}
         | 
| 18 | 
            +
                  },
         | 
| 19 | 
            +
                  @book{ruby2,
         | 
| 20 | 
            +
                    title     = {Ruby Not Cited},
         | 
| 21 | 
            +
                    author    = {Flanagan, David and Matsumoto, Yukihiro},
         | 
| 22 | 
            +
                    year      = {2007},
         | 
| 23 | 
            +
                    publisher = {O'Reilly Media}
         | 
| 24 | 
            +
                  },
         | 
| 25 | 
            +
                  @book{smalltalk,
         | 
| 26 | 
            +
                    title     = {Smalltalk Best Practice Patterns},
         | 
| 27 | 
            +
                    author    = {Kent Beck},
         | 
| 28 | 
            +
                    year      = {1996},
         | 
| 29 | 
            +
                    publisher = {Prentice Hall}
         | 
| 30 | 
            +
                  }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  """
         | 
| 33 | 
            +
                And I have a page "scholar.html":
         | 
| 34 | 
            +
                  """
         | 
| 35 | 
            +
                  ---
         | 
| 36 | 
            +
                  ---
         | 
| 37 | 
            +
                  {% nocite smalltalk ruby1 %}
         | 
| 38 | 
            +
                  {% bibliography --cited %}
         | 
| 39 | 
            +
                  """
         | 
| 40 | 
            +
                When I run jekyll
         | 
| 41 | 
            +
                Then the _site directory should exist
         | 
| 42 | 
            +
                And the "_site/scholar.html" file should exist
         | 
| 43 | 
            +
                And I should see "<i>Smalltalk Best Practice Patterns</i>" in "_site/scholar.html"
         | 
| 44 | 
            +
                And I should see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
         | 
| 45 | 
            +
                And I should not see "<i>Ruby Not Cited</i>" in "_site/scholar.html"
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            Scenario: No nocite references results in empty bibliography
         | 
| 48 | 
            +
                Given I have a scholar configuration with:
         | 
| 49 | 
            +
                  | key    | value             |
         | 
| 50 | 
            +
                  | source | ./_bibliography   |
         | 
| 51 | 
            +
                And I have a "_bibliography" directory
         | 
| 52 | 
            +
                And I have a file "_bibliography/references.bib":
         | 
| 53 | 
            +
                  """
         | 
| 54 | 
            +
                  @book{ruby,
         | 
| 55 | 
            +
                    title     = {The Ruby Programming Language},
         | 
| 56 | 
            +
                    author    = {Flanagan, David and Matsumoto, Yukihiro},
         | 
| 57 | 
            +
                    year      = {2008},
         | 
| 58 | 
            +
                    publisher = {O'Reilly Media}
         | 
| 59 | 
            +
                  },
         | 
| 60 | 
            +
                  @book{smalltalk,
         | 
| 61 | 
            +
                    title     = {Smalltalk Best Practice Patterns},
         | 
| 62 | 
            +
                    author    = {Kent Beck},
         | 
| 63 | 
            +
                    year      = {1996},
         | 
| 64 | 
            +
                    publisher = {Prentice Hall}
         | 
| 65 | 
            +
                  }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  """
         | 
| 68 | 
            +
                And I have a page "scholar.html":
         | 
| 69 | 
            +
                  """
         | 
| 70 | 
            +
                  ---
         | 
| 71 | 
            +
                  ---
         | 
| 72 | 
            +
                  {% bibliography --cited %}
         | 
| 73 | 
            +
                  """
         | 
| 74 | 
            +
                When I run jekyll
         | 
| 75 | 
            +
                Then the _site directory should exist
         | 
| 76 | 
            +
                And the "_site/scholar.html" file should exist
         | 
| 77 | 
            +
                And I should not see "<i>Smalltalk Best Practice Patterns</i>" in "_site/scholar.html"
         | 
| 78 | 
            +
                And I should not see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
         | 
| @@ -40,3 +40,33 @@ Feature: Page Configuration | |
| 40 40 | 
             
                And I should see "The Ruby Programming Language" in "_site/scholar.html"
         | 
| 41 41 | 
             
                And I should not see "Programming Ruby" in "_site/scholar.html"
         | 
| 42 42 |  | 
| 43 | 
            +
             | 
| 44 | 
            +
              @tags
         | 
| 45 | 
            +
              Scenario: Template access to page config
         | 
| 46 | 
            +
                Given I have a scholar configuration with:
         | 
| 47 | 
            +
                  | key                   | value                     |
         | 
| 48 | 
            +
                  | source                | ./_bibliography           |
         | 
| 49 | 
            +
                  | bibliography_template | <p>{{page.scholar.x}}</p> |
         | 
| 50 | 
            +
                And I have a "_bibliography" directory
         | 
| 51 | 
            +
                And I have a file "_bibliography/references.bib":
         | 
| 52 | 
            +
                  """
         | 
| 53 | 
            +
                  @book{ruby,
         | 
| 54 | 
            +
                    title     = {The Ruby Programming Language},
         | 
| 55 | 
            +
                    author    = {Flanagan, David and Matsumoto, Yukihiro},
         | 
| 56 | 
            +
                    year      = {2008},
         | 
| 57 | 
            +
                    publisher = {O'Reilly Media}
         | 
| 58 | 
            +
                  }
         | 
| 59 | 
            +
                  """
         | 
| 60 | 
            +
                And I have a page "scholar.html":
         | 
| 61 | 
            +
                  """
         | 
| 62 | 
            +
                  ---
         | 
| 63 | 
            +
                  scholar:
         | 
| 64 | 
            +
                    x: Asa-Nisi-Masa
         | 
| 65 | 
            +
                  ---
         | 
| 66 | 
            +
                  {% bibliography %}
         | 
| 67 | 
            +
                  """
         | 
| 68 | 
            +
                When I run jekyll
         | 
| 69 | 
            +
                Then the _site directory should exist
         | 
| 70 | 
            +
                And the "_site/scholar.html" file should exist
         | 
| 71 | 
            +
                And I should see "<p>Asa-Nisi-Masa</p>" in "_site/scholar.html"
         | 
| 72 | 
            +
             | 
    
        data/jekyll-scholar.gemspec
    CHANGED
    
    | @@ -27,7 +27,7 @@ Gem::Specification.new do |s| | |
| 27 27 | 
             
              s.add_runtime_dependency('jekyll', '~> 4.0')
         | 
| 28 28 | 
             
              s.add_runtime_dependency('citeproc-ruby', '~> 1.0')
         | 
| 29 29 | 
             
              s.add_runtime_dependency('csl-styles', '~> 1.0')
         | 
| 30 | 
            -
              s.add_runtime_dependency('bibtex-ruby', '~>  | 
| 30 | 
            +
              s.add_runtime_dependency('bibtex-ruby', '~> 6.0')
         | 
| 31 31 |  | 
| 32 32 | 
             
              s.files        = `git ls-files`.split("\n")
         | 
| 33 33 | 
             
              s.test_files   = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| @@ -17,7 +17,7 @@ module Jekyll | |
| 17 17 |  | 
| 18 18 | 
             
                  def initialize(config = {})
         | 
| 19 19 | 
             
                    super
         | 
| 20 | 
            -
                    @config | 
| 20 | 
            +
                    @config = Scholar.defaults.merge(@config['scholar'] || {})
         | 
| 21 21 | 
             
                    @markdown = Jekyll::Converters::Markdown.new(config)
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 |  | 
| @@ -31,7 +31,7 @@ module Jekyll | |
| 31 31 |  | 
| 32 32 | 
             
                  def convert(content)
         | 
| 33 33 | 
             
                    content = BibTeX.parse(content, :strict => true, :include => [:meta_content],
         | 
| 34 | 
            -
                                           :filter =>  | 
| 34 | 
            +
                                           :filter => config['bibtex_filters']).map do |b|
         | 
| 35 35 | 
             
                      if b.respond_to?(:to_citeproc)
         | 
| 36 36 | 
             
                        render_bibliography b
         | 
| 37 37 | 
             
                      else
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              class Scholar
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                class NoCiteTag < Liquid::Tag
         | 
| 5 | 
            +
                  include Scholar::Utilities
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                  attr_reader :pages
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def initialize(tag_name, arguments, tokens)
         | 
| 10 | 
            +
                    super
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    @config = Scholar.defaults.dup
         | 
| 13 | 
            +
                    @keys, arguments = split_arguments(arguments)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    optparse(arguments)
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def render(context)
         | 
| 19 | 
            +
                    set_context_to context
         | 
| 20 | 
            +
                    nocite keys
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            Liquid::Template.register_tag('nocite', Jekyll::Scholar::NoCiteTag)
         | 
| @@ -384,7 +384,7 @@ module Jekyll | |
| 384 384 | 
             
                  def month_names
         | 
| 385 385 | 
             
                    return @month_names unless @month_names.nil?
         | 
| 386 386 |  | 
| 387 | 
            -
                    @month_names = config['month_names'].nil? ? Date::MONTHNAMES : config['month_names'] | 
| 387 | 
            +
                    @month_names = config['month_names'].nil? ? Date::MONTHNAMES : [nil] + config['month_names']
         | 
| 388 388 | 
             
                  end
         | 
| 389 389 |  | 
| 390 390 | 
             
                  def remove_duplicates?
         | 
| @@ -527,10 +527,11 @@ module Jekyll | |
| 527 527 | 
             
                      .merge(site.site_payload)
         | 
| 528 528 | 
             
                      .merge({
         | 
| 529 529 | 
             
                      'index' => index,
         | 
| 530 | 
            +
                      'page' => context.registers[:page],
         | 
| 530 531 | 
             
                      'details' => details_link_for(entry)
         | 
| 531 532 | 
             
                    }),
         | 
| 532 533 | 
             
                    {
         | 
| 533 | 
            -
                      :registers =>  | 
| 534 | 
            +
                      :registers => context.registers,
         | 
| 534 535 | 
             
                      :filters => [Jekyll::Filters]
         | 
| 535 536 | 
             
                    })
         | 
| 536 537 | 
             
                  end
         | 
| @@ -730,6 +731,18 @@ module Jekyll | |
| 730 731 | 
             
                    link_to link_target_for(keys[0]), render_citation(items), {class: config['cite_class']}
         | 
| 731 732 | 
             
                  end
         | 
| 732 733 |  | 
| 734 | 
            +
                  def nocite(keys)
         | 
| 735 | 
            +
                    items = keys.map do |key|
         | 
| 736 | 
            +
                      if bibliography.key?(key)
         | 
| 737 | 
            +
                        entry = bibliography[key]
         | 
| 738 | 
            +
                        cited_keys << entry.key
         | 
| 739 | 
            +
                        cited_keys.uniq!
         | 
| 740 | 
            +
                      else
         | 
| 741 | 
            +
                        return missing_reference
         | 
| 742 | 
            +
                      end
         | 
| 743 | 
            +
                    end
         | 
| 744 | 
            +
                  end
         | 
| 745 | 
            +
             | 
| 733 746 | 
             
                  def cite_details(key, text)
         | 
| 734 747 | 
             
                    if bibliography.key?(key)
         | 
| 735 748 | 
             
                      link_to details_link_for(bibliography[key]), text || config['details_link']
         | 
    
        data/lib/jekyll/scholar.rb
    CHANGED
    
    | @@ -18,6 +18,7 @@ require 'jekyll/scholar/tags/bibtex' | |
| 18 18 | 
             
            require 'jekyll/scholar/tags/cite'
         | 
| 19 19 | 
             
            require 'jekyll/scholar/tags/cite_details'
         | 
| 20 20 | 
             
            require 'jekyll/scholar/tags/details_link'
         | 
| 21 | 
            +
            require 'jekyll/scholar/tags/nocite'
         | 
| 21 22 | 
             
            require 'jekyll/scholar/tags/quote'
         | 
| 22 23 | 
             
            require 'jekyll/scholar/tags/reference'
         | 
| 23 24 | 
             
            require 'jekyll/scholar/generators/details'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jekyll-scholar
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 7.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sylvester Keil
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-05-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: jekyll
         | 
| @@ -58,14 +58,14 @@ dependencies: | |
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '6.0'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '6.0'
         | 
| 69 69 | 
             
            description: " Jekyll-Scholar is for all the academic bloggers out there. It is a
         | 
| 70 70 | 
             
              set of extensions for Jekyll the awesome, blog aware, static site generator; it
         | 
| 71 71 | 
             
              formats your BibTeX bibliographies for the web using CSL citation styles and generally
         | 
| @@ -97,6 +97,7 @@ files: | |
| 97 97 | 
             
            - features/interpolate.feature
         | 
| 98 98 | 
             
            - features/layout.feature
         | 
| 99 99 | 
             
            - features/multiple_files.feature
         | 
| 100 | 
            +
            - features/nocite.feature
         | 
| 100 101 | 
             
            - features/page_config.feature
         | 
| 101 102 | 
             
            - features/reference.feature
         | 
| 102 103 | 
             
            - features/removeduplicate.feature
         | 
| @@ -127,6 +128,7 @@ files: | |
| 127 128 | 
             
            - lib/jekyll/scholar/tags/cite.rb
         | 
| 128 129 | 
             
            - lib/jekyll/scholar/tags/cite_details.rb
         | 
| 129 130 | 
             
            - lib/jekyll/scholar/tags/details_link.rb
         | 
| 131 | 
            +
            - lib/jekyll/scholar/tags/nocite.rb
         | 
| 130 132 | 
             
            - lib/jekyll/scholar/tags/quote.rb
         | 
| 131 133 | 
             
            - lib/jekyll/scholar/tags/reference.rb
         | 
| 132 134 | 
             
            - lib/jekyll/scholar/utilities.rb
         | 
| @@ -150,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 150 152 | 
             
                - !ruby/object:Gem::Version
         | 
| 151 153 | 
             
                  version: 1.3.6
         | 
| 152 154 | 
             
            requirements: []
         | 
| 153 | 
            -
            rubygems_version: 3. | 
| 155 | 
            +
            rubygems_version: 3.2.15
         | 
| 154 156 | 
             
            signing_key:
         | 
| 155 157 | 
             
            specification_version: 4
         | 
| 156 158 | 
             
            summary: Jekyll extensions for the academic blogger.
         | 
| @@ -168,6 +170,7 @@ test_files: | |
| 168 170 | 
             
            - features/interpolate.feature
         | 
| 169 171 | 
             
            - features/layout.feature
         | 
| 170 172 | 
             
            - features/multiple_files.feature
         | 
| 173 | 
            +
            - features/nocite.feature
         | 
| 171 174 | 
             
            - features/page_config.feature
         | 
| 172 175 | 
             
            - features/reference.feature
         | 
| 173 176 | 
             
            - features/removeduplicate.feature
         |