Running AsciiDoctor from the CLI creates a HTML document with an embedded stylesheet:

$ asciidoctor mysample.adoc

....
<title>My First Experience with the Dangers of Documentation</title>
<style>
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
...

However, running Asciidoctor in a Ruby file does not:

r.rb:

#!/usr/bin/env ruby

require 'asciidoctor'
Asciidoctor.render_file('mysample.adoc', :in_place => true)

$ ./r.rb

...
<title>My First Experience with the Dangers of Documentation</title>
<link rel="stylesheet" href="./asciidoctor.css">
...

The documentation doesn't indicate that there should be any difference. What am I missing?

Details:

  • Asciidoctor 0.1.4
  • ruby 2.0.0p247
有帮助吗?

解决方案

To embed the stylesheet, you must have to render the file in the "unsafe" mode:

require 'asciidoctor'
Asciidoctor.render_file('mysample.adoc', :in_place => true, :safe => 'unsafe')

其他提示

Technically, you only need to set the safe mode to :server or :safe. Only the :secure safe mode (the default when using the API) forcefully enables the linkcss attribute.

I'm thinking about changing this in 1.5.0. I don't think that adding styles to the full document is insecure in any way. Besides, there are plenty of ways to override this behavior so nothing is lost, but usability is definitely gained.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top