Class: CodeBlockParser
- Inherits:
-
Object
- Object
- CodeBlockParser
- Defined in:
- lib/code_block_parser.rb
Constant Summary collapse
- CODE_BLOCK_START_PATTERN =
Code block header pattern: “‘language options Supports both “`language and “`language options formats
/^```(\w+)(?:\s*\{(.*)\})?$/i- RUBY_RESULT_BLOCK_PATTERN =
/^```ruby\s+RESULT$/i- BLOCK_END_PATTERN =
"```"
Instance Method Summary collapse
-
#initialize(frontmatter_parser, language_resolver) ⇒ CodeBlockParser
constructor
A new instance of CodeBlockParser.
- #is_block_end?(line) ⇒ Boolean
- #is_ruby_result_block?(line) ⇒ Boolean
- #parse_code_block_header(line) ⇒ Object
- #parse_explain_option(options_string, language = nil) ⇒ Object
- #parse_flamegraph_option(options_string, language = nil) ⇒ Object
- #parse_rerun_option(options_string, language = nil) ⇒ Object
- #parse_result_option(options_string, language = nil) ⇒ Object
- #parse_run_option(options_string, language = nil) ⇒ Object
Constructor Details
#initialize(frontmatter_parser, language_resolver) ⇒ CodeBlockParser
Returns a new instance of CodeBlockParser.
10 11 12 13 |
# File 'lib/code_block_parser.rb', line 10 def initialize(frontmatter_parser, language_resolver) @frontmatter_parser = frontmatter_parser @language_resolver = language_resolver end |
Instance Method Details
#is_block_end?(line) ⇒ Boolean
35 36 37 |
# File 'lib/code_block_parser.rb', line 35 def is_block_end?(line) line.strip == BLOCK_END_PATTERN end |
#is_ruby_result_block?(line) ⇒ Boolean
31 32 33 |
# File 'lib/code_block_parser.rb', line 31 def is_ruby_result_block?(line) line.match?(RUBY_RESULT_BLOCK_PATTERN) end |
#parse_code_block_header(line) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/code_block_parser.rb', line 15 def parse_code_block_header(line) match_data = line.match(CODE_BLOCK_START_PATTERN) return nil unless match_data lang = match_data[1].downcase = match_data[2] resolved_lang = resolve_language(lang) { original_lang: lang, resolved_lang: resolved_lang, options_string: , is_supported: SUPPORTED_LANGUAGES.key?(resolved_lang) } end |
#parse_explain_option(options_string, language = nil) ⇒ Object
49 50 51 52 |
# File 'lib/code_block_parser.rb', line 49 def parse_explain_option(, language = nil) default_value = @frontmatter_parser.get_default_value("explain", language, false) parse_boolean_option(, "explain", default_value) end |
#parse_flamegraph_option(options_string, language = nil) ⇒ Object
54 55 56 57 |
# File 'lib/code_block_parser.rb', line 54 def parse_flamegraph_option(, language = nil) default_value = @frontmatter_parser.get_default_value("flamegraph", language, false) parse_boolean_option(, "flamegraph", default_value) end |
#parse_rerun_option(options_string, language = nil) ⇒ Object
44 45 46 47 |
# File 'lib/code_block_parser.rb', line 44 def parse_rerun_option(, language = nil) default_value = @frontmatter_parser.get_default_value("rerun", language, false) parse_boolean_option(, "rerun", default_value) end |
#parse_result_option(options_string, language = nil) ⇒ Object
59 60 61 62 |
# File 'lib/code_block_parser.rb', line 59 def parse_result_option(, language = nil) default_value = @frontmatter_parser.get_default_value("result", language, true) parse_boolean_option(, "result", default_value) end |
#parse_run_option(options_string, language = nil) ⇒ Object
39 40 41 42 |
# File 'lib/code_block_parser.rb', line 39 def parse_run_option(, language = nil) default_value = @frontmatter_parser.get_default_value("run", language, true) parse_boolean_option(, "run", default_value) end |