Coder Social home page Coder Social logo

qcal's People

Contributors

nozavroni avatar

Watchers

 avatar

qcal's Issues

Write programming style guide for qCal

To keep code consistent and easy-to-read, write a programming style guide for the library that specifies how files are named, namespaced, how code is written (indentation, capitalization, naming conventions, etc.), commented, and any other things you can think of to make consistent.

Implement Time Zone Support for qCal\DateTime

Implement TimeZone support for DateTime class. As of now, qCal\DateTime supports time zones only insofar as PHP's DateTime class does. In order for it to support time zones in qCal, it has to be able to gather time zone information from the iCalendar file (or other source) being worked with and store it in a registry so that when time zones are referenced (by TZID) elsewhere in the file, qCal knows where to look for the associated time zone information.

See if qCal\Value\Uri should have any more methods

See if qCal\Value\Uri should have any more methods and implement them. It doesn't do anything because technically it just deals with a string. But the string is a URI. So is there anything it should be doing to work with a URI?

Make sure time zone properties conformance rules are right

Look at the conformance definition for VTIMEZONE and make sure all the time zone properties' conformance rules are right. Look at the format definition for VTIMEZONE and it should tell you exactly which properties are allowed on VTIMEZONE, STANDARD and DAYLIGHT. Implement.

Rename Component classes?

I'm thinking about renaming all the component classes. VEvent would become Event, VCalendar would become Calendar, etc. If I do this, I would need to also put Standard and DayLight into the qCal\Element\Component\TimeZone namespace. I think this would be a lot cleaner and less awkward.

Implement configuration for conformance

The conformance classes need to support a configuration array or object to toggle support for various features and settings. For instance, RFC 5545 has deprecated support for the PROCEDURE value of the ACTION property. I would like to still make it possible to support that value by enabling it in a configuration setting.

Property::__toString() is incorrect

Property::__toString() returns only the value as a string. It needs to return its name and parameters too. Returning it as a string according to the iCalendar format though, will be code duplication though because that code belongs in the renderer classes. Figure out how you want to handle this and implement it.

Globally Unique Identifier for PRODID

The RFC mentions the value of PRODID being a globally unique identifier such as "FPI", defined by ISO 9070. I could not find much on this standard, but typing ISO 9070 did return this page in google:
https://tools.ietf.org/id/draft-ietf-calsch-icalfpi-00.txt

In any case, PRODID's value is supposed to be a globally unique identifier. Figure out precisely what this means. I know what a globally unique identifier is, but are there specific guidelines or conventions on creating one?

Look into "can be specified once" wording on TRANSP

The TRANSP property's conformance definition says it "can be specified once". Many of the other properties that can only be specified once just say "can be specified for X component". Why the difference in wording? Is it just an oversight? Just look into it.

qCal\DateTime\Period only supports UTC

Because qCal\DateTime currently has no support for time zones, qCal\DateTime\Period started calculating its conversion to a qCal\DateTime\Duration incorrectly when I switched from working from my iMac to working from my MacBook. For right now, just so that I can continue working on the lib, I have temporarily fixed the problem by setting the timezone to UTC. This doesn't actually fix anything, it just hides the problem. But it will work for now.

To fix the problem, implement support for time zones in qCal\DateTime, as referenced in issue #4 and then remove the hard-coding of UTC in qCal\DateTime\Period.

Refactor qCal\Element::accept()

This method may not need refactoring. It has several conditionals and I think what really is the issue is the component interface's property accessors. Because properties can be set mutliple times on a component, the property accessors get ugly. If this method can be cleaned up, clean it up.

Add RFC description to property comments

I had, at one point, added the RFC descriptions of each property to their respective classes, but somehow they got reverted to versions without the RFC descriptions. Go back to each property and add the description from the RFC.

Does qCal need to support other Calendar Scales?

The CalScale property specifies which calendar scale the calendar uses. So I'm assuming this means it has to support scales like Julian. Look into it and find out if you have to go through that nightmare.

Organize Exceptions

The exceptions in this library are extremely inconsistent and nonsensical. After the style guide is written (see #8), rewrite/rename exceptions according to the style guide.

Refactor qCal\Parse\Lexer

There are unnecessary methods in qCal\Parse\Lexer. Why is there both qCal\Parse\Lexer::eatWhitespace() and qCal\Parse\Lexer::eatSpaceChars()? When I wrote this I was looking at PHP Objects, Patterns and Practice and trying to just get the lexer to work right. I probably added several unnecessary methods. Refactor.

Refactor Component

Remove any unnecessary methods on Component class. There is a few pages in my notebook that outline all the Component methods and what their names should be. Refactor according to those pages.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.