Class: Inversion::Template::TimeDeltaTag
- Defined in:
- lib/inversion/template/timedeltatag.rb
Overview
Inversion time delta tag.
This tag is a derivative of the ‘attr’ tag that transforms the results of its method call to a Time object (if it isn’t already), and then generates an English description of the different between it and the current time.
Syntax
Updated <?timedelta entry.update_date ?>.
Constant Summary collapse
- MINUTES =
60
- HOURS =
60 * MINUTES
- DAYS =
24 * HOURS
- WEEKS =
7 * DAYS
- MONTHS =
30 * DAYS
- YEARS =
365.25 * DAYS
Constants inherited from Tag
Inversion::Template::Tag::TAG_PLUGIN_PATTERN
Instance Attribute Summary
Attributes inherited from AttrTag
Attributes inherited from CodeTag
Attributes inherited from Tag
Attributes inherited from Node
Instance Method Summary collapse
-
#render(renderstate) ⇒ Object
Render the tag.
Methods inherited from AttrTag
#as_comment_body, #evaluate, #initialize
Methods inherited from CodeTag
inherit_tag_patterns, #initialize, tag_pattern, tag_patterns
Methods included from AbstractClass
Methods included from AbstractClass::ClassMethods
Methods inherited from Tag
#as_comment_body, create, #derivatives, inherited, #initialize, load, load_all, #tagname, types, #types
Methods included from MethodUtilities
#singleton_attr_accessor, #singleton_attr_reader, #singleton_attr_writer
Methods inherited from Node
#after_appending, #after_rendering, #as_comment_body, #before_appending, #before_rendering, #initialize, #is_container?, #location
Constructor Details
This class inherits a constructor from Inversion::Template::AttrTag
Instance Method Details
#render(renderstate) ⇒ Object
Render the tag.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/inversion/template/timedeltatag.rb', line 40 def render( renderstate ) val = super( renderstate ) time = nil omit_decorator = false if val.respond_to?( :key ) val, omit_decorator = val.values_at( :time, :omit_decorator ) end if val.respond_to?( :to_time ) time = val.to_time elsif val.is_a?( Numeric ) time = Time.at( val ) else time = Time.parse( val.to_s ) end now = Time.now if now > time seconds = now - time period = timeperiod( seconds ) period += ' ago' unless omit_decorator return period else seconds = time - now period = timeperiod( seconds ) period += ' from now' unless omit_decorator return period end end |