neo4j-asciidoctor-extensions 0.1.0 → 0.3.1
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/Gemfile.lock +3 -3
- data/README.adoc +1 -0
- data/lib/neo4j/asciidoctor/extensions/course_document_attributes/extension.rb +14 -16
- data/lib/neo4j/asciidoctor/extensions/document_metadata_generator/extension.rb +2 -3
- data/lib/neo4j/rouge/themes/neo.rb +45 -0
- data/lib/neo4j/rouge/themes/neo_forest.rb +47 -0
- data/neo4j-asciidoctor-extensions.gemspec +3 -3
- data/spec/document_metadata_generator_spec.rb +34 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bad2d6a6b8a6c047e68d9710bd3b4be2a2e998bc67ae07fa6aba02bde1f6da8c
|
4
|
+
data.tar.gz: 9971ece22eec20c0a58c4b07511eb5a1ce8198bff44ec7323a592e355ba64259
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af95705de0987a1906cf66f23b8b33f655bd541fc689fe8a11a1193a0d4703762cd846aa67d916c5accc35277732f4b528831230f21c3ecde19df5057f22d4cf
|
7
|
+
data.tar.gz: 52e77d769e05f863c78910fa551323ebfcaf249ede0fa90683aa8d1bf839e3f8b82f41bdd3e72bbde7948ae8ba9ef36622adb92498e09249078aa38c15958015
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
neo4j-asciidoctor-extensions (0.1
|
5
|
-
asciidoctor (~> 2.0
|
4
|
+
neo4j-asciidoctor-extensions (0.3.1)
|
5
|
+
asciidoctor (~> 2.0)
|
6
6
|
asciidoctor-pdf (= 1.5.3)
|
7
|
-
rouge (~> 3.18
|
7
|
+
rouge (~> 3.18)
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
data/README.adoc
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
:uri-neo4j: https://neo4j.com
|
4
4
|
|
5
5
|
image:https://github.com/neo4j-contrib/neo4j-asciidoctor-extensions/workflows/CI/badge.svg[CI,link=https://github.com/neo4j-contrib/neo4j-asciidoctor-extensions/actions?query=workflow%3ACI]
|
6
|
+
image:https://badge.fury.io/rb/neo4j-asciidoctor-extensions.svg["Gem Version", link="https://rubygems.org/gems/neo4j-asciidoctor-extensions"]
|
6
7
|
|
7
8
|
This repository contains Asciidoctor extensions made by {uri-neo4j}[Neo4j] for processing and publishing AsciiDoc content.
|
8
9
|
|
@@ -17,18 +17,16 @@ module Neo4j
|
|
17
17
|
TESTING_SLUG_PREFIX = '_testing_'
|
18
18
|
|
19
19
|
def process(document)
|
20
|
-
if (
|
21
|
-
|
22
|
-
path = File.expand_path('../build/online/asciidoctor-module-descriptor.yml', docdir)
|
23
|
-
if File.exist?(path)
|
20
|
+
if (module_descriptor_path = document.attr('module-descriptor-path'))
|
21
|
+
if File.exist?(module_descriptor_path)
|
24
22
|
require 'yaml'
|
25
|
-
module_descriptor = YAML.load_file(
|
26
|
-
if (document_slug = document.attr
|
23
|
+
module_descriptor = YAML.load_file(module_descriptor_path)
|
24
|
+
if (document_slug = document.attr('slug')) && document.attr('stage') != 'production'
|
27
25
|
document_slug = "#{TESTING_SLUG_PREFIX}#{document_slug}"
|
28
|
-
document.set_attr
|
26
|
+
document.set_attr('slug', document_slug)
|
29
27
|
end
|
30
28
|
set_attributes(document, document_slug, module_descriptor)
|
31
|
-
document.set_attribute
|
29
|
+
document.set_attribute('module-name', module_descriptor['module_name'])
|
32
30
|
end
|
33
31
|
end
|
34
32
|
document
|
@@ -38,17 +36,17 @@ module Neo4j
|
|
38
36
|
|
39
37
|
def set_attributes(document, document_slug, module_descriptor)
|
40
38
|
module_descriptor['pages'].each_with_index do |page, index|
|
41
|
-
document.set_attribute
|
42
|
-
document.set_attribute
|
39
|
+
document.set_attribute("module-toc-link-#{index}", page['url'])
|
40
|
+
document.set_attribute("module-toc-title-#{index}", page['title'])
|
43
41
|
page_slug = page['slug']
|
44
42
|
page_slug = "#{TESTING_SLUG_PREFIX}#{page_slug}" unless document.attr('stage') == 'production'
|
45
|
-
document.set_attribute
|
46
|
-
document.set_attribute
|
43
|
+
document.set_attribute("module-toc-slug-#{index}", page_slug)
|
44
|
+
document.set_attribute("module-quiz-#{index}", page['quiz'])
|
47
45
|
next unless document_slug == page_slug
|
48
46
|
|
49
47
|
set_next_attributes(document, page)
|
50
|
-
document.set_attribute
|
51
|
-
document.set_attribute
|
48
|
+
document.set_attribute('module-quiz', page['quiz'])
|
49
|
+
document.set_attribute('module-certificate', page['certificate'])
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
@@ -57,8 +55,8 @@ module Neo4j
|
|
57
55
|
|
58
56
|
next_page_slug = page['next']['slug']
|
59
57
|
next_page_slug = "#{TESTING_SLUG_PREFIX}#{next_page_slug}" unless document.attr('stage') == 'production'
|
60
|
-
document.set_attr
|
61
|
-
document.set_attr
|
58
|
+
document.set_attr('module-next-slug', next_page_slug, false)
|
59
|
+
document.set_attr('module-next-title', page['next']['title'], false)
|
62
60
|
end
|
63
61
|
end
|
64
62
|
end
|
@@ -69,7 +69,7 @@ module Neo4j
|
|
69
69
|
attr_name = resolve_attr_name(attr_include)
|
70
70
|
if document.attr? attr_name
|
71
71
|
attr_value = resolve_attribute_value(attr_name, document, value_type)
|
72
|
-
metadata[attr_name] = attr_value
|
72
|
+
metadata[attr_name.gsub('-', '_')] = attr_value
|
73
73
|
end
|
74
74
|
end
|
75
75
|
metadata['title'] = document.doctitle
|
@@ -96,7 +96,6 @@ module Neo4j
|
|
96
96
|
.gsub(/\*$/, '')
|
97
97
|
.gsub(/\*<>$/, '')
|
98
98
|
.gsub(/\*<>$/, '')
|
99
|
-
.gsub('-', '_')
|
100
99
|
end
|
101
100
|
|
102
101
|
def write(metadata, outfile)
|
@@ -119,7 +118,7 @@ module Neo4j
|
|
119
118
|
split_values(attr_name, document)
|
120
119
|
.map do |tuple|
|
121
120
|
key, value = tuple.split('=')
|
122
|
-
{ 'key' => key.strip, 'values' => value.strip.split(';').map(&:strip).reject(&:empty?) }
|
121
|
+
{ 'key' => key.strip, 'values' => (value && value.strip.split(';').map(&:strip).reject(&:empty?)) || [] }
|
123
122
|
end
|
124
123
|
else
|
125
124
|
document.attr attr_name
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rouge' unless defined? ::Rouge::Lexers
|
5
|
+
|
6
|
+
module Rouge
|
7
|
+
module Themes
|
8
|
+
#
|
9
|
+
# Neo4j (default) theme
|
10
|
+
class Neo < CSSTheme
|
11
|
+
name 'neo'
|
12
|
+
|
13
|
+
style Comment::Multiline,
|
14
|
+
Comment::Preproc,
|
15
|
+
Comment::Single,
|
16
|
+
Comment::Special,
|
17
|
+
Comment, fg: '#75787b'
|
18
|
+
style Error,
|
19
|
+
Generic::Error,
|
20
|
+
Generic::Traceback, fg: '#960050'
|
21
|
+
style Keyword::Constant,
|
22
|
+
Keyword::Declaration,
|
23
|
+
Keyword::Reserved,
|
24
|
+
Name::Constant,
|
25
|
+
Keyword::Type, fg: '#1d75b3'
|
26
|
+
style Literal::String, fg: '#b35e14'
|
27
|
+
style Name::Function,
|
28
|
+
Operator, fg: '#2e383c'
|
29
|
+
style Name::Namespace,
|
30
|
+
Name::Label,
|
31
|
+
Literal::String::Delimiter,
|
32
|
+
Name::Property, fg: '#75438a'
|
33
|
+
style Name::Entity,
|
34
|
+
Name::Builtin::Pseudo,
|
35
|
+
Name::Variable::Global,
|
36
|
+
Name::Variable::Instance,
|
37
|
+
Name::Variable,
|
38
|
+
Text::Whitespace,
|
39
|
+
Text,
|
40
|
+
Name, fg: '#047d65'
|
41
|
+
style Keyword, fg: '#1d75b3'
|
42
|
+
style Literal::String::Symbol, fg: '#9c3328'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rouge' unless defined? ::Rouge::Lexers
|
5
|
+
|
6
|
+
module Rouge
|
7
|
+
module Themes
|
8
|
+
#
|
9
|
+
# Neo4j forest theme
|
10
|
+
class NeoForest < CSSTheme
|
11
|
+
name 'neo.forest'
|
12
|
+
|
13
|
+
style Comment::Multiline,
|
14
|
+
Comment::Preproc,
|
15
|
+
Comment::Single,
|
16
|
+
Comment::Special,
|
17
|
+
Comment, fg: '#75787b'
|
18
|
+
style Error,
|
19
|
+
Generic::Error,
|
20
|
+
Generic::Traceback, fg: '#960050'
|
21
|
+
style Name::Function,
|
22
|
+
Operator::Word,
|
23
|
+
Keyword,
|
24
|
+
Keyword::Constant,
|
25
|
+
Keyword::Declaration,
|
26
|
+
Keyword::Reserved,
|
27
|
+
Name::Constant,
|
28
|
+
Keyword::Type, fg: '#859900'
|
29
|
+
style Literal::String, fg: '#b58900'
|
30
|
+
style Literal::Number, fg: '#2aa198'
|
31
|
+
style Operator,
|
32
|
+
Name::Namespace,
|
33
|
+
Name::Label,
|
34
|
+
Literal::String::Delimiter,
|
35
|
+
Name::Property,
|
36
|
+
Name::Entity,
|
37
|
+
Name::Builtin::Pseudo,
|
38
|
+
Name::Variable::Global,
|
39
|
+
Name::Variable::Instance,
|
40
|
+
Name::Variable,
|
41
|
+
Text::Whitespace,
|
42
|
+
Text,
|
43
|
+
Name,
|
44
|
+
Literal::String::Symbol, fg: '#333333'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'neo4j-asciidoctor-extensions'
|
5
|
-
s.version = '0.1
|
5
|
+
s.version = '0.3.1'
|
6
6
|
s.summary = 'Asciidoctor extensions by Neo4j.'
|
7
7
|
s.description = 'Asciidoctor extensions by Neo4j.'
|
8
8
|
|
@@ -18,9 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
19
|
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
s.add_runtime_dependency 'asciidoctor', '~> 2.0
|
21
|
+
s.add_runtime_dependency 'asciidoctor', '~> 2.0'
|
22
22
|
s.add_runtime_dependency 'asciidoctor-pdf', '1.5.3'
|
23
|
-
s.add_runtime_dependency 'rouge', '~> 3.18
|
23
|
+
s.add_runtime_dependency 'rouge', '~> 3.18'
|
24
24
|
|
25
25
|
s.add_development_dependency 'asciidoctor-revealjs', '~> 4.0'
|
26
26
|
s.add_development_dependency 'rake', '~> 12.3.2'
|
@@ -115,5 +115,39 @@ describe Neo4j::AsciidoctorExtensions::DocumentMetadataGeneratorPostProcessor do
|
|
115
115
|
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
|
116
116
|
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
|
117
117
|
end
|
118
|
+
it 'should replace - by _ in the attribute name' do
|
119
|
+
input = <<~'ADOC'
|
120
|
+
= Introduction to Neo4j 4.0
|
121
|
+
:slug: introduction-neo4j-4-0
|
122
|
+
:parent-path: /labs
|
123
|
+
|
124
|
+
This is a paragraph.
|
125
|
+
ADOC
|
126
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
|
127
|
+
'document-metadata-attrs-include' => 'slug,parent-path'
|
128
|
+
})
|
129
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
130
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
131
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
132
|
+
expect(metadata['parent_path']).to eql('/labs')
|
133
|
+
end
|
134
|
+
it 'should ignore empty value in taxonomies' do
|
135
|
+
input = <<~'ADOC'
|
136
|
+
= Introduction to Neo4j 4.0
|
137
|
+
:slug: introduction-neo4j-4-0
|
138
|
+
:taxonomies: neo4j_versions= , tags= intro ; neo4j;;
|
139
|
+
|
140
|
+
This is a paragraph.
|
141
|
+
ADOC
|
142
|
+
Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
|
143
|
+
'document-metadata-attrs-include' => 'slug,taxonomies*<>'
|
144
|
+
})
|
145
|
+
metadata = YAML.load_file('spec/output/test.yml')
|
146
|
+
expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
|
147
|
+
expect(metadata['slug']).to eql('introduction-neo4j-4-0')
|
148
|
+
taxonomies = metadata['taxonomies']
|
149
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_versions' }['values']).to eql([])
|
150
|
+
expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'tags' }['values']).to eql(%w[intro neo4j])
|
151
|
+
end
|
118
152
|
end
|
119
153
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neo4j-asciidoctor-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guillaume Grossetie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.0
|
19
|
+
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.0
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: asciidoctor-pdf
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.18
|
47
|
+
version: '3.18'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.18
|
54
|
+
version: '3.18'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: asciidoctor-revealjs
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +141,8 @@ files:
|
|
141
141
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator.rb
|
142
142
|
- lib/neo4j/asciidoctor/extensions/revealjs_speaker_notes_aggregator/extension.rb
|
143
143
|
- lib/neo4j/asciidoctor/extensions/stage_slug.rb
|
144
|
+
- lib/neo4j/rouge/themes/neo.rb
|
145
|
+
- lib/neo4j/rouge/themes/neo_forest.rb
|
144
146
|
- neo4j-asciidoctor-extensions.gemspec
|
145
147
|
- spec/.rubocop.yml
|
146
148
|
- spec/cypher_syntax_role_spec.rb
|