Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next major rewrite scratchpad / tasks #108

Open
18 tasks
simshaun opened this issue Dec 1, 2016 · 0 comments
Open
18 tasks

Next major rewrite scratchpad / tasks #108

simshaun opened this issue Dec 1, 2016 · 0 comments

Comments

@simshaun
Copy link
Owner

simshaun commented Dec 1, 2016

LATE EDIT: Just found https://github.com/fruux/sabre-vobject. Is a major overhaul even worth doing?

From #94:

  • Build an iCalendar object parser specifically to extract VEVENTs.
  • Build a RecurrenceGenerator that handles an extracted VEVENT. Use generators instead of generating a giant collection all at once. No more virtualLimit. (From Add a getNextRecurrence method #91)
    • Instead of being large like v1 ArrayTransformer, refactor into smaller units.
  • To ease the pain of upgrading, create a VEVENT builder class that accepts a RRULE string and supports building by method chaining, v1-style.

From #84:

  • Hint \DateTimeInterface instead of concrete implementations.
  • Use \DateTimeImmutable to reduce chance of unintended by-reference object modifications.

Because of #106:
https://tools.ietf.org/html/rfc5545#section-3.3.5

  • DTSTART and other attributes that hold DATE-TIME values need to support TZID references.
  • DATE-TIME values without a TZID or UTC designator must be recognized as floating times.
    • Figure out the best way to handle this.
      • Wrap \DateTime objects in a class that has isFloatingTime(). It would be up to users to handle floating times in their applications.
      • Store as UTC so users can easily convert to visitors' timezone if needed.

From #87:

  • Support RFC7529 SKIP property to handle non-gregorian dates. No more lastDayOfMonthFix.

From #88:

  • Support period values in RDATE (as well as DATE & DATE-TIME). Are there other attributes that need period value support?

From #89:

From #91:

  • Store context (such as occurrence #, limit, end date, ..) in generated recurrences? Make it possible generate occurrences at a later time given any single recurrence.
  • Brainstorm ideas to accomplish "get next recurrence from the present moment". Probably not feasible beyond generating from the start and tossing out those that aren't needed.

From #93:

  • Figure out if there's a more efficient way to calculate recurrences than "looping through each day and testing".
  • Adding to the previous item, try to avoid generating so many \DateTime objects.
@simshaun simshaun self-assigned this Dec 1, 2016
@simshaun simshaun changed the title Next major release scratchpad / tasks Next major rewrite scratchpad / tasks Jul 14, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant