neo4j-asciidoctor-extensions 0.0.5 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9aa5c3d1385aa9d4dd4ac11820ffb24ab9dca9fd02b99bcffe6979031469adc
4
- data.tar.gz: 129476850c9147c0fbc8accaf0309f59c787f2e4defb8a3c5ecd444a28060086
3
+ metadata.gz: 2ed2835da9be7c20ddf83b173cd740644a00986b0216e1d77d30ca65b359296a
4
+ data.tar.gz: 0b2d0ef0ec3f5d5c05910d8768e836d9147c045a4cd017f326fa1c261d2212bc
5
5
  SHA512:
6
- metadata.gz: 6f0c5596adbf742abb16103642445284bb0be42720e1ed57fdc1f9cfa7322c0191261af133f2ae0c9a556696e0af2406e11157d935e5667c52793194101afe45
7
- data.tar.gz: c0640a5f5a47220d006bcc2d84aca356dfdcadfb17554b1f121df9cb0aa2c81085566d0a946a8eab1842a36eda39a63b594802ce125522ad45a16062fe8f3986
6
+ metadata.gz: 5edbf5d0eb1e83d2d82dcbd3e9515f645b48b56d246bb30e9caa005079c7742967bac7bbffc3d73d415c3b968fa8346f3e8116557475e2c8a573e8155902461f
7
+ data.tar.gz: 83660797c903651ebcabbc8c167faaa19ac42685ad866641f4fb411f70c62a8512bfb986ceb1653a5c73c96753d2aee1a9fa2de08c2b0718fb1f5c97e33fad0d
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neo4j-asciidoctor-extensions (0.0.5)
5
- asciidoctor (~> 2.0.0)
4
+ neo4j-asciidoctor-extensions (0.3.0)
5
+ asciidoctor (~> 2.0)
6
6
  asciidoctor-pdf (= 1.5.3)
7
- rouge (~> 3.18.0)
7
+ rouge (~> 3.18)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -216,7 +216,7 @@ end
216
216
  == Release
217
217
 
218
218
  The release process is automated and relies on GitHub Actions.
219
- We are using the :robot: `neo4j-oss-build` account to published on https://rubygems.org/gems/neo4j-asciidoctor-extensions.
219
+ We are using the :robot: `neo4j-oss-build` account to publish on https://rubygems.org/gems/neo4j-asciidoctor-extensions.
220
220
 
221
221
  The `RUBYGEMS_API_KEY` secret is configured on GitHub.
222
222
  See the `.github/workflows/release.yml` file for details.
@@ -17,18 +17,16 @@ module Neo4j
17
17
  TESTING_SLUG_PREFIX = '_testing_'
18
18
 
19
19
  def process(document)
20
- if (docdir = document.attr 'docdir')
21
- # TODO: this path should be configurable
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(path)
26
- if (document_slug = document.attr 'slug') && document.attr('stage') != 'production'
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 'slug', document_slug
26
+ document.set_attr('slug', document_slug)
29
27
  end
30
28
  set_attributes(document, document_slug, module_descriptor)
31
- document.set_attribute 'module-name', module_descriptor['module_name']
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 "module-toc-link-#{index}", page['url']
42
- document.set_attribute "module-toc-title-#{index}", page['title']
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 "module-toc-slug-#{index}", page_slug
46
- document.set_attribute "module-quiz-#{index}", page['quiz']
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 'module-quiz', page['quiz']
51
- document.set_attribute 'module-certificate', page['certificate']
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 'module-next-slug', next_page_slug, false
61
- document.set_attr 'module-next-title', page['next']['title'], false
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
@@ -84,7 +84,7 @@ module Neo4j
84
84
  def resolve_value_type(attr_include)
85
85
  if attr_include.end_with? '*'
86
86
  ValueType::LIST_STRING
87
- elsif attr_include.end_with? '*<>'
87
+ elsif (attr_include.end_with? '*&lt;&gt;') || (attr_include.end_with? '*<>')
88
88
  ValueType::LIST_TUPLES
89
89
  else
90
90
  ValueType::STRING
@@ -95,7 +95,7 @@ module Neo4j
95
95
  attr_include
