liquid_renderer 0.0.2

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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZmQ4ZGM1ZjI2ZWE1ZDA4YzQ1NGQyYTA5ODU5YWQ2ZGY0YTM1OTUxNg==
5
+ data.tar.gz: !binary |-
6
+ YmZiNmViMjQ5YjYyNjcyZGI3NDgxZjQ5MTIxMzg1MTk0ZGRhMmJlNw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NmNkMzVmYzg5MTFmNDdhY2FkZGRhZDU3NTM2MTgxZGQ1MGE4MmU3OThhMmRk
10
+ M2RhOTc4YWI1OGYwZDg2OGUxNDIwMjJjNWFkYWNlZjUzZDQ0NmNkNjkxYThl
11
+ OGEzOGRiMTc4NjViOTQ2ZDc2NjA4ODNjNDhjNTgwM2UwOTUzMTc=
12
+ data.tar.gz: !binary |-
13
+ YWRkNzM5NDUxMGNhM2EwNWJlNjFkYTJhZThiZjcyOTkwYzNiYzA4Mzk2ZmZj
14
+ NzUyNmQyYThjMTUzY2IxNjQxMjlmNDY5MDBiZGEzNGVjMjVhYTA2OGY4NTQ4
15
+ ZDRmMmUzN2E1ZGYzMjJmODY1YzMxMmZmMjAxYmNjNjNmOTY5NjU=
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "liquid"
4
+ gem "rails", "3.2.17"
5
+ gem "capybara", ">= 0.4.0"
6
+ gem "sqlite3"
7
+
8
+ # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
9
+ # gem 'ruby-debug'
10
+ # gem 'ruby-debug19'
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2014 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # liquid_renderer
2
+
3
+ LiquidRenderer adds liquid renderer and option to include liquid filters like Rails helpers.
4
+
5
+ To use it, add this line to your Gemfile:
6
+
7
+ gem "liquid_renderer"
8
+
9
+
10
+ ## How to use
11
+
12
+ ### Rendering views
13
+ Just create `.liquid` files inside your `app/views` directory.
14
+
15
+
16
+ ### Using filters
17
+
18
+ Creates liquid_filters folder inside your app directory and adds filters using same naming convention of Rails helpers.
19
+
20
+ class HomeController < ApplicationController
21
+ include LiquidRenderer::Controller
22
+ end
23
+
24
+
25
+ Create filters inside `app/helpers/liquid_filters` directory
26
+
27
+ module LiquidFilters::HomeFilter
28
+ # this filter will be used to render HomeController views
29
+ end
30
+
31
+
32
+ ## Code Status
33
+
34
+
35
+ ## Contributors
36
+
37
+ Reference:
38
+
39
+ - http://royvandermeij.com/blog/2011/09/21/create-a-liquid-handler-for-rails-3-dot-1/
40
+ - http://pragprog.com/book/jvrails/crafting-rails-applications
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ ## License
49
+
50
+ Ruby license or MIT license, take your pick.
data/Rakefile ADDED
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+ require 'rubygems'
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ require 'rake'
10
+ require 'rdoc/task'
11
+
12
+ require 'rake/testtask'
13
+
14
+ Rake::TestTask.new(:test) do |t|
15
+ t.libs << 'lib'
16
+ t.libs << 'test'
17
+ t.pattern = 'test/**/*_test.rb'
18
+ t.verbose = false
19
+ end
20
+
21
+ task :default => :test
22
+
23
+ Rake::RDocTask.new(:rdoc) do |rdoc|
24
+ rdoc.rdoc_dir = 'rdoc'
25
+ rdoc.title = 'LiquidRenderer'
26
+ rdoc.options << '--line-numbers' << '--inline-source'
27
+ rdoc.rdoc_files.include('README.rdoc')
28
+ rdoc.rdoc_files.include('lib/**/*.rb')
29
+ end
@@ -0,0 +1,80 @@
1
+ module LiquidRenderer
2
+
3
+ module Controller
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ class_attribute :_liquid_filters
8
+ self._liquid_filters = Module.new
9
+
10
+ default_liquid_module! unless anonymous?
11
+ end
12
+
13
+ module ClassMethods
14
+
15
+ def liquid_filter(*args)
16
+ modules_for_liquid_filters(args).each do |mod|
17
+ add_liquid_template_filter(mod)
18
+ end
19
+ end
20
+
21
+ def liquid_filters
22
+ _liquid_filters
23
+ end
24
+
25
+ private
26
+
27
+ # Returns a list of modules, normalized from the acceptable kinds of
28
+ # helpers with the following behavior:
29
+ #
30
+ # String or Symbol:: :FooBar or "FooBar" becomes "foo_bar_helper",
31
+ # and "foo_bar_helper.rb" is loaded using require_dependency.
32
+ #
33
+ # Module:: No further processing
34
+ #
35
+ # After loading the appropriate files, the corresponding modules
36
+ # are returned.
37
+ #
38
+ # ==== Parameters
39
+ # * <tt>args</tt> - An array of helpers
40
+ #
41
+ # ==== Returns
42
+ # * <tt>Array</tt> - A normalized list of modules for the list of
43
+ # helpers provided.
44
+ def modules_for_liquid_filters(args)
45
+ args.flatten.map! do |arg|
46
+ case arg
47
+ when String, Symbol
48
+ file_name = "liquid_filters/#{arg.to_s.underscore}_filter"
49
+ require_dependency(file_name, "Missing liquid file %s.rb")
50
+ file_name.camelize.constantize
51
+ when Module
52
+ arg
53
+ else
54
+ raise ArgumentError, "filter must be a String, Symbol, or Module"
55
+ end
56
+ end
57
+ end
58
+
59
+ def add_liquid_template_filter(mod)
60
+ _liquid_filters.module_eval { include mod }
61
+ end
62
+
63
+ def default_liquid_module!
64
+ module_name = name.sub(/Controller$/, '')
65
+ module_path = module_name.underscore
66
+ liquid_filter module_path
67
+ rescue MissingSourceFile => e
68
+ raise e unless e.is_missing? "liquid_filters/#{module_path}_filter"
69
+ rescue NameError => e
70
+ raise e unless e.missing_name? "#{module_name}Filter"
71
+ end
72
+
73
+ end #end ClassMethods
74
+
75
+ end #end Controller
76
+
77
+ end #end LiquidRenderer
78
+
79
+
80
+ #ActionController::Base.send(:include, LiquidRenderer::Controller)
@@ -0,0 +1,56 @@
1
+ module LiquidRenderer
2
+
3
+ # http://royvandermeij.com/blog/2011/09/21/create-a-liquid-handler-for-rails-3-dot-1/
4
+ class Renderer
5
+
6
+ def initialize(view)
7
+ @view = view
8
+ end
9
+
10
+ def self.call(template)
11
+ "LiquidRenderer::Renderer.new(self).render(#{template.source.inspect}, local_assigns)"
12
+ end
13
+
14
+ def render(template, local_assigns = {})
15
+ _set_default_content_type
16
+ assigns = _merge_assigns(local_assigns)
17
+ liquid = Liquid::Template.parse(template)
18
+ liquid.render(assigns, filters: _filters, registers: _registers)
19
+ end
20
+
21
+ def compilable?
22
+ false
23
+ end
24
+
25
+ private
26
+
27
+ def _set_default_content_type
28
+ _controller.headers["Content-Type"] ||= 'text/html; charset=utf-8'
29
+ end
30
+
31
+ def _merge_assigns(local_assigns)
32
+ assigns = @view.assigns
33
+ assigns["content_for_layout"] = @view.content_for(:layout) if @view.content_for?(:layout)
34
+ assigns.merge!(local_assigns.stringify_keys)
35
+ end
36
+
37
+ def _controller
38
+ @view.controller
39
+ end
40
+
41
+ def _filters
42
+ if _controller.class.ancestors.include? Controller
43
+ _controller._liquid_filters
44
+ else
45
+ []
46
+ end
47
+ end
48
+
49
+ def _registers
50
+ {action_view: @view, controller: _controller}
51
+ end
52
+ end
53
+ end
54
+
55
+ ActionView::Template.register_template_handler :liquid, LiquidRenderer::Renderer
56
+
@@ -0,0 +1,4 @@
1
+
2
+ module LiquidRenderer
3
+ VERSION = '0.0.2'
4
+ end
@@ -0,0 +1,11 @@
1
+ require 'liquid'
2
+ require "action_view/template"
3
+
4
+ module LiquidRenderer
5
+ require 'liquid_renderer/version'
6
+ require 'liquid_renderer/renderer'
7
+ require 'liquid_renderer/controller'
8
+ end
9
+
10
+ module LiquidFilters
11
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: liquid_renderer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Rodrigo Ra
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: liquid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.6.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.6.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.17
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.17
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.17
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 3.2.17
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.0
97
+ description: LiquidRenderer adds liquid renderer and option to include liquid filters
98
+ like Rails helpers.
99
+ email: rodrigorcomp@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - lib/liquid_renderer/controller.rb
105
+ - lib/liquid_renderer/renderer.rb
106
+ - lib/liquid_renderer/version.rb
107
+ - lib/liquid_renderer.rb
108
+ - MIT-LICENSE
109
+ - Rakefile
110
+ - Gemfile
111
+ - README.md
112
+ homepage: https://github.com/imaboldcompany/liquid_renderer
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.9.3p125
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.1.10
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: LiquidRenderer adds liquid renderer and option to include liquid filters
136
+ like Rails helpers.
137
+ test_files: []