jekyll-scholar 4.0.5 → 4.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 +11 -4
- data/features/bibtex.feature +26 -0
- data/features/repository.feature +6 -1
- data/lib/jekyll/scholar.rb +1 -0
- data/lib/jekyll/scholar/tags/bibtex.rb +30 -0
- data/lib/jekyll/scholar/utilities.rb +19 -5
- data/lib/jekyll/scholar/version.rb +1 -1
- metadata +4 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3526ee5f1f1f511cb8af9059c0da3e82331ff87b
         | 
| 4 | 
            +
              data.tar.gz: 147e99c0e375f097015d4fa527c04d565f8011ae
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: cf53a90ba56215c0f4bd6bb5b68520766bdb7457f3f20f93b6de5668fc7d4840af3d49140cd558d09a2d10a3d0438be1e25cc227b76f318ab29c817cbe14bbb7
         | 
| 7 | 
            +
              data.tar.gz: e2cc049bc9eb96dc9425ef5fa475d7f5b0c0c8de4a6311c3456e67bdaeb0a5dd27c1692921de4d0a127e3cf746ffcc16ced4ac96d591ba8d6bfef871cbde0dff
         | 
    
        data/README.md
    CHANGED
    
    | @@ -379,12 +379,19 @@ Postscript files of your papers, you can use the configuration option | |
| 379 379 | 
             
            `repository` to indicate this directory. When generating bibliographies,
         | 
| 380 380 | 
             
            Jekyll-Scholar will look in that folder to see if it contains a filename
         | 
| 381 381 | 
             
            matching each entry's BibTeX key: if it does, the path to that file
         | 
| 382 | 
            -
            will be exposed to the bibliography template.
         | 
| 382 | 
            +
            will be exposed to the bibliography template as the `link` property.
         | 
| 383 | 
            +
             | 
| 384 | 
            +
            Since version 4.1.0 repositories are not limited to PDF and PS files.
         | 
| 385 | 
            +
            These files are mapped to the `links` property in your bibliography
         | 
| 386 | 
            +
            template. Here is an example of template that utilizes this feature
         | 
| 387 | 
            +
            to link to supporting material in a ZIP archive:
         | 
| 388 | 
            +
             | 
| 389 | 
            +
                {{ reference }} [<a href="{{links.zip}}">Supporting Materials</a>]
         | 
| 383 390 |  | 
| 384 391 | 
             
            ### Detail Pages
         | 
| 385 392 |  | 
| 386 393 | 
             
            If your layouts directory contains a layout file for bibliography details
         | 
