jekyll-scholar 5.15.0 → 5.16.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/features/details.feature +53 -0
- data/lib/jekyll/scholar/defaults.rb +16 -0
- data/lib/jekyll/scholar/generators/details.rb +7 -1
- data/lib/jekyll/scholar/utilities.rb +31 -15
- data/lib/jekyll/scholar/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d41dda4e23371eb67f351f9e305c6ee39792396207a9b9a9bed2b942e166e9d
|
4
|
+
data.tar.gz: 58d5fb482ac8db32b6329804b70003d62108d96f095111fcab64cd7731656beb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63981abf3ed1e2ed91bd698a6fb7ea63dae32a9a4821b3e5d5ca6cf5d0decad2427522c35ecfe2287b54984deee77cea2deedf153e6a753ea4b6da4babdbb515
|
7
|
+
data.tar.gz: 21fde19cc38570542d21a73f5bfa2ff08dda5ac871cea4480dd355bb1407949d07523776d09cc77cf2626b639f2cee71df496f5e479a714fc31081d1ad240eb8
|
data/features/details.feature
CHANGED
@@ -334,6 +334,59 @@ Feature: Details
|
|
334
334
|
And I should see "<a[^>]+href=\"/bibliography/ruby/\">" in "_site/scholar/index.html"
|
335
335
|
And the "_site/bibliography/ruby/index.html" file should exist
|
336
336
|
|
337
|
+
@tags @details
|
338
|
+
Scenario: Detail page URLs can have custom permalinks
|
339
|
+
Given I have a configuration file with "permalink" set to "/:title/"
|
340
|
+
And I have a scholar configuration with:
|
341
|
+
| key | value |
|
342
|
+
| source | ./_bibliography |
|
343
|
+
| bibliography | references |
|
344
|
+
| details_layout | details.html |
|
345
|
+
| details_permalink | /:details_dir/:year/:doi:extension |
|
346
|
+
And I have a "_bibliography" directory
|
347
|
+
And I have a file "_bibliography/references.bib":
|
348
|
+
"""
|
349
|
+
@book{rubydoi,
|
350
|
+
title = {The Ruby Programming Language},
|
351
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
352
|
+
year = {2008},
|
353
|
+
publisher = {O'Reilly Media},
|
354
|
+
doi = {10.0000/1111}
|
355
|
+
}
|
356
|
+
|
357
|
+
@book{ruby,
|
358
|
+
title = {The Ruby Programming Language},
|
359
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
360
|
+
year = {2008},
|
361
|
+
publisher = {O'Reilly Media}
|
362
|
+
}
|
363
|
+
"""
|
364
|
+
And I have a "_layouts" directory
|
365
|
+
And I have a file "_layouts/details.html":
|
366
|
+
"""
|
367
|
+
---
|
368
|
+
---
|
369
|
+
<html>
|
370
|
+
<head></head>
|
371
|
+
<body>
|
372
|
+
{{ page.entry.title }}
|
373
|
+
</body>
|
374
|
+
</html>
|
375
|
+
"""
|
376
|
+
And I have a page "scholar.html":
|
377
|
+
"""
|
378
|
+
---
|
379
|
+
---
|
380
|
+
{% bibliography %}
|
381
|
+
"""
|
382
|
+
When I run jekyll
|
383
|
+
Then the _site directory should exist
|
384
|
+
And the "_site/scholar/index.html" file should exist
|
385
|
+
And I should see "<a[^>]+href=\"/bibliography/2008/10.0000/1111/\">" in "_site/scholar/index.html"
|
386
|
+
And I should see "<a[^>]+href=\"/bibliography/2008/ruby/\">" in "_site/scholar/index.html"
|
387
|
+
And the "_site/bibliography/2008/10.0000/1111/index.html" file should exist
|
388
|
+
And the "_site/bibliography/2008/ruby/index.html" file should exist
|
389
|
+
|
337
390
|
@generators @parse_months
|
338
391
|
Scenario: Months are parsed by default
|
339
392
|
Given I have a scholar configuration with:
|
@@ -46,6 +46,22 @@ module Jekyll
|
|
46
46
|
'details_dir' => 'bibliography',
|
47
47
|
'details_layout' => 'bibtex.html',
|
48
48
|
'details_link' => 'Details',
|
49
|
+
|
50
|
+
# 'details_permalink': URL template for generating the filenames of the details pages.
|
51
|
+
#
|
52
|
+
# Example: if we had a citation key 'ruby':
|
53
|
+
# '/:details_dir/:year/:key:extension' would produce:
|
54
|
+
# '/bibliography/2008/ruby.html' if global permalinks end in .html
|
55
|
+
# '/bibliography/2008/ruby/index.html' if global permalinks end in "/" or are set to "pretty"
|
56
|
+
#
|
57
|
+
# Valid template parameters:
|
58
|
+
# ":details_dir" The value of the details_dir field in the scholar config
|
59
|
+
# ":key" The bibtex citation key.
|
60
|
+
# ":doi" The DOI. If the DOI is missing or blank, this returns the citation key.
|
61
|
+
# ":extension" Either of ".html" or "/index.html" depending upon the global permalink setting.
|
62
|
+
# Template parameters can also include any key defined in the bibtex file, e.g. ":year", ":title", etc.
|
63
|
+
# Bibtex keys such as 'title' are slugified in the same way as Jekyll treats blog post titles.
|
64
|
+
'details_permalink' => '/:details_dir/:key:extension',
|
49
65
|
'use_raw_bibtex_entry' => true,
|
50
66
|
|
51
67
|
'bibliography_class' => 'bibliography',
|
@@ -5,10 +5,12 @@ module Jekyll
|
|
5
5
|
include Scholar::Utilities
|
6
6
|
|
7
7
|
def initialize(site, base, dir, entry)
|
8
|
-
@site, @base, @dir = site, base, dir
|
8
|
+
@site, @base, @dir, @entry = site, base, dir, entry
|
9
9
|
|
10
10
|
@config = Scholar.defaults.merge(site.config['scholar'] || {})
|
11
11
|
|
12
|
+
# Specify a temporary filename for now based upon the citation key. Jekyll
|
13
|
+
# will modify this according to the URL template below
|
12
14
|
@name = entry.key.to_s.gsub(/[:\s]+/, '_')
|
13
15
|
@name << '.html'
|
14
16
|
|
@@ -19,6 +21,10 @@ module Jekyll
|
|
19
21
|
data['title'] = data['entry']['title'] if data['entry'].has_key?('title')
|
20
22
|
end
|
21
23
|
|
24
|
+
def url
|
25
|
+
# Reuse the logic in the utilities module for deciding URLs
|
26
|
+
details_link_for(@entry)
|
27
|
+
end
|
22
28
|
end
|
23
29
|
|
24
30
|
class DetailsGenerator < Generator
|
@@ -563,20 +563,6 @@ module Jekyll
|
|
563
563
|
site.layouts.key?(File.basename(config['details_layout'], '.html'))
|
564
564
|
end
|
565
565
|
|
566
|
-
def details_file_for(entry)
|
567
|
-
name = entry.key.to_s.dup
|
568
|
-
|
569
|
-
name.gsub!(/[:\s]+/, '_')
|
570
|
-
|
571
|
-
if site.config['permalink'] == 'pretty'
|
572
|
-
name << '/'
|
573
|
-
elsif site.config['permalink'].end_with? '/'
|
574
|
-
name << '/'
|
575
|
-
else
|
576
|
-
name << '.html'
|
577
|
-
end
|
578
|
-
end
|
579
|
-
|
580
566
|
def repository_link_for(entry, base = base_url)
|
581
567
|
name = entry.key.to_s.dup
|
582
568
|
name.gsub!(/[:\s]+/, '_')
|
@@ -597,7 +583,37 @@ module Jekyll
|
|
597
583
|
end
|
598
584
|
|
599
585
|
def details_link_for(entry, base = base_url)
|
600
|
-
|
586
|
+
# Expand the details_permalink template into the complete URL for this entry.
|
587
|
+
|
588
|
+
# First generate placeholders for all items in the bibtex entry
|
589
|
+
url_placeholders = {}
|
590
|
+
entry.fields.each_pair do |k, v|
|
591
|
+
value = v.to_s.dup
|
592
|
+
value = Jekyll::Utils::slugify(value, :mode => 'pretty') unless k == :doi
|
593
|
+
url_placeholders[k] = value
|
594
|
+
end
|
595
|
+
# Maintain the same URLs are previous versions of jekyll-scholar by replicating the way that it
|
596
|
+
# processed the key.
|
597
|
+
url_placeholders[:key] = entry.key.to_s.gsub(/[:\s]+/, '_')
|
598
|
+
url_placeholders[:details_dir] = details_path
|
599
|
+
# Autodetect the appropriate file extension based upon the site config, using the same rules as
|
600
|
+
# previous versions of jekyll-scholar. Uses can override these settings by defining a details_permalink
|
601
|
+
# without the :extension field.
|
602
|
+
if (site.config['permalink'] == 'pretty') || (site.config['permalink'].end_with? '/')
|
603
|
+
url_placeholders[:extension] = '/'
|
604
|
+
else
|
605
|
+
url_placeholders[:extension] = '.html'
|
606
|
+
end
|
607
|
+
# Overwrite the 'doi' key with the citation key if the DOI field is empty or missing
|
608
|
+
if !entry.has_field?('doi') || entry.doi.empty?
|
609
|
+
url_placeholders[:doi] = url_placeholders[:key]
|
610
|
+
end
|
611
|
+
|
612
|
+
# generate the URL
|
613
|
+
URL.new(
|
614
|
+
:template => config['details_permalink'],
|
615
|
+
:placeholders => url_placeholders
|
616
|
+
).to_s
|
601
617
|
end
|
602
618
|
|
603
619
|
def base_url
|
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: 5.
|
4
|
+
version: 5.16.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: 2019-07
|
11
|
+
date: 2019-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|