def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
puts "hello, world"
console.log('hello')
console.log('hello')
| require 'jekyll' | |
| require 'open3' | |
| module Jekyll | |
| class EvalCode < Jekyll::Generator | |
| def generate(site) | |
| @site = site | |
| site.pages.each { |page| eval_code(page) if page.html? } | |
| site.posts.docs.each { |page| eval_code(page) } | |
| end | |
| private | |
| def eval_code(page) | |
| page.content = page.content.gsub(/^(```+)\{(ruby|javascript|js)\}$(.*?)^\1$/m) do | |
| quote, lang, src = $1, $2, $3 | |
| case lang | |
| when 'ruby' | |
| output, status = Open3.capture2e('ruby', stdin_data: src) | |
| when 'javascript', 'js' | |
| output, status = Open3.capture2e('node', stdin_data: src) | |
| end | |
| if status.success? | |
| "#{quote}#{lang}#{src}#{quote}\n`````\n#{output.chomp}\n`````\n" | |
| end | |
| end | |
| end | |
| end | |
| end |
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
puts "hello, world"
console.log('hello')
console.log('hello')