|
require 'bundler/inline' |
|
|
|
gemfile do |
|
source 'https://rubygems.org' |
|
gem 'liquid' |
|
gem 'bigdecimal' |
|
end |
|
|
|
require 'date' |
|
require 'liquid' |
|
|
|
GFR_INCORPORATION_DATE = Date.parse('2009-01-12').strftime('%s') |
|
SECONDS_IN_A_WEEK = 7 * 24 * 60 * 60 |
|
SECONDS_IN_A_MONTH = 28 * 24 * 60 * 60 |
|
|
|
def render_template(template, input) |
|
liquid_template = Liquid::Template.parse(template) |
|
liquid_template.render(input) |
|
end |
|
|
|
def display_template(title, template) |
|
input = {'due' => Date.today} |
|
|
|
puts <<-EndOutput |
|
## #{title} |
|
|
|
``` |
|
#{template} |
|
``` |
|
|
|
* Input: #{input} |
|
* Output: #{render_template(template, input)} |
|
|
|
--- |
|
|
|
EndOutput |
|
end |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: '%s' | |
|
minus: #{GFR_INCORPORATION_DATE} | |
|
divided_by: #{SECONDS_IN_A_WEEK} |
|
}} |
|
EndTemplate |
|
display_template('Current GFR week', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: '%s' | |
|
minus: #{GFR_INCORPORATION_DATE} | |
|
minus: #{SECONDS_IN_A_WEEK} | |
|
divided_by: #{SECONDS_IN_A_WEEK} |
|
}} |
|
EndTemplate |
|
display_template('Previous GFR week', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: "%b %Y" |
|
}} |
|
EndTemplate |
|
display_template('Current month', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: "%s" | |
|
minus: #{SECONDS_IN_A_MONTH} | |
|
date: "%b %Y" |
|
}} |
|
EndTemplate |
|
display_template('Last month', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: "%F" |
|
}} |
|
EndTemplate |
|
display_template('Current date', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: "%Y" |
|
}} |
|
EndTemplate |
|
display_template('Current year', template) |
|
|
|
template = <<-EndTemplate |
|
{{ due | |
|
date: "%Y" | |
|
minus: 1 |
|
}} |
|
EndTemplate |
|
display_template('Last year', template) |