taktsoft_liquid-rails 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +24 -0
  4. data/.rspec +1 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +28 -0
  8. data/CHANGELOG.md +44 -0
  9. data/Gemfile +4 -0
  10. data/Guardfile +33 -0
  11. data/LICENSE.txt +22 -0
  12. data/README.md +152 -0
  13. data/Rakefile +25 -0
  14. data/gemfiles/rails_32.gemfile +9 -0
  15. data/gemfiles/rails_40.gemfile +8 -0
  16. data/gemfiles/rails_41.gemfile +8 -0
  17. data/gemfiles/rails_42.gemfile +8 -0
  18. data/gemfiles/rails_50.gemfile +5 -0
  19. data/lib/liquid-rails/drops/collection_drop.rb +91 -0
  20. data/lib/liquid-rails/drops/drop.rb +114 -0
  21. data/lib/liquid-rails/drops/droppable.rb +22 -0
  22. data/lib/liquid-rails/file_system.rb +13 -0
  23. data/lib/liquid-rails/filters/asset_tag_filter.rb +25 -0
  24. data/lib/liquid-rails/filters/asset_url_filter.rb +37 -0
  25. data/lib/liquid-rails/filters/date_filter.rb +19 -0
  26. data/lib/liquid-rails/filters/google_static_map_url_filter.rb +30 -0
  27. data/lib/liquid-rails/filters/misc_filter.rb +29 -0
  28. data/lib/liquid-rails/filters/number_filter.rb +24 -0
  29. data/lib/liquid-rails/filters/paginate_filter.rb +59 -0
  30. data/lib/liquid-rails/filters/sanitize_filter.rb +19 -0
  31. data/lib/liquid-rails/filters/text_filter.rb +46 -0
  32. data/lib/liquid-rails/filters/translate_filter.rb +14 -0
  33. data/lib/liquid-rails/filters/url_filter.rb +24 -0
  34. data/lib/liquid-rails/matchers.rb +5 -0
  35. data/lib/liquid-rails/railtie.rb +26 -0
  36. data/lib/liquid-rails/rspec/drop_example_group.rb +38 -0
  37. data/lib/liquid-rails/rspec/drop_matchers.rb +165 -0
  38. data/lib/liquid-rails/rspec/filter_example_group.rb +24 -0
  39. data/lib/liquid-rails/rspec/tag_example_group.rb +24 -0
  40. data/lib/liquid-rails/rspec/view_controller_context.rb +63 -0
  41. data/lib/liquid-rails/tags/content_for_tag.rb +77 -0
  42. data/lib/liquid-rails/tags/csrf_meta_tags.rb +11 -0
  43. data/lib/liquid-rails/tags/google_analytics_tag.rb +40 -0
  44. data/lib/liquid-rails/tags/javascript_tag.rb +22 -0
  45. data/lib/liquid-rails/tags/paginate_tag.rb +118 -0
  46. data/lib/liquid-rails/template_handler.rb +44 -0
  47. data/lib/liquid-rails/version.rb +5 -0
  48. data/lib/liquid-rails.rb +23 -0
  49. data/liquid-rails.gemspec +43 -0
  50. metadata +262 -0
@@ -0,0 +1,77 @@
1
+ # It works similar to Rails #content_for.
2
+ # Calling #content_for stores a block of markup in an identifier for later use.
3
+ # In order to access this stored content in other templates or the layout, you would pass the identifier as an argument to content_for.
4
+ #
5
+ # Usage:
6
+ #
7
+ # {% content_for not_authorized %}
8
+ # alert('You are not authorized to do that!');
9
+ # {% endcontent_for %}
10
+ #
11
+ # You can then use content_for :not_authorized anywhere in your templates.
12
+ # {% if current_user.nil? %}
13
+ # {% yield not_authorized %}
14
+ # {% endif %}
15
+
16
+ module Liquid
17
+ module Rails
18
+ class ContentForTag < ::Liquid::Block
19
+ Syntax = /(#{::Liquid::QuotedFragment}+)\s*(flush\s*(true|false))?/
20
+
21
+ def initialize(tag_name, markup, context)
22
+ super
23
+
24
+ if markup =~ Syntax
25
+ @flush = $3
26
+ @identifier = $1.gsub('\'', '')
27
+ else
28
+ raise SyntaxError.new("Syntax Error - Valid syntax: {% content_for [name] %}")
29
+ end
30
+ end
31
+
32
+ def render(context)
33
+ @context = context
34
+ content = super.html_safe
35
+
36
+ if ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR == 2
37
+ if @flush == 'true'
38
+ @context.registers[:view].view_flow.set(@identifier, content) if content
39
+ else
40
+ @context.registers[:view].view_flow.append(@identifier, content) if content
41
+ end
42
+ else
43
+ options = @flush == 'true' ? { flush: true } : {}
44
+ @context.registers[:view].content_for(@identifier, content, options)
45
+ end
46
+ ''
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ module Liquid
53
+ module Rails
54
+ class YieldTag < ::Liquid::Tag
55
+ Syntax = /(#{::Liquid::QuotedFragment}+)/
56
+
57
+ def initialize(tag_name, markup, context)
58
+ super
59
+
60
+ if markup =~ Syntax
61
+ @identifier = $1.gsub('\'', '')
62
+ else
63
+ raise SyntaxError.new("Syntax Error - Valid syntax: {% yield [name] %}")
64
+ end
65
+ end
66
+
67
+ def render(context)
68
+ @context = context
69
+
70
+ @context.registers[:view].content_for(@identifier).try(:html_safe)
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ Liquid::Template.register_tag('content_for', Liquid::Rails::ContentForTag)
77
+ Liquid::Template.register_tag('yield', Liquid::Rails::YieldTag)
@@ -0,0 +1,11 @@
1
+ module Liquid
2
+ module Rails
3
+ class CsrfMetaTags < ::Liquid::Tag
4
+ def render(context)
5
+ context.registers[:view].csrf_meta_tags
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ Liquid::Template.register_tag('csrf_meta_tags', Liquid::Rails::CsrfMetaTags)
@@ -0,0 +1,40 @@
1
+ # Returns a Google Analytics tag.
2
+ #
3
+ # Usage:
4
+ #
5
+ # {% google_analytics_tag 'UA-XXXXX-X' %}
6
+
7
+ module Liquid
8
+ module Rails
9
+ class GoogleAnalyticsTag < ::Liquid::Tag
10
+ Syntax = /(#{::Liquid::QuotedFragment}+)?/
11
+
12
+ def initialize(tag_name, markup, tokens)
13
+ if markup =~ Syntax
14
+ @account_id = $1.gsub('\'', '')
15
+ else
16
+ raise ::Liquid::SyntaxError.new("Syntax Error in 'google_analytics_tag' - Valid syntax: google_analytics_tag <account_id>")
17
+ end
18
+
19
+ super
20
+ end
21
+
22
+ def render(context)
23
+ %{
24
+ <script type="text/javascript">
25
+
26
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
27
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
28
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
29
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
30
+ ga('create', '#{@account_id}', 'auto');
31
+ ga('send', 'pageview');
32
+
33
+ </script>
34
+ }
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ Liquid::Template.register_tag('google_analytics_tag', Liquid::Rails::GoogleAnalyticsTag)
@@ -0,0 +1,22 @@
1
+ # Returns a JavaScript tag with the content inside.
2
+ #
3
+ # Usage:
4
+ #
5
+ # {% javascript_tag %}
6
+ # alert('Hello Liquid Rails!');
7
+ # {% endjavascript_tag %}
8
+
9
+ module Liquid
10
+ module Rails
11
+ class JavascriptTag < ::Liquid::Block
12
+ include ActionView::Helpers::JavaScriptHelper
13
+ include ActionView::Helpers::TagHelper
14
+
15
+ def render(context)
16
+ javascript_tag(super, type: 'text/javascript')
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ Liquid::Template.register_tag('javascript_tag', Liquid::Rails::JavascriptTag)
@@ -0,0 +1,118 @@
1
+ # Paginate a collection
2
+ #
3
+ # Usage:
4
+ #
5
+ # {% paginate listing.photos by 5 %}
6
+ # {% for photo in paginate.collection %}
7
+ # {{ photo.caption }}
8
+ # {% endfor %}
9
+ # {% endpaginate %}
10
+ #
11
+ module Liquid
12
+ module Rails
13
+ class PaginateTag < ::Liquid::Block
14
+ Syntax = /(#{::Liquid::QuotedFragment})\s*(by\s*(\d+))?/
15
+
16
+ def initialize(tag_name, markup, context)
17
+ super
18
+
19
+ if markup =~ Syntax
20
+ @collection_name = $1
21
+ @page_size = if $2
22
+ $3.to_i
23
+ else
24
+ 25
25
+ end
26
+
27
+ @attributes = { 'window_size' => 3 }
28
+ markup.scan(Liquid::TagAttributes) do |key, value|
29
+ @attributes[key] = value
30
+ end
31
+ else
32
+ raise SyntaxError.new("Syntax Error in tag 'paginate' - Valid syntax: paginate [collection] by number")
33
+ end
34
+ end
35
+
36
+ def render(context)
37
+ @context = context
38
+
39
+ context.stack do
40
+ collection = @context[@collection_name].presence || @context.environments[0][@collection_name]
41
+ raise ::Liquid::ArgumentError.new("Cannot paginate collection '#{@collection_name}'. Not found.") if collection.nil?
42
+
43
+ if collection.is_a? Array
44
+ paginated_collection = Kaminari.paginate_array(collection.to_a).page(current_page).per(@page_size)
45
+ elsif collection.respond_to?(:page)
46
+ paginated_collection = collection.page(current_page).per(@page_size)
47
+ end
48
+
49
+ page_count = paginated_collection.total_pages
50
+ pagination = {}
51
+ pagination['collection'] = paginated_collection
52
+ pagination['current_offset'] = (current_page-1) * @page_size
53
+ pagination['current_page'] = current_page
54
+ pagination['page_size'] = @page_size
55
+ pagination['pages'] = page_count
56
+ pagination['items'] = paginated_collection.total_count
57
+ pagination['previous'] = link('&laquo; Previous'.html_safe, current_page-1 ) unless 1 >= current_page
58
+ pagination['next'] = link('Next &raquo;'.html_safe, current_page+1 ) unless page_count < current_page+1
59
+ pagination['parts'] = []
60
+
61
+ hellip_break = false
62
+ if page_count > 1
63
+ 1.upto(page_count) do |page|
64
+
65
+ if current_page == page
66
+ pagination['parts'] << no_link(page)
67
+ elsif page == 1
68
+ pagination['parts'] << link(page, page)
69
+ elsif page == page_count - 1
70
+ pagination['parts'] << link(page, page)
71
+ elsif page <= current_page - window_size or page >= current_page + window_size
72
+ next if hellip_break
73
+ pagination['parts'] << no_link('&hellip;')
74
+ hellip_break = true
75
+ next
76
+ else
77
+ pagination['parts'] << link(page, page)
78
+ end
79
+
80
+ hellip_break = false
81
+ end
82
+ end
83
+ context['paginate'] = pagination
84
+
85
+ super
86
+ end
87
+ end
88
+
89
+ private
90
+
91
+ def current_page
92
+ _current_page = @context.registers[:controller].params[:page]
93
+ _current_page.nil? ? 1 : _current_page.to_i
94
+ end
95
+
96
+ def current_url
97
+ current_url = @context.registers[:controller].request.fullpath.gsub(/page=[0-9]+&?/, '')
98
+ current_url = current_url.slice(0..-2) if current_url.last == '?' || current_url.last == '&'
99
+ current_url
100
+ end
101
+
102
+ def window_size
103
+ @attributes['window_size']
104
+ end
105
+
106
+ def no_link(title)
107
+ { 'title' => title, 'is_link' => false, 'hellip_break' => (title == '&hellip;') }
108
+ end
109
+
110
+ def link(title, page)
111
+ _current_url = %(#{current_url}#{current_url.include?('?') ? '&' : '?'}page=#{page})
112
+ { 'title' => title, 'url' => _current_url, 'is_link' => true }
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ Liquid::Template.register_tag('paginate', Liquid::Rails::PaginateTag)
@@ -0,0 +1,44 @@
1
+ module Liquid
2
+ module Rails
3
+ class TemplateHandler
4
+
5
+ def self.call(template)
6
+ "Liquid::Rails::TemplateHandler.new(self).render(#{template.source.inspect}, local_assigns)"
7
+ end
8
+
9
+ def initialize(view)
10
+ @view = view
11
+ @controller = @view.controller
12
+ @helper = ActionController::Base.helpers
13
+ end
14
+
15
+ def render(template, local_assigns={})
16
+ @view.controller.headers['Content-Type'] ||= 'text/html; charset=utf-8'
17
+
18
+ assigns = if @controller.respond_to?(:liquid_assigns, true)
19
+ @controller.send(:liquid_assigns)
20
+ else
21
+ @view.assigns
22
+ end
23
+ assigns['content_for_layout'] = @view.content_for(:layout) if @view.content_for?(:layout)
24
+ assigns.merge!(local_assigns.stringify_keys)
25
+
26
+ liquid = Liquid::Template.parse(template)
27
+ render_method = (::Rails.env.development? || ::Rails.env.test?) ? :render! : :render
28
+ liquid.send(render_method, assigns, filters: filters, registers: { view: @view, controller: @controller, helper: @helper }).html_safe
29
+ end
30
+
31
+ def filters
32
+ if @controller.respond_to?(:liquid_filters, true)
33
+ @controller.send(:liquid_filters)
34
+ else
35
+ [@controller._helpers]
36
+ end
37
+ end
38
+
39
+ def compilable?
40
+ false
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,5 @@
1
+ module Liquid
2
+ module Rails
3
+ VERSION = '0.1.4'
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ require 'liquid-rails/version'
2
+ require 'liquid'
3
+ require 'kaminari'
4
+ require 'active_support/concern'
5
+
6
+ module Liquid
7
+ module Rails
8
+ autoload :TemplateHandler, 'liquid-rails/template_handler'
9
+ autoload :FileSystem, 'liquid-rails/file_system'
10
+
11
+ autoload :Drop, 'liquid-rails/drops/drop'
12
+ autoload :CollectionDrop, 'liquid-rails/drops/collection_drop'
13
+
14
+ def self.setup_drop(base)
15
+ base.class_eval do
16
+ include Liquid::Rails::Droppable
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ require 'liquid-rails/railtie' if defined?(Rails)
23
+ Dir[File.dirname(__FILE__) + '/liquid-rails/{filters,tags,drops}/*.rb'].each { |f| require f }
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'liquid-rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'taktsoft_liquid-rails'
8
+ spec.version = Liquid::Rails::VERSION
9
+ spec.authors = ['Chamnap Chhorn', 'Taktsoft Developers']
10
+ spec.email = ['chamnapchhorn@gmail.com', 'developers@taktsoft.com']
11
+ spec.summary = %q{Renders liquid templates with layout and partial support}
12
+ spec.description = %q{It allows you to render .liquid templates with layout and partial support. It also provides filters, tags, drops class to be used inside your liquid template.}
13
+ spec.homepage = 'https://github.com/taktsoft/liquid-rails'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 2.0.0'
16
+ spec.required_rubygems_version = '>= 1.8.11'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
24
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
25
+ if spec.respond_to?(:metadata)
26
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
27
+ else
28
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
29
+ end
30
+
31
+ spec.add_dependency 'rails', '>= 3.2', '< 5.1'
32
+ spec.add_dependency 'liquid', '>= 3.0.0', '< 4.0'
33
+ spec.add_dependency 'kaminari', '>= 0.16.1'
34
+
35
+ spec.add_development_dependency 'bundler', '>= 1.0.0'
36
+ spec.add_development_dependency 'rake', '>= 0'
37
+ spec.add_development_dependency 'rspec-rails', '>= 0'
38
+ spec.add_development_dependency 'guard-rspec', '>= 0'
39
+ spec.add_development_dependency 'pry-rails', '>= 0'
40
+ spec.add_development_dependency 'capybara', '>= 0'
41
+ spec.add_development_dependency 'coveralls', '>= 0'
42
+ spec.add_development_dependency 'simplecov', '>= 0'
43
+ end
metadata ADDED
@@ -0,0 +1,262 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: taktsoft_liquid-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Chamnap Chhorn
8
+ - Taktsoft Developers
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2016-08-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '3.2'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '5.1'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '3.2'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.1'
34
+ - !ruby/object:Gem::Dependency
35
+ name: liquid
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: '4.0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.0.0
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '4.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: kaminari
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.16.1
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.16.1
68
+ - !ruby/object:Gem::Dependency
69
+ name: bundler
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.0.0
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.0.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: rake
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rspec-rails
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: guard-rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: pry-rails
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: capybara
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: coveralls
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: simplecov
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ description: It allows you to render .liquid templates with layout and partial support.
181
+ It also provides filters, tags, drops class to be used inside your liquid template.
182
+ email:
183
+ - chamnapchhorn@gmail.com
184
+ - developers@taktsoft.com
185
+ executables: []
186
+ extensions: []
187
+ extra_rdoc_files: []
188
+ files:
189
+ - ".coveralls.yml"
190
+ - ".gitignore"
191
+ - ".rspec"
192
+ - ".ruby-gemset"
193
+ - ".ruby-version"
194
+ - ".travis.yml"
195
+ - CHANGELOG.md
196
+ - Gemfile
197
+ - Guardfile
198
+ - LICENSE.txt
199
+ - README.md
200
+ - Rakefile
201
+ - gemfiles/rails_32.gemfile
202
+ - gemfiles/rails_40.gemfile
203
+ - gemfiles/rails_41.gemfile
204
+ - gemfiles/rails_42.gemfile
205
+ - gemfiles/rails_50.gemfile
206
+ - lib/liquid-rails.rb
207
+ - lib/liquid-rails/drops/collection_drop.rb
208
+ - lib/liquid-rails/drops/drop.rb
209
+ - lib/liquid-rails/drops/droppable.rb
210
+ - lib/liquid-rails/file_system.rb
211
+ - lib/liquid-rails/filters/asset_tag_filter.rb
212
+ - lib/liquid-rails/filters/asset_url_filter.rb
213
+ - lib/liquid-rails/filters/date_filter.rb
214
+ - lib/liquid-rails/filters/google_static_map_url_filter.rb
215
+ - lib/liquid-rails/filters/misc_filter.rb
216
+ - lib/liquid-rails/filters/number_filter.rb
217
+ - lib/liquid-rails/filters/paginate_filter.rb
218
+ - lib/liquid-rails/filters/sanitize_filter.rb
219
+ - lib/liquid-rails/filters/text_filter.rb
220
+ - lib/liquid-rails/filters/translate_filter.rb
221
+ - lib/liquid-rails/filters/url_filter.rb
222
+ - lib/liquid-rails/matchers.rb
223
+ - lib/liquid-rails/railtie.rb
224
+ - lib/liquid-rails/rspec/drop_example_group.rb
225
+ - lib/liquid-rails/rspec/drop_matchers.rb
226
+ - lib/liquid-rails/rspec/filter_example_group.rb
227
+ - lib/liquid-rails/rspec/tag_example_group.rb
228
+ - lib/liquid-rails/rspec/view_controller_context.rb
229
+ - lib/liquid-rails/tags/content_for_tag.rb
230
+ - lib/liquid-rails/tags/csrf_meta_tags.rb
231
+ - lib/liquid-rails/tags/google_analytics_tag.rb
232
+ - lib/liquid-rails/tags/javascript_tag.rb
233
+ - lib/liquid-rails/tags/paginate_tag.rb
234
+ - lib/liquid-rails/template_handler.rb
235
+ - lib/liquid-rails/version.rb
236
+ - liquid-rails.gemspec
237
+ homepage: https://github.com/taktsoft/liquid-rails
238
+ licenses:
239
+ - MIT
240
+ metadata:
241
+ allowed_push_host: https://rubygems.org
242
+ post_install_message:
243
+ rdoc_options: []
244
+ require_paths:
245
+ - lib
246
+ required_ruby_version: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: 2.0.0
251
+ required_rubygems_version: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: 1.8.11
256
+ requirements: []
257
+ rubyforge_project:
258
+ rubygems_version: 2.4.8
259
+ signing_key:
260
+ specification_version: 4
261
+ summary: Renders liquid templates with layout and partial support
262
+ test_files: []