Class: MaRuKu::MDDocument
- Defined in:
- lib/maruku/structures.rb,
lib/maruku.rb,
lib/maruku/toc.rb,
lib/maruku/toc.rb,
lib/maruku/output/to_latex.rb,
lib/maruku/ext/math/parsing.rb,
lib/maruku/output/to_markdown.rb
Overview
This represents the whole document and holds global data.
Direct Known Subclasses
Constant Summary collapse
- Latex_preamble_enc_cjk =
"\\usepackage[C40]{fontenc} \\usepackage[cjkjis]{ucs} \\usepackage[utf8x]{inputenc}"
- Latex_preamble_enc_utf8 =
"\\usepackage{ucs} \\usepackage[utf8x]{inputenc}"
Constants included from In::Markdown::SpanLevelParser
In::Markdown::SpanLevelParser::CharSource, In::Markdown::SpanLevelParser::Close_class, In::Markdown::SpanLevelParser::EscapedCharInInlineCode, In::Markdown::SpanLevelParser::EscapedCharInQuotes, In::Markdown::SpanLevelParser::EscapedCharInText, In::Markdown::SpanLevelParser::Punct_class, In::Markdown::SpanLevelParser::R_REF_ID, In::Markdown::SpanLevelParser::Rules, In::Markdown::SpanLevelParser::SPACE
Constants included from Strings
Strings::Abbreviation, Strings::AttributeDefinitionList, Strings::Definition, Strings::EMailAddress, Strings::FootnoteText, Strings::HeaderWithAttributes, Strings::HeaderWithId, Strings::IncompleteLink, Strings::InlineAttributeList, Strings::LinkRegex, Strings::MightBeTableHeader, Strings::Sep, Strings::TabSize, Strings::TableSeparator
Constants included from In::Markdown
In::Markdown::BlockExtensions, In::Markdown::SpanExtensions, In::Markdown::SpanExtensionsTrigger
Constants included from Out::Latex
Out::Latex::ENTITY_TABLE, Out::Latex::SAFE_CHARS, Out::Latex::TexHeaders, Out::Latex::XML_TABLE
Constants included from Out::HTML
Out::HTML::BlahtexCache, Out::HTML::StandardAttributes
Constants included from Out::Markdown
Out::Markdown::DefaultLineLength
Constants included from MaRuKu
Globals, MagicChar, MarukuURL, Version
Instance Attribute Summary collapse
-
#eqid2eq ⇒ Object
Hash equation id (String) to equation element (MDElement).
-
#toc ⇒ Object
an instance of Section (see below).
Attributes inherited from MDElement
Instance Method Summary collapse
- #create_toc ⇒ Object
-
#initialize(s = nil) ⇒ MDDocument
constructor
A new instance of MDDocument.
- #latex_require_package(p) ⇒ Object
- #old_md ⇒ Object
- #render_latex_signature ⇒ Object
-
#to_latex ⇒ Object
Render as a LaTeX fragment.
-
#to_latex_document ⇒ Object
Render as a complete LaTeX document.
- #to_md(context = {}) ⇒ Object
Methods included from In::Markdown::BlockLevelParser
#eventually_comes_a_def_list, #execute_code_blocks, #expand_attribute_list, #parse_blocks, #parse_doc, #parse_text_as_markdown, #read_abbreviation, #read_ald, #read_code, #read_definition, #read_footnote_text, #read_header12, #read_header3, #read_indented_content, #read_list_item, #read_metadata, #read_paragraph, #read_quote, #read_raw_html, #read_ref_definition, #read_table, #read_xml_instruction, #safe_execute_code, #search_abbreviations, #split_cells, #substitute_markdown_inside_raw_html
Methods included from In::Markdown::SpanLevelParser
#apply_one_rule, #describe_pos, #educate, #extension_meta, #interpret_extension, #is_ial, #md_al, #merge_ial, #parse_lines_as_span, #parse_span_better, #read_attribute_list, #read_em, #read_email_el, #read_emstrong, #read_footnote_ref, #read_image, #read_inline_code, #read_inline_html, #read_link, #read_quoted, #read_quoted_or_unquoted, #read_ref_id, #read_simple, #read_span, #read_strong, #read_url, #read_url_el, #read_xml_instr_span, #unit_tests_for_attribute_lists
Methods included from Helpers
#md_abbr, #md_abbr_def, #md_ald, #md_br, #md_code, #md_codeblock, #md_el, #md_em, #md_email, #md_emstrong, #md_entity, #md_foot_ref, #md_footnote, #md_header, #md_hrule, #md_html, #md_ial, #md_im_image, #md_im_link, #md_image, #md_li, #md_link, #md_par, #md_quote, #md_ref_def, #md_strong, #md_url, #md_xml_instr
Methods included from Strings
#add_tabs, #dbg_describe_ary, #force_linebreak?, #line_md_type, #normalize_key_and_value, #num_leading_hashes, #number_of_leading_spaces, #parse_email_headers, #spaces_before_first_char, #split_lines, #strip_hashes, #strip_indent, #unquote
Methods included from In::Markdown
#any_matching_block_extension?, #check_block_extensions, #check_span_extensions, register_block_extension, register_span_extension
Methods inherited from MDElement
#==, #children_inspect, #children_to_s, #each_element, #generate_id, #get_setting, #inspect, #inspect2, #md_equation, #md_inline_math, #replace_each_string, #to_s
Methods included from Errors
#create_frame, #describe_error, #maruku_error, #maruku_recover, #raise_error, #tell_user
Methods included from Out::Latex
#array_to_latex, #children_to_latex, init_entity_table, #latex_color, #latex_escape, need_entity_table, #to_latex_abbr, #to_latex_cell, #to_latex_code, #to_latex_definition, #to_latex_definition_list, #to_latex_email_address, #to_latex_emphasis, #to_latex_entity, #to_latex_eqref, #to_latex_equation, #to_latex_footnote_reference, #to_latex_head_cell, #to_latex_header, #to_latex_hrule, #to_latex_im_link, #to_latex_image, #to_latex_immediate_link, #to_latex_inline_code, #to_latex_inline_math, #to_latex_li, #to_latex_li_span, #to_latex_linebreak, #to_latex_link, #to_latex_ol, #to_latex_paragraph, #to_latex_quote, #to_latex_raw_html, #to_latex_strong, #to_latex_table, #to_latex_ul, #wrap_as_environment, #wrap_as_span
Methods included from Out::HTML
#add_class_to, #add_class_to_link, #add_ws, #adjust_png, #array_to_html, #children_to_html, #convert_to_mathml_blahtex, #convert_to_mathml_itex2mml, #convert_to_mathml_none, #convert_to_mathml_ritex, #convert_to_png_blahtex, #convert_to_png_none, #create_html_element, #day_suffix, #maruku_html_signature, #nice_date, #obfuscate, #pixels_per_ex, #render_footnotes, #render_mathml, #render_png, #render_section_number, #section_number, #source2html, #to_html, #to_html_abbr, #to_html_cell, #to_html_code, #to_html_code_using_pre, #to_html_definition, #to_html_definition_data, #to_html_definition_list, #to_html_definition_term, #to_html_document, #to_html_document_tree, #to_html_email_address, #to_html_emphasis, #to_html_entity, #to_html_eqref, #to_html_equation, #to_html_footnote_reference, #to_html_head_cell, #to_html_header, #to_html_hrule, #to_html_im_image, #to_html_im_link, #to_html_image, #to_html_immediate_link, #to_html_inline_code, #to_html_inline_math, #to_html_li, #to_html_li_span, #to_html_linebreak, #to_html_link, #to_html_ol, #to_html_paragraph, #to_html_quote, #to_html_raw_html, #to_html_ref_definition, #to_html_strong, #to_html_table, #to_html_ul, #to_html_xml_instr, #to_latex_ref_definition, #wrap_as_element, #xml_newline
Methods included from Out::Markdown
#add_indent, #array_to_md, #children_to_md, #to_md_abbr_def, #to_md_li_span, #to_md_ol, #to_md_paragraph, #to_md_ul, #wrap
Methods included from MaRuKu
#markdown_extra?, #new_meta_data?
Constructor Details
#initialize(s = nil) ⇒ MDDocument
Returns a new instance of MDDocument.
148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/maruku/structures.rb', line 148 def initialize(s=nil) super(:document) @doc = self self.refs = {} self.footnotes = {} self.footnotes_order = [] self.abbreviations = {} self.ald = {} self.latex_required_packages = [] parse_doc(s) if s end |
Instance Attribute Details
#eqid2eq ⇒ Object
Hash equation id (String) to equation element (MDElement)
4 5 6 |
# File 'lib/maruku/ext/math/parsing.rb', line 4 def eqid2eq @eqid2eq end |
#toc ⇒ Object
an instance of Section (see below)
26 27 28 |
# File 'lib/maruku/toc.rb', line 26 def toc @toc end |
Instance Method Details
#create_toc ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/maruku/toc.rb', line 135 def create_toc each_element(:header) do |h| h.attributes[:id] ||= h.generate_id end stack = [] # the ancestor section s = Section.new s.section_level = 0 stack.push s i = 0; while i < @children.size while i < @children.size if @children[i].node_type == :header level = @children[i].level break if level <= stack.last.section_level+1 end stack.last.immediate_children.push @children[i] i += 1 end break if i>=@children.size header = @children[i] level = header.level if level > stack.last.section_level # this level is inside s2 = Section.new s2.section_level = level s2.header_element = header header.instance_variable_set :@section, s2 stack.last.section_children.push s2 stack.push s2 i+=1 elsif level == stack.last.section_level # this level is a sibling stack.pop else # this level is a parent stack.pop end end # If there is only one big header, then assume # it is the master if s.section_children.size == 1 s = s.section_children.first end # Assign section numbers s.numerate s end |
#latex_require_package(p) ⇒ Object
34 35 36 37 38 |
# File 'lib/maruku/output/to_latex.rb', line 34 def latex_require_package(p) if not self.latex_required_packages.include? p self.latex_required_packages.push p end end |
#old_md ⇒ Object
158 |
# File 'lib/maruku/output/to_markdown.rb', line 158 alias old_md to_md |
#render_latex_signature ⇒ Object
142 143 144 145 146 147 148 149 |
# File 'lib/maruku/output/to_latex.rb', line 142 def render_latex_signature "\\vfill \\hrule \\vspace{1.2mm} \\begin{tiny} Created by \\href{http://maruku.rubyforge.org}{Maruku} #{self.nice_date}. \\end{tiny}" end |
#to_latex ⇒ Object
Render as a LaTeX fragment
41 42 43 |
# File 'lib/maruku/output/to_latex.rb', line 41 def to_latex children_to_latex end |
#to_latex_document ⇒ Object
Render as a complete LaTeX document
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/maruku/output/to_latex.rb', line 57 def to_latex_document body = to_latex if get_setting(:maruku_signature) body += render_latex_signature end required = self.latex_required_packages.map {|p| "\\usepackage{#{p}}\n" }.join =begin maruku_doc Attribute: latex_cjk Scope: document Output: latex Summary: Support for CJK characters. If the `latex_cjk` attribute is specified, then appropriate headers are added to the LaTeX preamble to support Japanese fonts. You have to have these fonts installed -- and this can be a pain. If `latex_cjk` is specified, this is added to the preamble: <?mrk puts "ciao" ?> <?mrk md_codeblock(Maruku::MDDocument::Latex_preamble_enc_cjk) ?> while the default is to add this: <?mrk md_codeblock(Maruku::MDDocument::Latex_preamble_enc_utf8) ?> =end encoding = get_setting(:latex_cjk) ? Latex_preamble_enc_cjk : Latex_preamble_enc_utf8 =begin maruku_doc Attribute: latex_preamble Scope: document Output: latex Summary: User-defined preamble. If the `latex_preamble` attribute is specified, then its value will be used as a custom preamble. For example: Title: My document Latex preamble: preamble.tex will produce: ... \input{preamble.tex} ... =end user_preamble = (file = @doc.attributes[:latex_preamble]) ? "\\input{#{file}}\n" : "" "\\documentclass{article} % Packages required to support encoding #{encoding} % Packages required by code #{required} % Packages always used \\usepackage{hyperref} \\usepackage{xspace} \\usepackage[usenames,dvipsnames]{color} \\usepackage[margin=1in]{geometry} \\hypersetup{colorlinks=true,urlcolor=blue} #{user_preamble} \\begin{document} #{body} \\end{document} " end |
#to_md(context = {}) ⇒ Object
159 160 161 162 163 |
# File 'lib/maruku/output/to_markdown.rb', line 159 def to_md(context={}) s = old_md(context) # puts s s end |