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')