neo4j-asciidoctor-extensions 0.0.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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