NAME
    Org::Export::HTML - Export Org document to HTML

VERSION
    version 0.03

SYNOPSIS
     use Org::Export::HTML qw(export_org_to_html);

     # non-OO interface
     my $res = export_org_to_html(
         source_file   => 'todo.org', # or source_str
         #target_file  => 'todo.html', # defaults return the HTML in $res->[2]
         #html_title   => 'My Todo List', # defaults to file name
         #include_tags => [...], # default exports all tags.
         #exclude_tags => [...], # behavior mimics emacs's include/exclude rule
         #css_url      => '/path/to/my/style.css', # default none
         #naked        => 0, # if set to 1, no HTML/HEAD/BODY will be output.
     );
     die "Failed" unless $res->[0] == 200;

     # OO interface
     my $oeh = Org::Export::HTML->new();
     my $html = $oeh->export($doc); # $doc is Org::Document object

DESCRIPTION
    Export Org format to HTML. Currently very barebones; this module is more
    of a proof-of-concept for Org::Parser. For any serious exporting,
    currently you're better-off using Emacs' org-mode HTML export facility.

    This module uses Log::Any logging framework.

    This module uses Moo for object system.

    This module's functions have Sub::Spec specs.

ATTRIBUTES
  naked => BOOL
    If set to true, export_document() will not output HTML/HEAD/BODY
    wrapping element. Default is false.

  include_tags => ARRAYREF
    Works like Org's 'org-export-select-tags' variable. See
    export_org_to_html() for more details.

  exclude_tags => ARRAYREF
    After 'include_tags' is evaluated, all subtrees that are marked by any
    of the exclude tags will be removed from export.

  html_title => STR
    Title to use in TITLE element. If unset, defaults to "(no title)" when
    exporting.

  css_url => STR
    If set, export_document() will output a LINK element pointing to this
    CSS.

METHODS
  $oeh->export($doc)
    Export an Org document into HTML. $org is Org::Document object. Returns
    $html, which is the HTML string. Dies on error.

  $oeh->export_document($doc) => $html
    Given an Org::Element::Block element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_block($elem) => $html
    Given an Org::Element::Block element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_short_example($elem) => $html
    Given an Org::Element::ShortExample element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_comment($elem) => $html
    Given an Org::Element::Comment element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_drawer($elem) => $html
    Given an Org::Element::Drawer element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_footnote($elem) => $html
    Given an Org::Element::Footnote element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_headline($elem) => $html
    Given an Org::Element::Headline element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_list($elem) => $html
    Given an Org::Element::List element, export it to HTML. Override this in
    subclass to provide custom behavior.

  $oeh->export_list_item($elem) => $html
    Given an Org::Element::ListItem element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_radio_target($elem) => $html
    Given an Org::Element::RadioTarget element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_setting($elem) => $html
    Given an Org::Element::Setting element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_table($elem) => $html
    Given an Org::Element::Table element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_table_row($elem) => $html
    Given an Org::Element::TableRow element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_table_cell($elem) => $html
    Given an Org::Element::TableCell element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_table_vline($elem) => $html
    Given an Org::Element::TableVLine element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_target($elem) => $html
    Given an Org::Element::Target element, export it to HTML. Override this
    in subclass to provide custom behavior.

  $oeh->export_text($elem) => $html
    Given an Org::Element::Text element, export it to HTML. Override this in
    subclass to provide custom behavior.

  $oeh->export_time_range($elem) => $html
    Given an Org::Element::TimeRange element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_timestamp($elem) => $html
    Given an Org::Element::Timestamp element, export it to HTML. Override
    this in subclass to provide custom behavior.

  $oeh->export_link($elem) => $html
    Given an Org::Element::Link element, export it to HTML. Override this in
    subclass to provide custom behavior.

FUNCTIONS
    None is exported by default, but they can be.

  export_org_to_html(%args) -> [STATUS_CODE, ERR_MSG, RESULT]
    Export Org document to HTML.

    This is the non-OO interface. For more customization, consider
    subclassing Org::Export::HTML.

    Returns a 3-element arrayref. STATUS_CODE is 200 on success, or an error
    code between 3xx-5xx (just like in HTTP). ERR_MSG is a string containing
    error message, RESULT is the actual result.

    Arguments ("*" denotes required arguments):

    *   css_url => *str*

        Add a link to CSS document.

    *   exclude_tags => *array*

        Exclude trees that carry one of these tags.

        After 'include_tags' is evaluated, all subtrees that are marked by
        any of the exclude tags will be removed from export.

    *   html_title => *str*

        HTML document title, defaults to source_file.

    *   include_tags => *array*

        Include trees that carry one of these tags.

        Works like Org's 'org-export-select-tags' variable. If the whole
        document doesn't have any of these tags, then the whole document
        will be exported. Otherwise, trees that do not carry one of these
        tags will be excluded. If a selected tree is a subtree, the heading
        hierarchy above it will also be selected for export, but not the
        text below those headings.

    *   naked => *bool*

        Don't wrap exported HTML with HTML/HEAD/BODY elements.

    *   source_file => *str*

        Source Org file to export.

    *   source_str => *str*

        Alternatively you can specify Org string directly.

    *   target_file => *str*

        HTML file to write to.

        If not specified, HTML string will be returned.

SEE ALSO
    Org::Parser

AUTHOR
    Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2011 by Steven Haryanto.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

