liquid-rails 0.1.0
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 +7 -0
- data/.coveralls.yml +2 -0
- data/.gitignore +24 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/Gemfile +12 -0
- data/Guardfile +33 -0
- data/LICENSE.txt +22 -0
- data/README.md +140 -0
- data/Rakefile +27 -0
- data/gemfiles/rails_32.gemfile +11 -0
- data/gemfiles/rails_40.gemfile +11 -0
- data/gemfiles/rails_41.gemfile +11 -0
- data/lib/liquid-rails.rb +23 -0
- data/lib/liquid-rails/drops/collection_drop.rb +91 -0
- data/lib/liquid-rails/drops/drop.rb +114 -0
- data/lib/liquid-rails/drops/droppable.rb +22 -0
- data/lib/liquid-rails/file_system.rb +14 -0
- data/lib/liquid-rails/filters/asset_tag_filter.rb +25 -0
- data/lib/liquid-rails/filters/asset_url_filter.rb +37 -0
- data/lib/liquid-rails/filters/date_filter.rb +19 -0
- data/lib/liquid-rails/filters/google_static_map_url_filter.rb +30 -0
- data/lib/liquid-rails/filters/misc_filter.rb +47 -0
- data/lib/liquid-rails/filters/number_filter.rb +24 -0
- data/lib/liquid-rails/filters/sanitize_filter.rb +19 -0
- data/lib/liquid-rails/filters/text_filter.rb +47 -0
- data/lib/liquid-rails/filters/translate_filter.rb +13 -0
- data/lib/liquid-rails/filters/url_filter.rb +24 -0
- data/lib/liquid-rails/matchers.rb +5 -0
- data/lib/liquid-rails/railtie.rb +26 -0
- data/lib/liquid-rails/rspec/drop_example_group.rb +38 -0
- data/lib/liquid-rails/rspec/drop_matchers.rb +159 -0
- data/lib/liquid-rails/rspec/filter_example_group.rb +24 -0
- data/lib/liquid-rails/rspec/tag_example_group.rb +24 -0
- data/lib/liquid-rails/rspec/view_controller_context.rb +44 -0
- data/lib/liquid-rails/tags/content_for_tag.rb +68 -0
- data/lib/liquid-rails/tags/csrf_meta_tags.rb +11 -0
- data/lib/liquid-rails/tags/google_analytics_tag.rb +43 -0
- data/lib/liquid-rails/tags/javascript_tag.rb +22 -0
- data/lib/liquid-rails/tags/paginate_tag.rb +117 -0
- data/lib/liquid-rails/template_handler.rb +44 -0
- data/lib/liquid-rails/version.rb +5 -0
- data/liquid-rails.gemspec +26 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/controllers/home_controller.rb +25 -0
- data/spec/dummy/app/controllers/pages_controller.rb +16 -0
- data/spec/dummy/app/helpers/application_helper.rb +5 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/home/_partial.liquid +1 -0
- data/spec/dummy/app/views/home/index.liquid +1 -0
- data/spec/dummy/app/views/home/index_partial.liquid +4 -0
- data/spec/dummy/app/views/home/index_partial_with_full_path.liquid +4 -0
- data/spec/dummy/app/views/home/index_with_filter.liquid +2 -0
- data/spec/dummy/app/views/home/index_with_layout.liquid +1 -0
- data/spec/dummy/app/views/layouts/application.liquid +2 -0
- data/spec/dummy/app/views/pages/index_without_filter.liquid +2 -0
- data/spec/dummy/app/views/shared/_partial.liquid +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +25 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +17 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +4 -0
- data/spec/dummy/config/locales/km.yml +4 -0
- data/spec/dummy/config/routes.rb +10 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/fixtures/poro.rb +58 -0
- data/spec/lib/liquid-rails/drops/drop_spec.rb +119 -0
- data/spec/lib/liquid-rails/filters/asset_tag_filter_spec.rb +22 -0
- data/spec/lib/liquid-rails/filters/asset_url_filter_spec.rb +34 -0
- data/spec/lib/liquid-rails/filters/google_static_map_url_filter_spec.rb +23 -0
- data/spec/lib/liquid-rails/filters/misc_filter_spec.rb +26 -0
- data/spec/lib/liquid-rails/filters/translate_filter_spec.rb +25 -0
- data/spec/lib/liquid-rails/railtie_spec.rb +9 -0
- data/spec/lib/liquid-rails/rspec/drop_matchers_spec.rb +34 -0
- data/spec/lib/liquid-rails/tags/content_for_tag_spec.rb +27 -0
- data/spec/lib/liquid-rails/tags/csrf_meta_tag_spec.rb +16 -0
- data/spec/lib/liquid-rails/tags/google_analtyics_tag_spec.rb +31 -0
- data/spec/lib/liquid-rails/tags/javascript_tag_spec.rb +14 -0
- data/spec/lib/liquid-rails/tags/paginate_tag_spec.rb +96 -0
- data/spec/lib/liquid-rails/template_handler_spec.rb +53 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/support/delegate_matcher.rb +60 -0
- metadata +261 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
class Drop < ::Liquid::Drop
|
|
4
|
+
|
|
5
|
+
class << self
|
|
6
|
+
attr_accessor :_attributes
|
|
7
|
+
attr_accessor :_associations
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.inherited(base)
|
|
11
|
+
base._attributes = []
|
|
12
|
+
base._associations = {}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.attributes(*attrs)
|
|
16
|
+
@_attributes.concat attrs
|
|
17
|
+
|
|
18
|
+
attrs.each do |attr|
|
|
19
|
+
next if method_defined?(attr)
|
|
20
|
+
|
|
21
|
+
define_method(attr) do
|
|
22
|
+
object.send(attr) if object.respond_to?(attr, true)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# By default, `Product` maps to `ProductDrop`.
|
|
28
|
+
# Array of products maps to `Liquid::Rails::CollectionDrop`.
|
|
29
|
+
def self.drop_class_for(resource)
|
|
30
|
+
if resource.respond_to?(:to_ary)
|
|
31
|
+
Liquid::Rails::CollectionDrop
|
|
32
|
+
else
|
|
33
|
+
if self == Liquid::Rails::Drop
|
|
34
|
+
resource.drop_class || Liquid::Rails::Drop
|
|
35
|
+
else
|
|
36
|
+
self
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Create a drop instance when it cannot be inferred.
|
|
42
|
+
def self.dropify(resource, options={})
|
|
43
|
+
drop_class = if options[:class_name]
|
|
44
|
+
options[:class_name].constantize
|
|
45
|
+
else
|
|
46
|
+
drop_class_for(resource)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
drop_class.new(resource, options.except(:class_name))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.belongs_to(*attrs)
|
|
53
|
+
associate(:belongs_to, attrs)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def self.has_many(*attrs)
|
|
57
|
+
associate(:has_many, attrs)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def self.associate(type, attrs)
|
|
61
|
+
options = attrs.extract_options!
|
|
62
|
+
self._associations = _associations.dup
|
|
63
|
+
|
|
64
|
+
attrs.each do |attr|
|
|
65
|
+
next if method_defined?(attr)
|
|
66
|
+
|
|
67
|
+
define_method attr do
|
|
68
|
+
value = instance_variable_get("@_#{attr}")
|
|
69
|
+
return value if value
|
|
70
|
+
|
|
71
|
+
association = object.send(attr)
|
|
72
|
+
return nil if association.nil?
|
|
73
|
+
|
|
74
|
+
drop_instance = Liquid::Rails::Drop.dropify(association, options)
|
|
75
|
+
instance_variable_set("@_#{attr}", drop_instance)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
self._associations[attr] = { type: type, options: options }
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Wraps an object in a new instance of the drop.
|
|
83
|
+
def initialize(object, options={})
|
|
84
|
+
@object = object
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def attributes
|
|
88
|
+
@attributes ||= self.class._attributes.dup.each_with_object({}) do |name, hash|
|
|
89
|
+
hash[name.to_s] = send(name)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def as_json(options={})
|
|
94
|
+
attributes.as_json(options)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def to_json(options={})
|
|
98
|
+
as_json.to_json(options)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def before_method(method)
|
|
102
|
+
attributes[method.to_s]
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def inspect
|
|
106
|
+
"#<#{self.class.name} @object: #{object.inspect} @attributes: #{attributes.inspect}>"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
protected
|
|
110
|
+
|
|
111
|
+
attr_reader :object
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module Droppable
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
def to_liquid
|
|
7
|
+
drop_class.new(self)
|
|
8
|
+
end
|
|
9
|
+
alias_method :dropify, :to_liquid
|
|
10
|
+
|
|
11
|
+
def drop_class
|
|
12
|
+
self.class.drop_class
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module ClassMethods
|
|
16
|
+
def drop_class
|
|
17
|
+
"#{self.name}Drop".safe_constantize
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'liquid/file_system'
|
|
2
|
+
|
|
3
|
+
module Liquid
|
|
4
|
+
module Rails
|
|
5
|
+
class FileSystem < ::Liquid::LocalFileSystem
|
|
6
|
+
def read_template_file(template_path, context)
|
|
7
|
+
controller_name = context.registers[:controller].controller_name
|
|
8
|
+
template_path = "#{controller_name}/#{template_path}" unless template_path.include?('/')
|
|
9
|
+
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module AssetTagFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:audio_tag,
|
|
6
|
+
:auto_discovery_link_tag,
|
|
7
|
+
:favicon_link_tag,
|
|
8
|
+
:image_alt,
|
|
9
|
+
:image_tag,
|
|
10
|
+
:javascript_include_tag,
|
|
11
|
+
:stylesheet_link_tag,
|
|
12
|
+
:video_tag,
|
|
13
|
+
|
|
14
|
+
to: :h
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def h
|
|
19
|
+
@h ||= @context.registers[:view]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
Liquid::Template.register_filter(Liquid::Rails::AssetTagFilter)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module AssetUrlFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:asset_path,
|
|
6
|
+
:asset_url,
|
|
7
|
+
|
|
8
|
+
:audio_path,
|
|
9
|
+
:audio_url,
|
|
10
|
+
|
|
11
|
+
:font_path,
|
|
12
|
+
:font_url,
|
|
13
|
+
|
|
14
|
+
:image_path,
|
|
15
|
+
:image_url,
|
|
16
|
+
|
|
17
|
+
:javascript_path,
|
|
18
|
+
:javascript_url,
|
|
19
|
+
|
|
20
|
+
:stylesheet_path,
|
|
21
|
+
:stylesheet_url,
|
|
22
|
+
|
|
23
|
+
:video_path,
|
|
24
|
+
:video_url,
|
|
25
|
+
|
|
26
|
+
to: :h
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def h
|
|
31
|
+
@h ||= @context.registers[:view]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
Liquid::Template.register_filter(Liquid::Rails::AssetUrlFilter)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module DateFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:distance_of_time_in_words,
|
|
6
|
+
:time_ago_in_words,
|
|
7
|
+
|
|
8
|
+
to: :h
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def h
|
|
13
|
+
@h ||= @context.registers[:view]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Liquid::Template.register_filter(Liquid::Rails::DateFilter)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module GoogleStaticMapUrlFilter
|
|
4
|
+
|
|
5
|
+
# size: '600x300'
|
|
6
|
+
#
|
|
7
|
+
# Available keys inside options
|
|
8
|
+
# center: '40.714728,-73.998672'
|
|
9
|
+
# zoom: 13
|
|
10
|
+
# maptype: 'roadmap', 'satellite', 'terrain', or 'hybrid'
|
|
11
|
+
# markers: an array of this 'color:blue|label:S|40.702147,-74.015794'
|
|
12
|
+
# or string with semicolon
|
|
13
|
+
def google_static_map_url(size, options={})
|
|
14
|
+
markers = options.delete('markers')
|
|
15
|
+
markers = if markers
|
|
16
|
+
markers = markers.split(';') if markers.is_a?(String)
|
|
17
|
+
markers.map { |marker| { markers: marker }.to_query }
|
|
18
|
+
else
|
|
19
|
+
''
|
|
20
|
+
end
|
|
21
|
+
options = options.merge('size' => size)
|
|
22
|
+
querystring = [options.to_query, markers].delete_if { |value| value.blank? }.join('&')
|
|
23
|
+
|
|
24
|
+
"https://maps.googleapis.com/maps/api/staticmap?#{querystring}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
Liquid::Template.register_filter(Liquid::Rails::GoogleStaticMapUrlFilter)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
module Liquid
|
|
4
|
+
module Rails
|
|
5
|
+
module MiscFilter
|
|
6
|
+
# Get the nth element of the passed in array
|
|
7
|
+
def index(array, position)
|
|
8
|
+
array.at(position) if array.respond_to?(:at)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def random(input)
|
|
12
|
+
rand(input.to_i)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def jsonify(object)
|
|
16
|
+
JSON.dump(object)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# If condition is true, the class_name is returned. Otherwise, it returns nil.
|
|
20
|
+
# class_name: css class name
|
|
21
|
+
# condition: boolean
|
|
22
|
+
def toggle_class_name(class_name, condition)
|
|
23
|
+
condition ? class_name : nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def default_pagination(paginate)
|
|
27
|
+
html = []
|
|
28
|
+
html << %(<span class="prev">#{link_to(paginate['previous']['title'], paginate['previous']['url'])}</span>) if paginate['previous']
|
|
29
|
+
|
|
30
|
+
for part in paginate['parts']
|
|
31
|
+
if part['is_link']
|
|
32
|
+
html << %(<span class="page">#{link_to(part['title'], part['url'])}</span>)
|
|
33
|
+
elsif part['title'].to_i == paginate['current_page'].to_i
|
|
34
|
+
html << %(<span class="page current">#{part['title']}</span>)
|
|
35
|
+
else
|
|
36
|
+
html << %(<span class="deco">#{part['title']}</span>)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
html << %(<span class="next">#{link_to(paginate['next']['title'], paginate['next']['url'])}</span>) if paginate['next']
|
|
41
|
+
html.join(' ')
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
Liquid::Template.register_filter(Liquid::Rails::MiscFilter)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module NumberFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:number_to_phone,
|
|
6
|
+
:number_to_currency,
|
|
7
|
+
:number_to_percentage,
|
|
8
|
+
:number_with_delimiter,
|
|
9
|
+
:number_with_precision,
|
|
10
|
+
:number_to_human_size,
|
|
11
|
+
:number_to_human,
|
|
12
|
+
|
|
13
|
+
to: :h
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def h
|
|
18
|
+
@h ||= @context.registers[:view]
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Liquid::Template.register_filter(Liquid::Rails::NumberFilter)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module SanitizeFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:strip_tags,
|
|
6
|
+
:strip_links,
|
|
7
|
+
|
|
8
|
+
to: :h
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def h
|
|
13
|
+
@h ||= @context.registers[:view]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Liquid::Template.register_filter(Liquid::Rails::SanitizeFilter)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module TextFilter
|
|
4
|
+
delegate \
|
|
5
|
+
:truncate,
|
|
6
|
+
:highlight,
|
|
7
|
+
:excerpt,
|
|
8
|
+
:pluralize,
|
|
9
|
+
:word_wrap,
|
|
10
|
+
:simple_format,
|
|
11
|
+
|
|
12
|
+
to: :h
|
|
13
|
+
|
|
14
|
+
# right justify and padd a string
|
|
15
|
+
def rjust(input, integer, padstr = '')
|
|
16
|
+
input.to_s.rjust(integer, padstr)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# left justify and padd a string
|
|
20
|
+
def ljust(input, integer, padstr = '')
|
|
21
|
+
input.to_s.ljust(integer, padstr)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def underscore(input)
|
|
25
|
+
input.to_s.gsub(' ', '_').gsub('/', '_').underscore
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def dasherize(input)
|
|
29
|
+
input.to_s.gsub(' ', '-').gsub('/', '-').dasherize
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def concat(input, *args)
|
|
33
|
+
result = input.to_s
|
|
34
|
+
args.flatten.each { |a| result << a.to_s }
|
|
35
|
+
result
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def h
|
|
41
|
+
@h ||= @context.registers[:view]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
Liquid::Template.register_filter(Liquid::Rails::TextFilter)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module TranslateFilter
|
|
4
|
+
def translate(key, locale = nil, scope = nil)
|
|
5
|
+
locale ||= ::I18n.locale.to_s
|
|
6
|
+
|
|
7
|
+
@context.registers[:view].translate(key.to_s, locale: locale, scope: scope)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Liquid::Template.register_filter Liquid::Rails::TranslateFilter
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Liquid
|
|
2
|
+
module Rails
|
|
3
|
+
module UrlFilter
|
|
4
|
+
|
|
5
|
+
def link_to(name, url, options={})
|
|
6
|
+
@context.registers[:view].link_to(name, url.to_s, options)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def link_to_unless_current(name, url, options={})
|
|
10
|
+
@context.registers[:view].link_to_unless_current(name, url.to_s, options)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def mail_to(email_address, name=nil, options={})
|
|
14
|
+
@context.registers[:view].mail_to(email_address, name, options)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def current_page?(path)
|
|
18
|
+
@context.registers[:view].current_page?(path.to_s)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Liquid::Template.register_filter(Liquid::Rails::UrlFilter)
|