Skip to content

Instantly share code, notes, and snippets.

@floehopper
Last active January 19, 2025 13:51
Show Gist options
  • Save floehopper/b587cb80bd24f1f32d5345c60053e77b to your computer and use it in GitHub Desktop.
Save floehopper/b587cb80bd24f1f32d5345c60053e77b to your computer and use it in GitHub Desktop.
Liquid template to generate a string representation of the last quarter, e.g. Q4 2024
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'liquid'
gem 'base64'
end
require 'date'
require 'liquid'
def render_template(template, input)
liquid_template = Liquid::Template.parse(template)
liquid_template.render(input)
end
template = <<-EndTemplate
{% assign current_month = due | date: "%m" %}
{% assign current_year = due | date: "%Y" %}
{% assign last_quarter = current_month | minus: 1 | divided_by: 3 | minus: 1 | plus: 4 | modulo: 4 | plus: 1 %}
{% assign quarter_adjustment = due | date: "%m" | minus: 1 | divided_by: 3 | minus: 1 | at_most: 0 %}
{{ last_quarter | prepend: "Q" }} {{ current_year | plus: quarter_adjustment }}
EndTemplate
puts render_template(template, { 'due' => Date.parse('2024-12-05') }) # => Q3 2024
puts render_template(template, { 'due' => Date.parse('2025-01-19') }) # => Q4 2024
puts render_template(template, { 'due' => Date.parse('2025-04-02') }) # => Q1 2025
puts render_template(template, { 'due' => Date.parse('2025-07-01') }) # => Q2 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment