# frozen_string_literal: true
module DocTemplate
module Tags
class HeadingTag < BaseTag
TEMPLATE = 'heading.html.erb'
def parse(node, opts = {})
# we have to collect all the next siblings until next stop-tag
params = {
content: parse_nested(content_until_break(node), opts),
heading: "
#{heading(opts[:value])}
",
tag: self.class::TAG_NAME
}
@content = parse_template params, TEMPLATE
replace_tag node
self
end
private
def prefix
self.class::TITLE_PREFIX
end
def heading(value)
value.include?(prefix + ':') ? value : "#{prefix}: #{value}"
end
end
class RubricTag < HeadingTag
TAG_NAME = 'rubric'
TITLE_PREFIX = 'Rubric'
end
class JsTag < HeadingTag
TAG_NAME = 'js'
TITLE_PREFIX = 'Juicy Sentences'
end
class EtTag < HeadingTag
TAG_NAME = 'et'
TITLE_PREFIX = 'Exit Ticket'
end
class PhotoTag < HeadingTag
TAG_NAME = 'photo'
TITLE_PREFIX = 'Photograph'
end
class AssessTag < HeadingTag
TAG_NAME = 'assess'
TITLE_PREFIX = 'Assessment'
end
class ShTag < HeadingTag
TAG_NAME = 'sh'
def heading(value)
value
end
end
class KeyTag < HeadingTag
TAG_NAME = 'key'
def heading(value)
"#{value}
(For Teacher Reference)"
end
end
class ThTag < HeadingTag
TAG_NAME = 'th'
def heading(value)
"#{value}
(For Teacher Reference)"
end
end
end
Template.register_tag(Tags::RubricTag::TAG_NAME, Tags::RubricTag)
Template.register_tag(Tags::JsTag::TAG_NAME, Tags::JsTag)
Template.register_tag(Tags::EtTag::TAG_NAME, Tags::EtTag)
Template.register_tag(Tags::PhotoTag::TAG_NAME, Tags::PhotoTag)
Template.register_tag(Tags::AssessTag::TAG_NAME, Tags::AssessTag)
Template.register_tag(Tags::ShTag::TAG_NAME, Tags::ShTag)
Template.register_tag(Tags::KeyTag::TAG_NAME, Tags::KeyTag)
Template.register_tag(Tags::ThTag::TAG_NAME, Tags::ThTag)
end