/
filter.cr
40 lines (35 loc) · 1.15 KB
/
filter.cr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require "./filter/**"
module Marten
module Template
module Filter
@@registry = {} of String => Base
# Returns the filter object corresponding to the passed `filter_name`.
#
# If no filter can be found, a `Marten::Template::Errors::InvalidSyntax` exception is raised.
def self.get(filter_name : String | Symbol)
registry[filter_name.to_s]
rescue KeyError
raise Errors::InvalidSyntax.new("Unknown filter with name '#{filter_name}'")
end
# Allows to register a new filter.
def self.register(filter_name : String | Symbol, filter_klass : Base.class)
@@registry[filter_name.to_s] = filter_klass.new
end
# Returns the current registry of template filters.
def self.registry
@@registry
end
register "capitalize", Capitalize
register "default", Default
register "downcase", DownCase
register "escape", Escape
register "join", Join
register "linebreaks", LineBreaks
register "safe", Safe
register "size", Size
register "split", Split
register "time", Time
register "upcase", UpCase
end
end
end