Class: XanMarkup::Markupizer

Inherits:
Object
  • Object
show all
Defined in:
lib/xan_markup/markupizer.rb

Constant Summary collapse

MarkupSyntax =
/\{\{ ?(.*?) ?\}\}/
BlockMarkupSyntax =
/\{\{ ?((\w+)(.*?)) ?\}\}(.*?)\{\{ ?\/(\2) ?\}\}/m

Instance Method Summary collapse

Constructor Details

#initialize(content, syntax = MarkupSyntax, block_syntax = BlockMarkupSyntax) ⇒ Markupizer

Returns a new instance of Markupizer.



9
10
11
12
13
# File 'lib/xan_markup/markupizer.rb', line 9

def initialize(content, syntax = MarkupSyntax, block_syntax = BlockMarkupSyntax)
  @content = content.to_s.dup.to_str
  @syntax = syntax
  @block_syntax = block_syntax
end

Instance Method Details

#markupize(content = @content, &block) ⇒ Object



21
22
23
24
# File 'lib/xan_markup/markupizer.rb', line 21

def markupize(content = @content, &block)
  content = markupize_syntax(@block_syntax, content, &block)
  markupize_syntax(@syntax, content, &block)
end

#markupize_syntax(syntax, content, &block) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/xan_markup/markupizer.rb', line 26

def markupize_syntax(syntax, content, &block)
  content.gsub(syntax) do |markup|
    if content = $4
      yield ContentTag.new($1, markupize(content, &block))
    else
      yield Tag.new($1)
    end
  end
end

#tagsObject



15
16
17
18
19
# File 'lib/xan_markup/markupizer.rb', line 15

def tags
  tags = []
  markupize { |tag| tags << tag }
  tags
end