summaryrefslogtreecommitdiff
path: root/docs/modules/extensions/pages/inline-macro-processor.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/modules/extensions/pages/inline-macro-processor.adoc')
-rw-r--r--docs/modules/extensions/pages/inline-macro-processor.adoc51
1 files changed, 51 insertions, 0 deletions
diff --git a/docs/modules/extensions/pages/inline-macro-processor.adoc b/docs/modules/extensions/pages/inline-macro-processor.adoc
new file mode 100644
index 00000000..b16b4854
--- /dev/null
+++ b/docs/modules/extensions/pages/inline-macro-processor.adoc
@@ -0,0 +1,51 @@
+= Inline Macro Processor Extension Example
+:navtitle: Inline Macro Processor
+
+Purpose::
+Create an inline macro named `man` that links to a manpage.
+
+== sample-with-man-link.adoc
+
+[source,asciidoc]
+----
+See man:gittutorial[7] to get started.
+----
+
+== ManpageInlineMacro
+
+[source,ruby]
+----
+require 'asciidoctor'
+require 'asciidoctor/extensions'
+
+class ManInlineMacro < Asciidoctor::Extensions::InlineMacroProcessor
+ use_dsl
+
+ named :man
+ name_positional_attributes 'volnum'
+
+ def process parent, target, attrs
+ text = manname = target
+ suffix = ''
+ target = %(#{manname}.html)
+ suffix = if (volnum = attrs['volnum'])
+ "(#{volnum})"
+ else
+ nil
+ end
+ parent.document.register :links, target
+ %(#{(create_anchor parent, text, type: :link, target: target).convert}#{suffix})
+ end
+end
+----
+
+== Usage
+
+[source,ruby]
+----
+Asciidoctor::Extensions.register do
+ inline_macro ManInlineMacro
+end
+
+Asciidoctor.convert_file 'sample-with-man-link.adoc', safe: :safe
+----