module Herb

def self.extract_html(source)

def self.extract_html(source)
  LibHerb::Buffer.with do |output|
    LibHerb.herb_extract_html_to_buffer(source, output.pointer)
    output.read
  end
end

def self.extract_ruby(source)

def self.extract_ruby(source)
  LibHerb::Buffer.with do |output|
    LibHerb.herb_extract_ruby_to_buffer(source, output.pointer)
    output.read
  end
end

def self.lex(source)

def self.lex(source)
  LexResult.new(
    LibHerb.herb_lex(source)
  )
end

def self.lex_to_json(source)

def self.lex_to_json(source)
  LibHerb::Buffer.with do |output|
    LibHerb.herb_lex_json_to_buffer(source, output.pointer)
    JSON.parse(output.read.force_encoding("utf-8"))
  end
end

def self.parse(source)

def self.parse(source)
  ParseResult.new(
    LibHerb.herb_parse(source)
  )
end