Class: Bookbinder::CodeExampleReader
- Inherits:
-
Object
- Object
- Bookbinder::CodeExampleReader
- Defined in:
- lib/bookbinder/code_example_reader.rb
Defined Under Namespace
Classes: InvalidSnippet
Instance Method Summary collapse
- #get_snippet_and_language_at(marker, path_to_repository, copied, repo_name) ⇒ Object
-
#initialize(logger) ⇒ CodeExampleReader
constructor
A new instance of CodeExampleReader.
Constructor Details
#initialize(logger) ⇒ CodeExampleReader
Returns a new instance of CodeExampleReader.
11 12 13 |
# File 'lib/bookbinder/code_example_reader.rb', line 11 def initialize(logger) @logger = logger end |
Instance Method Details
#get_snippet_and_language_at(marker, path_to_repository, copied, repo_name) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/bookbinder/code_example_reader.rb', line 15 def get_snippet_and_language_at(marker, path_to_repository, copied, repo_name) unless copied logger.log ' skipping (not found) '.magenta + repo_name return '' end snippet = '' FileUtils.cd(path_to_repository) { locale = 'LC_CTYPE=C LANG=C' # Quiets 'sed: RE error: illegal byte sequence' result = `#{locale} find . -exec sed -ne '/code_snippet #{marker} start/,/code_snippet #{marker} end/ p' {} \\; 2> /dev/null` result = "" unless result.lines.last && result.lines.last.match(/code_snippet #{marker} end/) scrape_for_value = result snippet = scrape_for_value } raise InvalidSnippet.new(repo_name, marker) if snippet.empty? lines = snippet.split("\n") language_match = lines[0].match(/code_snippet #{Regexp.escape(marker)} start (\w+)/) language = language_match[1] if language_match [lines[1..-2].join("\n"), language] end |