liquid-eval 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ *.gem
2
+ pkg/*
3
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ liquid-eval (0.0.1)
5
+ jekyll
6
+ liquid
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ classifier (1.3.3)
12
+ fast-stemmer (>= 1.0.0)
13
+ directory_watcher (1.4.1)
14
+ fast-stemmer (1.0.1)
15
+ jekyll (0.12.0)
16
+ classifier (~> 1.3)
17
+ directory_watcher (~> 1.1)
18
+ kramdown (~> 0.13.4)
19
+ liquid (~> 2.3)
20
+ maruku (~> 0.5)
21
+ pygments.rb (~> 0.3.2)
22
+ kramdown (0.13.8)
23
+ liquid (2.4.1)
24
+ maruku (0.6.1)
25
+ syntax (>= 1.0.0)
26
+ posix-spawn (0.3.6)
27
+ pygments.rb (0.3.7)
28
+ posix-spawn (~> 0.3.6)
29
+ yajl-ruby (~> 1.1.0)
30
+ syntax (1.0.0)
31
+ yajl-ruby (1.1.0)
32
+
33
+ PLATFORMS
34
+ ruby
35
+
36
+ DEPENDENCIES
37
+ liquid-eval!
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
@@ -0,0 +1,46 @@
1
+ require 'liquid-eval/version'
2
+ require 'liquid'
3
+ require 'cgi'
4
+
5
+ module LiquidEval
6
+
7
+ def self.register_language(language, interpreter, extension)
8
+ puts "Registering language #{language} with interpreter #{interpreter} and extension #{extension}."
9
+ end
10
+
11
+ class EvalBlock < ::Liquid::Block
12
+ def initialize(name, language, tokens)
13
+ super
14
+ @code = @nodelist[0].to_s.gsub(/^$\n/, '')
15
+ @code_html = CGI.escapeHTML(@code)
16
+ @language = language.strip
17
+
18
+ case @language
19
+ when 'ruby'
20
+ @result = interpret('ruby', 'rb')
21
+ when 'python'
22
+ @result = interpret('python', 'py')
23
+ when 'perl'
24
+ @result = interpret('perl', 'pl')
25
+ when 'php'
26
+ @result = interpret('php', 'php')
27
+ else
28
+ @result = 'Language not currently supported by Liquid::EvalBlock.'
29
+ end
30
+ end
31
+
32
+ def render(context)
33
+ %Q[<h6>Code:</h6><pre><code>#{@code_html}</code></pre><h6>Output:</h6><pre class="output"><code>#{@result}</code></pre>]
34
+ end
35
+
36
+ def interpret(interpreter, extension)
37
+ filename = "/tmp/#{interpreter}-codeblock.#{extension}"
38
+ File.open(filename, 'w') {|f| f.write(@code)}
39
+ @result = `#{interpreter} #{filename}`
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ ::Liquid::Template.register_tag 'eval', LiquidEval::EvalBlock
46
+
@@ -0,0 +1,3 @@
1
+ module LiquidEval
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,20 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "liquid-eval/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "liquid-eval"
6
+ s.version = LiquidEval::VERSION
7
+ s.authors = ["Brian Kelly"]
8
+ s.email = ["polymonic@gmail.com"]
9
+ s.homepage = "http://github.com/spilth/liquid-eval"
10
+ s.summary = %q{Embedded Code and Output for Liquid}
11
+ s.description = %q{Exexcutes code blocks and appends the generated output after the example code.}
12
+
13
+ s.rubyforge_project = "liquid-eval"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.require_paths = ["lib"]
17
+
18
+ s.add_runtime_dependency('liquid')
19
+ end
20
+
data/readme.md ADDED
@@ -0,0 +1,24 @@
1
+ # Liquid Eval Block
2
+
3
+ Allows you to embed a block of code in your page as well as the output generated by that code.
4
+
5
+ ## Usage
6
+
7
+ - Install the gem or add it to your projects `Gemfile`.
8
+ - Use `require 'liquid-eval'` somewhere in your code
9
+ - For Jekyll projects, add this to a file in your `_plugins` directory.
10
+
11
+ Within a post or page you can now do:
12
+
13
+ {% eval ruby %}
14
+ puts "Hello, world!"
15
+ {% endeval %}
16
+
17
+ This will generate the following HTML in your page:
18
+
19
+ <h6>Code:</h6>
20
+ <pre><code>puts "Hello, world!"</code></pre>
21
+
22
+ <h6>Output:</h6>
23
+ <pre class="output"><code>Hello, world!</code></pre>
24
+
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: liquid-eval
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Brian Kelly
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: liquid
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Exexcutes code blocks and appends the generated output after the example
31
+ code.
32
+ email:
33
+ - polymonic@gmail.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - Gemfile.lock
41
+ - Rakefile
42
+ - lib/liquid-eval.rb
43
+ - lib/liquid-eval/version.rb
44
+ - liquid-eval.gemspec
45
+ - readme.md
46
+ homepage: http://github.com/spilth/liquid-eval
47
+ licenses: []
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project: liquid-eval
66
+ rubygems_version: 1.8.24
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: Embedded Code and Output for Liquid
70
+ test_files: []
71
+ has_rdoc: