Module: TRMNL::Liquid::Filters
- Defined in:
- lib/trmnl/liquid/filters.rb
Overview
rubocop:todo Metrics/ModuleLength
Instance Method Summary collapse
- #append_random(value) ⇒ Object
- #days_ago(value, timezone = "Etc/UTC") ⇒ Object
-
#find_by(collection, key, value, fallback = nil) ⇒ Object
:reek:ControlParameter rubocop:todo Metrics/ParameterLists.
- #group_by(collection, key) ⇒ Object
-
#json(value) ⇒ Object
rubocop:enable Style/OptionHash.
-
#l_date(value, format, locale = "en") ⇒ Object
:reek:FeatureEnvy.
-
#l_word(word, locale) ⇒ Object
rubocop:enable Metrics/ParameterLists.
- #map_to_i(collection) ⇒ Object
-
#markdown_to_html(markdown) ⇒ Object
rubocop:enable Metrics/ParameterLists.
-
#number_to_currency(number, unit_or_locale = "$", delimiter = ",", separator = ".", precision = 2) ⇒ Object
:reek:TooManyStatements rubocop:todo Metrics/ParameterLists.
- #number_with_delimiter(number, delimiter = ",", separator = ".") ⇒ Object
-
#ordinalize(value, strftime_format) ⇒ Object
:reek:FeatureEnvy.
- #parse_json(value) ⇒ Object
-
#pluralize(singular, count, options = {}) ⇒ Object
:reek:FeatureEnvy rubocop:todo Style/OptionHash.
-
#qr_code(data, size = 11, level = "", view = "responsive") ⇒ Object
rubocop:todo Metrics/ParameterLists rubocop:todo Metrics/MethodLength.
- #sample(array) ⇒ Object
-
#where_exp(input, variable, expression) ⇒ Object
:reek:TooManyStatements source: https://github.com/jekyll/jekyll/blob/40ac06ed3e95325a07868dd2ac419e409af823b6/lib/jekyll/filters.rb#L209.
Instance Method Details
#append_random(value) ⇒ Object
15 |
# File 'lib/trmnl/liquid/filters.rb', line 15 def append_random(value) = "#{value}#{SecureRandom.hex 2}" |
#days_ago(value, timezone = "Etc/UTC") ⇒ Object
17 18 19 |
# File 'lib/trmnl/liquid/filters.rb', line 17 def days_ago value, timezone = "Etc/UTC" TZInfo::Timezone.get(timezone).now.to_date - value.to_i end |
#find_by(collection, key, value, fallback = nil) ⇒ Object
:reek:ControlParameter rubocop:todo Metrics/ParameterLists
25 26 27 |
# File 'lib/trmnl/liquid/filters.rb', line 25 def find_by collection, key, value, fallback = nil collection.find { |obj| obj[key] == value } || fallback end |
#group_by(collection, key) ⇒ Object
21 |
# File 'lib/trmnl/liquid/filters.rb', line 21 def group_by(collection, key) = collection.group_by { it[key] } |
#json(value) ⇒ Object
rubocop:enable Style/OptionHash
92 |
# File 'lib/trmnl/liquid/filters.rb', line 92 def json(value) = JSON.generate value |
#l_date(value, format, locale = "en") ⇒ Object
:reek:FeatureEnvy
69 70 71 72 73 74 |
# File 'lib/trmnl/liquid/filters.rb', line 69 def l_date value, format, locale = "en" with_i18n value.to_s do |i18n| format = format.to_sym unless format.include? "%" i18n.l to_time(value), format:, locale: end end |
#l_word(word, locale) ⇒ Object
rubocop:enable Metrics/ParameterLists
64 65 66 |
# File 'lib/trmnl/liquid/filters.rb', line 64 def l_word word, locale with_i18n("custom_plugins.#{word}") { |i18n| i18n.t "custom_plugins.#{word}", locale: } end |
#map_to_i(collection) ⇒ Object
76 |
# File 'lib/trmnl/liquid/filters.rb', line 76 def map_to_i(collection) = collection.map(&:to_i) |
#markdown_to_html(markdown) ⇒ Object
rubocop:enable Metrics/ParameterLists
30 31 32 33 34 35 |
# File 'lib/trmnl/liquid/filters.rb', line 30 def markdown_to_html markdown markdown ||= "" renderer = Redcarpet::Render::HTML.new = {} service = Redcarpet::Markdown.new renderer, _extensions = {} service.render markdown end |
#number_to_currency(number, unit_or_locale = "$", delimiter = ",", separator = ".", precision = 2) ⇒ Object
:reek:TooManyStatements rubocop:todo Metrics/ParameterLists
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/trmnl/liquid/filters.rb', line 47 def number_to_currency number, unit_or_locale = "$", delimiter = ",", separator = ".", precision = 2 if RailsHelpers.respond_to? :number_to_currency cur_switcher = with_i18n :unit do |i18n| i18n.available_locales.include?(unit_or_locale.to_sym) ? :locale : :unit end opts = {delimiter:, separator:, precision:}.merge cur_switcher => unit_or_locale RailsHelpers.number_to_currency(number, **opts) else Fallback.number_to_currency number, unit_or_locale, delimiter, separator, precision end end |
#number_with_delimiter(number, delimiter = ",", separator = ".") ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/trmnl/liquid/filters.rb', line 37 def number_with_delimiter number, delimiter = ",", separator = "." if RailsHelpers.respond_to? :number_with_delimiter RailsHelpers.number_with_delimiter number, delimiter: delimiter, separator: separator else Fallback.number_with_delimiter number, delimiter, separator end end |
#ordinalize(value, strftime_format) ⇒ Object
:reek:FeatureEnvy
115 116 117 118 119 120 121 |
# File 'lib/trmnl/liquid/filters.rb', line 115 def ordinalize value, strftime_format time = to_time value day = time.day ordinal_day = day.respond_to?(:ordinalize) ? day.ordinalize : Fallback.ordinalize(day) time.strftime strftime_format.gsub("<<ordinal_day>>", ordinal_day) end |
#parse_json(value) ⇒ Object
94 |
# File 'lib/trmnl/liquid/filters.rb', line 94 def parse_json(value) = JSON.parse value |
#pluralize(singular, count, options = {}) ⇒ Object
:reek:FeatureEnvy rubocop:todo Style/OptionHash
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/trmnl/liquid/filters.rb', line 80 def pluralize singular, count, = {} plural = ["plural"] locale = ["locale"] || with_i18n(nil, &:locale) || "en" if RailsHelpers.respond_to? :pluralize RailsHelpers.pluralize count, singular, plural: plural, locale: locale else Fallback.pluralize count, singular, plural end end |
#qr_code(data, size = 11, level = "", view = "responsive") ⇒ Object
rubocop:todo Metrics/ParameterLists rubocop:todo Metrics/MethodLength
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/trmnl/liquid/filters.rb', line 125 def qr_code data, size = 11, level = "", view = "responsive" level = "h" unless %w[l m q h].include? level.downcase qrcode = RQRCode::QRCode.new(data, level:) qrcode.as_svg( color: "000", fill: "fff", shape_rendering: "crispEdges", module_size: size, use_path: true, viewbox: view == "responsive", svg_attributes: { class: "qr-code" } ) end |
#sample(array) ⇒ Object
96 |
# File 'lib/trmnl/liquid/filters.rb', line 96 def sample(array) = array.sample |
#where_exp(input, variable, expression) ⇒ Object
:reek:TooManyStatements source: https://github.com/jekyll/jekyll/blob/40ac06ed3e95325a07868dd2ac419e409af823b6/lib/jekyll/filters.rb#L209
100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/trmnl/liquid/filters.rb', line 100 def where_exp input, variable, expression return input unless input.respond_to? :select input = input.values if input.is_a? Hash condition = parse_condition expression @context.stack do input.select do |object| @context[variable] = object condition.evaluate @context end end || [] end |