////
Included in:

- user-manual: Extensions: Include processor example
////

Purpose::
  Include a file from a URI.

TIP: Asciidoctor supports including content from a URI out of the box if you set the `allow-uri-read` attribute (not available if the safe mode is `secure`).

.sample-with-uri-include.adoc

```
:source-highlighter: coderay

.Gemfile
[source,ruby]
----
\include::https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/Gemfile[]
----
```

.UriIncludeProcessor

```ruby
require 'asciidoctor'
require 'asciidoctor/extensions'
require 'open-uri'

class UriIncludeProcessor < Asciidoctor::Extensions::IncludeProcessor
  def handles? target
    (target.start_with? 'http://') or (target.start_with? 'https://')
  end

  def process doc, reader, target, attributes
    content = (open target).readlines
    reader.push_include content, target, target, 1, attributes
    reader
  end
end
```

.Usage

```ruby
Asciidoctor::Extensions.register do
  include_processor UriIncludeProcessor
end

Asciidoctor.convert_file 'sample-with-uri-include.adoc', :safe => :safe
```