asciidoctor-lists 1.0.3 → 1.0.7

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: 7eeaecee95733de1e2291f1047db511b54c07079d55f910857226b87d0d5e522
4
- data.tar.gz: b24e5796859234bb3da27c82b5081433c502970ab1d5146e9a51dbbf158338ee
3
+ metadata.gz: ac525c818bc5254204312158fee82493102b5d61477c3d17e8f6d4a1b6049ebd
4
+ data.tar.gz: cc8dd13be8fbc15c04627733a0784c2963ddbad3689a2d180af25a15c2b1ef45
5
5
  SHA512:
6
- metadata.gz: 2dd9fa38be20f3c80cc53ee06146ad906121a3ed15617fd979d7a5fa856f453b1a068ecbe4509312d45d40cd8981a3e6b5a4dfda9a9d74a59671ef32f19e07db
7
- data.tar.gz: 4b4c5db93c285ddd289d1f6b5e48d0c369ad94c2ed1b47d17482da5e75891ade0dbec50a3733a5eb36420c4c59de2948dc446c5e90cbe3bf70234baaeb3ace4e
6
+ metadata.gz: c6c3a5fd8b0ff322ad297070ed7796d758e4ad0c4d5efb1e285272f12b7b0b9323e90417852f3196aa700cdedb4ae9b5213192598b6f456c59bc55cc6ce4056c
7
+ data.tar.gz: 8677b62b1edbf1e6024f91422e6ca8670eff647258ac1ced4d8db03f3af9749685f5c1179da3cfbe7dcdf36598b4233ac1ee7b7a7ccfcce2ab1c6d0c39fb2f37
data/README.adoc CHANGED
@@ -3,10 +3,14 @@
3
3
  image:https://github.com/Alwinator/asciidoctor-lists/actions/workflows/test.yml/badge.svg[Test, link=https://github.com/Alwinator/asciidoctor-lists/actions/workflows/test.yml]
4
4
  image:https://github.com/Alwinator/asciidoctor-lists/actions/workflows/publish_gem.yml/badge.svg[Build, link=https://github.com/Alwinator/asciidoctor-lists/actions/workflows/publish_gem.yml]
5
5
  image:https://img.shields.io/gem/v/asciidoctor-lists.svg[Latest Release, link=https://rubygems.org/gems/asciidoctor-lists]
6
+ image:https://img.shields.io/github/stars/Alwinator/asciidoctor-lists[Stars, link=https://github.com/Alwinator/asciidoctor-lists]
7
+
6
8
 
7
9
  An https://asciidoctor.org/[asciidoctor] extension that adds a list of figures, a list of tables, or a list of anything you want!
8
10
 
9
- *Pull Request are always welcome! :)*
11
+ *Pull Requests are always welcome! :)*
12
+
13
+ IMPORTANT: With version 1.0.6 the syntax was changed from `element_list::[element=image]` to `list-of::image[]` to make it more intuitive.
10
14
 
11
15
  == Install
12
16
  [source,asciidoc]
@@ -20,32 +24,37 @@ gem install asciidoctor-lists
20
24
  ----
21
25
  ...
22
26
 
23
- .And this is the second one
24
- |===
25
- |Column 1, Header Row |Column 2, Header Row
26
-
27
- |Cell in column 1, row 1
28
- |Cell in column 2, row 1
29
-
30
- |Cell in column 1, row 2
31
- |Cell in column 2, row 2
32
- |===
33
-
34
-
35
- .Another wikipedia SVG image
36
- image::https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/SVG_Logo.svg/400px-SVG_Logo.svg.png[SVG,100,100]
37
-
38
27
  === List of figures
39
- element_list::[element=image]
28
+ list-of::image[]
40
29
 
41
30
  === List of tables
42
- element_list::[element=table]
31
+ list-of::table[]
43
32
 
33
+ === List of code snippets
34
+ list-of::listing[]
44
35
  ----
45
36
 
37
+ See link:samples/list-sample.adoc[]
38
+
46
39
  === Rendered
47
40
  image::img/sample.png[Sample,width=400]
48
41
 
42
+ == Parameters
43
+ === element
44
+ Specifies the element to be listed
45
+
46
+ Sample: link:samples/list-sample.adoc[]
47
+
48
+ === enhanced_rendering (experimental)
49
+ Allows rendering links in the caption
50
+
51
+ Sample: link:samples/enhanced-rendering.adoc[]
52
+
53
+ === hide_empty_section
54
+ Removes the section when no elements are found
55
+
56
+ Sample: link:samples/hide-if-empty-list-sample.adoc
57
+
49
58
  == Docker
50
59
  [source,bash]
51
60
  ----
@@ -69,4 +78,4 @@ asciidoctor -r ./lib/asciidoctor-lists.rb samples/list-sample.adoc
69
78
  ----
70
79
  gem build asciidoctor-lists.gemspec
71
80
  gem install asciidoctor-lists-x.x.x.gem
72
- ----
81
+ ----
@@ -5,40 +5,67 @@ require 'securerandom'
5
5
  module AsciidoctorLists
