Class: FrontMatterParser::Parser
- Inherits:
-
Object
- Object
- FrontMatterParser::Parser
- Defined in:
- lib/front_matter_parser/parser.rb
Overview
Entry point to parse a front matter from a string or file.
Instance Attribute Summary collapse
-
#loader ⇒ Object
readonly
Current loader in use.
-
#syntax_parser ⇒ Object
readonly
Current syntax parser in use.
Class Method Summary collapse
-
.parse_file(pathname, syntax_parser: nil, loader: nil) ⇒ Parsed
Parses front matter and content from given pathname, inferring syntax from the extension or, otherwise, using syntax_parser argument.
Instance Method Summary collapse
-
#call(string) ⇒ Parsed
Parses front matter and content from given string.
-
#initialize(syntax_parser, loader: Loader::Yaml.new) ⇒ Parser
constructor
details.
Constructor Details
Instance Attribute Details
#loader ⇒ Object (readonly)
Current loader in use. See Loader for details
12 13 14 |
# File 'lib/front_matter_parser/parser.rb', line 12 def loader @loader end |
#syntax_parser ⇒ Object (readonly)
Current syntax parser in use. See SyntaxParser
8 9 10 |
# File 'lib/front_matter_parser/parser.rb', line 8 def syntax_parser @syntax_parser end |
Class Method Details
.parse_file(pathname, syntax_parser: nil, loader: nil) ⇒ Parsed
Parses front matter and content from given pathname, inferring syntax from the extension or, otherwise, using syntax_parser argument.
21 22 23 24 25 26 27 |
# File 'lib/front_matter_parser/parser.rb', line 21 def self.parse_file(pathname, syntax_parser: nil, loader: nil) syntax_parser ||= syntax_from_pathname(pathname) loader ||= Loader::Yaml.new File.open(pathname) do |file| new(syntax_parser, loader: loader).call(file.read) end end |
Instance Method Details
#call(string) ⇒ Parsed
Parses front matter and content from given string
:reek:FeatureEnvy
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/front_matter_parser/parser.rb', line 63 def call(string) match = syntax_parser.call(string) front_matter, content = if match [loader.call(match[:front_matter]), match[:content]] else [{}, string] end Parsed.new(front_matter: front_matter, content: content) end |