Class: Yattho::LocalTime

Inherits:
Component
  • Object
show all
Defined in:
app/components/yattho/local_time.rb

Overview

Use ‘LocalTime` to format a date and time in the user’s preferred locale format. This component requires JavaScript.

Constant Summary collapse

DEFAULT_DIGIT_TYPE =
:numeric
DIGIT_TYPE_OPTIONS =
[DEFAULT_DIGIT_TYPE, :'2-digit'].freeze
DEFAULT_TEXT_TYPE =
:short
TEXT_TYPE_OPTIONS =
[DEFAULT_TEXT_TYPE, :long].freeze

Constants inherited from Component

Component::INVALID_ARIA_LABEL_TAGS

Constants included from Status::Dsl

Status::Dsl::STATUSES

Constants included from ViewHelper

ViewHelper::HELPERS

Constants included from TestSelectorHelper

TestSelectorHelper::TEST_SELECTOR_TAG

Constants included from FetchOrFallbackHelper

FetchOrFallbackHelper::InvalidValueError

Instance Method Summary collapse

Methods inherited from Component

deprecated?, generate_id

Methods included from JoinStyleArgumentsHelper

#join_style_arguments

Methods included from TestSelectorHelper

#add_test_selector

Methods included from FetchOrFallbackHelper

#fetch_or_fallback, #fetch_or_fallback_boolean, #silence_deprecations?

Methods included from ClassNameHelper

#class_names

Constructor Details

#initialize(datetime:, initial_text: nil, weekday: DEFAULT_TEXT_TYPE, year: DEFAULT_DIGIT_TYPE, month: DEFAULT_TEXT_TYPE, day: DEFAULT_DIGIT_TYPE, hour: DEFAULT_DIGIT_TYPE, minute: DEFAULT_DIGIT_TYPE, second: DEFAULT_DIGIT_TYPE, time_zone_name: DEFAULT_TEXT_TYPE, **system_arguments) ⇒ LocalTime

Returns a new instance of LocalTime.

Examples:

Default

<%= render(Yattho::LocalTime.new(datetime: DateTime.parse("2014-06-01T13:05:07Z"))) %>

All the options

<%= render(Yattho::LocalTime.new(datetime: DateTime.parse("2014-06-01T13:05:07Z"), weekday: :long, year: :"2-digit", month: :long, day: :"2-digit", hour: :"2-digit", minute: :"2-digit", second: :"2-digit", time_zone_name: :long)) %>

With initial content

<%= render(Yattho::LocalTime.new(datetime: DateTime.parse("2014-06-01T13:05:07Z"))) do %>
  <!-- This content will be replaced once the component connects -->
  2014/06/01 13:05
<% end %>

Parameters:

  • datetime (DateTime)

    The date to parse

  • initial_text (String) (defaults to: nil)

    Text to render before component is initialized

  • weekday (Symbol) (defaults to: DEFAULT_TEXT_TYPE)

    <%= one_of(Yattho::LocalTime::TEXT_TYPE_OPTIONS) %>

  • year (Symbol) (defaults to: DEFAULT_DIGIT_TYPE)

    <%= one_of(Yattho::LocalTime::DIGIT_TYPE_OPTIONS) %>

  • month (Symbol) (defaults to: DEFAULT_TEXT_TYPE)

    <%= one_of(Yattho::LocalTime::TEXT_TYPE_OPTIONS) %>

  • day (Symbol) (defaults to: DEFAULT_DIGIT_TYPE)

    <%= one_of(Yattho::LocalTime::DIGIT_TYPE_OPTIONS) %>

  • hour (Symbol) (defaults to: DEFAULT_DIGIT_TYPE)

    <%= one_of(Yattho::LocalTime::DIGIT_TYPE_OPTIONS) %>

  • minute (Symbol) (defaults to: DEFAULT_DIGIT_TYPE)

    <%= one_of(Yattho::LocalTime::DIGIT_TYPE_OPTIONS) %>

  • second (Symbol) (defaults to: DEFAULT_DIGIT_TYPE)

    <%= one_of(Yattho::LocalTime::DIGIT_TYPE_OPTIONS) %>

  • time_zone_name (Symbol) (defaults to: DEFAULT_TEXT_TYPE)

    <%= one_of(Yattho::LocalTime::TEXT_TYPE_OPTIONS) %>

  • system_arguments (Hash)

    <%= link_to_system_arguments_docs %>



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/components/yattho/local_time.rb', line 37

def initialize(datetime:, initial_text: nil, weekday: DEFAULT_TEXT_TYPE, year: DEFAULT_DIGIT_TYPE,
               month: DEFAULT_TEXT_TYPE, day: DEFAULT_DIGIT_TYPE, hour: DEFAULT_DIGIT_TYPE, minute: DEFAULT_DIGIT_TYPE, second: DEFAULT_DIGIT_TYPE, time_zone_name: DEFAULT_TEXT_TYPE, **system_arguments)
  @system_arguments = deny_tag_argument(**system_arguments)

  @datetime = datetime

  @system_arguments[:tag] = "relative-time"
  @system_arguments[:threshold] = "PT0S"
  @system_arguments[:prefix] = ""
  @system_arguments[:datetime] = datetime

  @initial_text = initial_text

  @system_arguments[:weekday] = fetch_or_fallback(TEXT_TYPE_OPTIONS, weekday, DEFAULT_TEXT_TYPE)
  @system_arguments[:year] = fetch_or_fallback(DIGIT_TYPE_OPTIONS, year, DEFAULT_DIGIT_TYPE)
  @system_arguments[:month] = fetch_or_fallback(TEXT_TYPE_OPTIONS, month, DEFAULT_TEXT_TYPE)
  @system_arguments[:day] = fetch_or_fallback(DIGIT_TYPE_OPTIONS, day, DEFAULT_DIGIT_TYPE)
  @system_arguments[:hour] = fetch_or_fallback(DIGIT_TYPE_OPTIONS, hour, DEFAULT_DIGIT_TYPE)
  @system_arguments[:minute] = fetch_or_fallback(DIGIT_TYPE_OPTIONS, minute, DEFAULT_DIGIT_TYPE)
  @system_arguments[:second] = fetch_or_fallback(DIGIT_TYPE_OPTIONS, second, DEFAULT_DIGIT_TYPE)
  @system_arguments[:'time-zone-name'] = fetch_or_fallback(TEXT_TYPE_OPTIONS, time_zone_name, DEFAULT_TEXT_TYPE)
end

Instance Method Details

#callObject



60
61
62
# File 'app/components/yattho/local_time.rb', line 60

def call
  render(Yattho::BaseComponent.new(**@system_arguments).with_content(@initial_text || @datetime.strftime("%B %-d, %Y %H:%M %Z")))
end