Commit 50c4ded7 authored by Sylvester Keil's avatar Sylvester Keil

add bibliography templates

#19
parent e7108207
......@@ -90,6 +90,34 @@ Feature: BibTeX
And the "_site/scholar.html" file should exist
And I should see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
@tags @bibliography @config
Scenario: Simple Bibliography With Custom Template
Given I have a scholar configuration with:
| key | value |
| source | ./_bibliography |
| bibliography_template | <abbr>[%{key}]</abbr>%{reference} |
And I have a "_bibliography" directory
And I have a file "_bibliography/references.bib":
"""
@book{ruby,
title = {The Ruby Programming Language},
author = {Flanagan, David and Matsumoto, Yukihiro},
year = {2008},
publisher = {O'Reilly Media}
}
"""
And I have a page "scholar.html":
"""
---
---
{% bibliography -f references %}
"""
When I run jekyll
Then the _site directory should exist
And the "_site/scholar.html" file should exist
And I should see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
And I should see "<abbr>\[ruby\]</abbr><span" in "_site/scholar.html"
@tags @filter
Scenario: Filtered Bibliography Loaded From Default Directory
Given I have a scholar configuration with:
......
......@@ -29,7 +29,7 @@ Feature: Formatted References
And the "_site/scholar.html" file should exist
And I should see "Matsumoto, Y. \(2008\). <i>The Ruby" in "_site/scholar.html"
@tags @reference
@tags @reference @missing
Scenario: Missing references
Given I have a scholar configuration with:
| key | value |
......@@ -54,4 +54,33 @@ Feature: Formatted References
When I run jekyll
Then the _site directory should exist
And the "_site/scholar.html" file should exist
And I should see "missing reference" in "_site/scholar.html"
And I should see "(missing reference)" in "_site/scholar.html"
@tags @reference @missing
Scenario: Missing references with a custom text
Given I have a scholar configuration with:
| key | value |
| source | ./_bibliography |
| bibliography | my_references |
| missing_reference | not found! |
And I have a "_bibliography" directory
And I have a file "_bibliography/my_references.bib":
"""
@book{ruby,
title = {The Ruby Programming Language},
author = {Flanagan, David and Matsumoto, Yukihiro},
year = {2008},
publisher = {O'Reilly Media}
}
"""
And I have a page "scholar.html":
"""
---
---
{% reference java %}
"""
When I run jekyll
Then the _site directory should exist
And the "_site/scholar.html" file should exist
And I should see "not found!" in "_site/scholar.html"
And I should not see "(missing reference)" in "_site/scholar.html"
module Jekyll
class Scholar
@defaults = Hash[*%w{
@defaults = {
'style' => 'apa',
'locale' => 'en',
style apa
locale en
'sort_by' => 'none',
'order' => 'ascending',
sort_by none
order ascending
'source' => './_bibliography',
'bibliography' => 'references.bib',
source ./_bibliography
bibliography references.bib
'details_dir' => 'bibliography',
'details_layout' => 'bibtex.html',
'details_link' => 'Details',
details_dir bibliography
details_layout bibtex.html
details_link Details
bibliography_class bibliography
details_link_class details
'bibliography_class' => 'bibliography',
'bibliography_template' => '%{reference}',
query @*
}].freeze
'reference_tagname' => 'span',
'missing_reference' => '(missing reference)',
'details_link_class' => 'details',
'query' => '@*'
}.freeze
class << self
attr_reader :defaults
......
......@@ -24,7 +24,7 @@ module Jekyll
end
references.map! do |entry|
reference = reference_tag entry
reference = bibliography_tag entry
if generate_details?
reference << link_to(details_link_for(entry),
......
......@@ -80,13 +80,35 @@ module Jekyll
end
def reference_tag(entry)
return '(missing reference)' unless entry
return missing_reference unless entry
entry = entry.convert(:latex)
reference = CiteProc.process entry.to_citeproc,
:style => config['style'], :locale => config['locale'], :format => 'html'
content_tag :span, reference, :id => [prefix, entry.key].compact.join('-')
content_tag reference_tagname, reference,
:id => [prefix, entry.key].compact.join('-')
end
def missing_reference
config['missing_reference']
end
def reference_tagname
config['reference_tagname'] || :span
end
def bibliography_template
config['bibliography_template'] || '%{reference}'
end
def bibliography_tag(entry)
return missing_reference unless entry
bibliography_template % {
:reference => reference_tag(entry),
:key => entry.key
}
end
def generate_details?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment