Skip to content

Add support for all RWZ rule element types from the spec#2

Open
YatinAdityaT wants to merge 1 commit intoasklar:mainfrom
YatinAdityaT:add-missing-rule-elements
Open

Add support for all RWZ rule element types from the spec#2
YatinAdityaT wants to merge 1 commit intoasklar:mainfrom
YatinAdityaT:add-missing-rule-elements

Conversation

@YatinAdityaT
Copy link
Copy Markdown

Summary

  • Add support for ~60 rule element types (up from ~15), covering all conditions, actions, and exceptions from the OutlookRulesReader spec. The original parser would crash on most real-world .rwz files due to unrecognized element IDs.
  • Add 8 new data parser classes for element payloads: ImportanceRuleElementData, SensitivityRuleElementData, CategoriesListRuleElementData, PathRuleElementData, OnThisComputerOnlyRuleElementData, SizeInSpecificRangeRuleElementData, DisplayMessageRuleElementData, DeferDeliveryRuleElementData.
  • Accept input/output file paths as CLI arguments (node index.js <input.rwz> [output.json]) instead of hardcoded C:/Temp/Untitled.rwz.
  • Improve error messages for unknown element types to display the hex ID.

Motivation

Tested against a real-world Outlook 2019 .rwz export with 86 rules. The original parser failed immediately on element 0x14C (mark as read). After this change, all 86 rules parse successfully.

Test plan

  • Verified parsing of an Outlook 2019 .rwz file with 86 rules containing diverse conditions, actions, and exceptions
  • Confirmed output JSON contains all rules with correct structure
  • Could benefit from unit tests with sample .rwz fixtures in the future

The original parser only handled ~15 rule element IDs and would crash
on most real-world .rwz files. This adds support for ~60 element types
covering all conditions, actions, and exceptions documented in the
OutlookRulesReader spec by @hughbe.

Changes:
- Add 8 new data parser classes: ImportanceRuleElementData,
  SensitivityRuleElementData, CategoriesListRuleElementData,
  PathRuleElementData, OnThisComputerOnlyRuleElementData,
  SizeInSpecificRangeRuleElementData, DisplayMessageRuleElementData,
  DeferDeliveryRuleElementData
- Expand the RuleElement switch from 15 to 60+ element IDs
- Accept input/output paths as CLI arguments instead of hardcoded paths
- Improve error message for unknown element types to show hex ID
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant