Module: Textus::Format

Defined in:
lib/textus/format.rb,
lib/textus/format/base.rb,
lib/textus/format/json.rb,
lib/textus/format/text.rb,
lib/textus/format/yaml.rb,
lib/textus/format/markdown.rb

Defined Under Namespace

Classes: Base, Json, Markdown, Text, Yaml

Constant Summary collapse

SEP =
"---".freeze
STRATEGIES =
{
  "markdown" => -> { Format::Markdown },
  "json" => -> { Format::Json },
  "yaml" => -> { Format::Yaml },
  "text" => -> { Format::Text },
}.freeze
EXT_TO_FORMAT =
{
  ".md" => "markdown",
  ".json" => "json",
  ".yaml" => "yaml",
  ".yml" => "yaml",
  ".txt" => "text",
}.freeze

Class Method Summary collapse

Class Method Details

.for(format) ⇒ Object



20
21
22
# File 'lib/textus/format.rb', line 20

def self.for(format)
  STRATEGIES.fetch(format.to_s) { raise Textus::UsageError.new("unknown entry format: #{format.inspect}") }.call
end

.formatsObject



28
29
30
# File 'lib/textus/format.rb', line 28

def self.formats
  EXT_TO_FORMAT.values.uniq
end

.infer_from_extension(ext) ⇒ Object



24
25
26
# File 'lib/textus/format.rb', line 24

def self.infer_from_extension(ext)
  EXT_TO_FORMAT[ext]
end

.parse(raw, path: nil, format: "markdown") ⇒ Object



32
33
34
# File 'lib/textus/format.rb', line 32

def self.parse(raw, path: nil, format: "markdown")
  Format.for(format).parse(raw, path: path)
end

.serialize(meta: {}, body: "", content: nil, format: "markdown") ⇒ Object



36
37
38
# File 'lib/textus/format.rb', line 36

def self.serialize(meta: {}, body: "", content: nil, format: "markdown")
  Format.for(format).serialize(meta: meta, body: body, content: content)
end