Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / doc / asciidoctor-macros / commaize-block / extension.rb
blob710f1a7e63946e2096bf95d07e03ccb230b2bb0a
1 # SPDX-License-Identifier: MIT
2 require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
4 include Asciidoctor
6 # An extension that converts a list of lines to an inline Oxford comma-separated list.
8 # Usage
10 #   [commaize]
11 #   --
12 #   item1
13 #   item2
14 #   item3
15 #   --
17 class CommaizeBlock < Extensions::BlockProcessor
18   include WsUtils
19   use_dsl
21   named :commaize
22   on_contexts :paragraph, :open
23   # XXX What's the difference between text, raw, simple, verbatim, etc?
24   parse_content_as :simple
26   def process(parent, reader, attrs)
27     lines = reader.lines
28     sort = attrs.fetch('sort', 'true') == 'true'
30     lines = lines.reject(&:empty?)
31     lines = lines.map(&:strip)
32     lines = lines.sort_by(&:downcase) if sort
34     if lines.length < 2
35       create_paragraph parent, lines, attrs
36     elsif lines.length == 2
37       create_paragraph parent, lines.join(" and "), attrs
38     else
39       commaized = lines[0..-2].join(", ")
40       commaized << ", and " + lines[-1]
41       create_paragraph parent, commaized, attrs
42     end
43   end
44 end