class Ulysses::Sheet

Attributes

dirname[R]

Public Class Methods

new(dirname) click to toggle source
# File lib/ulysses/sheet.rb, line 6
def initialize(dirname)
  @dirname = dirname
end

Public Instance Methods

markup() click to toggle source
# File lib/ulysses/sheet.rb, line 10
def markup
  @markup ||= parse_markup
end
reload() click to toggle source
# File lib/ulysses/sheet.rb, line 22
def reload
  @markup, @xml, @html = nil
end
to_html() click to toggle source
# File lib/ulysses/sheet.rb, line 18
def to_html
  @html ||= Exporter.new(xml).to_html
end
xml() click to toggle source
# File lib/ulysses/sheet.rb, line 14
def xml
  @xml ||=  Nokogiri::XML(File.read(File.join(@dirname, 'Content.xml')))
end

Private Instance Methods

parse_markup() click to toggle source
# File lib/ulysses/sheet.rb, line 32
def parse_markup
  segment = xml.xpath('/sheet/markup')[0]
  markup  = parse_xml_attributes(segment)
  markup[:definitions] = begin
    defines = segment.children.select { |node| node.element? }.map do |node|
      attrs = parse_xml_attributes(node)
      [attrs[:definition].to_sym, attrs]
    end
    Hash[defines]
  end
  markup
end
parse_xml_attributes(node) click to toggle source
# File lib/ulysses/sheet.rb, line 28
def parse_xml_attributes(node)
  Hash[node.attributes.map { |nm, el| [nm.to_sym, el.value] }]
end