96
96
  .gsub(/\*$/, '')
97
97
  .gsub(/\*&lt;&gt;$/, '')
98
- .gsub('-', '_')
98
+ .gsub(/\*<>$/, '')
99
99
  end
100
100
 
101
101
  def write(metadata, outfile)
@@ -118,7 +118,7 @@ module Neo4j
118
118
  split_values(attr_name, document)
119
119
  .map do |tuple|
120
120
  key, value = tuple.split('=')
121
- { 'key' => key.strip, 'values' => value.strip.split(';').map(&:strip).reject(&:empty?) }
121
+ { 'key' => key.strip, 'values' => (value && value.strip.split(';').map(&:strip).reject(&:empty?)) || [] }
122
122
  end
123
123
  else
124
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.0.5'
5
+ s.version = '0.3.0'
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.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.0'
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'
@@ -54,7 +54,7 @@ describe Neo4j::AsciidoctorExtensions::DocumentMetadataGeneratorPostProcessor do
54
54
  expect(metadata['slug']).to eql('introduction-neo4j-4-0')
55
55
  expect(metadata['tags']).to eql(%w[intro neo4j])
56
56
  end
57
- it 'should generate metadata with taxonomies (list of tuples)' do
57
+ it 'should generate metadata with taxonomies (list of tuples) using document attribute' do
58
58
  input = <<~'ADOC'
59
59
  = Introduction to Neo4j 4.0
60
60
  :document-metadata-attrs-include: slug,tags*,taxonomies*<>
@@ -74,5 +74,80 @@ describe Neo4j::AsciidoctorExtensions::DocumentMetadataGeneratorPostProcessor do
74
74
  expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
75
75
  expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
76
76
  end
77
+ it 'should generate metadata with taxonomies (list of tuples) using document attribute with pass' do
78
+ input = <<~'ADOC'
79
+ = Introduction to Neo4j 4.0
80
+ :document-metadata-attrs-include: pass:[slug,tags*,taxonomies*<>]
81
+ :slug: introduction-neo4j-4-0
82
+ :tags: intro , neo4j,,
83
+ :taxonomies: os= linux,,programming_language =java, neo4j_version=3-5; 3-6;
84
+
85
+ This is a paragraph.
86
+ ADOC
87
+ Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html')
88
+ metadata = YAML.load_file('spec/output/test.yml')
89
+ expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
90
+ expect(metadata['slug']).to eql('introduction-neo4j-4-0')
91
+ expect(metadata['tags']).to eql(%w[intro neo4j])
92
+ taxonomies = metadata['taxonomies']
93
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'os' }['values']).to eql(%w[linux])
94
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
95
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
96
+ end
97
+ it 'should generate metadata with taxonomies (list of tuples) using CLI attribute' do
98
+ input = <<~'ADOC'
99
+ = Introduction to Neo4j 4.0
100
+ :slug: introduction-neo4j-4-0
101
+ :tags: intro , neo4j,,
102
+ :taxonomies: os= linux,,programming_language =java, neo4j_version=3-5; 3-6;
103
+
104
+ This is a paragraph.
105
+ ADOC
106
+ Asciidoctor.convert(input, safe: 'safe', to_file: 'spec/output/test.html', attributes: {
107
+ 'document-metadata-attrs-include' => 'slug,tags*,taxonomies*<>'
108
+ })
109
+ metadata = YAML.load_file('spec/output/test.yml')
110
+ expect(metadata['title']).to eql('Introduction to Neo4j 4.0')
111
+ expect(metadata['slug']).to eql('introduction-neo4j-4-0')
112
+ expect(metadata['tags']).to eql(%w[intro neo4j])
113
+ taxonomies = metadata['taxonomies']
114
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'os' }['values']).to eql(%w[linux])
115
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'programming_language' }['values']).to eql(%w[java])
116
+ expect(taxonomies.detect { |taxonomy| taxonomy['key'] == 'neo4j_version' }['values']).to eql(%w[3-5 3-6])
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
77
152
  end
78
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.0.5
4
+ version: 0.3.0
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-04-27 00:00:00.000000000 Z
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.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.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.0
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.0
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