Class: Asciidoctor::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/asciidoctor/pdf/ext/asciidoctor/document.rb

Instance Method Summary collapse

Instance Method Details

#attr_unspecified?(name) ⇒ Boolean

Internal: Returns whether the specified attribute has never been set and is not locked.

Returns:

  • (Boolean)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/asciidoctor/pdf/ext/asciidoctor/document.rb', line 28

def attr_unspecified? name
  if (attribute_locked? name) || (@attributes_modified.include? name)
    false
  else
    @options[:attributes].each_pair.none? do |k, v|
      if k == name
        true
      elsif v == '@'
        k == %(!#{name}) || k == %(#{name}!)
      elsif k.end_with? '@'
        (k = k.chop) == name || k == %(!#{name}) || k == %(#{name}!)
      else
        false
      end
    end
  end
end

#promote_preface_blockObject

promote preface block (i.e., preamble block with title in book doctype) to preface section FIXME: this should be handled by core



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/asciidoctor/pdf/ext/asciidoctor/document.rb', line 6

def promote_preface_block
  if doctype == 'book' && (blk0 = blocks[0])&.context == :preamble && blk0.title? && !blk0.title.nil_or_empty? &&
      blk0.blocks[0]&.style != 'abstract' && (blk1 = blocks[1])&.context == :section
    preface = Asciidoctor::Section.new self, blk1.level, false, attributes: { 1 => 'preface', 'style' => 'preface' }
    preface.special = true
    preface.sectname = 'preface'
    preface.title = blk0.instance_variable_get :@title
    preface.id = preface.generate_id
    if (first_child = blk0.blocks[0])&.option? 'notitle'
      preface.set_option 'notitle'
      first_child.set_attr 'role', 'lead' if first_child.context == :paragraph && !first_child.role?
    end
    preface.blocks.replace (blk0.blocks.map do |b|
      b.parent = preface
      b
    end)
    blocks[0] = preface
  end
  nil
end