6
6
  module Asciidoctor
7
7
 
8
- MacroPlaceholder = Hash.new
8
+ ListMacroAttributes = Hash.new
9
9
 
10
- # Replaces tof::[] with ListOfFiguresMacroPlaceholder
11
- class ListOfFiguresMacro < ::Asciidoctor::Extensions::BlockMacroProcessor
10
+ # Replaces list-of::element[] with UUID and saves attributes in ListMacroPlaceholder
11
+ class ListMacro < ::Asciidoctor::Extensions::BlockMacroProcessor
12
12
  use_dsl
13
- named :element_list
14
- name_positional_attributes 'element'
13
+ named :"list-of"
14
+ name_positional_attributes 'enhanced_rendering'
15
+ name_positional_attributes 'hide_empty_section'
15
16
 
16
- def process(parent, _target, attrs)
17
+ def process(parent, target, attrs)
17
18
  uuid = SecureRandom.uuid
18
- MacroPlaceholder[uuid] = {element: attrs['element']}
19
+ ListMacroAttributes[uuid] = {
20
+ element: target,
21
+ enhanced_rendering: attrs['enhanced_rendering'],
22
+ hide_empty_section: attrs['hide_empty_section']
23
+ }
19
24
  create_paragraph parent, uuid, {}
20
25
  end
21
26
  end
22
- # Searches for the figures and replaced ListOfFiguresMacroPlaceholder with the list of figures
27
+ # Searches for the elements and replaced the UUIDs with the lists
23
28
  # Inspired by https://github.com/asciidoctor/asciidoctor-bibtex/blob/master/lib/asciidoctor-bibtex/extensions.rb#L162
24
- class ListOfFiguresTreeprocessor < ::Asciidoctor::Extensions::Treeprocessor
29
+ class ListTreeprocessor < ::Asciidoctor::Extensions::Treeprocessor
25
30
  def process(document)
26
31
  tof_blocks = document.find_by do |b|
27
32
  # for fast search (since most searches shall fail)
28
33
  (b.content_model == :simple) && (b.lines.size == 1) \
29
- && (MacroPlaceholder.keys.include?(b.lines[0]))
34
+ && (ListMacroAttributes.keys.include?(b.lines[0]))
30
35
  end
31
36
  tof_blocks.each do |block|
32
37
  references_asciidoc = []
33
- element_name = ":" + MacroPlaceholder[block.lines[0]][:element]
34
- document.find_by(context: eval(element_name)).each do |element|
35
38
 
36
- if element.caption
37
- unless element.id
38
- element.id = SecureRandom.uuid
39
+ params = ListMacroAttributes[block.lines[0]]
40
+ enhanced_rendering = params[:enhanced_rendering]
41
+ hide_empty_section = params[:hide_empty_section]
42
+
43
+ elements = document.find_by(context: params[:element].to_sym)
44
+ if elements.length > 0
45
+ elements.each do |element|
46
+
47
+ if element.caption or element.title
48
+ unless element.id
49
+ element.id = SecureRandom.uuid
50
+ end
51
+
52
+ if enhanced_rendering
53
+ if element.caption
54
+ references_asciidoc << %(xref:#{element.id}[#{element.caption}]#{element.instance_variable_get(:@title)} +)
55
+ else element.caption
56
+ references_asciidoc << %(xref:#{element.id}[#{element.instance_variable_get(:@title)}] +)
57
+ end
58
+ else
59
+ if element.caption
60
+ references_asciidoc << %(xref:#{element.id}[#{element.caption}]#{element.title} +)
61
+ else element.caption
62
+ references_asciidoc << %(xref:#{element.id}[#{element.title}] +)
63
+ end
64
+ end
39
65
  end
40
- references_asciidoc << %(xref:#{element.id}[#{element.caption}]#{element.title} +)
41
66
  end
67
+ elsif hide_empty_section
68
+ block.parent.parent.blocks.delete block.parent
42
69
  end
43
70
 
44
71
  block_index = block.parent.blocks.index do |b|
@@ -69,6 +96,6 @@ end
69
96
 
70
97
  # Register the extensions to asciidoctor
71
98
  Asciidoctor::Extensions.register do
72
- block_macro AsciidoctorLists::Asciidoctor::ListOfFiguresMacro
73
- tree_processor AsciidoctorLists::Asciidoctor::ListOfFiguresTreeprocessor
99
+ block_macro AsciidoctorLists::Asciidoctor::ListMacro
100
+ tree_processor AsciidoctorLists::Asciidoctor::ListTreeprocessor
74
101
  end
@@ -1,3 +1,3 @@
1
1
  module AsciidoctorLists
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-lists
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alwin Schuster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-20 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -37,7 +37,7 @@ files:
37
37
  - lib/asciidoctor-lists/version.rb
38
38
  homepage: https://github.com/Alwinator/asciidoctor-lists
39
39
  licenses:
40
- - MIT
40
+ - MPL-2
41
41
  metadata: {}
42
42
  post_install_message:
43
43
  rdoc_options: []