lib/marmerdo/markdown_parser.rb in marmerdo-0.0.0 vs lib/marmerdo/markdown_parser.rb in marmerdo-0.1.0
- old
+ new
@@ -7,26 +7,36 @@
def initialize(name, content)
@name = name
@content = content
end
- # @return [Node]
+ # @return [Node, nil] the parsed node or nil if the file has no marmerdo front matter.
def parse
+ return nil unless marmerdo_file?
+
Node.new(
- name: front_matter["name"] || @name,
- namespace: front_matter["namespace"],
+ name: marmerdo_matter["name"] || @name,
+ namespace: marmerdo_matter["namespace"],
relationships: relationships
)
end
private
+ def marmerdo_file?
+ front_matter.key?("marmerdo")
+ end
+
def front_matter
- @front_matter ||= FrontMatterParser::Parser.new(:md).call(@content).front_matter
+ @front_matter ||= FrontMatterParser::Parser.new(:md).call(@content).front_matter || {}
end
+ def marmerdo_matter
+ @marmerdo_matter ||= front_matter["marmerdo"] || {}
+ end
+
def relationships
- @relationships ||= front_matter.filter { |k, _| Relationship::TYPES.include?(k.to_sym) }.map do |type, to|
+ @relationships ||= marmerdo_matter.filter { |k| Relationship::TYPES.include?(k.to_sym) }.map do |type, to|
Relationship.new(type: type, to: to)
end
end
end
end