| 387 | 
            -
            (the  | 
| 394 | 
            +
            (the `details_layout` configuration options), Jekyll-Scholar will generate
         | 
| 388 395 | 
             
            a details page for each entry in you main bibliography. That is to say, if
         | 
| 389 396 | 
             
            your bibliography contains the following entry:
         | 
| 390 397 |  | 
| @@ -437,8 +444,8 @@ configuration option. For example: | |
| 437 444 | 
             
                query: "@book" #=> includes only books
         | 
| 438 445 | 
             
                query: "@article[year>=2003]" #=> includes only articles published 2003 or later
         | 
| 439 446 | 
             
                query: "@*[url]" #=> includes all entries with a url field
         | 
| 440 | 
            -
                query: "@*[status!=review]" #=> includes all entries whose status field is not set to 'review' | 
| 441 | 
            -
                query: "@book[year <= 1900 && author ^= Poe]" #=> Books published before 1900 where the author matches /Poe/ | 
| 447 | 
            +
                query: "@*[status!=review]" #=> includes all entries whose status field is not set to 'review'
         | 
| 448 | 
            +
                query: "@book[year <= 1900 && author ^= Poe]" #=> Books published before 1900 where the author matches /Poe/
         | 
| 442 449 | 
             
                query: "!@book" #=> includes all entries with a type other than book
         | 
| 443 450 |  | 
| 444 451 | 
             
            Please note that some of these queries require BibTeX-Ruby 2.3.0 or
         | 
    
        data/features/bibtex.feature
    CHANGED
    
    | @@ -63,6 +63,32 @@ Feature: BibTeX | |
| 63 63 | 
             
                And the "_site/references.html" file should exist
         | 
| 64 64 | 
             
                And I should see "Look, an umlaut: ü!" in "_site/references.html"
         | 
| 65 65 |  | 
| 66 | 
            +
              @tags @bibtex @wip
         | 
| 67 | 
            +
              Scenario: Embedded BibTeX
         | 
| 68 | 
            +
                Given I have a scholar configuration with:
         | 
| 69 | 
            +
                  | key   | value |
         | 
| 70 | 
            +
                  | style | apa   |
         | 
| 71 | 
            +
                 And I have a page "references.md":
         | 
| 72 | 
            +
                  """
         | 
| 73 | 
            +
                  ---
         | 
| 74 | 
            +
                  ---
         | 
| 75 | 
            +
                  References
         | 
| 76 | 
            +
                  ==========
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  {% bibtex %}
         | 
| 79 | 
            +
                  @book{ruby,
         | 
| 80 | 
            +
                    title     = {The Ruby Programming Language},
         | 
| 81 | 
            +
                    author    = {Flanagan, David and Matsumoto, Yukihiro},
         | 
| 82 | 
            +
                    year      = {2008},
         | 
| 83 | 
            +
                    publisher = {O'Reilly Media}
         | 
| 84 | 
            +
                  }
         | 
| 85 | 
            +
                  {% endbibtex %}
         | 
| 86 | 
            +
                  """
         | 
| 87 | 
            +
                When I run jekyll
         | 
| 88 | 
            +
                Then the _site directory should exist
         | 
| 89 | 
            +
                And the "_site/references.html" file should exist
         | 
| 90 | 
            +
                And I should see "<i>The Ruby Programming Language</i>" in "_site/references.html"
         | 
| 91 | 
            +
             | 
| 66 92 | 
             
              @tags
         | 
| 67 93 | 
             
              Scenario: Simple Bibliography Loaded From Default Directory
         | 
| 68 94 | 
             
                Given I have a scholar configuration with:
         | 
    
        data/features/repository.feature
    CHANGED
    
    | @@ -25,12 +25,16 @@ Feature: PDF Repository | |
| 25 25 | 
             
                  """
         | 
| 26 26 | 
             
                  The PDF
         | 
| 27 27 | 
             
                  """
         | 
| 28 | 
            +
                And I have a file "papers/ruby.ppt":
         | 
| 29 | 
            +
                  """
         | 
| 30 | 
            +
                  The PPT
         | 
| 31 | 
            +
                  """
         | 
| 28 32 | 
             
                And I have a "_layouts" directory
         | 
| 29 33 | 
             
                And I have a file "_layouts/bibliography.html":
         | 
| 30 34 | 
             
                  """
         | 
| 31 35 | 
             
                  ---
         | 
| 32 36 | 
             
                  ---
         | 
| 33 | 
            -
                  {{ reference }} Link: {{ link }}
         | 
| 37 | 
            +
                  {{ reference }} Link: {{ link }} Slides: {{ links.ppt }}
         | 
| 34 38 | 
             
                  """
         | 
| 35 39 | 
             
                And I have a page "scholar.html":
         | 
| 36 40 | 
             
                  """
         | 
| @@ -43,6 +47,7 @@ Feature: PDF Repository | |
| 43 47 | 
             
                And the "_site/papers/ruby.pdf" file should exist
         | 
| 44 48 | 
             
                And I should see "The Ruby Programming Language" in "_site/scholar.html"
         | 
| 45 49 | 
             
                And I should see "Link: /papers/ruby.pdf" in "_site/scholar.html"
         | 
| 50 | 
            +
                And I should see "Slides: /papers/ruby.ppt" in "_site/scholar.html"
         | 
| 46 51 |  | 
| 47 52 |  | 
| 48 53 |  | 
    
        data/lib/jekyll/scholar.rb
    CHANGED
    
    | @@ -13,6 +13,7 @@ require 'jekyll/scholar/utilities' | |
| 13 13 |  | 
| 14 14 | 
             
            require 'jekyll/scholar/converters/bibtex'
         | 
| 15 15 | 
             
            require 'jekyll/scholar/tags/bibliography'
         | 
| 16 | 
            +
            require 'jekyll/scholar/tags/bibtex'
         | 
| 16 17 | 
             
            require 'jekyll/scholar/tags/cite'
         | 
| 17 18 | 
             
            require 'jekyll/scholar/tags/cite_details'
         | 
| 18 19 | 
             
            require 'jekyll/scholar/tags/quote'
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              class Scholar
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                class BibTeXTag < Liquid::Block
         | 
| 5 | 
            +
                  include Scholar::Utilities
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                  def initialize(tag_name, arguments, tokens)
         | 
| 8 | 
            +
                    super
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    @config = Scholar.defaults.dup
         | 
| 11 | 
            +
                    @keys, arguments = split_arguments arguments
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    optparse(arguments)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def render(context)
         | 
| 17 | 
            +
                    set_context_to context
         | 
| 18 | 
            +
                    
         | 
| 19 | 
            +
                    BibTeX.parse(super, bibtex_options).map { |entry|
         | 
| 20 | 
            +
                      reference_tag entry
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    }.join("\n")
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            Liquid::Template.register_tag('bibtex', Jekyll::Scholar::BibTeXTag)
         | 
| 30 | 
            +
             | 
| @@ -151,11 +151,16 @@ module Jekyll | |
| 151 151 | 
             
                  end
         | 
| 152 152 |  | 
| 153 153 | 
             
                  def load_repository
         | 
| 154 | 
            -
                     | 
| 154 | 
            +
                    repo = Hash.new { |h,k| h[k] = {} }
         | 
| 155 155 |  | 
| 156 | 
            -
                     | 
| 157 | 
            -
             | 
| 158 | 
            -
                     | 
| 156 | 
            +
                    return repo unless repository?
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                    Dir[File.join(repository_path, '**/*')].each do |path|
         | 
| 159 | 
            +
                      extname = File.extname(path)
         | 
| 160 | 
            +
                      repo[File.basename(path, extname)][extname[1..-1]] = path
         | 
| 161 | 
            +
                    end
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                    repo
         | 
| 159 164 | 
             
                  end
         | 
| 160 165 |  | 
| 161 166 | 
             
                  def repository_path
         | 
| @@ -241,6 +246,7 @@ module Jekyll | |
| 241 246 | 
             
                      'key' => entry.key,
         | 
| 242 247 | 
             
                      'type' => entry.type.to_s,
         | 
| 243 248 | 
             
                      'link' => repository_link_for(entry),
         | 
| 249 | 
            +
                      'links' => repository_links_for(entry),
         | 
| 244 250 | 
             
                      'index' => index,
         | 
| 245 251 | 
             
                      'details' => details_link_for(entry)
         | 
| 246 252 | 
             
                    })
         | 
| @@ -281,12 +287,20 @@ module Jekyll | |
| 281 287 | 
             
                  end
         | 
| 282 288 |  | 
| 283 289 | 
             
                  def repository_link_for(entry, base = base_url)
         | 
| 284 | 
            -
                     | 
| 290 | 
            +
                    links = repository[entry.key]
         | 
| 291 | 
            +
                    url   = links['pdf'] || links['ps']
         | 
| 292 | 
            +
             | 
| 285 293 | 
             
                    return unless url
         | 
| 286 294 |  | 
| 287 295 | 
             
                    File.join(base, url)
         | 
| 288 296 | 
             
                  end
         | 
| 289 297 |  | 
| 298 | 
            +
                  def repository_links_for(entry, base = base_url)
         | 
| 299 | 
            +
                    Hash[repository[entry.key].map { |ext, url|
         | 
| 300 | 
            +
                      [ext, File.join(base, url)]
         | 
| 301 | 
            +
                    }]
         | 
| 302 | 
            +
                  end
         | 
| 303 | 
            +
             | 
| 290 304 | 
             
                  def details_link_for(entry, base = base_url)
         | 
| 291 305 | 
             
                    File.join(base, details_path, details_file_for(entry))
         | 
| 292 306 | 
             
                  end
         | 
    
        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.0 | 
| 4 | 
            +
              version: 4.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: 2014- | 
| 11 | 
            +
            date: 2014-10-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: jekyll
         | 
| @@ -105,6 +105,7 @@ files: | |
| 105 105 | 
             
            - lib/jekyll/scholar/defaults.rb
         | 
| 106 106 | 
             
            - lib/jekyll/scholar/generators/details.rb
         | 
| 107 107 | 
             
            - lib/jekyll/scholar/tags/bibliography.rb
         | 
| 108 | 
            +
            - lib/jekyll/scholar/tags/bibtex.rb
         | 
| 108 109 | 
             
            - lib/jekyll/scholar/tags/cite.rb
         | 
| 109 110 | 
             
            - lib/jekyll/scholar/tags/cite_details.rb
         | 
| 110 111 | 
             
            - lib/jekyll/scholar/tags/quote.rb
         | 
| @@ -131,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 131 132 | 
             
                  version: 1.3.6
         | 
| 132 133 | 
             
            requirements: []
         | 
| 133 134 | 
             
            rubyforge_project: jekyll-scholar
         | 
| 134 | 
            -
            rubygems_version: 2. | 
| 135 | 
            +
            rubygems_version: 2.1.8
         | 
| 135 136 | 
             
            signing_key: 
         | 
| 136 137 | 
             
            specification_version: 4
         | 
| 137 138 | 
             
            summary: Jekyll extensions for the academic blogger.
         |