Index: src/site/_plugins/code_sample.rb |
diff --git a/src/site/_plugins/code_sample.rb b/src/site/_plugins/code_sample.rb |
new file mode 100644 |
index 0000000000000000000000000000000000000000..099483634df3de86fe94b96436f25bb547387e8a |
--- /dev/null |
+++ b/src/site/_plugins/code_sample.rb |
@@ -0,0 +1,48 @@ |
+ |
Jennifer Messerly
2012/10/10 02:37:20
copyright header?
(p.s. sorry I forgot to review
Siggi Cherem (dart-lang)
2012/10/10 17:20:55
Done.
|
+module Jekyll |
+ |
+ # This plugin renders a table with code and a running example side by side. |
+ class CodeSampleTag < Liquid::Block |
+ |
+ def initialize(tag_name, params, tokens) |
+ super |
+ @percent = params.strip |
+ end |
+ |
+ def render(context) |
+ link = "" |
+ if @src_url != nil |
Jennifer Messerly
2012/10/10 02:37:20
I think in Ruby, you'd typically write:
if @src_u
Siggi Cherem (dart-lang)
2012/10/10 17:20:55
Done.
|
+ link = "(<a href='#{@src_url}'>see complete source</a>)" |
+ end |
+ |
+ ("\n\n<table sytle='border:0px'><thead>" + |
Jennifer Messerly
2012/10/10 02:37:20
nit: you don't need the +, Ruby will concat adjace
Siggi Cherem (dart-lang)
2012/10/10 17:20:55
mmm.. this didn't work for me, the render method r
Jennifer Messerly
2012/10/10 17:48:03
doh, I guess you need to escape the end of line wi
|
+ "<tr><td><strong>Sample source code #{link}</strong>" + |
+ "</td><td>" + |
+ "</td><td><strong>Sample running</strong></td></tr>" + |
+ "</thead><tbody><tr>" + |
+ "<td style='width:#{@percent}%;vertical-align:top;'>" + super.strip + |
+ "</td><td style='width:100%;'>" + |
+ "</td><td style='vertical-align:top;'>" + |
+ "<iframe style='border:none;height:#{@height};width:#{@width};'" + |
+ " src='#{@url}'></iframe>" + |
+ "</td></tr></tbody></table>\n\n") |
+ end |
+ |
+ def unknown_tag(tag, params, tokens) |
+ case tag |
+ when 'sample' |
+ sample_params = params.split(' ') |
Jennifer Messerly
2012/10/10 02:37:20
common to write this as:
@width, @height, @url =
Siggi Cherem (dart-lang)
2012/10/10 17:20:55
cool. I'd really like to have this in dart...
|
+ @width = sample_params[0] |
+ @height = sample_params[1] |
+ @url = sample_params[2] |
+ when 'url' |
+ @src_url = params |
+ else |
+ super |
+ end |
+ end |
+ |
+ end |
+end |
+ |
+Liquid::Template.register_tag('codesample', Jekyll::CodeSampleTag) |