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.adoc48
1 files changed, 48 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..b8d88b0e
--- /dev/null
+++ b/docs/modules/extensions/pages/inline-macro-processor.adoc
@@ -0,0 +1,48 @@
+= 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
+
+```
+See man:gittutorial[7] to get started.
+```
+
+== ManpageInlineMacro
+
+```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
+
+```ruby
+Asciidoctor::Extensions.register do
+ inline_macro ManInlineMacro
+end
+
+Asciidoctor.convert_file 'sample-with-man-link.adoc', :safe => :safe
+```