jekyll-scholar 6.5.1 → 6.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -1
- data/Gemfile +5 -5
- data/README.md +12 -4
- data/features/bibtex.feature +1 -1
- data/features/cite_details.feature +28 -0
- data/features/details.feature +3 -3
- data/features/filter.feature +38 -2
- data/features/page_config.feature +72 -0
- data/features/step_definitions/scholar_steps.rb +9 -0
- data/features/support/env.rb +2 -8
- data/features/support/hooks.rb +4 -2
- data/jekyll-scholar.gemspec +0 -1
- data/lib/jekyll/scholar.rb +1 -0
- data/lib/jekyll/scholar/defaults.rb +1 -0
- data/lib/jekyll/scholar/generators/details.rb +1 -1
- data/lib/jekyll/scholar/tags/bibliography.rb +1 -2
- data/lib/jekyll/scholar/tags/bibtex.rb +1 -5
- data/lib/jekyll/scholar/tags/details_link.rb +25 -0
- data/lib/jekyll/scholar/utilities.rb +48 -24
- data/lib/jekyll/scholar/version.rb +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9346570d30eece29b417704f8763a9469f87102f032e935eac75d9ad210fdcc
|
4
|
+
data.tar.gz: 477d15d2b49bca506ce249391bc4aef547a5ed1da6d20d4a1cbb93d48e264cd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 762c7394574ee27561d12e6a7d70a2c52994e79faffc7ea055cad29fd0f44e281b35dbf4545e7791ce92b6255c4ee766bb6c1a4f2500e87798f1b9625ead1466
|
7
|
+
data.tar.gz: '009e6399ff632b7e92a2676aedec967c586b2c2dd46fdf16f78094a4edf0d066d26834633b7f715f998239f360b6bd8eb601840081cec5c3bffc8fd4e5a58557'
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -2,22 +2,22 @@ source 'https://rubygems.org'
|
|
2
2
|
gemspec
|
3
3
|
|
4
4
|
group :development do
|
5
|
-
gem '
|
5
|
+
gem 'cucumber'
|
6
6
|
gem 'rake'
|
7
|
+
gem 'redcarpet'
|
7
8
|
gem 'redgreen'
|
8
9
|
gem 'shoulda'
|
9
|
-
gem '
|
10
|
-
gem 'redcarpet'
|
10
|
+
gem 'test-unit'
|
11
11
|
gem 'unicode_utils' if RUBY_VERSION < '2.4'
|
12
12
|
end
|
13
13
|
|
14
14
|
group :extra do
|
15
|
-
|
15
|
+
gem 'listen'
|
16
16
|
end
|
17
17
|
|
18
18
|
group :coverage do
|
19
|
-
gem 'simplecov', :require => false
|
20
19
|
gem 'coveralls', :require => false
|
20
|
+
gem 'simplecov', :require => false
|
21
21
|
end
|
22
22
|
|
23
23
|
group :debug do
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Installation
|
|
18
18
|
|
19
19
|
Or add it to your `Gemfile`:
|
20
20
|
|
21
|
-
gem 'jekyll-scholar'
|
21
|
+
gem 'jekyll-scholar', group: :jekyll_plugins
|
22
22
|
|
23
23
|
### Github Pages
|
24
24
|
|
@@ -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`. |
|
@@ -74,6 +74,7 @@ description of all options and their defaults, see
|
|
74
74
|
| `group_by` | `none` | Specifies how bibliography items are grouped. Grouping can be multi-level, e.g. `type, year` groups entries per publication type, and within those groups per year. |
|
75
75
|
| `group_order` | `ascending` | Ordering for groups is specified in the same way as the sort order. Publication types -- specified with group key `type`, can be ordered by adding `type_order` to the configuration. For example, `type_order: [article,techreport]` lists journal articles before technical reports. Types not mentioned in `type_order` are considered smaller than types that are mentioned. Types can be merge in one group using the `type_aliases` setting. By default `phdthesis` and `mastersthesis` are grouped as `thesis`. By using, for example, `type_aliases: { inproceedings: article}`, journal and conference articles appear in a single group. The display names for entry types are specified with `type_names`. Names for common types are provided, but they can be extended or overridden. For example, the default name for `article` is *Journal Articles*, but it can be changed to *Papers* using `type_names: { article: Papers }`. |
|
76
76
|
| `bibtex_filters` | `latex,smallcaps,superscript` | Configures which [BibTeX-Ruby](https://github.com/inukshuk/bibtex-ruby) formatting filters values of entries should be passed through. The default `latex` filter converts LaTeX character escapes into unicode, `smallcaps` converts the `\textsc` command into a HTML `<font style=\"font-variant: small-caps\">` tag, and `superscript` which converts the `\textsuperscript` command into a HTML `<sup>` tag. |
|
77
|
+
| `raw_bibtex_filters` | ` ` | Configures which [BibTeX-Ruby](https://github.com/inukshuk/bibtex-ruby) formatting filters the raw BiBTeX entry (i.e. that available through `{{ entry.bibtex }}`) should be passed through. This can be used to e.g. strip excess newlines by using the `linebreaks` filter. |
|
77
78
|
|
78
79
|
|
79
80
|
### Bibliographies
|
@@ -501,6 +502,13 @@ can be set via the 'details_link' configuration option).
|
|
501
502
|
Duis 'aute irure dolor in reprehenderit in voluptate' velit esse cillum
|
502
503
|
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
|
503
504
|
proident {% cite_details key --text Click Here For More Details %}.
|
505
|
+
|
506
|
+
Alternatively, you can use the `details_link` tag to get just the URL to
|
507
|
+
a details page. This can be used to link to details pages in markdown the
|
508
|
+
same way you would link to a blog post with Jekyll's `link` tag.
|
509
|
+
|
510
|
+
[See our blog post]({% link _posts/2020-01-01-research-post.md %})
|
511
|
+
or [find more details]({% details_link key %}).
|
504
512
|
|
505
513
|
|
506
514
|
### Bibliography Filters
|
data/features/bibtex.feature
CHANGED
@@ -140,3 +140,31 @@ Feature: Citations
|
|
140
140
|
Then the _site directory should exist
|
141
141
|
And the "_site/scholar.html" file should exist
|
142
142
|
And I should see "Click For More</a>" in "_site/scholar.html"
|
143
|
+
|
144
|
+
@tags @details_link
|
145
|
+
Scenario: A Simple Details Link
|
146
|
+
Given I have a scholar configuration with:
|
147
|
+
| key | value |
|
148
|
+
| source | ./_bibliography |
|
149
|
+
| bibliography | my_references |
|
150
|
+
And I have a "_bibliography" directory
|
151
|
+
And I have a file "_bibliography/my_references.bib":
|
152
|
+
"""
|
153
|
+
@book{ruby,
|
154
|
+
title = {The Ruby Programming Language},
|
155
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
156
|
+
year = {2008},
|
157
|
+
publisher = {O'Reilly Media}
|
158
|
+
}
|
159
|
+
"""
|
160
|
+
And I have a page "scholar.html":
|
161
|
+
"""
|
162
|
+
---
|
163
|
+
---
|
164
|
+
{% details_link ruby %}
|
165
|
+
"""
|
166
|
+
When I run jekyll
|
167
|
+
Then the _site directory should exist
|
168
|
+
And the "_site/scholar.html" file should exist
|
169
|
+
And I should see "/bibliography/ruby.html" in "_site/scholar.html"
|
170
|
+
And I should not see ""<a>"" in "_site/scholar.html"
|
data/features/details.feature
CHANGED
@@ -107,7 +107,7 @@ Feature: Details
|
|
107
107
|
And I should see "Page title: An Umlaut \\\"a!" in "_site/bibliography/ruby.html"
|
108
108
|
And I should see "Title: An Umlaut \\\"a!" in "_site/bibliography/ruby.html"
|
109
109
|
And I should see "title = {An Umlaut \\\"a!}" in "_site/bibliography/ruby.html"
|
110
|
-
|
110
|
+
|
111
111
|
|
112
112
|
@generators
|
113
113
|
Scenario: Liquid tags should not be parsed inside the bibtex
|
@@ -438,8 +438,8 @@ Feature: Details
|
|
438
438
|
And the "_site/scholar/index.html" file should exist
|
439
439
|
And I should see "<a[^>]+href=\"/blog/bibliography/2008/10.0000/1111/\">" in "_site/scholar/index.html"
|
440
440
|
And I should see "<a[^>]+href=\"/blog/bibliography/2018/ruby/\">" in "_site/scholar/index.html"
|
441
|
-
And the "_site/
|
442
|
-
And the "_site/
|
441
|
+
And the "_site/bibliography/2008/10.0000/1111/index.html" file should exist
|
442
|
+
And the "_site/bibliography/2018/ruby/index.html" file should exist
|
443
443
|
|
444
444
|
@generators @parse_months
|
445
445
|
Scenario: Months are parsed by default
|
data/features/filter.feature
CHANGED
@@ -161,7 +161,7 @@ Feature: BibTeX
|
|
161
161
|
"""
|
162
162
|
---
|
163
163
|
---
|
164
|
-
{% bibliography %}
|
164
|
+
{% bibliography --style apa-6th-edition %}
|
165
165
|
"""
|
166
166
|
When I run jekyll
|
167
167
|
Then the _site directory should exist
|
@@ -192,7 +192,7 @@ Feature: BibTeX
|
|
192
192
|
"""
|
193
193
|
---
|
194
194
|
---
|
195
|
-
{% bibliography %}
|
195
|
+
{% bibliography --style apa-6th-edition %}
|
196
196
|
"""
|
197
197
|
When I run jekyll
|
198
198
|
Then the _site directory should exist
|
@@ -609,3 +609,39 @@ Feature: BibTeX
|
|
609
609
|
And the "_site/scholar.html" file should exist
|
610
610
|
And I should see "This is <span class="tiny">i is tiny</span> to me." in "_site/scholar.html"
|
611
611
|
|
612
|
+
@tags @filters
|
613
|
+
Scenario: Apply raw BiBTeX filters
|
614
|
+
Given I have a scholar configuration with:
|
615
|
+
| key | value |
|
616
|
+
| source | ./_bibliography |
|
617
|
+
| bibliography_template | bibliography |
|
618
|
+
And I have the following raw BibTeX filters:
|
619
|
+
| linebreaks |
|
620
|
+
And I have a "_bibliography" directory
|
621
|
+
And I have a file "_bibliography/references.bib":
|
622
|
+
"""
|
623
|
+
@misc{pickaxe,
|
624
|
+
title = {Long
|
625
|
+
line},
|
626
|
+
series = {Longer
|
627
|
+
line}
|
628
|
+
}
|
629
|
+
"""
|
630
|
+
And I have a "_layouts" directory
|
631
|
+
And I have a file "_layouts/bibliography.html":
|
632
|
+
"""
|
633
|
+
---
|
634
|
+
---
|
635
|
+
{{ entry.bibtex }}
|
636
|
+
"""
|
637
|
+
And I have a page "scholar.html":
|
638
|
+
"""
|
639
|
+
---
|
640
|
+
---
|
641
|
+
{% bibliography %}
|
642
|
+
"""
|
643
|
+
When I run jekyll
|
644
|
+
Then the _site directory should exist
|
645
|
+
And the "_site/scholar.html" file should exist
|
646
|
+
And I should see "@misc{pickaxe,\n title = {Long line},\n series = {Longer line}" in "_site/scholar.html"
|
647
|
+
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Feature: Page Configuration
|
2
|
+
As a scholar who likes to blog
|
3
|
+
I want to set local jekyll-scholar options per page
|
4
|
+
In order to override the global config
|
5
|
+
|
6
|
+
@tags @filters
|
7
|
+
Scenario: Filter by Year
|
8
|
+
Given I have a scholar configuration with:
|
9
|
+
| key | value |
|
10
|
+
| source | ./_bibliography |
|
11
|
+
| query | "@*[year=2009]" |
|
12
|
+
And I have a "_bibliography" directory
|
13
|
+
And I have a file "_bibliography/references.bib":
|
14
|
+
"""
|
15
|
+
@book{ruby,
|
16
|
+
title = {The Ruby Programming Language},
|
17
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
18
|
+
year = {2008},
|
19
|
+
publisher = {O'Reilly Media}
|
20
|
+
}
|
21
|
+
@book{pickaxe,
|
22
|
+
title = {Programming Ruby 1.9: The Pragmatic Programmer's Guide},
|
23
|
+
author = {Thomas, Dave and Fowler, Chad and Hunt, Andy},
|
24
|
+
year = {2009},
|
25
|
+
edition = 3,
|
26
|
+
publisher = {Pragmatic Bookshelf}
|
27
|
+
}
|
28
|
+
"""
|
29
|
+
And I have a page "scholar.html":
|
30
|
+
"""
|
31
|
+
---
|
32
|
+
scholar:
|
33
|
+
query: "@*[year=2008]"
|
34
|
+
---
|
35
|
+
{% bibliography %}
|
36
|
+
"""
|
37
|
+
When I run jekyll
|
38
|
+
Then the _site directory should exist
|
39
|
+
And the "_site/scholar.html" file should exist
|
40
|
+
And I should see "The Ruby Programming Language" in "_site/scholar.html"
|
41
|
+
And I should not see "Programming Ruby" in "_site/scholar.html"
|
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
|
+
|
@@ -36,6 +36,15 @@ Given(/^I have the following BibTeX filters:$/) do |table|
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
Given(/^I have the following raw BibTeX filters:$/) do |table|
|
40
|
+
File.open('_config.yml', 'a') do |f|
|
41
|
+
f.write(" raw_bibtex_filters:\n")
|
42
|
+
table.raw.flatten.each do |row|
|
43
|
+
f.write(" - #{row}\n")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
39
48
|
Then(/^"(.*)" should come before "(.*)" in "(.*)"$/) do |p1, p2, file|
|
40
49
|
data = File.open(file).readlines.join('')
|
41
50
|
|
data/features/support/env.rb
CHANGED
@@ -6,16 +6,12 @@ rescue LoadError
|
|
6
6
|
end
|
7
7
|
|
8
8
|
begin
|
9
|
-
|
10
|
-
require 'byebug'
|
11
|
-
else
|
12
|
-
require 'debugger'
|
13
|
-
end
|
9
|
+
require 'byebug'
|
14
10
|
rescue LoadError
|
15
11
|
# ignore
|
16
12
|
end
|
17
13
|
|
18
|
-
require 'test
|
14
|
+
require 'minitest/test'
|
19
15
|
require 'jekyll/scholar'
|
20
16
|
require 'tmpdir'
|
21
17
|
|
@@ -32,7 +28,6 @@ def prepend_test_dir(options, key)
|
|
32
28
|
end
|
33
29
|
|
34
30
|
def run_jekyll(options = {})
|
35
|
-
|
36
31
|
options = Jekyll.configuration(options)
|
37
32
|
|
38
33
|
prepend_test_dir(options, 'source')
|
@@ -42,5 +37,4 @@ def run_jekyll(options = {})
|
|
42
37
|
print options['destination'] + "\n"
|
43
38
|
site = Jekyll::Site.new(options)
|
44
39
|
site.process
|
45
|
-
|
46
40
|
end
|
data/features/support/hooks.rb
CHANGED
data/jekyll-scholar.gemspec
CHANGED
data/lib/jekyll/scholar.rb
CHANGED
@@ -17,6 +17,7 @@ require 'jekyll/scholar/tags/bibliography_count'
|
|
17
17
|
require 'jekyll/scholar/tags/bibtex'
|
18
18
|
require 'jekyll/scholar/tags/cite'
|
19
19
|
require 'jekyll/scholar/tags/cite_details'
|
20
|
+
require 'jekyll/scholar/tags/details_link'
|
20
21
|
require 'jekyll/scholar/tags/quote'
|
21
22
|
require 'jekyll/scholar/tags/reference'
|
22
23
|
require 'jekyll/scholar/generators/details'
|
@@ -37,6 +37,7 @@ module Jekyll
|
|
37
37
|
|
38
38
|
'bibtex_options' => { :strip => false, :parse_months => true },
|
39
39
|
'bibtex_filters' => [ :smallcaps, :superscript, :italics, :textit, :lowercase, :textregistered, :tiny, :latex ],
|
40
|
+
'raw_bibtex_filters' => [ ],
|
40
41
|
'bibtex_skip_fields' => [ :abstract, :month_numeric ],
|
41
42
|
'bibtex_quotes' => ['{', '}'],
|
42
43
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Jekyll
|
2
2
|
class Scholar
|
3
|
-
|
4
3
|
class BibliographyTag < Liquid::Tag
|
5
4
|
include Scholar::Utilities
|
6
5
|
|
@@ -34,7 +33,7 @@ module Jekyll
|
|
34
33
|
def render_groups(groups)
|
35
34
|
def group_renderer(groupsOrItems,keys,order,tags)
|
36
35
|
if keys.count == 0
|
37
|
-
|
36
|
+
csl_renderer(true)
|
38
37
|
render_items(groupsOrItems)
|
39
38
|
else
|
40
39
|
groupsOrItems
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Jekyll
|
2
2
|
class Scholar
|
3
|
-
|
4
3
|
class BibTeXTag < Liquid::Block
|
5
4
|
include Scholar::Utilities
|
6
5
|
|
@@ -15,16 +14,13 @@ module Jekyll
|
|
15
14
|
|
16
15
|
def render(context)
|
17
16
|
set_context_to context
|
18
|
-
|
17
|
+
|
19
18
|
BibTeX.parse(super, bibtex_options).map { |entry|
|
20
19
|
reference_tag entry
|
21
|
-
|
22
20
|
}.join("\n")
|
23
21
|
end
|
24
22
|
end
|
25
|
-
|
26
23
|
end
|
27
24
|
end
|
28
25
|
|
29
26
|
Liquid::Template.register_tag('bibtex', Jekyll::Scholar::BibTeXTag)
|
30
|
-
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Jekyll
|
2
|
+
class Scholar
|
3
|
+
|
4
|
+
class DetailsLinkTag < Liquid::Tag
|
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
|
+
details_link keys[0]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Liquid::Template.register_tag('details_link', Jekyll::Scholar::DetailsLinkTag)
|
@@ -165,6 +165,10 @@ module Jekyll
|
|
165
165
|
config['bibtex_filters'] ||= []
|
166
166
|
end
|
167
167
|
|
168
|
+
def raw_bibtex_filters
|
169
|
+
config['raw_bibtex_filters'] ||= []
|
170
|
+
end
|
171
|
+
|
168
172
|
def bibtex_paths
|
169
173
|
bibtex_files.map { |file|
|
170
174
|
interpolated_file = interpolate file
|
@@ -523,10 +527,11 @@ module Jekyll
|
|
523
527
|
.merge(site.site_payload)
|
524
528
|
.merge({
|
525
529
|
'index' => index,
|
530
|
+
'page' => context.registers[:page],
|
526
531
|
'details' => details_link_for(entry)
|
527
532
|
}),
|
528
533
|
{
|
529
|
-
:registers =>
|
534
|
+
:registers => context.registers,
|
530
535
|
:filters => [Jekyll::Filters]
|
531
536
|
})
|
532
537
|
end
|
@@ -548,8 +553,13 @@ module Jekyll
|
|
548
553
|
e['key'] = entry.key
|
549
554
|
e['type'] = entry.type.to_s
|
550
555
|
|
556
|
+
conv_opts = { quotes: config['bibtex_quotes'] }
|
557
|
+
if !raw_bibtex_filters.empty?
|
558
|
+
conv_opts[:filter] = *raw_bibtex_filters
|
559
|
+
end
|
560
|
+
|
551
561
|
if entry.field_names(config['bibtex_skip_fields']).empty?
|
552
|
-
e['bibtex'] = entry.to_s(
|
562
|
+
e['bibtex'] = entry.to_s(conv_opts)
|
553
563
|
else
|
554
564
|
tmp = entry.dup
|
555
565
|
|
@@ -557,7 +567,7 @@ module Jekyll
|
|
557
567
|
tmp.delete name if tmp.field?(name)
|
558
568
|
end
|
559
569
|
|
560
|
-
e['bibtex'] = tmp.to_s(
|
570
|
+
e['bibtex'] = tmp.to_s(conv_opts)
|
561
571
|
end
|
562
572
|
|
563
573
|
#e['raw_bibtex'] = "{%raw%}#{e['bibtex']}{%endraw%}"
|
@@ -606,6 +616,10 @@ module Jekyll
|
|
606
616
|
end
|
607
617
|
|
608
618
|
def details_link_for(entry, base = base_url)
|
619
|
+
File.join(base, details_path_for(entry))
|
620
|
+
end
|
621
|
+
|
622
|
+
def details_path_for(entry)
|
609
623
|
# Expand the details_permalink template into the complete URL for this entry.
|
610
624
|
|
611
625
|
# First generate placeholders for all items in the bibtex entry
|
@@ -615,29 +629,30 @@ module Jekyll
|
|
615
629
|
value = Jekyll::Utils::slugify(value, :mode => 'pretty') unless k == :doi
|
616
630
|
url_placeholders[k] = value
|
617
631
|
end
|
618
|
-
# Maintain the same URLs are previous versions of jekyll-scholar
|
619
|
-
# processed the key.
|
632
|
+
# Maintain the same URLs are previous versions of jekyll-scholar
|
633
|
+
# by replicating the way that it processed the key.
|
620
634
|
url_placeholders[:key] = entry.key.to_s.gsub(/[:\s]+/, '_')
|
621
635
|
url_placeholders[:details_dir] = details_path
|
622
|
-
|
623
|
-
#
|
636
|
+
|
637
|
+
# Autodetect the appropriate file extension based upon the site config,
|
638
|
+
# using the same rules as previous versions of jekyll-scholar. Users can
|
639
|
+
# override these settings by defining a details_permalink
|
624
640
|
# without the :extension field.
|
625
641
|
if (site.config['permalink'] == 'pretty') || (site.config['permalink'].end_with? '/')
|
626
642
|
url_placeholders[:extension] = '/'
|
627
643
|
else
|
628
644
|
url_placeholders[:extension] = '.html'
|
629
645
|
end
|
630
|
-
|
646
|
+
|
647
|
+
# Overwrite 'doi' key with the citation key if DOI field is empty or missing
|
631
648
|
if !entry.has_field?('doi') || entry.doi.empty?
|
632
649
|
url_placeholders[:doi] = url_placeholders[:key]
|
633
650
|
end
|
634
651
|
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
:placeholders => url_placeholders
|
640
|
-
).to_s)
|
652
|
+
URL.new(
|
653
|
+
template: config['details_permalink'],
|
654
|
+
placeholders: url_placeholders
|
655
|
+
).to_s
|
641
656
|
end
|
642
657
|
|
643
658
|
def base_url
|
@@ -648,15 +663,15 @@ module Jekyll
|
|
648
663
|
config['details_dir']
|
649
664
|
end
|
650
665
|
|
651
|
-
def
|
652
|
-
return @
|
666
|
+
def csl_renderer(force = false)
|
667
|
+
return @csl_renderer if @csl_renderer && !force
|
653
668
|
|
654
|
-
@
|
669
|
+
@csl_renderer = CiteProc::Ruby::Renderer.new :format => 'html',
|
655
670
|
:style => style, :locale => config['locale']
|
656
671
|
end
|
657
672
|
|
658
673
|
def render_citation(items)
|
659
|
-
|
674
|
+
csl_renderer.render items.zip(locators.zip(labels)).map { |entry, (locator, label)|
|
660
675
|
cited_keys << entry.key
|
661
676
|
cited_keys.uniq!
|
662
677
|
|
@@ -670,17 +685,17 @@ module Jekyll
|
|
670
685
|
|
671
686
|
def render_bibliography(entry, index = nil)
|
672
687
|
begin
|
673
|
-
original_locale
|
674
|
-
|
688
|
+
original_locale = csl_renderer.locale
|
689
|
+
csl_renderer.locale = locales(entry.language)
|
675
690
|
rescue
|
676
691
|
# Locale failed to load; just use original one!
|
677
692
|
end if allow_locale_overrides? &&
|
678
|
-
|
693
|
+
entry['language'] != csl_renderer.locale.language
|
679
694
|
|
680
|
-
|
695
|
+
csl_renderer.render citation_item_for(entry, index),
|
681
696
|
styles(style).bibliography
|
682
697
|
ensure
|
683
|
-
|
698
|
+
csl_renderer.locale = original_locale unless original_locale.nil?
|
684
699
|
end
|
685
700
|
|
686
701
|
def citation_item_for(entry, citation_number = nil)
|
@@ -724,6 +739,14 @@ module Jekyll
|
|
724
739
|
end
|
725
740
|
end
|
726
741
|
|
742
|
+
def details_link(key)
|
743
|
+
if bibliography.key?(key)
|
744
|
+
details_link_for(bibliography[key])
|
745
|
+
else
|
746
|
+
raise Exception.new "Could not find entry for key '%s'" % key
|
747
|
+
end
|
748
|
+
end
|
749
|
+
|
727
750
|
def content_tag(name, content_or_attributes, attributes = {})
|
728
751
|
if content_or_attributes.is_a?(Hash)
|
729
752
|
content, attributes = nil, content_or_attributes
|
@@ -766,8 +789,9 @@ module Jekyll
|
|
766
789
|
end
|
767
790
|
|
768
791
|
def set_context_to(context)
|
769
|
-
@context, @site, = context, context.registers
|
792
|
+
@context, @site, page, = context, *context.registers.values_at(:site, :page)
|
770
793
|
config.merge!(site.config['scholar'] || {})
|
794
|
+
config.merge!(page['scholar'] || {})
|
771
795
|
self
|
772
796
|
end
|
773
797
|
|
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: 6.
|
4
|
+
version: 6.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvester Keil
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- features/interpolate.feature
|
98
98
|
- features/layout.feature
|
99
99
|
- features/multiple_files.feature
|
100
|
+
- features/page_config.feature
|
100
101
|
- features/reference.feature
|
101
102
|
- features/removeduplicate.feature
|
102
103
|
- features/repository.feature
|
@@ -125,6 +126,7 @@ files:
|
|
125
126
|
- lib/jekyll/scholar/tags/bibtex.rb
|
126
127
|
- lib/jekyll/scholar/tags/cite.rb
|
127
128
|
- lib/jekyll/scholar/tags/cite_details.rb
|
129
|
+
- lib/jekyll/scholar/tags/details_link.rb
|
128
130
|
- lib/jekyll/scholar/tags/quote.rb
|
129
131
|
- lib/jekyll/scholar/tags/reference.rb
|
130
132
|
- lib/jekyll/scholar/utilities.rb
|
@@ -133,7 +135,7 @@ homepage: http://github.com/inukshuk/jekyll-scholar
|
|
133
135
|
licenses:
|
134
136
|
- MIT
|
135
137
|
metadata: {}
|
136
|
-
post_install_message:
|
138
|
+
post_install_message:
|
137
139
|
rdoc_options: []
|
138
140
|
require_paths:
|
139
141
|
- lib
|
@@ -148,8 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
150
|
- !ruby/object:Gem::Version
|
149
151
|
version: 1.3.6
|
150
152
|
requirements: []
|
151
|
-
rubygems_version: 3.
|
152
|
-
signing_key:
|
153
|
+
rubygems_version: 3.2.3
|
154
|
+
signing_key:
|
153
155
|
specification_version: 4
|
154
156
|
summary: Jekyll extensions for the academic blogger.
|
155
157
|
test_files:
|
@@ -166,6 +168,7 @@ test_files:
|
|
166
168
|
- features/interpolate.feature
|
167
169
|
- features/layout.feature
|
168
170
|
- features/multiple_files.feature
|
171
|
+
- features/page_config.feature
|
169
172
|
- features/reference.feature
|
170
173
|
- features/removeduplicate.feature
|
171
174
|
- features/repository.feature
|