Commit Graph

496 Commits

Author SHA1 Message Date
Brent Simmons 07e6ff5572 Add UserAgent.headers() function — otherwise that code was duplicated in a couple places. 2017-10-07 12:34:12 -07:00
Brent Simmons 6a1c39d8a3 Remove Notifications.swift from Data.framework. Clean up UnreadCountProvider. 2017-10-07 11:56:22 -07:00
Brent Simmons 12ea6e6a9f Fix a second bug loading feeds. Feeds now appear in the sidebar. 2017-10-05 21:17:50 -07:00
Brent Simmons 199dd0e247 Fix bug loading feeds from disk. 2017-10-05 21:08:27 -07:00
Brent Simmons c258a9da5c Rewrite and move BatchUpdate.swift. 2017-10-05 20:34:29 -07:00
Brent Simmons c80c6c30f8 Fix builder errors, mostly in RSParser. 2017-10-04 13:28:48 -07:00
Brent Simmons 83231ed373 Fix some build errors. 2017-10-02 13:15:07 -07:00
Brent Simmons cb4027a951 Fix some build errors. 2017-10-01 11:28:44 -07:00
Brent Simmons 04612049f5 Make progress on adding feeds. 2017-10-01 10:59:35 -07:00
Brent Simmons a910841c65 Add createFeed method. 2017-09-30 16:56:48 -07:00
Brent Simmons 1f677ca600 Edit some access permissions in Folder. 2017-09-30 11:00:18 -07:00
Brent Simmons 5ae70758fb Perform a minor refactoring in Folder.swift. 2017-09-28 13:34:16 -07:00
Brent Simmons 3a4e545e22 Fix build errors in Account.framework. 2017-09-28 13:16:47 -07:00
Brent Simmons 1ec3484a95 Init Folder with an Account rather than an accountID. 2017-09-28 06:53:01 -07:00
Brent Simmons 48543bcfd6 Make progress reading/writing Account feeds and folders to disk. 2017-09-27 13:29:05 -07:00
Brent Simmons 55967f8731 Fix some build errors. 2017-09-26 21:43:40 -07:00
Brent Simmons f187f6a9ef Make Feed provide a disk dictionary. 2017-09-26 13:32:02 -07:00
Brent Simmons 9b566dd10d Init feed with a disk dictionary. 2017-09-26 13:26:28 -07:00
Brent Simmons 8d9c9217dc Make HTTPConditionalGetInfo serializable via a dictionary. 2017-09-26 13:16:46 -07:00
Brent Simmons 2978d4420b Start work on adding feeds and folders. 2017-09-25 13:31:36 -07:00
Brent Simmons 21080a97fc Start work on feed importing. 2017-09-24 22:35:57 -07:00
Brent Simmons 4d677b2055 Fix a bunch of build errors. 2017-09-24 12:24:44 -07:00
Brent Simmons 1ab282c23a Do some cleanups on app code. 2017-09-23 12:17:14 -07:00
Brent Simmons 0843c10bc5 Remove accountInfo references. This was speculative anyway. I’ll figure out later what we actually need. (Which might be accountInfo after all, and might not be.) 2017-09-22 08:06:06 -07:00
Brent Simmons 6bb1deaa9e Start Database unit tests with a blank file. 2017-09-21 18:23:42 -07:00
Brent Simmons a7063f7a5d Simplify filterIncomingArticles. 2017-09-21 18:14:37 -07:00
Brent Simmons d9f0e53312 Switch to using DatabaseArticle over article dictionaries. 2017-09-21 13:25:14 -07:00
Brent Simmons 19e65dd076 Create DatabaseArticle to use instead of that article dictionary thing. 2017-09-21 12:59:08 -07:00
Brent Simmons 93db92d611 Use temporary article dictionaries when fetching articles. 2017-09-20 13:29:21 -07:00
Brent Simmons f0eea49179 Start working of moving from stubArticles to article dictionaries. 2017-09-19 13:36:13 -07:00
Brent Simmons 8767aa3178 Continue work on non-optional article.status. 2017-09-19 08:07:06 -07:00
Brent Simmons b28a849af6 Continue march toward non-optional article.status. 2017-09-18 22:00:35 -07:00
Brent Simmons 6db993075b Make progress on making ArticleStatus a reference type and on making article.status non-optional. 2017-09-18 13:17:30 -07:00
Brent Simmons ab43db7761 Get Data.framework building again. 2017-09-18 13:01:36 -07:00
Brent Simmons 622fd51d50 Make ArticleStatus a reference type. Make article.status non-optional. 2017-09-18 12:59:42 -07:00
Brent Simmons 54ca352a70 Continue fixing build errors. 2017-09-17 17:56:04 -07:00
Brent Simmons 92a60d8f06 Continue fixing build errors. 2017-09-17 17:03:58 -07:00
Brent Simmons 0336e30b0d Continue to fix build errors. 2017-09-17 16:30:45 -07:00
Brent Simmons 6631a9c2f8 Continue fixing build errors. 2017-09-17 13:07:55 -07:00
Brent Simmons c0ce68e64b Fix some build errors. 2017-09-17 12:54:08 -07:00
Brent Simmons 1b391c262e Continue working on build errors. 2017-09-17 12:34:10 -07:00
Brent Simmons 1c63e868c9 Delete dead code. 2017-09-17 12:20:59 -07:00
Brent Simmons 121fbf3c27 Move AccountManager to Account.framework. 2017-09-17 12:20:32 -07:00
Brent Simmons e78fc0d696 Get Account.framework building. 2017-09-17 12:08:50 -07:00
Brent Simmons 306836766a Fix build error in RSWeb. 2017-09-17 11:37:22 -07:00
Brent Simmons 4bb0325c45 Delete superseded code. 2017-09-17 11:32:58 -07:00
Brent Simmons ba8d2c81e8 Create AccountDelegate. The actual implementation for each different type of Account will conform to AccountDelegate. 2017-09-16 15:30:26 -07:00
Brent Simmons 5715d2f221 Move Folder and Container from Data to Account. 2017-09-16 15:25:38 -07:00
Brent Simmons 1f35892791 Make AttachmentsTable use default implementation of save. 2017-09-16 13:10:03 -07:00
Brent Simmons db757bcdb9 Implement marking statuses. 2017-09-16 11:04:29 -07:00
Brent Simmons 90c11bb687 Delete some unused code. 2017-09-16 10:38:54 -07:00
Brent Simmons 66129841a5 Use UnreadCountDictionary instead of UnreadCountTable. 2017-09-16 10:21:39 -07:00
Brent Simmons 72cfc84001 Cache statuses when fetching articles — since articles are fetched using a join statement with the statuses table. 2017-09-14 13:32:06 -07:00
Brent Simmons 80c8a848e9 Slightly simplify related-object adding code. 2017-09-13 21:52:11 -07:00
Brent Simmons 7563906f9b Create Articles with attached objects. 2017-09-13 21:41:01 -07:00
Brent Simmons 57cf5a25d7 Fix some build errors. 2017-09-13 17:40:25 -07:00
Brent Simmons 1cfa11d032 Move save-using-cache code to DatabaseRelatedObjectsTable. Fix some build errors. 2017-09-13 13:29:52 -07:00
Brent Simmons d284bf3757 Remove cache from Author since it’s now in AuthorsTable. 2017-09-12 22:27:36 -07:00
Brent Simmons 8f01e7e3b6 Fix build error. 2017-09-12 22:06:59 -07:00
Brent Simmons 8f12df8f5b Move fetchObjectsWithIDs from AttachmentsTable to default protocol implementation since AuthorsTable needs the exact same thing. 2017-09-12 21:47:04 -07:00
Brent Simmons 9341515926 Save and fetch attachments. Use a cache. 2017-09-12 21:19:45 -07:00
Brent Simmons b32c96c912 Prune DatabaseLookupTable some more. Get RSDatabase building again. 2017-09-11 21:58:22 -07:00
Brent Simmons d77c4d763f Add comment to RelatedObjectsMap. 2017-09-11 13:16:30 -07:00
Brent Simmons 45063d2d96 Remove cache from DatabaseLookupTable because it made the code too complex. If profiling says we need caching, we can add it back later. 2017-09-11 13:15:12 -07:00
Brent Simmons 258abab9f6 Rename *LookupTable data structures to *Map. 2017-09-11 13:11:29 -07:00
Brent Simmons 5ee58458a2 Make progress on related objects. 2017-09-11 06:46:32 -07:00
Brent Simmons 07a44f7af0 Fix some build errors in Database.framework. 2017-09-10 11:36:28 -07:00
Brent Simmons 2943fca8e3 Make ParsedAttachment require a URL. 2017-09-10 11:21:49 -07:00
Brent Simmons 9ad83e58b3 Make tags and attachments sets instead of arrays. 2017-09-10 11:18:15 -07:00
Brent Simmons b1bd1ac75a Use a Set<ParsedAuthor> instead of [ParsedAuthor] array. 2017-09-10 11:02:05 -07:00
Brent Simmons 9a45ab7996 Marked ParsedFeed.hubs a Set<ParsedHub>. 2017-09-10 10:53:24 -07:00
Brent Simmons 7415131e8d Make ParsedFeed.items a Set<ParsedItem>. Fix some build errors in Database.framework. 2017-09-09 18:46:58 -07:00
Brent Simmons 7680760537 Fix some Database.framework build errors. Add Author cache. 2017-09-09 12:57:24 -07:00
Brent Simmons 4d816850d6 Delete some dead code. 2017-09-09 12:24:30 -07:00
Brent Simmons 3c47b23b8b Add article.changesFrom() to get changes in an Article. 2017-09-09 12:09:48 -07:00
Brent Simmons 54b5100b09 Call saveUpdatedRelatedObjects when saving updated articles. 2017-09-09 11:10:15 -07:00
Brent Simmons f3406088f3 Use a KeyPath to generalize code for checking for tags, attachments, and authors changes. 2017-09-09 11:02:02 -07:00
Brent Simmons f40b400dd5 Make progress on saving updated articles. 2017-09-08 13:36:30 -07:00
Brent Simmons 9ee20ee270 Get Data.framework building again. 2017-09-07 21:00:30 -07:00
Brent Simmons 75603eefdc Deal with fallout from moving Account to its own framework. 2017-09-07 20:51:51 -07:00
Brent Simmons 6a4fd38056 Continue mess-making. Start Account framework. 2017-09-07 20:41:25 -07:00
Brent Simmons a92492eb91 Make further progress on saving articles from feeds. 2017-09-06 13:33:04 -07:00
Brent Simmons d84c65c66f Continue work on saving articles. 2017-09-05 08:53:45 -07:00
Brent Simmons dadb4a4cd0 Continue to make a mess. Switching computers so I can sit with my laptop in the living room and wait for the Pagliacci Pizza guy to knock. 2017-09-04 18:29:02 -07:00
Brent Simmons b0cb01a68e Make a mess of things. Article and ArticleStatus are now immutable structs. 2017-09-04 17:10:02 -07:00
Brent Simmons fb121f8a8c Make more progress on saving/updating articles. 2017-09-02 16:08:02 -07:00
Brent Simmons d33d8a0330 Make progress toward saving/updating articles. 2017-09-02 14:19:42 -07:00
Brent Simmons d017536d58 Make AttachmentsTable, AuthorsTable, and TagsTable classes instead of structs. 2017-09-02 10:13:37 -07:00
Brent Simmons b783d1c062 Create and use a DatabaseRelatedObjectsTable protocol, which clarifies the relationships between different table types. 2017-09-02 10:11:19 -07:00
Brent Simmons a00ac9c2ac Implement database.fetchUnreadCounts. 2017-09-01 13:31:27 -07:00
Brent Simmons 66ae62233f Start work on fetching unread counts. 2017-08-31 13:35:48 -07:00
Brent Simmons f3bfa8811d Implement marking statuses in memory and in database. 2017-08-29 13:32:36 -07:00
Brent Simmons baabf842e1 Progress. 2017-08-27 13:03:15 -07:00
Brent Simmons 3c43732e25 Delete some commented-out code that has been superseded. 2017-08-26 16:44:39 -07:00
Brent Simmons 2d1c63403d Make progress fetching articles. 2017-08-26 15:37:15 -07:00
Brent Simmons 2cefb87f20 Create ArticleCache, which wraps a weak-to-weak NSMapTable. An article is cached for as long as there’s an external (outside-the-cache) reference to the article. 2017-08-23 21:30:28 -07:00
Brent Simmons cdb8446c86 Make Articles table own the various related and lookup tables. 2017-08-23 13:23:12 -07:00
Brent Simmons becbf3d7b0 Fix Account-Database init method. 2017-08-22 07:45:09 -07:00
Brent Simmons 5860f774bd Make Database.framework build. Doesn’t work, but it builds. 2017-08-21 13:31:14 -07:00
Brent Simmons 4010011b5a Progress toward getting Database.framework to build. Mostly just commented stuff out. 2017-08-20 22:43:46 -07:00
Brent Simmons 9ddaaf5f5d Decide on preliminary public API for Database.swift. Stub-out everything. 2017-08-20 21:23:17 -07:00
Brent Simmons c164c29cde Make attachments use a DatabaseLookupTable. 2017-08-20 17:46:15 -07:00
Brent Simmons 213b1d7a6f Turn ObjectCache into DatabaseObjectCache — rather than a generic with a keypath, it works with DatabaseObject, which has a known databaseID property. 2017-08-20 16:03:09 -07:00
Brent Simmons 2ce577e9d4 Make progress on Database surgery. 2017-08-20 15:56:58 -07:00
Brent Simmons 54cfaefd81 Finish DatabaseLookupTable — well, except for testing and seeing if it actually works. 2017-08-20 15:03:05 -07:00
Brent Simmons dccc44c920 Make progress saving relationships in DatabaseLookupTable. 2017-08-20 12:41:33 -07:00
Brent Simmons e76beee988 Progress on relationships. 2017-08-19 22:07:31 -07:00
Brent Simmons 2d915a890e Start DatabaseLookupTableCache. 2017-08-19 16:30:55 -07:00
Brent Simmons 0186aeffa2 Added Swift compile time check setting. Fixed issue, and then Xcode stopped beachballing, which means I can move back from my laptop to my iMac. Whew. 2017-08-19 12:27:54 -07:00
Brent Simmons 8d5d94e1a9 Checking in to switch computers BECAUSE XCODE IS JUST BEACHBALLING ON MY IMAC GODDAMNIT. 2017-08-19 11:43:52 -07:00
Brent Simmons e7897e21d9 Start ToDo.ooutline. (OmniOutliner outline.) 2017-08-14 13:33:50 -07:00
Brent Simmons 177667d639 Remove one of the caches from DatabaseLookupTable. 2017-08-14 13:16:52 -07:00
Brent Simmons a4b27075a7 More work on relationships. 2017-08-14 12:54:57 -07:00
Brent Simmons 7f5277f3e0 Using LookupTable. 2017-08-08 20:10:02 -07:00
Brent Simmons 2fe6b0e2a6 LookupTable. 2017-08-07 22:09:10 -07:00
Brent Simmons 67cb2c57d7 Make LookupTable not a DatabaseTable. 2017-08-07 20:03:38 -07:00
Brent Simmons 7f573c2b14 Continue progress on relationships. 2017-08-07 20:00:46 -07:00
Brent Simmons 7edc76cd6e More progress on relationships. 2017-08-07 19:37:31 -07:00
Brent Simmons 4223808c74 Make progress on relationships. 2017-08-06 21:46:47 -07:00
Brent Simmons 570d70d8fe Progress on lookup tables. 2017-08-06 21:16:13 -07:00
Brent Simmons 4503f771da Attach authors. 2017-08-06 12:37:47 -07:00
Brent Simmons c30e7eeb99 Get StatusesTable compiling. 2017-08-05 11:12:45 -07:00
Brent Simmons 9d37d88c2f Make progress on Database.framework. 2017-08-03 21:10:01 -07:00
Brent Simmons 2ace9ec0d2 Get Data.framework building again. 2017-08-03 19:22:54 -07:00
Brent Simmons b756f39cbe Do things. I forget what, since it was yesterday or whatever. Progress, anyway. 2017-07-31 18:39:42 -07:00
Brent Simmons c76d42b42f Make progress on getting StatusTable to compile. 2017-07-30 11:55:46 -07:00
Brent Simmons 031617809f Add uniquedObjects to ObjectCache. 2017-07-30 11:36:27 -07:00
Brent Simmons 32ae8ab1d8 Create ObjectCache and start using it. 2017-07-30 11:22:21 -07:00
Brent Simmons bf11f88ea7 Continue moving functions to DatabaseTable. 2017-07-29 12:50:23 -07:00
Brent Simmons 77ba434878 Start moving common functions to DatabaseTable. 2017-07-29 12:29:05 -07:00
Brent Simmons da9a974dff Give DatabaseTable an RSDatabaseQueue. 2017-07-29 12:13:38 -07:00
Brent Simmons 02174012ec Rename Manager to Table. Conform to DatabaseTable protocol. 2017-07-29 12:08:10 -07:00
Brent Simmons 961454a447 I don't remember what I was doing, but I should commit it. Back from vacation now. Which was lovely. (At the beach, with family.) 2017-07-29 11:26:19 -07:00
Brent Simmons f293d5715c Make DatabaseTable a protocol. 2017-07-16 20:51:08 -07:00
Brent Simmons 8fc4c3041d Make progress on attachments. Build still broken. 2017-07-16 19:36:38 -07:00
Brent Simmons 13f8c4f9b1 Start work on Author management. 2017-07-13 13:38:47 -07:00
Brent Simmons e3b8e6833b Make progress on getting Database.framework to build. 2017-07-12 13:25:10 -07:00
Brent Simmons f46a3ece48 Back out of ArticleID struct in Data.framework. 2017-07-12 12:55:48 -07:00
Brent Simmons 7ce19b0659 Add ArticleID struct. 2017-07-10 21:47:27 -07:00
Brent Simmons c79580b87c Continue work on tags. Build broken. 2017-07-10 20:54:00 -07:00
Brent Simmons d02013cb3a Set Database.framework to compile with Swift 4. 2017-07-08 16:04:43 -07:00
Brent Simmons 4594949df7 Remove Database stuff from Data.framework, since it’s going in Database.framework. 2017-07-08 16:01:26 -07:00
Brent Simmons 2e862de338 Move LocalStatusesManager to Data.framework. 2017-07-08 13:35:06 -07:00
Brent Simmons d0a4effe07 Begin moving database stuff from LocalAccount.framework to Data.framework. 2017-07-08 13:32:09 -07:00
Brent Simmons 7ce6390f23 Set LocalAccount to use Swift 4. Broken build, though. 2017-07-08 13:25:28 -07:00
Brent Simmons 95c077b725 Replace import DataModel with import Data. 2017-07-08 13:18:59 -07:00
Brent Simmons 3f6ce99e21 Converrt Data.framework to Swift 4. 2017-07-08 13:14:39 -07:00
Brent Simmons 96e17818af Remove DataModel.framework. 2017-07-08 13:12:46 -07:00
Brent Simmons 226addd0ba Convert RSFeedFinder to Swift 4. 2017-07-08 13:10:55 -07:00
Brent Simmons b30032657c Convert RSTree to Swift 4. 2017-07-08 13:08:10 -07:00
Brent Simmons d4d3b491af Convert RSWeb to Swift 4. 2017-07-08 13:07:04 -07:00
Brent Simmons ea387a228f Convert RSCore to Swift 4. Build still broken. 2017-07-08 12:29:10 -07:00
Brent Simmons 1e856b7924 Convert RSParser to Swift 4. Now using Xcode 9. Buid still broken. 2017-07-08 12:21:29 -07:00
Brent Simmons 698c1faa95 Continue refactoring. Build still broken. 2017-07-07 17:49:16 -07:00
Brent Simmons 41d8a7f3de Continue surgery. Still broken build. 2017-07-03 15:04:31 -07:00
Brent Simmons d47c60e6de Work on getting Database.framework to build. 2017-07-03 11:20:14 -07:00
Brent Simmons 0379e5f525 Add to Database.framework. Delete RSXML.framework, since it’s been superseded by RSParser.framework. Everything still broken. 2017-07-03 10:40:48 -07:00
Brent Simmons 4a8f33b08a Move Database.framework’s Info.plist. 2017-07-03 10:32:20 -07:00
Brent Simmons d9cfab7d68 Continue major surgery. Everything is wildly broken. 2017-07-03 10:29:44 -07:00
Brent Simmons 944f05c71e Commit major surgery but leave it unfinished. Everything is broken. 2017-07-01 17:22:19 -07:00
Brent Simmons 483e00b2da Add more tests to RSParser. 2017-06-27 06:56:03 -07:00
Brent Simmons c32e1a3933 Fix bug finding channel element in RSS-in-JSON parser. 2017-06-26 19:51:01 -07:00
Brent Simmons 49a5e58ff2 Move feedType function to FeedType.swift. Add a few more cases to FeedParserTypeTests. 2017-06-26 19:37:30 -07:00
Brent Simmons 3bb9887513 Add HTML tests to RSParser. 2017-06-25 18:11:38 -07:00
Brent Simmons a53a0c4697 Add RSDateParserTests to RSParser. 2017-06-25 17:46:48 -07:00
Brent Simmons 67279b6796 Turn on more errors/warnings for RSParser, including treat-warnings-as-errors. 2017-06-25 17:42:30 -07:00
Brent Simmons 53574284dc Add OPMLTests to RSParser. 2017-06-25 17:34:48 -07:00
Brent Simmons c56f887ab4 Start adding RSParser tests. 2017-06-25 17:15:47 -07:00
Brent Simmons b939d91da0 Get RSParser.framework building again. 2017-06-25 16:40:29 -07:00
Brent Simmons e9c19e427a Make it build. Add a README. 2017-06-25 16:32:07 -07:00
Brent Simmons 1ad4474b29 Make progress on getting RSParser.framework to build. 2017-06-25 14:06:01 -07:00
Brent Simmons 6f0e4a9da6 Start JSONFeed parser. No idea if it works yet. 2017-06-25 11:48:44 -07:00
Brent Simmons aaa83e07aa Extract some code into methods in the RSS-in-JSON parser. 2017-06-25 10:37:02 -07:00
Brent Simmons 8589c21091 Start RSS-in-JSON parser. 2017-06-25 10:23:30 -07:00
Brent Simmons 552ab693a3 Create common data structure for all feeds. Using Swift structs, because I love them so awfully much. 2017-06-20 22:00:19 -07:00
Brent Simmons b00b2f39d7 Start work on turning RSXML.framework into RSParser.framework. 2017-06-20 21:18:46 -07:00
Andrew Carter 642955f1c9 Update sub-projects for Xcode 8.3.2
Apply recommended updates for Xcode 8.3.2 to eliminate the warnings.
2017-06-01 16:01:41 -07:00
Brent Simmons 5c4d51dcd6 Add Sparkle. Update SUFeedURL to use https, since I just added https to ranchero.com. (Thanks to Let’s Encrypt!). 2017-05-29 15:44:33 -07:00
Brent Simmons 3773f7b1bf Replace Ranchero Software with Ranchero Software, LLC. 2017-05-29 13:17:58 -07:00
Brent Simmons 3c083c712b Show progress indicator while refreshing. Fix #31. 2017-05-29 12:22:06 -07:00
Brent Simmons e79dbaef68 Add Help menu items. 2017-05-27 13:37:50 -07:00
Brent Simmons e1aca9375c Remove unneeded drop-index SQLite call. 2017-05-27 11:35:03 -07:00
Brent Simmons 19ce82329b Add a whole ton more code. 2017-05-27 10:43:27 -07:00
Brent Simmons 3d5358af09 Unbreak the build. Don’t know if anything works, but at least it builds. 2017-05-26 13:07:55 -07:00
Brent Simmons f49c552bf9 Add UniqueIdentifier file. Fix a couple build errors. 2017-05-24 13:29:40 -07:00
Brent Simmons a336140a9a Make HTTPConditionalGetInfo serialize and deserialize to a plist. 2017-05-24 13:22:57 -07:00
Brent Simmons f17f31ba12 Fix one of several build errors. 2017-05-23 13:31:56 -07:00
Brent Simmons e4d1ed8bd9 Add LocalAccount framework. Note: build is broken. 2017-05-23 13:24:42 -07:00
Brent Simmons 91d81831e9 Add DataModel framework. 2017-05-23 13:14:30 -07:00
Brent Simmons dec10ad0a1 Add RSTextDrawing framework. 2017-05-22 13:32:05 -07:00
Brent Simmons b2e3da5cb6 Add RSTree framework. 2017-05-22 13:29:37 -07:00
Brent Simmons 5c3870a03c Add RSFeedFinder framework. 2017-05-22 13:27:54 -07:00
Brent Simmons 074bbca652 Add RSWeb framework. 2017-05-22 13:17:28 -07:00
Brent Simmons 02503fadb9 Add RSCore framework. 2017-05-22 13:13:40 -07:00
Brent Simmons b506900e3d Add RSDatabase. 2017-05-22 13:09:19 -07:00
Brent Simmons 05a90742a6 Add RSXML framework. 2017-05-22 13:06:02 -07:00