defmodule Naiveical do
@moduledoc """
Public façade of the core Naiveical helpers so users can stay at `Naiveical` instead of digging
through nested namespaces.
## Calendar builders
- `create_vcalendar/0-2`
- `create_vevent/6`
- `create_vtodo/3-4`
- `create_valert/2`
- `create_valarm/2`
- `build_aggregated_vcalendar/3`
## VCARD builders
- `create_vcard/2`
- `create_categories/2`
- `create_note/2`
- `create_nickname/2`
- `create_title/2`
- `create_role/2`
- `create_organization/2`
- `create_special_date/3`
- `create_kind/2`
- `create_email/2`
- `create_display_name/3`
- `create_address/2`
- `create_website/2`
- `create_full_name/6`
- `create_telephone/2`
## Mutation helpers
- `insert_into/3-4`
- `change_value/3`
- `change_values/2`
- `delete_all/2`
- `delete_all!/2`
- `add_timezone_info/1`
## Extraction helpers
- `extract_sections_by_tag/2`
- `remove_sections_by_tag/2`
- `extract_contentline_by_tag/2`
- `extract_raw_contentline_by_tag/2`
- `extract_datetime_contentline_by_tag/2`
- `extract_datetime_contentline_by_tag!/2`
- `extract_date_contentline_by_tag/2`
- `extract_date_contentline_by_tag!/2`
- `extract_attribute/2`
- `detect_component_type/1`
## Text and date helpers
- `unfold/1`
- `fold/1-2`
- `parse_datetime/1-2`
- `parse_datetime!/1-2`
- `parse_date/1`
- `parse_date!/1`
- `is_fullday/2`
- `parse_icalendar_datetime/1`
- `parse_icalendar_datetime!/1`
- `format_icalendar_datetime/1`
- `format_icalendar_date/1`
- `parse_icalendar_date/1`
- `parse_icalendar_date!/1`
"""
alias Naiveical.Creator.{Icalendar, Vcard}
alias Naiveical.{Extractor, Helpers, Modificator}
## Calendar builders
defdelegate create_vcalendar(method \\ "PUBLISH", prod_id \\ "Excalt"), to: Icalendar
defdelegate create_vevent(
summary,
dtstart,
dtend,
location \\ "",
description \\ "",
class \\ "PUBLIC"
),
to: Icalendar
defdelegate create_vtodo(summary, due, dtstamp \\ DateTime.utc_now(), opts \\ []), to: Icalendar
defdelegate create_valert(description, trigger), to: Icalendar
defdelegate create_valarm(description, trigger), to: Icalendar
defdelegate build_aggregated_vcalendar(components, vtimezones, displayname \\ nil),
to: Icalendar
## VCARD builders
defdelegate create_vcard(uuid, opts \\ []), to: Vcard
defdelegate create_categories(categories, opts \\ []), to: Vcard
defdelegate create_note(note, opts \\ []), to: Vcard
defdelegate create_nickname(nickname, opts \\ []), to: Vcard
defdelegate create_title(title, opts \\ []), to: Vcard
defdelegate create_role(role, opts \\ []), to: Vcard
defdelegate create_organization(org, opts \\ []), to: Vcard
defdelegate create_special_date(date, type, opts \\ []), to: Vcard
defdelegate create_kind(kind, opts \\ []), to: Vcard
defdelegate create_email(address, opts \\ []), to: Vcard
defdelegate create_display_name(display_name \\ "", first_name \\ "", last_name \\ ""),
to: Vcard
defdelegate create_address(address, opts \\ []), to: Vcard
defdelegate create_website(url, opts \\ []), to: Vcard
defdelegate create_full_name(prefix, first_name, middle_name, last_name, suffix, opts \\ []),
to: Vcard
defdelegate create_telephone(tel, opts \\ []), to: Vcard
## Mutation helpers
defdelegate insert_into(ical_text, new_content, element, opts \\ []), to: Modificator
defdelegate change_value(ical_text, tag, new_value), to: Modificator
defdelegate change_values(ical_text, tag_values), to: Modificator
defdelegate delete_all(ical_text, tag), to: Modificator
defdelegate delete_all!(ical_text, tag), to: Modificator
defdelegate add_timezone_info(ical_text), to: Modificator
## Extraction helpers
defdelegate extract_sections_by_tag(ical_text, tag), to: Extractor
defdelegate remove_sections_by_tag(ical_text, tag), to: Extractor
defdelegate extract_contentline_by_tag(ical_text, tag), to: Extractor
defdelegate extract_raw_contentline_by_tag(ical_text, tag), to: Extractor
defdelegate extract_datetime_contentline_by_tag(ical_text, tag), to: Extractor
defdelegate extract_datetime_contentline_by_tag!(ical_text, tag), to: Extractor
defdelegate extract_date_contentline_by_tag(ical_text, tag), to: Extractor
defdelegate extract_date_contentline_by_tag!(ical_text, tag), to: Extractor
defdelegate extract_attribute(attribute_list_str, attr), to: Extractor
defdelegate detect_component_type(ical_data), to: Extractor
## Text and date helpers
defdelegate unfold(ical_text), to: Helpers
defdelegate fold(line, max_size \\ 75), to: Helpers
defdelegate parse_datetime(datetime_str), to: Helpers
defdelegate parse_datetime!(datetime_str), to: Helpers
defdelegate parse_datetime(datetime_str, timezone), to: Helpers
defdelegate parse_datetime!(datetime_str, timezone), to: Helpers
defdelegate parse_date(date_str), to: Helpers
defdelegate parse_date!(date_str), to: Helpers
defdelegate is_fullday(attributes, datetime_str), to: Helpers
defdelegate parse_icalendar_datetime(datetime_str), to: Helpers
defdelegate parse_icalendar_datetime!(datetime_str), to: Helpers
defdelegate format_icalendar_datetime(datetime), to: Helpers
defdelegate format_icalendar_date(date), to: Helpers
defdelegate parse_icalendar_date(date_str), to: Helpers
defdelegate parse_icalendar_date!(date_str), to: Helpers
end