require 'sinatra'

get '/hi' do
  "Hello World!"
end
require 'sinatra'

get '/hi' do
  "Hello World!"
end

[#hello,ruby] <.> <.> <.> ---- <.> require 'sinatra'

get '/hi' do "Hello World!" end

// end::src-base-co[]

// src-base-co-res is the result of src-base-co
// tag::src-base-co-res[]
[#hello,ruby]

require 'sinatra'

get '/hi' do "Hello World!" end

// end::src-base-co-res[]

// tag::src-para-co[]
[source,xml] (1)
<meta name="viewport"
  content="width=device-width, initial-scale=1.0">
(2)
This is normal content.
// end::src-para-co[]

// tag::src-para[]
[source,xml]
<meta name="viewport"
  content="width=device-width, initial-scale=1.0">

This is normal content.
// end::src-para[]

// tag::src-lang[]
= 文档标题
:source-highlighter: pygments :source-language: java

public void setAttributes(Attributes attributes) { this.options.put(ATTRIBUTES, attributes.map()); }

// end::src-lang[]

// tag::override[]
= 文档标题
:source-highlighter: pygments :source-language: java

[,ruby] require 'sinatra' // end::override[]

// tag::src-inc[] [,ruby]

include::app.rb[]

// end::src-inc[]

// tag::rel[]
:sourcedir: src/main/java

[source,java]

include::{sourcedir}/org/asciidoctor/Asciidoctor.java[]

// end::rel[]

// tag::ind[]
[source,ruby]

include::lib/app.rb[tag=main,indent=0]

// end::ind[]

ruby
require 'sinatra'

get '/hi' do
  "Hello World!"
end
```
// end::fence[]

// tag::linenums-option[]
[%linenums,ruby]

puts 1 puts 2 puts 3

// end::linenums-option[]

// tag::linenums-posattr[]
[,ruby,linenums]

puts 1 puts 2 puts 3

// end::linenums-posattr[]