├── Default.png ├── Default@2x.png ├── images ├── cog.png ├── back.png ├── piggy.png ├── reply.png ├── stop.png ├── 28-star.png ├── 40-inbox.png ├── action.png ├── back@2x.png ├── cog@2x.png ├── compose.png ├── delete.png ├── folder.png ├── rating0.png ├── rating1.png ├── rating2.png ├── rating3.png ├── rating4.png ├── rating5.png ├── reload.png ├── reply@2x.png ├── star_off.png ├── star_on.png ├── sticky.png ├── stop@2x.png ├── 28-star@2x.png ├── action@2x.png ├── arrowleft.png ├── arrowright.png ├── bookmarks.png ├── compose@2x.png ├── dotdotdot.png ├── list_icon.png ├── new-quote.png ├── newspaper.png ├── notloaded.png ├── quote-dark.png ├── reload@2x.png ├── star_admin.gif ├── star_on@2x.png ├── 40-inbox@2x.png ├── arrowleft@2x.png ├── arrowright@2x.png ├── bookmarks@2x.png ├── grey-gradient.png ├── icon_delete.png ├── list_icon@2x.png ├── preferences.png ├── threadrating.png ├── threadtags │ ├── en.png │ ├── tv.png │ ├── art.png │ ├── cars.png │ ├── food.png │ ├── guns.png │ ├── help.png │ ├── link.png │ ├── news.png │ ├── poll.png │ ├── rant.png │ ├── sex.png │ ├── tech.png │ ├── audio.png │ ├── books.png │ ├── cc-film.png │ ├── cd_hype.png │ ├── coc-c.png │ ├── coc-db.png │ ├── coc-web.png │ ├── dd-9-11.png │ ├── dd-dems.png │ ├── dd-law.png │ ├── drugs.png │ ├── event.png │ ├── flame.png │ ├── fruity.png │ ├── games.png │ ├── gross.png │ ├── humor.png │ ├── lf-fff.png │ ├── lp-text.png │ ├── movies.png │ ├── music.png │ ├── newbie.png │ ├── photos.png │ ├── pi-cats.png │ ├── pi-dogs.png │ ├── pi-fish.png │ ├── repeat.png │ ├── request.png │ ├── school.png │ ├── science.png │ ├── serious.png │ ├── sports.png │ ├── stupid.png │ ├── tfr-box.png │ ├── unfunny.png │ ├── video.png │ ├── weird.png │ ├── whine.png │ ├── yp-bsod.png │ ├── yp-c64.png │ ├── ai-cycles.png │ ├── attention.png │ ├── byob-slax.png │ ├── cc-design.png │ ├── cc-poetry.png │ ├── cc_design.png │ ├── cd_action.png │ ├── cd_comedy.png │ ├── cd_scifi.png │ ├── cell-cdma.png │ ├── computers.png │ ├── dd-gotcha.png │ ├── fyad-tim.png │ ├── games-360.png │ ├── games-3ds.png │ ├── games-ds.png │ ├── games-ps3.png │ ├── games-psp.png │ ├── games-wii.png │ ├── gip-EMT4.png │ ├── goonmeet.png │ ├── hell-hive.png │ ├── hell-stfu.png │ ├── lf-gipper.png │ ├── lf-race2.png │ ├── nmd-rock.png │ ├── nmd-tour.png │ ├── photoshop.png │ ├── politics.png │ ├── question.png │ ├── shitpost.png │ ├── shsc-code.png │ ├── shsc-win.png │ ├── tava-mp3.png │ ├── tviv-dvd.png │ ├── Games-vita.png │ ├── LF-BiCurious.png │ ├── LF-article.png │ ├── LF-pennybags.png │ ├── RP-mls_tag.png │ ├── YOSPOS-DOS.png │ ├── bb-fantasy.png │ ├── byob-gents.png │ ├── byob-grouch.png │ ├── cc-fiction.png │ ├── cc-project.png │ ├── cc-tutorial.png │ ├── cd_classic.png │ ├── cd_director.png │ ├── cd_horror2.png │ ├── coupon-free.png │ ├── coupon-nonus.png │ ├── cps-android.png │ ├── dd-economics.png │ ├── dd-history.png │ ├── dd-notracist.png │ ├── diy-advice.png │ ├── guns-ohshi.png │ ├── hell-spergin.png │ ├── hell-whore.png │ ├── icon-60-pig.png │ ├── icon23-banme.png │ ├── lan-canada.png │ ├── lan-europe.png │ ├── lf-eurabia.png │ ├── lf-fuckit3.png │ ├── lf-gotmine.png │ ├── lf-hansen2.png │ ├── phiz-kayne.png │ ├── sam-clothing.png │ ├── sas-fantasy.png │ ├── shsc-apple.png │ ├── shsc-linux.png │ ├── sports-golf.png │ ├── sports-mlb.png │ ├── sports-nba.png │ ├── sports-ncaa.png │ ├── sports-nfl.png │ ├── sports-nhl.png │ ├── sports-wwe.png │ ├── tava-cables.png │ ├── tava-gadget.png │ ├── tava-highdef.png │ ├── tava-vintage.png │ ├── tcc-shrooms.png │ ├── tviv-cable.png │ ├── tviv-cartoon.png │ ├── wrestling-sd.png │ ├── ycs-goomba.png │ ├── ycs-letsgo.png │ ├── yp-tubes296.png │ ├── ama-secondary.png │ ├── asktell-travel.png │ ├── bb-nonfiction.png │ ├── bss-discussion.png │ ├── byob-explosion.png │ ├── coupon-coupon.png │ ├── coupon-instore.png │ ├── dd-environment.png │ ├── dd-philosophy.png │ ├── fyad-falconry.png │ ├── games-letsplay.png │ ├── gip-firetruck.png │ ├── hell-fuckthis.png │ ├── icon-38-buying.png │ ├── icon-61-comics.png │ ├── lf-arecountry.png │ ├── phiz-dontlike.png │ ├── sports-nascar.png │ ├── sports-soccer.png │ ├── tcc-addiction.png │ ├── tma-secondary.png │ ├── tviv-on-demand.png │ ├── tviv-spoilers.png │ ├── wrestlehut-ecw.png │ ├── wrestlehut-tna.png │ ├── wrestling-raw.png │ ├── wrestling-roh.png │ ├── yospos-blurit.png │ ├── yospos-janitor.png │ ├── asktell-lifestyle.png │ ├── games-360ps3tag.png │ ├── icon-30-attnmod.png │ ├── icon-31-hotthread.png │ ├── icon-37-selling.png │ ├── icon-41-game-xbox.png │ ├── icon-42-game-ps2.png │ ├── icon-44-game-gba.png │ ├── icon-45-game-pc.png │ ├── icon-46-trading.png │ ├── icon-52-trading.png │ ├── icon-59-lobster.png │ ├── icon-dear_richard.png │ ├── tava-headphones.png │ ├── tviv-competition.png │ ├── yospos-netscape.png │ ├── yp-snowcrash971.png │ ├── LF-fuckshitdamntag2.png │ ├── LF-japan_clean_fast.png │ ├── wrestlehut-thunder.png │ ├── icon-43-game-gamecube.png │ ├── icon-38-buying-secondary.png │ ├── icon-37-selling-secondary.png │ ├── icon-46-trading-secondary.png │ └── icon-52-trading-secondary.png ├── 39-circle-check.png ├── btn_template_bg.png ├── dotdotdot-clear.png ├── icon_arrow_left.png ├── icon_delete@2x.png ├── navbargradient.png ├── star_moderator.gif ├── 39-circle-check@2x.png ├── forum-arrow-down.png ├── forum-arrow-right.png ├── help │ ├── ReplyButton.png │ ├── ThreadActions.png │ ├── MasterViewButton.png │ ├── multiPageMovement.png │ └── singlePageMovement.png ├── icon_arrow_right.png ├── navbargradient@2x.png ├── number-background.png ├── post-action-icon.png ├── tiny_arrow_right.png ├── number-background@2x.png ├── tiny_arrow_right@2x.png ├── navbargradient-landscape.png ├── nav_bar_landscape_bg_iphone.png ├── navbargradient-landscape@2x.png └── nav_bar_landscape_bg_iphone@2x.png ├── Icons ├── Icon-72.png ├── icon_114.png ├── icon_57.png ├── Icon-72@2x.png ├── Icon-Small.png ├── Icon-Small-50.png ├── Icon-Small@2x.png ├── iTunesArtwork.png ├── Icon-Small-50@2x.png └── iTunesArtwork@2x.png ├── smilies └── forums.sqlite ├── AppStoreData ├── iPadSS.png └── iPhoneSS.png ├── iPad ├── Default-Landscape.png ├── Default-Portrait.png ├── iPadStartupPortrait.png ├── Default-Landscape@2x~ipad.png ├── Default-Portrait@2x~ipad.png └── AwfulSplitViewController.h ├── .gitignore ├── web resources ├── quote-block-off.png └── quote-block-on.png ├── .gitmodules ├── 3rd Party Sources ├── MBProgressHUD │ └── 37x-Checkmark.png ├── TestFlightSDK1 │ └── libTestFlight.a ├── EGOTableViewPullRefresh │ └── Resources │ │ ├── blackArrow.png │ │ ├── blueArrow.png │ │ ├── grayArrow.png │ │ ├── whiteArrow.png │ │ ├── blackArrow@2x.png │ │ ├── blueArrow@2x.png │ │ ├── grayArrow@2x.png │ │ └── whiteArrow@2x.png ├── MWPhotoBrowser │ ├── UIImage+Decompress.h │ ├── UIViewTap.h │ ├── UIImageViewTap.h │ ├── ZoomingScrollView.h │ ├── UIImage+Decompress.m │ └── MWPhoto.h ├── topfunky-hpple │ ├── XPathQuery.h │ ├── LICENSE.txt │ ├── TFHpple.h │ └── TFHppleElement.h ├── GRMustache │ ├── Guides │ │ ├── sample_code.md │ │ ├── runtime │ │ │ └── loops.md │ │ └── runtime.md │ ├── vendor │ │ └── jrswizzle │ │ │ └── JRSwizzle.h │ └── classes │ │ ├── GRMustacheError.m │ │ ├── GRMustacheProperty_private.h │ │ ├── GRMustacheNSUndefinedKeyExceptionGuard_private.h │ │ ├── GRMustacheTextElement_private.h │ │ ├── GRMustacheRenderingElement_private.h │ │ ├── GRMustache_private.h │ │ ├── GRMustacheInvocation.h │ │ ├── GRMustacheVersion.h │ │ ├── GRMustacheVariableElement_private.h │ │ ├── GRMustache.m │ │ ├── GRMustacheAvailabilityMacros_private.h │ │ ├── GRMustacheInvocation_private.h │ │ ├── GRMustacheTemplateDelegate.h │ │ ├── GRMustacheError.h │ │ ├── GRMustacheHelper.h │ │ ├── GRMustacheHelper_private.h │ │ ├── GRMustacheSection_private.h │ │ └── GRMustacheTextElement.m ├── MKNetworkKit │ └── Categories │ │ ├── NSDate+RFC1123.h │ │ ├── UIAlertView+MKNetworkKitAdditions.h │ │ ├── NSData+Base64.h │ │ ├── NSDictionary+RequestEncoding.h │ │ ├── NSString+MKNetworkKitAdditions.h │ │ └── UIAlertView+MKNetworkKitAdditions.m ├── ASIHTTP │ ├── ASIInputStream.h │ ├── ASIHTTPRequestConfig.h │ ├── ASIAuthenticationDialog.h │ ├── ASIHTTPRequestDelegate.h │ ├── ASIProgressDelegate.h │ ├── ASIDataCompressor.h │ └── ASIDataDecompressor.h ├── mwaterfall-MWFeedParser-ea43013 │ ├── NSString+HTML.h │ └── NSString+HTML.m └── json │ ├── SBJsonStreamWriterAccumulator.h │ ├── SBJsonStreamParserAccumulator.h │ └── SBJsonStreamParserAccumulator.m ├── Awful.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── Classes ├── Models │ ├── Model.xcdatamodeld │ │ └── .xccurrentversion │ ├── AwfulUser+AwfulMethods.h │ ├── AwfulUser.m │ ├── AwfulPageCount.h │ ├── AwfulForum+AwfulMethods.h │ ├── AwfulForum.m │ ├── AwfulUser.h │ ├── AwfulThread.m │ ├── AwfulThread+AwfulMethods.h │ ├── AwfulPageCount.m │ ├── AwfulPost.h │ ├── AwfulUser+AwfulMethods.m │ ├── AwfulPost.m │ ├── AwfulThread.h │ └── AwfulForum.h ├── Util │ ├── SALR.h │ ├── AwfulUtil.h │ ├── SmilieGrabber.h │ └── SALR.m ├── AwfulForumList │ ├── AwfulForumHeader.m │ ├── AwfulFavoritesViewController.h │ ├── AwfulForumHeader.h │ ├── AwfulAddFavoriteViewController.h │ ├── AwfulForumsListController.h │ ├── AwfulForumSection.h │ ├── AwfulForumCell.h │ ├── AwfulForumsListControllerSubclass.h │ ├── AwfulForumSection.m │ └── AwfulForumCell.m ├── AwfulRequests │ ├── AwfulAppThreadRequest.h │ ├── AwfulPageRefreshRequest.h │ ├── AwfulQuoteRequest.h │ ├── AwfulForumRefreshRequest.h │ ├── AwfulUserInfoRequest.h │ ├── AwfulForumListRefreshRequest.h │ ├── AwfulReplyRequest.h │ ├── AwfulEditRequest.h │ ├── AwfulRequestHandler.h │ ├── AwfulAppThreadRequest.m │ ├── AwfulQuoteRequest.m │ └── AwfulForumRefreshRequest.m ├── Actions │ ├── AwfulVoteActions.h │ ├── AwfulThreadActions.h │ ├── AwfulPostActions.h │ ├── AwfulActions.h │ ├── AwfulActions.m │ └── AwfulVoteActions.m ├── Extras │ ├── ButtonSegmentedControl.h │ ├── OtherWebController.h │ └── ButtonSegmentedControl.m ├── Login │ └── AwfulLoginController.h ├── Settings │ ├── AwfulSettingsViewController.h │ ├── AwfulSettingsChoiceViewController.h │ └── AwfulSettings.h ├── Templates │ ├── AwfulPageTemplate.h │ └── PostContext.h ├── AwfulThreadList │ ├── AwfulBookmarksController.h │ ├── AwfulThreadCell.h │ └── AwfulThreadListController.h ├── Main │ ├── AwfulTableViewController.h │ └── AwfulAppDelegate.h └── AwfulPage │ ├── AwfulPageDataController.h │ ├── AwfulSpecificPageViewController.h │ └── AwfulPostBoxController.h ├── Awful_Prefix.pch ├── main.m └── README.md /Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Default.png -------------------------------------------------------------------------------- /Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Default@2x.png -------------------------------------------------------------------------------- /images/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/cog.png -------------------------------------------------------------------------------- /images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/back.png -------------------------------------------------------------------------------- /images/piggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/piggy.png -------------------------------------------------------------------------------- /images/reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/reply.png -------------------------------------------------------------------------------- /images/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/stop.png -------------------------------------------------------------------------------- /Icons/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-72.png -------------------------------------------------------------------------------- /Icons/icon_114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/icon_114.png -------------------------------------------------------------------------------- /Icons/icon_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/icon_57.png -------------------------------------------------------------------------------- /images/28-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/28-star.png -------------------------------------------------------------------------------- /images/40-inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/40-inbox.png -------------------------------------------------------------------------------- /images/action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/action.png -------------------------------------------------------------------------------- /images/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/back@2x.png -------------------------------------------------------------------------------- /images/cog@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/cog@2x.png -------------------------------------------------------------------------------- /images/compose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/compose.png -------------------------------------------------------------------------------- /images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/delete.png -------------------------------------------------------------------------------- /images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/folder.png -------------------------------------------------------------------------------- /images/rating0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating0.png -------------------------------------------------------------------------------- /images/rating1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating1.png -------------------------------------------------------------------------------- /images/rating2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating2.png -------------------------------------------------------------------------------- /images/rating3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating3.png -------------------------------------------------------------------------------- /images/rating4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating4.png -------------------------------------------------------------------------------- /images/rating5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/rating5.png -------------------------------------------------------------------------------- /images/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/reload.png -------------------------------------------------------------------------------- /images/reply@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/reply@2x.png -------------------------------------------------------------------------------- /images/star_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/star_off.png -------------------------------------------------------------------------------- /images/star_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/star_on.png -------------------------------------------------------------------------------- /images/sticky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/sticky.png -------------------------------------------------------------------------------- /images/stop@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/stop@2x.png -------------------------------------------------------------------------------- /Icons/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-72@2x.png -------------------------------------------------------------------------------- /Icons/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-Small.png -------------------------------------------------------------------------------- /images/28-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/28-star@2x.png -------------------------------------------------------------------------------- /images/action@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/action@2x.png -------------------------------------------------------------------------------- /images/arrowleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/arrowleft.png -------------------------------------------------------------------------------- /images/arrowright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/arrowright.png -------------------------------------------------------------------------------- /images/bookmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/bookmarks.png -------------------------------------------------------------------------------- /images/compose@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/compose@2x.png -------------------------------------------------------------------------------- /images/dotdotdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/dotdotdot.png -------------------------------------------------------------------------------- /images/list_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/list_icon.png -------------------------------------------------------------------------------- /images/new-quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/new-quote.png -------------------------------------------------------------------------------- /images/newspaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/newspaper.png -------------------------------------------------------------------------------- /images/notloaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/notloaded.png -------------------------------------------------------------------------------- /images/quote-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/quote-dark.png -------------------------------------------------------------------------------- /images/reload@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/reload@2x.png -------------------------------------------------------------------------------- /images/star_admin.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/star_admin.gif -------------------------------------------------------------------------------- /images/star_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/star_on@2x.png -------------------------------------------------------------------------------- /smilies/forums.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/smilies/forums.sqlite -------------------------------------------------------------------------------- /AppStoreData/iPadSS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/AppStoreData/iPadSS.png -------------------------------------------------------------------------------- /Icons/Icon-Small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-Small-50.png -------------------------------------------------------------------------------- /Icons/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-Small@2x.png -------------------------------------------------------------------------------- /Icons/iTunesArtwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/iTunesArtwork.png -------------------------------------------------------------------------------- /images/40-inbox@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/40-inbox@2x.png -------------------------------------------------------------------------------- /images/arrowleft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/arrowleft@2x.png -------------------------------------------------------------------------------- /images/arrowright@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/arrowright@2x.png -------------------------------------------------------------------------------- /images/bookmarks@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/bookmarks@2x.png -------------------------------------------------------------------------------- /images/grey-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/grey-gradient.png -------------------------------------------------------------------------------- /images/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/icon_delete.png -------------------------------------------------------------------------------- /images/list_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/list_icon@2x.png -------------------------------------------------------------------------------- /images/preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/preferences.png -------------------------------------------------------------------------------- /images/threadrating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadrating.png -------------------------------------------------------------------------------- /images/threadtags/en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/en.png -------------------------------------------------------------------------------- /images/threadtags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tv.png -------------------------------------------------------------------------------- /AppStoreData/iPhoneSS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/AppStoreData/iPhoneSS.png -------------------------------------------------------------------------------- /Icons/Icon-Small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/Icon-Small-50@2x.png -------------------------------------------------------------------------------- /Icons/iTunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/Icons/iTunesArtwork@2x.png -------------------------------------------------------------------------------- /iPad/Default-Landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/iPad/Default-Landscape.png -------------------------------------------------------------------------------- /iPad/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/iPad/Default-Portrait.png -------------------------------------------------------------------------------- /images/39-circle-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/39-circle-check.png -------------------------------------------------------------------------------- /images/btn_template_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/btn_template_bg.png -------------------------------------------------------------------------------- /images/dotdotdot-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/dotdotdot-clear.png -------------------------------------------------------------------------------- /images/icon_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/icon_arrow_left.png -------------------------------------------------------------------------------- /images/icon_delete@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/icon_delete@2x.png -------------------------------------------------------------------------------- /images/navbargradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/navbargradient.png -------------------------------------------------------------------------------- /images/star_moderator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/star_moderator.gif -------------------------------------------------------------------------------- /images/threadtags/art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/art.png -------------------------------------------------------------------------------- /images/threadtags/cars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cars.png -------------------------------------------------------------------------------- /images/threadtags/food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/food.png -------------------------------------------------------------------------------- /images/threadtags/guns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/guns.png -------------------------------------------------------------------------------- /images/threadtags/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/help.png -------------------------------------------------------------------------------- /images/threadtags/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/link.png -------------------------------------------------------------------------------- /images/threadtags/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/news.png -------------------------------------------------------------------------------- /images/threadtags/poll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/poll.png -------------------------------------------------------------------------------- /images/threadtags/rant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/rant.png -------------------------------------------------------------------------------- /images/threadtags/sex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sex.png -------------------------------------------------------------------------------- /images/threadtags/tech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tech.png -------------------------------------------------------------------------------- /iPad/iPadStartupPortrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/iPad/iPadStartupPortrait.png -------------------------------------------------------------------------------- /images/39-circle-check@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/39-circle-check@2x.png -------------------------------------------------------------------------------- /images/forum-arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/forum-arrow-down.png -------------------------------------------------------------------------------- /images/forum-arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/forum-arrow-right.png -------------------------------------------------------------------------------- /images/help/ReplyButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/help/ReplyButton.png -------------------------------------------------------------------------------- /images/help/ThreadActions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/help/ThreadActions.png -------------------------------------------------------------------------------- /images/icon_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/icon_arrow_right.png -------------------------------------------------------------------------------- /images/navbargradient@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/navbargradient@2x.png -------------------------------------------------------------------------------- /images/number-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/number-background.png -------------------------------------------------------------------------------- /images/post-action-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/post-action-icon.png -------------------------------------------------------------------------------- /images/threadtags/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/audio.png -------------------------------------------------------------------------------- /images/threadtags/books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/books.png -------------------------------------------------------------------------------- /images/threadtags/cc-film.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-film.png -------------------------------------------------------------------------------- /images/threadtags/cd_hype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_hype.png -------------------------------------------------------------------------------- /images/threadtags/coc-c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coc-c.png -------------------------------------------------------------------------------- /images/threadtags/coc-db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coc-db.png -------------------------------------------------------------------------------- /images/threadtags/coc-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coc-web.png -------------------------------------------------------------------------------- /images/threadtags/dd-9-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-9-11.png -------------------------------------------------------------------------------- /images/threadtags/dd-dems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-dems.png -------------------------------------------------------------------------------- /images/threadtags/dd-law.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-law.png -------------------------------------------------------------------------------- /images/threadtags/drugs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/drugs.png -------------------------------------------------------------------------------- /images/threadtags/event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/event.png -------------------------------------------------------------------------------- /images/threadtags/flame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/flame.png -------------------------------------------------------------------------------- /images/threadtags/fruity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/fruity.png -------------------------------------------------------------------------------- /images/threadtags/games.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games.png -------------------------------------------------------------------------------- /images/threadtags/gross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/gross.png -------------------------------------------------------------------------------- /images/threadtags/humor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/humor.png -------------------------------------------------------------------------------- /images/threadtags/lf-fff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-fff.png -------------------------------------------------------------------------------- /images/threadtags/lp-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lp-text.png -------------------------------------------------------------------------------- /images/threadtags/movies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/movies.png -------------------------------------------------------------------------------- /images/threadtags/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/music.png -------------------------------------------------------------------------------- /images/threadtags/newbie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/newbie.png -------------------------------------------------------------------------------- /images/threadtags/photos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/photos.png -------------------------------------------------------------------------------- /images/threadtags/pi-cats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/pi-cats.png -------------------------------------------------------------------------------- /images/threadtags/pi-dogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/pi-dogs.png -------------------------------------------------------------------------------- /images/threadtags/pi-fish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/pi-fish.png -------------------------------------------------------------------------------- /images/threadtags/repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/repeat.png -------------------------------------------------------------------------------- /images/threadtags/request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/request.png -------------------------------------------------------------------------------- /images/threadtags/school.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/school.png -------------------------------------------------------------------------------- /images/threadtags/science.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/science.png -------------------------------------------------------------------------------- /images/threadtags/serious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/serious.png -------------------------------------------------------------------------------- /images/threadtags/sports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports.png -------------------------------------------------------------------------------- /images/threadtags/stupid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/stupid.png -------------------------------------------------------------------------------- /images/threadtags/tfr-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tfr-box.png -------------------------------------------------------------------------------- /images/threadtags/unfunny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/unfunny.png -------------------------------------------------------------------------------- /images/threadtags/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/video.png -------------------------------------------------------------------------------- /images/threadtags/weird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/weird.png -------------------------------------------------------------------------------- /images/threadtags/whine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/whine.png -------------------------------------------------------------------------------- /images/threadtags/yp-bsod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yp-bsod.png -------------------------------------------------------------------------------- /images/threadtags/yp-c64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yp-c64.png -------------------------------------------------------------------------------- /images/tiny_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/tiny_arrow_right.png -------------------------------------------------------------------------------- /images/number-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/number-background@2x.png -------------------------------------------------------------------------------- /images/threadtags/ai-cycles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/ai-cycles.png -------------------------------------------------------------------------------- /images/threadtags/attention.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/attention.png -------------------------------------------------------------------------------- /images/threadtags/byob-slax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/byob-slax.png -------------------------------------------------------------------------------- /images/threadtags/cc-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-design.png -------------------------------------------------------------------------------- /images/threadtags/cc-poetry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-poetry.png -------------------------------------------------------------------------------- /images/threadtags/cc_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc_design.png -------------------------------------------------------------------------------- /images/threadtags/cd_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_action.png -------------------------------------------------------------------------------- /images/threadtags/cd_comedy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_comedy.png -------------------------------------------------------------------------------- /images/threadtags/cd_scifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_scifi.png -------------------------------------------------------------------------------- /images/threadtags/cell-cdma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cell-cdma.png -------------------------------------------------------------------------------- /images/threadtags/computers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/computers.png -------------------------------------------------------------------------------- /images/threadtags/dd-gotcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-gotcha.png -------------------------------------------------------------------------------- /images/threadtags/fyad-tim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/fyad-tim.png -------------------------------------------------------------------------------- /images/threadtags/games-360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-360.png -------------------------------------------------------------------------------- /images/threadtags/games-3ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-3ds.png -------------------------------------------------------------------------------- /images/threadtags/games-ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-ds.png -------------------------------------------------------------------------------- /images/threadtags/games-ps3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-ps3.png -------------------------------------------------------------------------------- /images/threadtags/games-psp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-psp.png -------------------------------------------------------------------------------- /images/threadtags/games-wii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-wii.png -------------------------------------------------------------------------------- /images/threadtags/gip-EMT4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/gip-EMT4.png -------------------------------------------------------------------------------- /images/threadtags/goonmeet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/goonmeet.png -------------------------------------------------------------------------------- /images/threadtags/hell-hive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/hell-hive.png -------------------------------------------------------------------------------- /images/threadtags/hell-stfu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/hell-stfu.png -------------------------------------------------------------------------------- /images/threadtags/lf-gipper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-gipper.png -------------------------------------------------------------------------------- /images/threadtags/lf-race2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-race2.png -------------------------------------------------------------------------------- /images/threadtags/nmd-rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/nmd-rock.png -------------------------------------------------------------------------------- /images/threadtags/nmd-tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/nmd-tour.png -------------------------------------------------------------------------------- /images/threadtags/photoshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/photoshop.png -------------------------------------------------------------------------------- /images/threadtags/politics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/politics.png -------------------------------------------------------------------------------- /images/threadtags/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/question.png -------------------------------------------------------------------------------- /images/threadtags/shitpost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/shitpost.png -------------------------------------------------------------------------------- /images/threadtags/shsc-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/shsc-code.png -------------------------------------------------------------------------------- /images/threadtags/shsc-win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/shsc-win.png -------------------------------------------------------------------------------- /images/threadtags/tava-mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-mp3.png -------------------------------------------------------------------------------- /images/threadtags/tviv-dvd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-dvd.png -------------------------------------------------------------------------------- /images/tiny_arrow_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/tiny_arrow_right@2x.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pbxuser 3 | Awful.xcodeproj/xcuserdata/* 4 | Awful.xcodeproj/project.xcworkspace/xcuserdata/* -------------------------------------------------------------------------------- /iPad/Default-Landscape@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/iPad/Default-Landscape@2x~ipad.png -------------------------------------------------------------------------------- /iPad/Default-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/iPad/Default-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /images/help/MasterViewButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/help/MasterViewButton.png -------------------------------------------------------------------------------- /images/help/multiPageMovement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/help/multiPageMovement.png -------------------------------------------------------------------------------- /images/help/singlePageMovement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/help/singlePageMovement.png -------------------------------------------------------------------------------- /images/threadtags/Games-vita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/Games-vita.png -------------------------------------------------------------------------------- /images/threadtags/LF-BiCurious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/LF-BiCurious.png -------------------------------------------------------------------------------- /images/threadtags/LF-article.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/LF-article.png -------------------------------------------------------------------------------- /images/threadtags/LF-pennybags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/LF-pennybags.png -------------------------------------------------------------------------------- /images/threadtags/RP-mls_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/RP-mls_tag.png -------------------------------------------------------------------------------- /images/threadtags/YOSPOS-DOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/YOSPOS-DOS.png -------------------------------------------------------------------------------- /images/threadtags/bb-fantasy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/bb-fantasy.png -------------------------------------------------------------------------------- /images/threadtags/byob-gents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/byob-gents.png -------------------------------------------------------------------------------- /images/threadtags/byob-grouch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/byob-grouch.png -------------------------------------------------------------------------------- /images/threadtags/cc-fiction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-fiction.png -------------------------------------------------------------------------------- /images/threadtags/cc-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-project.png -------------------------------------------------------------------------------- /images/threadtags/cc-tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cc-tutorial.png -------------------------------------------------------------------------------- /images/threadtags/cd_classic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_classic.png -------------------------------------------------------------------------------- /images/threadtags/cd_director.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_director.png -------------------------------------------------------------------------------- /images/threadtags/cd_horror2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cd_horror2.png -------------------------------------------------------------------------------- /images/threadtags/coupon-free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coupon-free.png -------------------------------------------------------------------------------- /images/threadtags/coupon-nonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coupon-nonus.png -------------------------------------------------------------------------------- /images/threadtags/cps-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/cps-android.png -------------------------------------------------------------------------------- /images/threadtags/dd-economics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-economics.png -------------------------------------------------------------------------------- /images/threadtags/dd-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-history.png -------------------------------------------------------------------------------- /images/threadtags/dd-notracist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-notracist.png -------------------------------------------------------------------------------- /images/threadtags/diy-advice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/diy-advice.png -------------------------------------------------------------------------------- /images/threadtags/guns-ohshi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/guns-ohshi.png -------------------------------------------------------------------------------- /images/threadtags/hell-spergin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/hell-spergin.png -------------------------------------------------------------------------------- /images/threadtags/hell-whore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/hell-whore.png -------------------------------------------------------------------------------- /images/threadtags/icon-60-pig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-60-pig.png -------------------------------------------------------------------------------- /images/threadtags/icon23-banme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon23-banme.png -------------------------------------------------------------------------------- /images/threadtags/lan-canada.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lan-canada.png -------------------------------------------------------------------------------- /images/threadtags/lan-europe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lan-europe.png -------------------------------------------------------------------------------- /images/threadtags/lf-eurabia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-eurabia.png -------------------------------------------------------------------------------- /images/threadtags/lf-fuckit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-fuckit3.png -------------------------------------------------------------------------------- /images/threadtags/lf-gotmine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-gotmine.png -------------------------------------------------------------------------------- /images/threadtags/lf-hansen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-hansen2.png -------------------------------------------------------------------------------- /images/threadtags/phiz-kayne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/phiz-kayne.png -------------------------------------------------------------------------------- /images/threadtags/sam-clothing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sam-clothing.png -------------------------------------------------------------------------------- /images/threadtags/sas-fantasy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sas-fantasy.png -------------------------------------------------------------------------------- /images/threadtags/shsc-apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/shsc-apple.png -------------------------------------------------------------------------------- /images/threadtags/shsc-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/shsc-linux.png -------------------------------------------------------------------------------- /images/threadtags/sports-golf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-golf.png -------------------------------------------------------------------------------- /images/threadtags/sports-mlb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-mlb.png -------------------------------------------------------------------------------- /images/threadtags/sports-nba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-nba.png -------------------------------------------------------------------------------- /images/threadtags/sports-ncaa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-ncaa.png -------------------------------------------------------------------------------- /images/threadtags/sports-nfl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-nfl.png -------------------------------------------------------------------------------- /images/threadtags/sports-nhl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-nhl.png -------------------------------------------------------------------------------- /images/threadtags/sports-wwe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-wwe.png -------------------------------------------------------------------------------- /images/threadtags/tava-cables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-cables.png -------------------------------------------------------------------------------- /images/threadtags/tava-gadget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-gadget.png -------------------------------------------------------------------------------- /images/threadtags/tava-highdef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-highdef.png -------------------------------------------------------------------------------- /images/threadtags/tava-vintage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-vintage.png -------------------------------------------------------------------------------- /images/threadtags/tcc-shrooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tcc-shrooms.png -------------------------------------------------------------------------------- /images/threadtags/tviv-cable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-cable.png -------------------------------------------------------------------------------- /images/threadtags/tviv-cartoon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-cartoon.png -------------------------------------------------------------------------------- /images/threadtags/wrestling-sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestling-sd.png -------------------------------------------------------------------------------- /images/threadtags/ycs-goomba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/ycs-goomba.png -------------------------------------------------------------------------------- /images/threadtags/ycs-letsgo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/ycs-letsgo.png -------------------------------------------------------------------------------- /images/threadtags/yp-tubes296.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yp-tubes296.png -------------------------------------------------------------------------------- /web resources/quote-block-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/web resources/quote-block-off.png -------------------------------------------------------------------------------- /web resources/quote-block-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/web resources/quote-block-on.png -------------------------------------------------------------------------------- /images/navbargradient-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/navbargradient-landscape.png -------------------------------------------------------------------------------- /images/threadtags/ama-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/ama-secondary.png -------------------------------------------------------------------------------- /images/threadtags/asktell-travel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/asktell-travel.png -------------------------------------------------------------------------------- /images/threadtags/bb-nonfiction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/bb-nonfiction.png -------------------------------------------------------------------------------- /images/threadtags/bss-discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/bss-discussion.png -------------------------------------------------------------------------------- /images/threadtags/byob-explosion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/byob-explosion.png -------------------------------------------------------------------------------- /images/threadtags/coupon-coupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coupon-coupon.png -------------------------------------------------------------------------------- /images/threadtags/coupon-instore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/coupon-instore.png -------------------------------------------------------------------------------- /images/threadtags/dd-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-environment.png -------------------------------------------------------------------------------- /images/threadtags/dd-philosophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/dd-philosophy.png -------------------------------------------------------------------------------- /images/threadtags/fyad-falconry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/fyad-falconry.png -------------------------------------------------------------------------------- /images/threadtags/games-letsplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-letsplay.png -------------------------------------------------------------------------------- /images/threadtags/gip-firetruck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/gip-firetruck.png -------------------------------------------------------------------------------- /images/threadtags/hell-fuckthis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/hell-fuckthis.png -------------------------------------------------------------------------------- /images/threadtags/icon-38-buying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-38-buying.png -------------------------------------------------------------------------------- /images/threadtags/icon-61-comics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-61-comics.png -------------------------------------------------------------------------------- /images/threadtags/lf-arecountry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/lf-arecountry.png -------------------------------------------------------------------------------- /images/threadtags/phiz-dontlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/phiz-dontlike.png -------------------------------------------------------------------------------- /images/threadtags/sports-nascar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-nascar.png -------------------------------------------------------------------------------- /images/threadtags/sports-soccer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/sports-soccer.png -------------------------------------------------------------------------------- /images/threadtags/tcc-addiction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tcc-addiction.png -------------------------------------------------------------------------------- /images/threadtags/tma-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tma-secondary.png -------------------------------------------------------------------------------- /images/threadtags/tviv-on-demand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-on-demand.png -------------------------------------------------------------------------------- /images/threadtags/tviv-spoilers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-spoilers.png -------------------------------------------------------------------------------- /images/threadtags/wrestlehut-ecw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestlehut-ecw.png -------------------------------------------------------------------------------- /images/threadtags/wrestlehut-tna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestlehut-tna.png -------------------------------------------------------------------------------- /images/threadtags/wrestling-raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestling-raw.png -------------------------------------------------------------------------------- /images/threadtags/wrestling-roh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestling-roh.png -------------------------------------------------------------------------------- /images/threadtags/yospos-blurit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yospos-blurit.png -------------------------------------------------------------------------------- /images/threadtags/yospos-janitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yospos-janitor.png -------------------------------------------------------------------------------- /images/nav_bar_landscape_bg_iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/nav_bar_landscape_bg_iphone.png -------------------------------------------------------------------------------- /images/navbargradient-landscape@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/navbargradient-landscape@2x.png -------------------------------------------------------------------------------- /images/threadtags/asktell-lifestyle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/asktell-lifestyle.png -------------------------------------------------------------------------------- /images/threadtags/games-360ps3tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/games-360ps3tag.png -------------------------------------------------------------------------------- /images/threadtags/icon-30-attnmod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-30-attnmod.png -------------------------------------------------------------------------------- /images/threadtags/icon-31-hotthread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-31-hotthread.png -------------------------------------------------------------------------------- /images/threadtags/icon-37-selling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-37-selling.png -------------------------------------------------------------------------------- /images/threadtags/icon-41-game-xbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-41-game-xbox.png -------------------------------------------------------------------------------- /images/threadtags/icon-42-game-ps2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-42-game-ps2.png -------------------------------------------------------------------------------- /images/threadtags/icon-44-game-gba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-44-game-gba.png -------------------------------------------------------------------------------- /images/threadtags/icon-45-game-pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-45-game-pc.png -------------------------------------------------------------------------------- /images/threadtags/icon-46-trading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-46-trading.png -------------------------------------------------------------------------------- /images/threadtags/icon-52-trading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-52-trading.png -------------------------------------------------------------------------------- /images/threadtags/icon-59-lobster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-59-lobster.png -------------------------------------------------------------------------------- /images/threadtags/icon-dear_richard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-dear_richard.png -------------------------------------------------------------------------------- /images/threadtags/tava-headphones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tava-headphones.png -------------------------------------------------------------------------------- /images/threadtags/tviv-competition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/tviv-competition.png -------------------------------------------------------------------------------- /images/threadtags/yospos-netscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yospos-netscape.png -------------------------------------------------------------------------------- /images/threadtags/yp-snowcrash971.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/yp-snowcrash971.png -------------------------------------------------------------------------------- /images/nav_bar_landscape_bg_iphone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/nav_bar_landscape_bg_iphone@2x.png -------------------------------------------------------------------------------- /images/threadtags/LF-fuckshitdamntag2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/LF-fuckshitdamntag2.png -------------------------------------------------------------------------------- /images/threadtags/LF-japan_clean_fast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/LF-japan_clean_fast.png -------------------------------------------------------------------------------- /images/threadtags/wrestlehut-thunder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/wrestlehut-thunder.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "External/MKNetworkKit"] 2 | path = External/MKNetworkKit 3 | url = https://github.com/MugunthKumar/MKNetworkKit 4 | -------------------------------------------------------------------------------- /images/threadtags/icon-43-game-gamecube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-43-game-gamecube.png -------------------------------------------------------------------------------- /images/threadtags/icon-38-buying-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-38-buying-secondary.png -------------------------------------------------------------------------------- /3rd Party Sources/MBProgressHUD/37x-Checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/MBProgressHUD/37x-Checkmark.png -------------------------------------------------------------------------------- /3rd Party Sources/TestFlightSDK1/libTestFlight.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/TestFlightSDK1/libTestFlight.a -------------------------------------------------------------------------------- /images/threadtags/icon-37-selling-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-37-selling-secondary.png -------------------------------------------------------------------------------- /images/threadtags/icon-46-trading-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-46-trading-secondary.png -------------------------------------------------------------------------------- /images/threadtags/icon-52-trading-secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/images/threadtags/icon-52-trading-secondary.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/blackArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/blackArrow.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/blueArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/blueArrow.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/grayArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/grayArrow.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/whiteArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/whiteArrow.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/blackArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/blackArrow@2x.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/blueArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/blueArrow@2x.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/grayArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/grayArrow@2x.png -------------------------------------------------------------------------------- /3rd Party Sources/EGOTableViewPullRefresh/Resources/whiteArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nelsonjchen/Awful/master/3rd Party Sources/EGOTableViewPullRefresh/Resources/whiteArrow@2x.png -------------------------------------------------------------------------------- /Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Classes/Models/Model.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | Model.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /Classes/Util/SALR.h: -------------------------------------------------------------------------------- 1 | // 2 | // SALR.h 3 | // Awful 4 | // 5 | // Created by Scott Ferguson on 9/14/11. 6 | // Copyright (c) 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SALR : NSObject { 12 | 13 | } 14 | 15 | + (NSString *)config; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/UIImage+Decompress.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Decompress.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 20/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Decompress) 12 | - (void)decompress; 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumHeader.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumHeader.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/2/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumHeader.h" 10 | 11 | @implementation AwfulForumHeader 12 | 13 | @synthesize titleLabel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/Models/AwfulUser+AwfulMethods.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUser+AwfulMethods.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/29/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulUser.h" 10 | 11 | @interface AwfulUser (AwfulMethods) 12 | 13 | +(AwfulUser *)currentUser; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Awful_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Awful' target in the 'Awful' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #import "MKNetworkKit.h" 9 | #import "AwfulAppDelegate.h" 10 | #import 11 | #import "TestFlight.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /Classes/Models/AwfulUser.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUser.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/29/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulUser.h" 10 | 11 | 12 | @implementation AwfulUser 13 | 14 | @dynamic userName; 15 | @dynamic userID; 16 | @dynamic postsPerPage; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulFavoritesViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulFavoritesViewController.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-21. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulTableViewController.h" 10 | 11 | @interface AwfulFavoritesViewController : AwfulTableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumHeader.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/2/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AwfulForumHeader : UIView 12 | 13 | @property (nonatomic, strong) IBOutlet UILabel *titleLabel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulAddFavoriteViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulAddFavoriteViewController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 4/4/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumsListController.h" 10 | 11 | @interface AwfulAddFavoriteViewController : AwfulForumsListController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumsListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumsList.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/27/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AwfulTableViewController.h" 11 | 12 | @interface AwfulForumsListController : AwfulTableViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulAppThreadRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulAppThreadRequest.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/28/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ASIHTTPRequest.h" 11 | 12 | @interface AwfulAppThreadRequest : ASIHTTPRequest { 13 | 14 | } 15 | 16 | -(id)initCustom; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /3rd Party Sources/topfunky-hpple/XPathQuery.h: -------------------------------------------------------------------------------- 1 | // 2 | // XPathQuery.h 3 | // FuelFinder 4 | // 5 | // Created by Matt Gallagher on 4/08/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query); 10 | NSArray *PerformXMLXPathQuery(NSData *document, NSString *query); 11 | NSArray *PerformRawHTMLXPathQuery(NSData *document, NSString *query); -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/26/10. 6 | // Copyright Regular Berry Software LLC 2010. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AwfulAppDelegate.h" 11 | 12 | int main(int argc, char *argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AwfulAppDelegate class])); 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /Classes/Models/AwfulPageCount.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPageCount.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/14/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AwfulPageCount : NSObject 12 | 13 | @property int currentPage; 14 | @property int totalPages; 15 | 16 | -(BOOL)onLastPage; 17 | -(NSUInteger)getPagesLeft; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/Guides/sample_code.md: -------------------------------------------------------------------------------- 1 | [up](../../../../GRMustache), [next](sample_code/number_formatting.md) 2 | 3 | Sample code 4 | =========== 5 | 6 | - [number_formatting.md](sample_code/number_formatting.md) 7 | 8 | How to format numbers. 9 | 10 | - [counters.md](sample_code/counters.md) 11 | 12 | How to have GRMustache render numbers in sequence. 13 | 14 | [up](../../../../GRMustache), [next](sample_code/number_formatting.md) 15 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulVoteActions.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulVoteActions.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/23/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulActions.h" 10 | 11 | @class AwfulThread; 12 | 13 | @interface AwfulVoteActions : AwfulActions 14 | 15 | @property (nonatomic, strong) AwfulThread *thread; 16 | 17 | -(id)initWithAwfulThread : (AwfulThread *)aThread; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulPageRefreshRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPageRefreshRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/13/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | #import "AwfulPage.h" 11 | 12 | @interface AwfulPageRefreshRequest : ASIHTTPRequest 13 | 14 | @property (nonatomic, strong) AwfulPage *page; 15 | 16 | -(id)initWithAwfulPage : (AwfulPage *)aPage; 17 | 18 | @end -------------------------------------------------------------------------------- /Classes/Models/AwfulForum+AwfulMethods.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForum+AwfulMethods.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/28/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForum.h" 10 | 11 | @interface AwfulForum (AwfulMethods) 12 | 13 | +(NSMutableArray *)parseForums : (NSData *)data; 14 | +(AwfulForum *)getForumWithID : (NSString *)forumID fromCurrentList : (NSArray *)currentList; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/Extras/ButtonSegmentedControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // ButtonSegmentedControl.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/27/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulPage; 12 | 13 | @interface ButtonSegmentedControl : UISegmentedControl 14 | 15 | @property (nonatomic, weak) IBOutlet id target; 16 | @property (nonatomic, assign) SEL action; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/Models/AwfulForum.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForum.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 4/3/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForum.h" 10 | #import "AwfulForum.h" 11 | #import "AwfulThread.h" 12 | 13 | 14 | @implementation AwfulForum 15 | 16 | @dynamic forumID; 17 | @dynamic index; 18 | @dynamic name; 19 | @dynamic favorited; 20 | @dynamic children; 21 | @dynamic parentForum; 22 | @dynamic threads; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulThreadActions.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThreadActions.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/23/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulActions.h" 10 | 11 | @class AwfulThread; 12 | @class AwfulPage; 13 | 14 | @interface AwfulThreadActions : AwfulActions 15 | 16 | @property (readonly, strong) AwfulThread *thread; 17 | 18 | -(id)initWithThread : (AwfulThread *)thread; 19 | -(AwfulPage *)getPage; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulQuoteRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulQuoteRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/17/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | 11 | @class AwfulPost; 12 | @class AwfulPage; 13 | 14 | @interface AwfulQuoteRequest : ASIHTTPRequest 15 | 16 | @property (nonatomic, strong) AwfulPage *page; 17 | 18 | -(id)initWithPost : (AwfulPost *)aPost fromPage : (AwfulPage *)aPage; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Login/AwfulLoginController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulLoginController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/26/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulSettingsViewController; 12 | 13 | @interface AwfulLoginController : UIViewController 14 | 15 | @property (nonatomic, weak) AwfulSettingsViewController *accountViewController; 16 | 17 | @end 18 | 19 | extern BOOL IsLoggedIn(); 20 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulForumRefreshRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumRefreshRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/13/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | #import "AwfulThreadList.h" 11 | 12 | @interface AwfulForumRefreshRequest : ASIHTTPRequest 13 | 14 | @property (nonatomic, strong) AwfulThreadList *threadList; 15 | 16 | -(id)initWithAwfulThreadList : (AwfulThreadList *)aThreadList; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/Models/AwfulUser.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUser.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/29/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | 13 | @interface AwfulUser : NSManagedObject 14 | 15 | @property (nonatomic, retain) NSString * userName; 16 | @property (nonatomic, retain) NSString * userID; 17 | @property (nonatomic, retain) NSNumber * postsPerPage; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Settings/AwfulSettingsViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulSettingsViewController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/1/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulTableViewController.h" 10 | 11 | @class AwfulSettingsChoiceViewController; 12 | 13 | @interface AwfulSettingsViewController : AwfulTableViewController 14 | 15 | - (void)didMakeChoice:(AwfulSettingsChoiceViewController *)choiceViewController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulUserInfoRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUserInfoRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/21/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | #import "AwfulUser.h" 11 | 12 | @interface AwfulUserNameRequest : ASIHTTPRequest 13 | 14 | @property (nonatomic, strong) AwfulUser *user; 15 | 16 | -(id)initWithAwfulUser : (AwfulUser *)aUser; 17 | 18 | @end 19 | 20 | @interface AwfulUserSettingsRequest : AwfulUserNameRequest 21 | 22 | @end -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulForumListRefreshRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumListRefreshRequest.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/14/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ASIHTTPRequest.h" 11 | 12 | @class AwfulForumsList; 13 | 14 | @interface AwfulForumListRefreshRequest : ASIHTTPRequest 15 | 16 | @property (nonatomic, strong) AwfulForumsList *forumsList; 17 | 18 | -(id)initWithForumsList : (AwfulForumsList *)list; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/vendor/jrswizzle/JRSwizzle.h: -------------------------------------------------------------------------------- 1 | // JRSwizzle.h semver:1.0 2 | // Copyright (c) 2007-2011 Jonathan 'Wolf' Rentzsch: http://rentzsch.com 3 | // Some rights reserved: http://opensource.org/licenses/MIT 4 | // https://github.com/rentzsch/jrswizzle 5 | 6 | #import 7 | 8 | @interface NSObject (JRSwizzle) 9 | 10 | + (BOOL)jr_swizzleMethod:(SEL)origSel_ withMethod:(SEL)altSel_ error:(NSError**)error_; 11 | + (BOOL)jr_swizzleClassMethod:(SEL)origSel_ withClassMethod:(SEL)altSel_ error:(NSError**)error_; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulPostActions.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPostActions.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/24/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulActions.h" 10 | 11 | @class AwfulPost; 12 | @class AwfulPage; 13 | 14 | @interface AwfulPostActions : AwfulActions 15 | 16 | @property (nonatomic, strong) AwfulPost *post; 17 | @property (nonatomic, strong) AwfulPage *page; 18 | @property (nonatomic, strong) NSString *postContents; 19 | 20 | -(id)initWithAwfulPost : (AwfulPost *)aPost page : (AwfulPage *)aPage; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulActions.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulActions.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/23/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AwfulActions : NSObject 12 | 13 | @property (nonatomic, strong) NSMutableArray *titles; 14 | @property (nonatomic, weak) UIViewController *viewController; 15 | 16 | -(void)show; 17 | - (UIActionSheet *) getActionSheet; 18 | -(NSString *)getOverallTitle; 19 | -(BOOL)isCancelled : (int)index; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/Templates/AwfulPageTemplate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPageTemplate.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/3/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulPageDataController; 12 | @class AwfulForum; 13 | 14 | @interface AwfulPageTemplate : NSObject 15 | 16 | 17 | -(NSURL *)getTemplateURLFromForum : (AwfulForum *)forum; 18 | - (NSString *)renderWithPageDataController:(AwfulPageDataController *)dataController; 19 | - (NSString *)renderWithPageDataController:(AwfulPageDataController *)dataController displayAllPosts : (BOOL)displayAllPosts; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumSection.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumSection.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-22. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulForum; 12 | 13 | @interface AwfulForumSection : NSObject 14 | 15 | @property (nonatomic, strong) AwfulForum *forum; 16 | @property (nonatomic, strong) NSMutableArray *children; 17 | @property BOOL expanded; 18 | @property NSUInteger rowIndex; 19 | @property NSUInteger totalAncestors; 20 | 21 | + (AwfulForumSection *)sectionWithForum:(AwfulForum *)forum; 22 | -(void)setAllExpanded; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/AwfulThreadList/AwfulBookmarksController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BookmarksController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/26/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulThreadListController.h" 10 | 11 | @interface AwfulBookmarksController : AwfulThreadListController 12 | 13 | /* 14 | Used for checking if there is a second page of bookmarks. Multiples of 40 means yeah sure. 15 | I can't just use [awfulThreads count] because I also want to allow users to remove bookmarks and have them disappear from the table immediately. 16 | */ 17 | @property NSUInteger threadCount; 18 | 19 | @end -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumCell.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/16/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulForumSection; 12 | @class AwfulForumsListController; 13 | 14 | @interface AwfulForumCell : UITableViewCell 15 | 16 | @property (nonatomic, strong) IBOutlet UILabel *titleLabel; 17 | @property (nonatomic, strong) IBOutlet UIButton *arrow; 18 | @property (nonatomic, strong) AwfulForumSection *section; 19 | @property (nonatomic, weak) AwfulForumsListController *forumsList; 20 | 21 | -(IBAction)tappedArrow : (id)sender; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/Settings/AwfulSettingsChoiceViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulSettingsChoiceViewController.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-21. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulSettingsViewController; 12 | 13 | @interface AwfulSettingsChoiceViewController : UITableViewController 14 | 15 | - (id)initWithSetting:(NSDictionary *)setting selectedValue:(id)selectedValue; 16 | 17 | @property (readonly, strong) NSDictionary *setting; 18 | 19 | @property (readonly, weak) id selectedValue; 20 | 21 | @property (weak) AwfulSettingsViewController *settingsViewController; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /iPad/AwfulSplitViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulSplitViewController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 10/18/11. 6 | // Copyright (c) 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | @protocol SubstitutableDetailViewController 10 | 11 | - (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem; 12 | - (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem; 13 | 14 | @end 15 | 16 | 17 | @interface AwfulSplitViewController : UISplitViewController 18 | 19 | @property (nonatomic, strong) UIPopoverController *popoverController; 20 | @property (nonatomic, strong) UIBarButtonItem *rootPopoverButtonItem; 21 | 22 | @end -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/NSDate+RFC1123.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+RFC1123.h 3 | // MKNetworkKit 4 | // 5 | // Created by Marcus Rohrmoser 6 | // http://blog.mro.name/2009/08/nsdateformatter-http-header/ 7 | // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 8 | 9 | // No obvious license attached 10 | 11 | @interface NSDate (RFC1123) 12 | /** 13 | Convert a RFC1123 'Full-Date' string 14 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) 15 | into NSDate. 16 | */ 17 | +(NSDate*)dateFromRFC1123:(NSString*)value_; 18 | 19 | /** 20 | Convert NSDate into a RFC1123 'Full-Date' string 21 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1). 22 | */ 23 | -(NSString*)rfc1123String; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Classes/Models/AwfulThread.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThread.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/30/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulThread.h" 10 | #import "AwfulForum.h" 11 | 12 | 13 | @implementation AwfulThread 14 | 15 | @dynamic authorName; 16 | @dynamic isBookmarked; 17 | @dynamic isLocked; 18 | @dynamic lastPostAuthorName; 19 | @dynamic lastPostDate; 20 | @dynamic seen; 21 | @dynamic starCategory; 22 | @dynamic stickyIndex; 23 | @dynamic threadIconImageURL; 24 | @dynamic threadID; 25 | @dynamic threadRating; 26 | @dynamic title; 27 | @dynamic totalReplies; 28 | @dynamic totalUnreadPosts; 29 | @dynamic threadIconImageURL2; 30 | @dynamic forum; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulReplyRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulReplyRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/16/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | #import "ASIFormDataRequest.h" 11 | 12 | @class AwfulThread; 13 | @class AwfulPost; 14 | 15 | @interface CloserFormRequest : ASIFormDataRequest 16 | 17 | @property (nonatomic, strong) AwfulThread *thread; 18 | @property (nonatomic, strong) AwfulPost *post; 19 | 20 | @end 21 | 22 | @interface AwfulReplyRequest : ASIHTTPRequest 23 | 24 | @property (nonatomic, strong) NSString *reply; 25 | @property (nonatomic, strong) AwfulThread *thread; 26 | 27 | -(id)initWithReply : (NSString *)aReply forThread : (AwfulThread *)aThread; 28 | 29 | @end -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulEditRequest.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulEditRequest.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/26/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ASIHTTPRequest.h" 10 | 11 | @class AwfulPost; 12 | @class AwfulPage; 13 | @class AwfulPostBoxController; 14 | 15 | @interface AwfulEditRequest : ASIHTTPRequest 16 | 17 | @property (nonatomic, strong) AwfulPost *post; 18 | @property (nonatomic, strong) NSString *text; 19 | 20 | -(id)initWithAwfulPost : (AwfulPost *)aPost withText : (NSString *)post_text; 21 | 22 | @end 23 | 24 | 25 | @interface AwfulEditContentRequest : ASIHTTPRequest 26 | 27 | @property (nonatomic, strong) AwfulPost *post; 28 | 29 | -(id)initWithAwfulPost : (AwfulPost *)aPost; 30 | 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Classes/Main/AwfulTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulTableViewController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/29/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EGORefreshTableHeaderView.h" 11 | 12 | @interface AwfulTableViewController : UITableViewController 13 | 14 | @property (nonatomic, strong) MKNetworkOperation *networkOperation; 15 | @property (nonatomic, strong) EGORefreshTableHeaderView *refreshHeaderView; 16 | @property (nonatomic, assign) BOOL reloading; 17 | 18 | -(IBAction)refresh; 19 | -(void)stop; 20 | -(void)finishedRefreshing; 21 | 22 | // Subclasses can implement to override the default behaviour of YES. 23 | - (BOOL)canPullToRefresh; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Classes/Extras/OtherWebController.h: -------------------------------------------------------------------------------- 1 | // 2 | // OtherWebController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 9/12/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface OtherWebController : UIViewController 13 | 14 | @property (nonatomic, strong) NSURL *url; 15 | @property (nonatomic, strong) UIBarButtonItem *activity; 16 | @property (nonatomic, strong) UIWebView *web; 17 | @property (nonatomic, strong) UIBarButtonItem *backButton; 18 | @property (nonatomic, strong) UIBarButtonItem *forwardButton; 19 | @property BOOL openedApp; 20 | 21 | -(id)initWithURL : (NSURL *)aUrl; 22 | -(void)loadToolbar; 23 | 24 | -(void)goBack; 25 | -(void)goForward; 26 | -(void)refreshPage; 27 | -(void)openInSafari; 28 | -(void)hitDone; 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/Util/AwfulUtil.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUtil.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/30/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | AwfulStarCategoryBlue = 0, 13 | AwfulStarCategoryRed, 14 | AwfulStarCategoryYellow, 15 | AwfulStarCategoryNone 16 | } AwfulStarCategory; 17 | 18 | @interface AwfulUtil : NSObject 19 | 20 | +(void)requestFailed : (NSError *)error; 21 | +(NSString *)getDocsDir; 22 | +(float)getThreadCellHeight; 23 | +(NSMutableArray *)newThreadListForForumId : (NSString *)forum_id; 24 | +(void)saveThreadList : (NSMutableArray *)list forForumId : (NSString *)forum_id; 25 | +(UIStoryboard *)getStoryboard; 26 | 27 | extern NSString * const AwfulNotifThreadUpdated; 28 | 29 | @end 30 | 31 | float getWidth(); -------------------------------------------------------------------------------- /Classes/Extras/ButtonSegmentedControl.m: -------------------------------------------------------------------------------- 1 | // 2 | // ButtonSegmentedControl.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/27/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "ButtonSegmentedControl.h" 10 | #import "AwfulPage.h" 11 | 12 | @implementation ButtonSegmentedControl 13 | 14 | @synthesize target = _target; 15 | @synthesize action = _action; 16 | 17 | -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 18 | { 19 | if(self.selectedSegmentIndex != NSNotFound) { 20 | #pragma clang diagnostic push 21 | #pragma clang diagnostic ignored "-Warc-performSelector-leaks" 22 | [self.target performSelector:self.action withObject:self]; 23 | #pragma clang diagnostic pop 24 | 25 | } 26 | [super touchesEnded:touches withEvent:event]; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/UIViewTap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol UIViewTapDelegate; 12 | 13 | @interface UIViewTap : UIView { 14 | id __unsafe_unretained tapDelegate; 15 | } 16 | @property (nonatomic, unsafe_unretained) id tapDelegate; 17 | - (void)handleSingleTap:(UITouch *)touch; 18 | - (void)handleDoubleTap:(UITouch *)touch; 19 | - (void)handleTripleTap:(UITouch *)touch; 20 | @end 21 | 22 | @protocol UIViewTapDelegate 23 | @optional 24 | - (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; 25 | - (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; 26 | - (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; 27 | @end -------------------------------------------------------------------------------- /Classes/Util/SmilieGrabber.h: -------------------------------------------------------------------------------- 1 | // 2 | // SmilieGrabber.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 8/5/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | /* 9 | #import 10 | 11 | @interface Smilie : NSObject 12 | { 13 | NSString *text; 14 | NSString *src; 15 | NSString *type; 16 | NSString *filename; 17 | } 18 | 19 | @property (nonatomic, retain) NSString *text; 20 | @property (nonatomic, retain) NSString *src; 21 | @property (nonatomic, retain) NSString *type; 22 | @property (nonatomic, retain) NSString *filename; 23 | 24 | @end 25 | 26 | 27 | @interface SmilieGrabber : NSObject { 28 | NSMutableArray *smilies; 29 | } 30 | 31 | -(void)updateSmilieList; 32 | -(void)parseSmilies : (NSMutableData *)sm_data; 33 | -(void)grabNextSmilie; 34 | -(void)saveSmilie : (NSMutableData *)data; 35 | 36 | @end*/ 37 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumsListControllerSubclass.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumsListControllerSubclass.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-22. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumsListController.h" 10 | #import "AwfulForumSection.h" 11 | 12 | @class AwfulForum; 13 | 14 | @interface AwfulForumsListController () 15 | 16 | @property (nonatomic, strong) NSMutableArray *forumSections; 17 | 18 | @property (nonatomic, readonly) NSPredicate *forumsPredicate; 19 | 20 | - (void)loadForums; 21 | - (void)toggleExpandForForumSection:(AwfulForumSection *)section; 22 | 23 | - (AwfulForum *)getForumAtIndexPath:(NSIndexPath *)path; 24 | - (AwfulForumSection *)getForumSectionAtIndexPath:(NSIndexPath *)path; 25 | - (AwfulForumSection *)getRootSectionForSection:(AwfulForumSection *)section; 26 | 27 | @end 28 | 29 | -------------------------------------------------------------------------------- /Classes/Templates/PostContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // PostContext.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulPost; 12 | 13 | @interface PostContext : NSObject 14 | 15 | // Designated initializer. 16 | - (id)initWithPost:(AwfulPost *)post; 17 | 18 | @property (strong) NSString *postID; 19 | @property (assign) BOOL isOP; 20 | @property (strong) NSString *avatarURL; 21 | @property (assign) BOOL isMod; 22 | @property (assign) BOOL isAdmin; 23 | @property (strong) NSString *posterName; 24 | @property (strong) NSString *postDate; 25 | 26 | // either 'altcolor1', 'altcolor2', 'seen1', or 'seen2' depending on the post index (even/odd) 27 | @property (strong) NSString *altCSSClass; 28 | 29 | @property (strong) NSString *postBody; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/UIImageViewTap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol UIImageViewTapDelegate; 12 | 13 | @interface UIImageViewTap : UIImageView 14 | 15 | @property (nonatomic, unsafe_unretained) id tapDelegate; 16 | 17 | - (void)handleSingleTap:(UITouch *)touch; 18 | - (void)handleDoubleTap:(UITouch *)touch; 19 | - (void)handleTripleTap:(UITouch *)touch; 20 | @end 21 | 22 | @protocol UIImageViewTapDelegate 23 | @optional 24 | - (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; 25 | - (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; 26 | - (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; 27 | @end -------------------------------------------------------------------------------- /Classes/Models/AwfulThread+AwfulMethods.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThread+AwfulMethods.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/28/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulThread.h" 10 | 11 | @class TFHpple; 12 | 13 | @interface AwfulThread (AwfulMethods) 14 | 15 | +(NSArray *)threadsForForum : (AwfulForum *)forum; 16 | +(void)removeOldThreadsForForum : (AwfulForum *)forum; 17 | +(NSArray *)bookmarkedThreads; 18 | +(void)removeBookmarkedThreads; 19 | 20 | +(NSMutableArray *)parseThreadsWithData : (NSData *)data forForum : (AwfulForum *)forum; 21 | +(NSMutableArray *)parseBookmarkedThreadsWithData : (NSData *)data; 22 | 23 | +(void)populateAwfulThread : (AwfulThread *)thread fromBase : (TFHpple *)thread_base; 24 | +(NSString *)buildThreadParseString; 25 | 26 | -(NSURL *)firstIconURL; 27 | -(NSURL *)secondIconURL; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulRequestHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulRequestHandler.h 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/21/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ASIHTTPRequest.h" 11 | #import "MBProgressHUD.h" 12 | 13 | @class ASINetworkQueue; 14 | 15 | @interface AwfulRequestHandler : NSObject 16 | 17 | @property (nonatomic, strong) ASINetworkQueue *queue; 18 | @property (nonatomic, strong) MBProgressHUD *hud; 19 | @property (nonatomic, strong) NSMutableArray *requests; 20 | 21 | -(void)showHud; 22 | -(void)hideHud; 23 | -(void)cancelAllRequests; 24 | -(void)loadRequest : (ASIHTTPRequest *)req; 25 | -(void)loadRequestAndWait : (ASIHTTPRequest *)req; 26 | -(void)loadAllWithMessage : (NSString *)msg forRequests : (id) first, ... NS_REQUIRES_NIL_TERMINATION; 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/Models/AwfulPageCount.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPageCount.m 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/14/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulPageCount.h" 10 | 11 | @implementation AwfulPageCount 12 | 13 | @synthesize currentPage, totalPages; 14 | 15 | -(id)init 16 | { 17 | if((self=[super init])) { 18 | self.currentPage = -1; 19 | self.totalPages = -1; 20 | } 21 | return self; 22 | } 23 | 24 | -(NSString *)description 25 | { 26 | if(self.totalPages != -1) { 27 | return [NSString stringWithFormat:@" ▤ %d \n of %d", self.currentPage, self.totalPages]; 28 | } 29 | return [NSString stringWithFormat:@" ▤ %d", self.currentPage]; 30 | } 31 | 32 | -(BOOL)onLastPage 33 | { 34 | return self.currentPage == self.totalPages; 35 | } 36 | 37 | -(NSUInteger)getPagesLeft 38 | { 39 | return self.totalPages - self.currentPage; 40 | } 41 | 42 | @end -------------------------------------------------------------------------------- /Classes/AwfulPage/AwfulPageDataController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPageDataController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/3/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulForum; 12 | @class AwfulPageCount; 13 | 14 | @interface AwfulPageDataController : NSObject 15 | 16 | @property (nonatomic, strong) NSString *threadTitle; 17 | @property (nonatomic, strong) AwfulForum *forum; 18 | @property (nonatomic, strong) AwfulPageCount *pageCount; 19 | @property (nonatomic, strong) NSMutableArray *posts; 20 | @property (nonatomic, assign) NSUInteger newestPostIndex; 21 | @property (nonatomic, strong) NSString *userAd; 22 | 23 | -(id)initWithResponseData : (NSData *)responseData pageURL : (NSURL *)pageURL; 24 | -(NSString *)constructedPageHTML; 25 | -(NSString *)constructedPageHTMLWithAllPosts; 26 | -(NSString *)calculatePostIDScrollDestination; 27 | -(BOOL)shouldScrollToBottom; 28 | -(int)numNewPostsLoaded; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Classes/AwfulPage/AwfulSpecificPageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulSmallPageController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 10/18/11. 6 | // Copyright (c) 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulPage; 12 | @class ButtonSegmentedControl; 13 | 14 | @interface AwfulSpecificPageViewController : UIViewController 15 | 16 | @property (nonatomic, weak) AwfulPage *page; 17 | @property BOOL hiding; 18 | @property (nonatomic, strong) IBOutlet UIView *containerView; 19 | @property (nonatomic, strong) IBOutlet UIPickerView *pickerView; 20 | 21 | @property (nonatomic, strong) IBOutlet UIBarButtonItem *jumpToPageBarButtonItem; 22 | @property (nonatomic, strong) IBOutlet ButtonSegmentedControl *firstLastSegmentedControl; 23 | 24 | -(IBAction)hitJumpToPage:(id)sender; 25 | -(IBAction)hitFirst : (id)sender; 26 | -(IBAction)hitLast : (id)sender; 27 | -(IBAction)hitFirstLastSegment : (id)sender; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/Settings/AwfulSettings.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulSettings.h 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-21. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AwfulSettings : NSObject 12 | 13 | // Singleton instance. 14 | + (AwfulSettings *)settings; 15 | 16 | - (void)registerDefaults; 17 | 18 | @property (readonly, strong) NSArray *sections; 19 | 20 | @property (assign, nonatomic) BOOL showAvatars; 21 | 22 | @property (assign, nonatomic) BOOL showImages; 23 | 24 | @property (assign, nonatomic) NSInteger loadReadPosts; 25 | 26 | typedef enum 27 | { 28 | AwfulFirstTabForums, 29 | AwfulFirstTabFavorites, 30 | AwfulFirstTabBookmarks, 31 | } AwfulFirstTab; 32 | 33 | @property (assign, nonatomic) AwfulFirstTab firstTab; 34 | 35 | @property (assign, nonatomic) BOOL highlightOwnQuotes; 36 | 37 | @property (assign, nonatomic) BOOL highlightOwnMentions; 38 | 39 | @property (assign, nonatomic) BOOL darkTheme; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/Guides/runtime/loops.md: -------------------------------------------------------------------------------- 1 | [up](../runtime.md), [next](booleans.md) 2 | 3 | Mustache loops 4 | ============== 5 | 6 | Mustache sections that are provided with an enumerable object will be rendered once for each item in it. 7 | 8 | Those are all objects conforming to the NSFastEnumeration protocol, but NSDictionary. The most obvious enumerable is NSArray. 9 | 10 | Each item enters the context stack on its turn. Below, the `name` key will be looked in each item: 11 | 12 | My shopping list: 13 | {{#items}} 14 | - {{name}} 15 | {{/items}} 16 | 17 | Arrays of scalar values 18 | ----------------------- 19 | 20 | The "implicit iterator" `{{.}}` tag will help you iterating arrays of strings or numbers, generally objects that don't have any dedicated key for rendering themselves. 21 | 22 | For instance, the following template can render `{ items: ['ham', 'jam'] }`: 23 | 24 |
    25 | {{#items}} 26 |
  • {{.}}
  • 27 | {{/items}} 28 |
29 | 30 | [up](../runtime.md), [next](booleans.md) 31 | -------------------------------------------------------------------------------- /Classes/Models/AwfulPost.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPost.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/31/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | AwfulUserTypeNormal = 0, 13 | AwfulUserTypeMod, 14 | AwfulUserTypeAdmin 15 | } AwfulUserType; 16 | 17 | @interface AwfulPost : NSObject 18 | 19 | @property (nonatomic, strong) NSString *postID; 20 | @property (nonatomic, strong) NSString *postDate; 21 | @property (nonatomic, strong) NSString *posterName; 22 | @property AwfulUserType posterType; 23 | @property (nonatomic, strong) NSURL *avatarURL; 24 | @property (nonatomic, strong) NSString *editedStr; 25 | @property (nonatomic, strong) NSString *rawContent; 26 | @property (nonatomic, strong) NSString *markSeenLink; 27 | @property (nonatomic, strong) NSString *altCSSClass; 28 | @property (nonatomic, strong) NSString *postBody; 29 | @property BOOL isOP; 30 | @property BOOL canEdit; 31 | @property BOOL seen; 32 | @property (nonatomic, assign) NSUInteger postIndex; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/ZoomingScrollView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZoomingScrollView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 14/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIImageViewTap.h" 11 | #import "UIViewTap.h" 12 | 13 | @class MWPhotoBrowser; 14 | 15 | @interface ZoomingScrollView : UIScrollView { 16 | 17 | // Browser 18 | MWPhotoBrowser *__weak photoBrowser; 19 | 20 | // State 21 | int index; 22 | 23 | // Views 24 | UIViewTap *tapView; // for background taps 25 | UIImageViewTap *photoImageView; 26 | UIActivityIndicatorView *spinner; 27 | 28 | } 29 | 30 | // Properties 31 | @property (nonatomic) int index; 32 | @property (nonatomic, weak) MWPhotoBrowser *photoBrowser; 33 | 34 | // Methods 35 | - (void)displayImage; 36 | - (void)displayImageFailure; 37 | - (void)setMaxMinZoomScalesForCurrentBounds; 38 | - (void)handleSingleTap:(CGPoint)touchPoint; 39 | - (void)handleDoubleTap:(CGPoint)touchPoint; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIInputStream.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIInputStream.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 10/08/2009. 6 | // Copyright 2009 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ASIHTTPRequest; 12 | 13 | // This is a wrapper for NSInputStream that pretends to be an NSInputStream itself 14 | // Subclassing NSInputStream seems to be tricky, and may involve overriding undocumented methods, so we'll cheat instead. 15 | // It is used by ASIHTTPRequest whenever we have a request body, and handles measuring and throttling the bandwidth used for uploading 16 | 17 | @interface ASIInputStream : NSObject { 18 | NSInputStream *stream; 19 | ASIHTTPRequest *request; 20 | } 21 | + (id)inputStreamWithFileAtPath:(NSString *)path request:(ASIHTTPRequest *)request; 22 | + (id)inputStreamWithData:(NSData *)data request:(ASIHTTPRequest *)request; 23 | 24 | @property (retain, nonatomic) NSInputStream *stream; 25 | @property (assign, nonatomic) ASIHTTPRequest *request; 26 | @end 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Awful 2 | ===== 3 | 4 | Awful is an iOS app for browsing the [Something Awful Forums][forums] on your iPhone or iPad. Some of its story can be found in its [thread][]. 5 | 6 | [forums]: http://forums.somethingawful.com 7 | [thread]: http://forums.somethingawful.com/showthread.php?threadid=3381510 8 | 9 | An unofficial app 10 | ----------------- 11 | 12 | This app is unofficial and is not endorsed by Lowtax. Use at your own risk. 13 | 14 | Build 15 | ----- 16 | 17 | 1. Grab code: `git clone https://github.com/regularberry/Awful.git` 18 | 2. Open Xcode project and build away: `open Awful.xcodeproj` 19 | 20 | Contribute 21 | ---------- 22 | 23 | We welcome any feedback, issues, or pull requests. Thanks! 24 | 25 | License 26 | ------- 27 | 28 | [Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States License](http://creativecommons.org/licenses/by-nc-sa/3.0/us/) 29 | 30 | Credit 31 | ------ 32 | 33 | Awful is developed by [Sean Berry](https://github.com/regularberry), [enigmatic](https://github.com/enigmatic), [pokeyman](https://github.com/nolanw), The Dave, and Diabolik900. 34 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIHTTPRequestConfig.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIHTTPRequestConfig.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 14/12/2009. 6 | // Copyright 2009 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | 10 | // ====== 11 | // Debug output configuration options 12 | // ====== 13 | 14 | // When set to 1 ASIHTTPRequests will print information about what a request is doing 15 | #ifndef DEBUG_REQUEST_STATUS 16 | #define DEBUG_REQUEST_STATUS 0 17 | #endif 18 | 19 | // When set to 1, ASIFormDataRequests will print information about the request body to the console 20 | #ifndef DEBUG_FORM_DATA_REQUEST 21 | #define DEBUG_FORM_DATA_REQUEST 0 22 | #endif 23 | 24 | // When set to 1, ASIHTTPRequests will print information about bandwidth throttling to the console 25 | #ifndef DEBUG_THROTTLING 26 | #define DEBUG_THROTTLING 0 27 | #endif 28 | 29 | // When set to 1, ASIHTTPRequests will print information about persistent connections to the console 30 | #ifndef DEBUG_PERSISTENT_CONNECTIONS 31 | #define DEBUG_PERSISTENT_CONNECTIONS 0 32 | #endif 33 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumSection.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumSection.m 3 | // Awful 4 | // 5 | // Created by Nolan Waite on 12-04-22. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumSection.h" 10 | #import "AwfulForum.h" 11 | 12 | @implementation AwfulForumSection 13 | 14 | @synthesize forum = _forum; 15 | @synthesize children = _children; 16 | @synthesize expanded = _expanded; 17 | @synthesize rowIndex = _rowIndex; 18 | @synthesize totalAncestors = _totalAncestors; 19 | 20 | - (id)init 21 | { 22 | self = [super init]; 23 | if (self) { 24 | self.children = [[NSMutableArray alloc] init]; 25 | self.rowIndex = NSNotFound; 26 | } 27 | return self; 28 | } 29 | 30 | + (AwfulForumSection *)sectionWithForum:(AwfulForum *)forum 31 | { 32 | AwfulForumSection *sec = [[AwfulForumSection alloc] init]; 33 | sec.forum = forum; 34 | return sec; 35 | } 36 | 37 | - (void)setAllExpanded 38 | { 39 | self.expanded = YES; 40 | [self.children makeObjectsPerformSelector:@selector(setAllExpanded)]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Classes/Models/AwfulUser+AwfulMethods.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulUser+AwfulMethods.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/29/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulUser+AwfulMethods.h" 10 | 11 | @implementation AwfulUser (AwfulMethods) 12 | 13 | +(AwfulUser *)currentUser 14 | { 15 | NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"AwfulUser"]; 16 | NSError *err = nil; 17 | NSArray *results = [ApplicationDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&err]; 18 | if(err != nil) { 19 | NSLog(@"failed to fetch AwfulUser %@", [err localizedDescription]); 20 | } 21 | 22 | AwfulUser *user = nil; 23 | if([results count] > 0) { 24 | user = [results objectAtIndex:0]; 25 | } else { 26 | user = [NSEntityDescription insertNewObjectForEntityForName:@"AwfulUser" inManagedObjectContext:ApplicationDelegate.managedObjectContext]; 27 | [user setPostsPerPage:[NSNumber numberWithInt:40]]; 28 | } 29 | return user; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Classes/AwfulPage/AwfulPostBoxController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPostBoxController.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/21/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulThread; 12 | @class AwfulPost; 13 | @class AwfulPage; 14 | @class MKNetworkOperation; 15 | @class ButtonSegmentedControl; 16 | 17 | @interface AwfulPostBoxController : UIViewController 18 | 19 | @property (nonatomic, strong) IBOutlet UIBarButtonItem *sendButton; 20 | @property (nonatomic, strong) IBOutlet UITextView *replyTextView; 21 | @property (nonatomic, strong) IBOutlet ButtonSegmentedControl *segmentedControl; 22 | 23 | @property (nonatomic, strong) AwfulThread *thread; 24 | @property (nonatomic, strong) AwfulPost *post; 25 | @property (nonatomic, strong) NSString *startingText; 26 | @property (nonatomic, weak) AwfulPage *page; 27 | 28 | @property (nonatomic, strong) MKNetworkOperation *networkOperation; 29 | 30 | -(IBAction)hideReply; 31 | -(IBAction)hitSend; 32 | -(IBAction)hitTextBarButtonItem : (NSString *)str; 33 | -(void)tappedSegment : (id)sender; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /3rd Party Sources/topfunky-hpple/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009 Topfunky Corporation, http://topfunky.com 2 | 3 | MIT LICENSE 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Classes/Main/AwfulAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulAppDelegate.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/26/10. 6 | // Copyright Regular Berry Software LLC 2010. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class AwfulSplitViewController; 12 | @class AwfulNetworkEngine; 13 | 14 | #define ApplicationDelegate ((AwfulAppDelegate *)[UIApplication sharedApplication].delegate) 15 | 16 | @interface AwfulAppDelegate : NSObject 17 | 18 | @property (nonatomic, strong) IBOutlet UIWindow *window; 19 | @property (nonatomic, strong) IBOutlet AwfulSplitViewController *splitController; 20 | @property (nonatomic, strong) AwfulNetworkEngine *awfulNetworkEngine; 21 | @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 22 | @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 23 | @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 24 | @property (readonly, strong, nonatomic) NSManagedObjectContext *throwawayObjectContext; 25 | 26 | - (void)saveContext; 27 | - (NSURL *)applicationDocumentsDirectory; 28 | -(void)resetDataStore; 29 | 30 | @end 31 | 32 | BOOL isLandscape(); -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/UIImage+Decompress.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Decompress.m 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 20/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Decompress.h" 10 | 11 | @implementation UIImage (Decompress) 12 | 13 | // Force the UIImage to decompress the image and cache 14 | // http://stackoverflow.com/questions/1815476/cgimage-uiimage-lazily-loading-on-ui-thread-causes-stutter 15 | 16 | - (void)decompress { 17 | const CGImageRef cgImage = [self CGImage]; 18 | 19 | const int width = CGImageGetWidth(cgImage); 20 | const int height = CGImageGetHeight(cgImage); 21 | 22 | const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage); 23 | const CGContextRef context = CGBitmapContextCreate( 24 | NULL, /* Where to store the data. NULL = don’t care */ 25 | width, height, /* width & height */ 26 | 8, width * 4, /* bits per component, bytes per row */ 27 | colorspace, kCGImageAlphaNoneSkipFirst); 28 | 29 | CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage); 30 | CGContextRelease(context); 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulAppThreadRequest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulAppThreadRequest.m 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/28/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulAppThreadRequest.h" 10 | #import "AwfulPage.h" 11 | #import "AwfulThread.h" 12 | #import "AwfulNavigator.h" 13 | 14 | @implementation AwfulAppThreadRequest 15 | 16 | -(id)initCustom 17 | { 18 | if((self=[super initWithURL:[NSURL URLWithString:@"http://www.regularberry.com/awful/awfulappthreadid.txt"]])) { 19 | 20 | } 21 | return self; 22 | } 23 | 24 | -(void)requestFinished 25 | { 26 | [super requestFinished]; 27 | NSString *threadid = [self responseString]; 28 | if(threadid != nil) { 29 | AwfulThread *thread = [[AwfulThread alloc] init]; 30 | thread.title = @"Awful iPhone App"; 31 | thread.threadID = threadid; 32 | AwfulPage *page = [AwfulPage pageWithAwfulThread:thread pageNum:AwfulPageDestinationTypeFirst]; 33 | 34 | loadContentVC(page); 35 | 36 | AwfulNavigator *nav = getNavigator(); 37 | [nav.navigationController popViewControllerAnimated:YES]; 38 | } 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Classes/Util/SALR.m: -------------------------------------------------------------------------------- 1 | // 2 | // SALR.m 3 | // Awful 4 | // 5 | // Created by Scott Ferguson on 9/14/11. 6 | // Copyright (c) 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "SALR.h" 10 | #import "AwfulSettings.h" 11 | #import "AwfulUser.h" 12 | #import "AwfulUser+AwfulMethods.h" 13 | #import "SBJson.h" 14 | 15 | @implementation SALR 16 | 17 | + (NSString *)config { 18 | NSMutableDictionary *config = [[NSMutableDictionary alloc] init]; 19 | 20 | AwfulUser *user = [AwfulUser currentUser]; 21 | if(user.userName != nil) { 22 | [config setObject:user.userName forKey:@"username"]; 23 | } else { 24 | return @""; 25 | } 26 | [config setObject:[[AwfulSettings settings] highlightOwnMentions] ? @"true" : @"false" 27 | forKey:@"highlightUsername"]; 28 | [config setObject:[[AwfulSettings settings] highlightOwnQuotes] ? @"true" : @"false" 29 | forKey:@"highlightUserQuote"]; 30 | [config setObject:@"#a2cd5a" forKey:@"userQuote"]; 31 | [config setObject:@"#9933ff" forKey:@"usernameHighlight"]; 32 | 33 | SBJsonWriter *jsonWriter = [SBJsonWriter new]; 34 | NSString *result = [jsonWriter stringWithObject:config]; 35 | 36 | return result; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /3rd Party Sources/MWPhotoBrowser/MWPhoto.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWPhoto.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 17/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | // Class 12 | @class MWPhoto; 13 | 14 | // Delegate 15 | @protocol MWPhotoDelegate 16 | - (void)photoDidFinishLoading:(MWPhoto *)photo; 17 | - (void)photoDidFailToLoad:(MWPhoto *)photo; 18 | @end 19 | 20 | // MWPhoto 21 | @interface MWPhoto : NSObject { 22 | 23 | // Image 24 | NSString *photoPath; 25 | NSURL *photoURL; 26 | UIImage *photoImage; 27 | 28 | // Flags 29 | BOOL workingInBackground; 30 | 31 | } 32 | 33 | @property (nonatomic, strong) UIImage *photoImage; 34 | 35 | // Class 36 | + (MWPhoto *)photoWithImage:(UIImage *)image; 37 | + (MWPhoto *)photoWithFilePath:(NSString *)path; 38 | + (MWPhoto *)photoWithURL:(NSURL *)url; 39 | 40 | // Init 41 | - (id)initWithImage:(UIImage *)image; 42 | - (id)initWithFilePath:(NSString *)path; 43 | - (id)initWithURL:(NSURL *)url; 44 | 45 | // Public methods 46 | - (BOOL)isImageAvailable; 47 | - (UIImage *)image; 48 | - (UIImage *)obtainImage; 49 | - (void)obtainImageInBackgroundAndNotify:(id )notifyDelegate; 50 | - (void)releasePhoto; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Classes/Models/AwfulPost.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulPost.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/31/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulPost.h" 10 | 11 | @implementation AwfulPost 12 | 13 | @synthesize postID, postDate, posterName; 14 | @synthesize posterType, avatarURL, editedStr; 15 | @synthesize rawContent, markSeenLink, seen; 16 | @synthesize isOP, canEdit, altCSSClass, postBody; 17 | @synthesize postIndex = _postIndex; 18 | 19 | -(id)init 20 | { 21 | if((self=[super init])) { 22 | self.posterType = AwfulUserTypeNormal; 23 | self.isOP = NO; 24 | self.canEdit = NO; 25 | self.seen = NO; 26 | self.postIndex = NSNotFound; 27 | } 28 | return self; 29 | } 30 | 31 | -(void)setPostIndex : (NSUInteger)postIndex 32 | { 33 | if(_postIndex != postIndex) { 34 | _postIndex = postIndex; 35 | 36 | NSString *base = @"altcolor"; 37 | if(self.seen) { 38 | base = @"seen"; 39 | } 40 | 41 | int suffix = 1; 42 | if(postIndex % 2 == 0) { 43 | suffix = 2; 44 | } 45 | self.altCSSClass = [base stringByAppendingFormat:@"%d", suffix]; 46 | } 47 | } 48 | 49 | @end 50 | 51 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIAuthenticationDialog.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIAuthenticationDialog.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 21/08/2009. 6 | // Copyright 2009 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | @class ASIHTTPRequest; 12 | 13 | typedef enum _ASIAuthenticationType { 14 | ASIStandardAuthenticationType = 0, 15 | ASIProxyAuthenticationType = 1 16 | } ASIAuthenticationType; 17 | 18 | @interface ASIAutorotatingViewController : UIViewController 19 | @end 20 | 21 | @interface ASIAuthenticationDialog : ASIAutorotatingViewController { 22 | ASIHTTPRequest *request; 23 | ASIAuthenticationType type; 24 | UITableView *tableView; 25 | UIViewController *presentingController; 26 | BOOL didEnableRotationNotifications; 27 | } 28 | + (void)presentAuthenticationDialogForRequest:(ASIHTTPRequest *)request; 29 | + (void)dismiss; 30 | 31 | @property (retain) ASIHTTPRequest *request; 32 | @property (assign) ASIAuthenticationType type; 33 | @property (assign) BOOL didEnableRotationNotifications; 34 | @property (retain, nonatomic) UIViewController *presentingController; 35 | @end 36 | -------------------------------------------------------------------------------- /Classes/Models/AwfulThread.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThread.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 3/30/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class AwfulForum; 13 | 14 | @interface AwfulThread : NSManagedObject 15 | 16 | @property (nonatomic, retain) NSString * authorName; 17 | @property (nonatomic, retain) NSNumber * isBookmarked; 18 | @property (nonatomic, retain) NSNumber * isLocked; 19 | @property (nonatomic, retain) NSString * lastPostAuthorName; 20 | @property (nonatomic, retain) NSDate * lastPostDate; 21 | @property (nonatomic, retain) NSNumber * seen; 22 | @property (nonatomic, retain) NSNumber * starCategory; 23 | @property (nonatomic, retain) NSNumber * stickyIndex; 24 | @property (nonatomic, retain) NSURL * threadIconImageURL; 25 | @property (nonatomic, retain) NSURL * threadIconImageURL2; 26 | @property (nonatomic, retain) NSString * threadID; 27 | @property (nonatomic, retain) NSNumber * threadRating; 28 | @property (nonatomic, retain) NSString * title; 29 | @property (nonatomic, retain) NSNumber * totalReplies; 30 | @property (nonatomic, retain) NSNumber * totalUnreadPosts; 31 | @property (nonatomic, retain) AwfulForum *forum; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheError.m: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustacheError.h" 24 | 25 | 26 | NSString* const GRMustacheErrorDomain = @"GRMustacheErrorDomain"; 27 | -------------------------------------------------------------------------------- /Classes/AwfulThreadList/AwfulThreadCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThreadCell.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 2/2/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class AwfulThread; 13 | @class AwfulThreadListController; 14 | 15 | @interface AwfulThreadCell : UITableViewCell 16 | 17 | @property (nonatomic, strong) AwfulThread *thread; 18 | @property (nonatomic, strong) IBOutlet UILabel *threadTitleLabel; 19 | @property (nonatomic, strong) IBOutlet UILabel *pagesLabel; 20 | @property (nonatomic, strong) IBOutlet UIButton *unreadButton; 21 | @property (nonatomic, strong) IBOutlet UIImageView *sticky; 22 | @property (nonatomic, strong) IBOutlet UIImageView *tagImage; 23 | @property (nonatomic, strong) IBOutlet UIImageView *secondTagImage; 24 | @property (nonatomic, strong) IBOutlet UIImageView *ratingImage; 25 | @property (nonatomic, weak) AwfulThreadListController *threadListController; 26 | @property (nonatomic, strong) IBOutlet UILabel *tagLabel; 27 | 28 | -(void)configureForThread : (AwfulThread *)thread; 29 | -(UIColor *)getBackgroundColorForThread : (AwfulThread *)thread; 30 | -(void)openThreadlistOptions : (UIGestureRecognizer *)gesture; 31 | 32 | @end 33 | 34 | @interface AwfulLoadingThreadCell : UITableViewCell 35 | 36 | @property (nonatomic, strong) IBOutlet UIActivityIndicatorView *activity; 37 | 38 | -(void)setActivityViewVisible : (BOOL)visible; 39 | 40 | @end -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheProperty_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | 26 | @interface GRMustacheProperty : NSObject 27 | + (BOOL)class:(Class)class hasBOOLPropertyGetterNamed:(NSString *)getterName GRMUSTACHE_API_INTERNAL; 28 | @end 29 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheNSUndefinedKeyExceptionGuard_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | 26 | @interface GRMustacheNSUndefinedKeyExceptionGuard : NSObject 27 | + (id)valueForKey:(NSString *)key inObject:(id)object GRMUSTACHE_API_INTERNAL; 28 | @end 29 | -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/UIAlertView+MKNetworkKitAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertView+MKNetworkKitAdditions.h 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar (@mugunthkumar) on 11/11/11. 6 | // Copyright (C) 2011-2020 by Steinlogic 7 | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | #if TARGET_OS_IPHONE 26 | #import 27 | 28 | @interface UIAlertView (MKNetworkKitAdditions) 29 | +(UIAlertView*) showWithError:(NSError*) networkError; 30 | @end 31 | #endif -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/NSData+Base64.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // base64 4 | // 5 | // Created by Matt Gallagher on 2009/06/03. 6 | // Copyright 2009 Matt Gallagher. All rights reserved. 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any damages 10 | // arising from the use of this software. Permission is granted to anyone to 11 | // use this software for any purpose, including commercial applications, and to 12 | // alter it and redistribute it freely, subject to the following restrictions: 13 | // 14 | // 1. The origin of this software must not be misrepresented; you must not 15 | // claim that you wrote the original software. If you use this software 16 | // in a product, an acknowledgment in the product documentation would be 17 | // appreciated but is not required. 18 | // 2. Altered source versions must be plainly marked as such, and must not be 19 | // misrepresented as being the original software. 20 | // 3. This notice may not be removed or altered from any source 21 | // distribution. 22 | // 23 | 24 | #import 25 | 26 | void *NewBase64Decode( 27 | const char *inputBuffer, 28 | size_t length, 29 | size_t *outputLength); 30 | 31 | char *NewBase64Encode( 32 | const void *inputBuffer, 33 | size_t length, 34 | bool separateLines, 35 | size_t *outputLength); 36 | 37 | @interface NSData (Base64) 38 | 39 | + (NSData *)dataFromBase64String:(NSString *)aString; 40 | - (NSString *)base64EncodedString; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/NSDictionary+RequestEncoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+RequestEncoding.h 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar (@mugunthkumar) on 11/11/11. 6 | // Copyright (C) 2011-2020 by Steinlogic 7 | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | 26 | @interface NSDictionary (RequestEncoding) 27 | 28 | -(NSString*) urlEncodedKeyValueString; 29 | -(NSString*) jsonEncodedKeyValueString; 30 | -(NSString*) plistEncodedKeyValueString; 31 | @end 32 | -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/NSString+MKNetworkKitAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MKNetworkKitAdditions.h 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar (@mugunthkumar) on 11/11/11. 6 | // Copyright (C) 2011-2020 by Steinlogic 7 | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | 26 | @interface NSString (MKNetworkKitAdditions) 27 | 28 | - (NSString *) md5; 29 | + (NSString*) uniqueString; 30 | - (NSString*) urlEncodedString; 31 | - (NSString*) urlDecodedString; 32 | @end 33 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheTextElement_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustacheAvailabilityMacros_private.h" 24 | #import "GRMustacheRenderingElement_private.h" 25 | 26 | @interface GRMustacheTextElement: NSObject { 27 | @private 28 | NSString *_text; 29 | } 30 | 31 | + (id)textElementWithString:(NSString *)string GRMUSTACHE_API_INTERNAL; 32 | 33 | @end 34 | 35 | 36 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulQuoteRequest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulQuoteRequest.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/17/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulQuoteRequest.h" 10 | #import "AwfulPage.h" 11 | #import "AwfulPost.h" 12 | #import "AwfulAppDelegate.h" 13 | 14 | @implementation AwfulQuoteRequest 15 | 16 | @synthesize page; 17 | 18 | -(id)initWithPost : (AwfulPost *)aPost fromPage : (AwfulPage *)aPage 19 | { 20 | NSString *url_str = [NSString stringWithFormat:@"http://forums.somethingawful.com/newreply.php?action=newreply&postid=%@", aPost.postID]; 21 | 22 | if((self = [super initWithURL:[NSURL URLWithString:url_str]])) { 23 | self.page = aPage; 24 | } 25 | 26 | return self; 27 | } 28 | 29 | 30 | -(void)requestFinished 31 | { 32 | [super requestFinished]; 33 | NSString *raw_s = [[NSString alloc] initWithData:[self responseData] encoding:NSASCIIStringEncoding]; 34 | NSData *converted = [raw_s dataUsingEncoding:NSUTF8StringEncoding]; 35 | 36 | TFHpple *base = [[TFHpple alloc] initWithHTMLData:converted]; 37 | TFHppleElement *quote_el = [base searchForSingle:@"//textarea[@name='message']"]; 38 | 39 | [AwfulPostBoxController clearStoredPost]; 40 | AwfulPostBoxController *post_box = [[AwfulPostBoxController alloc] initWithText:[NSString stringWithFormat:@"%@\n", [quote_el content]]]; 41 | [post_box setThread:self.page.thread]; 42 | 43 | UIViewController *vc = getRootController(); 44 | [vc presentModalViewController:post_box animated:YES]; 45 | 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Classes/AwfulRequests/AwfulForumRefreshRequest.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumRefreshRequest.m 3 | // Awful 4 | // 5 | // Created by Sean Berry on 11/13/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumRefreshRequest.h" 10 | #import "TFHpple.h" 11 | #import "AwfulParse.h" 12 | #import "AwfulThread.h" 13 | #import "AwfulUtil.h" 14 | 15 | @implementation AwfulForumRefreshRequest 16 | 17 | @synthesize threadList; 18 | 19 | -(id)initWithAwfulThreadList : (AwfulThreadList *)aThreadList; 20 | { 21 | NSString *url_str = [NSString stringWithFormat:@"http://forums.somethingawful.com/%@", [aThreadList getURLSuffix]]; 22 | if((self = [super initWithURL:[NSURL URLWithString:url_str]])) { 23 | self.threadList = aThreadList; 24 | } 25 | 26 | return self; 27 | } 28 | 29 | -(void)requestStarted 30 | { 31 | [super requestStarted]; 32 | } 33 | 34 | -(void)requestFinished 35 | { 36 | [super requestFinished]; 37 | NSString *raw_s = [[NSString alloc] initWithData:[self responseData] encoding:NSASCIIStringEncoding]; 38 | NSData *converted = [raw_s dataUsingEncoding:NSUTF8StringEncoding]; 39 | 40 | TFHpple *forum_data = [[TFHpple alloc] initWithHTMLData:converted]; 41 | 42 | NSMutableArray *threads = [AwfulParse newThreadsFromForum:forum_data]; 43 | 44 | [AwfulUtil saveThreadList:threads forForumId:[threadList getSaveID]]; 45 | 46 | [threadList acceptThreads:threads]; 47 | } 48 | 49 | - (void)failWithError:(NSError *)theError 50 | { 51 | [super failWithError:theError]; 52 | [self.threadList stop]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheRenderingElement_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | 26 | @class GRMustacheContext; 27 | @class GRMustacheTemplate; 28 | 29 | @protocol GRMustacheRenderingElement 30 | @required 31 | - (NSString *)renderContext:(GRMustacheContext *)context inRootTemplate:(GRMustacheTemplate *)rootTemplate GRMUSTACHE_API_INTERNAL; 32 | @end 33 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulActions.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulActions.m 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/23/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulActions.h" 10 | #import "AwfulAppDelegate.h" 11 | 12 | @implementation AwfulActions 13 | 14 | @synthesize titles = _titles; 15 | @synthesize viewController = _viewController; 16 | 17 | -(id)init 18 | { 19 | if((self=[super init])) { 20 | _titles = [[NSMutableArray alloc] init]; 21 | } 22 | return self; 23 | } 24 | 25 | -(NSString *)getOverallTitle 26 | { 27 | return @"Actions"; 28 | } 29 | 30 | -(void)show 31 | { 32 | [[self getActionSheet] showFromToolbar:self.viewController.navigationController.toolbar]; 33 | } 34 | 35 | - (UIActionSheet *) getActionSheet 36 | { 37 | UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:[self getOverallTitle] delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 38 | for(NSString *title in self.titles) { 39 | [sheet addButtonWithTitle:title]; 40 | } 41 | [sheet addButtonWithTitle:@"Cancel"]; 42 | sheet.cancelButtonIndex = [self.titles count]; 43 | 44 | return sheet; 45 | } 46 | 47 | - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 48 | { 49 | } 50 | 51 | -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 52 | { 53 | [self actionSheet:nil clickedButtonAtIndex:buttonIndex-1]; 54 | } 55 | 56 | -(BOOL)isCancelled : (int)index 57 | { 58 | return index == [self.titles count] || index == -1; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustache_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | 26 | typedef struct { 27 | int major; 28 | int minor; 29 | int patch; 30 | } GRMustacheVersion; 31 | 32 | @interface GRMustache: NSObject 33 | 34 | + (GRMustacheVersion)version GRMUSTACHE_API_PUBLIC; 35 | + (void)preventNSUndefinedKeyExceptionAttack GRMUSTACHE_API_PUBLIC; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheInvocation.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros.h" 25 | 26 | @interface GRMustacheInvocation : NSObject { 27 | @private 28 | id _returnValue; 29 | id _token; 30 | } 31 | @property (nonatomic, readonly) NSString *key AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 32 | @property (nonatomic, retain) id returnValue AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 33 | @end 34 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheVersion.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | 24 | /** 25 | The major component of GRMustache version 26 | 27 | @since v1.0 28 | */ 29 | #define GRMUSTACHE_MAJOR_VERSION 3 30 | 31 | /** 32 | The minor component of GRMustache version 33 | 34 | @since v1.0 35 | */ 36 | #define GRMUSTACHE_MINOR_VERSION 0 37 | 38 | /** 39 | The patch-level component of GRMustache version 40 | 41 | @since v1.0 42 | */ 43 | #define GRMUSTACHE_PATCH_VERSION 0 44 | 45 | -------------------------------------------------------------------------------- /Classes/Models/AwfulForum.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForum.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 4/3/12. 6 | // Copyright (c) 2012 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class AwfulForum, AwfulThread; 13 | 14 | @interface AwfulForum : NSManagedObject 15 | 16 | @property (nonatomic, retain) NSString * forumID; 17 | @property (nonatomic, retain) NSNumber * index; 18 | @property (nonatomic, retain) NSString * name; 19 | @property (nonatomic, retain) NSNumber * favorited; 20 | @property (nonatomic, retain) NSOrderedSet *children; 21 | @property (nonatomic, retain) AwfulForum *parentForum; 22 | @property (nonatomic, retain) NSSet *threads; 23 | @end 24 | 25 | @interface AwfulForum (CoreDataGeneratedAccessors) 26 | 27 | - (void)insertObject:(AwfulForum *)value inChildrenAtIndex:(NSUInteger)idx; 28 | - (void)removeObjectFromChildrenAtIndex:(NSUInteger)idx; 29 | - (void)insertChildren:(NSArray *)value atIndexes:(NSIndexSet *)indexes; 30 | - (void)removeChildrenAtIndexes:(NSIndexSet *)indexes; 31 | - (void)replaceObjectInChildrenAtIndex:(NSUInteger)idx withObject:(AwfulForum *)value; 32 | - (void)replaceChildrenAtIndexes:(NSIndexSet *)indexes withChildren:(NSArray *)values; 33 | - (void)addChildrenObject:(AwfulForum *)value; 34 | - (void)removeChildrenObject:(AwfulForum *)value; 35 | - (void)addChildren:(NSOrderedSet *)values; 36 | - (void)removeChildren:(NSOrderedSet *)values; 37 | - (void)addThreadsObject:(AwfulThread *)value; 38 | - (void)removeThreadsObject:(AwfulThread *)value; 39 | - (void)addThreads:(NSSet *)values; 40 | - (void)removeThreads:(NSSet *)values; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheVariableElement_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustacheAvailabilityMacros_private.h" 24 | #import "GRMustacheRenderingElement_private.h" 25 | 26 | @class GRMustacheInvocation; 27 | 28 | @interface GRMustacheVariableElement: NSObject { 29 | @private 30 | GRMustacheInvocation *_invocation; 31 | BOOL _raw; 32 | } 33 | 34 | + (id)variableElementWithInvocation:(GRMustacheInvocation *)invocation raw:(BOOL)raw GRMUSTACHE_API_INTERNAL; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Classes/AwfulThreadList/AwfulThreadListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulThreadList.h 3 | // Awful 4 | // 5 | // Created by Sean Berry on 7/27/10. 6 | // Copyright 2010 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulTableViewController.h" 10 | 11 | @class AwfulPageCount; 12 | @class AwfulForum; 13 | @class AwfulThread; 14 | @class AwfulSplitViewController; 15 | @class AwfulThreadCell; 16 | @class AwfulPage; 17 | 18 | typedef enum { 19 | AwfulThreadCellTypeUnknown, 20 | AwfulThreadCellTypeThread, 21 | AwfulThreadCellTypeLoadMore 22 | } AwfulThreadCellType; 23 | 24 | @interface AwfulThreadListController : AwfulTableViewController 25 | 26 | @property (nonatomic, strong) AwfulForum *forum; 27 | @property (nonatomic, strong) NSMutableArray *awfulThreads; 28 | @property (nonatomic, strong) AwfulPageCount *pages; 29 | 30 | @property (nonatomic, strong) IBOutlet UIBarButtonItem *prevPageBarButtonItem; 31 | @property (nonatomic, strong) IBOutlet UIBarButtonItem *pageLabelBarButtonItem; 32 | @property (nonatomic, strong) IBOutlet UIBarButtonItem *nextPageBarButtonItem; 33 | 34 | @property (nonatomic, strong) AwfulThread *heldThread; 35 | @property BOOL isLoading; 36 | 37 | -(AwfulThread *)getThreadAtIndexPath : (NSIndexPath *)path; 38 | 39 | -(void)acceptThreads : (NSMutableArray *)in_threads; 40 | -(BOOL)shouldReloadOnViewLoad; 41 | -(void)showThreadActionsForThread : (AwfulThread *)thread; 42 | 43 | -(void)displayPage : (AwfulPage *)page; 44 | -(void)loadPageNum : (NSUInteger)pageNum; 45 | -(void)stop; 46 | 47 | -(void)awfulThreadUpdated : (NSNotification *)notif; 48 | 49 | -(AwfulThreadCellType)getTypeAtIndexPath : (NSIndexPath *)indexPath; 50 | -(BOOL)moreThreads; 51 | 52 | -(void)newlyVisible; 53 | 54 | @end -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIHTTPRequestDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIHTTPRequestDelegate.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 13/04/2010. 6 | // Copyright 2010 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | @class ASIHTTPRequest; 10 | 11 | @protocol ASIHTTPRequestDelegate 12 | 13 | @optional 14 | 15 | // These are the default delegate methods for request status 16 | // You can use different ones by setting didStartSelector / didFinishSelector / didFailSelector 17 | - (void)requestStarted:(ASIHTTPRequest *)request; 18 | - (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders; 19 | - (void)request:(ASIHTTPRequest *)request willRedirectToURL:(NSURL *)newURL; 20 | - (void)requestFinished:(ASIHTTPRequest *)request; 21 | - (void)requestFailed:(ASIHTTPRequest *)request; 22 | - (void)requestRedirected:(ASIHTTPRequest *)request; 23 | 24 | // When a delegate implements this method, it is expected to process all incoming data itself 25 | // This means that responseData / responseString / downloadDestinationPath etc are ignored 26 | // You can have the request call a different method by setting didReceiveDataSelector 27 | - (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data; 28 | 29 | // If a delegate implements one of these, it will be asked to supply credentials when none are available 30 | // The delegate can then either restart the request ([request retryUsingSuppliedCredentials]) once credentials have been set 31 | // or cancel it ([request cancelAuthentication]) 32 | - (void)authenticationNeededForRequest:(ASIHTTPRequest *)request; 33 | - (void)proxyAuthenticationNeededForRequest:(ASIHTTPRequest *)request; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustache.m: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustache_private.h" 24 | #import "GRMustacheContext_private.h" 25 | #import "GRMustacheVersion.h" 26 | 27 | @implementation GRMustache 28 | 29 | + (void)preventNSUndefinedKeyExceptionAttack 30 | { 31 | [GRMustacheContext preventNSUndefinedKeyExceptionAttack]; 32 | } 33 | 34 | + (GRMustacheVersion)version 35 | { 36 | return (GRMustacheVersion){ 37 | .major = GRMUSTACHE_MAJOR_VERSION, 38 | .minor = GRMUSTACHE_MINOR_VERSION, 39 | .patch = GRMUSTACHE_PATCH_VERSION }; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /3rd Party Sources/mwaterfall-MWFeedParser-ea43013/NSString+HTML.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+HTML.h 3 | // MWFeedParser 4 | // 5 | // Copyright (c) 2010 Michael Waterfall 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // 1. The above copyright notice and this permission notice shall be included 15 | // in all copies or substantial portions of the Software. 16 | // 17 | // 2. This Software cannot be used to archive or collect data such as (but not 18 | // limited to) that of events, news, experiences and activities, for the 19 | // purpose of any concept relating to diary/journal keeping. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 27 | // THE SOFTWARE. 28 | // 29 | 30 | #import 31 | 32 | // Dependant upon GTMNSString+HTML 33 | 34 | @interface NSString (HTML) 35 | 36 | // Instance Methods 37 | - (NSString *)stringByEscapingUnicode; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/Guides/runtime.md: -------------------------------------------------------------------------------- 1 | [up](../../../../GRMustache), [next](runtime/context_stack.md) 2 | 3 | GRMustache runtime 4 | ================== 5 | 6 | GRMustache rendering is the combination of a template and of an object that will provide the data. This guide describes this interaction in detail. 7 | 8 | Generally speaking, GRMustache will look for values in your data objects through the standard Key-Value Coding `valueForKey:` method. 9 | 10 | You can thus provide rendering methods with NSDictionary instances, or custom objects with properties or methods whose name match the keys in the template tags. 11 | 12 | ```objc 13 | // This template waits for a `name` key: 14 | GRMustacheTemplate *template = [GRMustacheTemplate templateFromString:@"{{name}}" error:NULL]; 15 | 16 | // Those two objects provide this `name` key: 17 | NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"dictionary" forKey:@"name"]; 18 | Person *arthur = [Person personWithName:@"arthur"]; 19 | 20 | // "dictionary" 21 | [template renderObject:dictionary]; 22 | 23 | // "arthur" 24 | [template renderObject:arthur]; 25 | ``` 26 | 27 | - [context_stack.md](runtime/context_stack.md) 28 | 29 | This guide digs into the key lookup mechanism. 30 | 31 | - [loops.md](runtime/loops.md) 32 | 33 | Learn how to iterate through enumerable objects such as arrays. 34 | 35 | - [booleans.md](runtime/booleans.md) 36 | 37 | Control whether a Mustache section should render or not. 38 | 39 | - [helpers.md](runtime/helpers.md) 40 | 41 | Mustache has "lambda sections". These are sections that allow you to execute custom code, and implement nifty features like caching, filtering, whatever, on portions of your templates. 42 | 43 | 44 | [up](../../../../GRMustache), [next](runtime/context_stack.md) 45 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIProgressDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIProgressDelegate.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 13/04/2010. 6 | // Copyright 2010 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | @class ASIHTTPRequest; 10 | 11 | @protocol ASIProgressDelegate 12 | 13 | @optional 14 | 15 | // These methods are used to update UIProgressViews (iPhone OS) or NSProgressIndicators (Mac OS X) 16 | // If you are using a custom progress delegate, you may find it easier to implement didReceiveBytes / didSendBytes instead 17 | #if TARGET_OS_IPHONE 18 | - (void)setProgress:(float)newProgress; 19 | #else 20 | - (void)setDoubleValue:(double)newProgress; 21 | - (void)setMaxValue:(double)newMax; 22 | #endif 23 | 24 | // Called when the request receives some data - bytes is the length of that data 25 | - (void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes; 26 | 27 | // Called when the request sends some data 28 | // The first 32KB (128KB on older platforms) of data sent is not included in this amount because of limitations with the CFNetwork API 29 | // bytes may be less than zero if a request needs to remove upload progress (probably because the request needs to run again) 30 | - (void)request:(ASIHTTPRequest *)request didSendBytes:(long long)bytes; 31 | 32 | // Called when a request needs to change the length of the content to download 33 | - (void)request:(ASIHTTPRequest *)request incrementDownloadSizeBy:(long long)newLength; 34 | 35 | // Called when a request needs to change the length of the content to upload 36 | // newLength may be less than zero when a request needs to remove the size of the internal buffer from progress tracking 37 | - (void)request:(ASIHTTPRequest *)request incrementUploadSizeBy:(long long)newLength; 38 | @end 39 | -------------------------------------------------------------------------------- /3rd Party Sources/json/SBJsonStreamWriterAccumulator.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Stig Brautaset. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the author nor the names of its contributors may be used 15 | to endorse or promote products derived from this software without specific 16 | prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | */ 29 | 30 | #import "SBJsonStreamWriter.h" 31 | 32 | @interface SBJsonStreamWriterAccumulator : NSObject 33 | 34 | @property (readonly, copy) NSMutableData* data; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIDataCompressor.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIDataCompressor.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 17/08/2010. 6 | // Copyright 2010 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | // This is a helper class used by ASIHTTPRequest to handle deflating (compressing) data in memory and on disk 10 | // You may also find it helpful if you need to deflate data and files yourself - see the class methods below 11 | // Most of the zlib stuff is based on the sample code by Mark Adler available at http://zlib.net 12 | 13 | #import 14 | #import 15 | 16 | @interface ASIDataCompressor : NSObject { 17 | BOOL streamReady; 18 | z_stream zStream; 19 | } 20 | 21 | // Convenience constructor will call setupStream for you 22 | + (id)compressor; 23 | 24 | // Compress the passed chunk of data 25 | - (NSData *)compressBytes:(Bytef *)bytes length:(NSUInteger)length error:(NSError **)err; 26 | 27 | // Convenience method - pass it some data, and you'll get deflated data back 28 | + (NSData *)compressData:(NSData*)uncompressedData error:(NSError **)err; 29 | 30 | // Convenience method - pass it a file containing the data to compress in sourcePath, and it will write deflated data to destinationPath 31 | + (BOOL)compressDataFromFile:(NSString *)sourcePath toFile:(NSString *)destinationPath error:(NSError **)err; 32 | 33 | // Sets up zlib to handle the inflating. You only need to call this yourself if you aren't using the convenience constructor 'compressor' 34 | - (NSError *)setupStream; 35 | 36 | // Tells zlib to clean up. You need to call this if you need to cancel deflating part way through 37 | // If deflating finishes or fails, this method will be called automatically 38 | - (NSError *)closeStream; 39 | 40 | @property (assign, readonly) BOOL streamReady; 41 | @end 42 | -------------------------------------------------------------------------------- /3rd Party Sources/ASIHTTP/ASIDataDecompressor.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIDataDecompressor.h 3 | // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest 4 | // 5 | // Created by Ben Copsey on 17/08/2010. 6 | // Copyright 2010 All-Seeing Interactive. All rights reserved. 7 | // 8 | 9 | // This is a helper class used by ASIHTTPRequest to handle inflating (decompressing) data in memory and on disk 10 | // You may also find it helpful if you need to inflate data and files yourself - see the class methods below 11 | // Most of the zlib stuff is based on the sample code by Mark Adler available at http://zlib.net 12 | 13 | #import 14 | #import 15 | 16 | @interface ASIDataDecompressor : NSObject { 17 | BOOL streamReady; 18 | z_stream zStream; 19 | } 20 | 21 | // Convenience constructor will call setupStream for you 22 | + (id)decompressor; 23 | 24 | // Uncompress the passed chunk of data 25 | - (NSData *)uncompressBytes:(Bytef *)bytes length:(NSUInteger)length error:(NSError **)err; 26 | 27 | // Convenience method - pass it some deflated data, and you'll get inflated data back 28 | + (NSData *)uncompressData:(NSData*)compressedData error:(NSError **)err; 29 | 30 | // Convenience method - pass it a file containing deflated data in sourcePath, and it will write inflated data to destinationPath 31 | + (BOOL)uncompressDataFromFile:(NSString *)sourcePath toFile:(NSString *)destinationPath error:(NSError **)err; 32 | 33 | // Sets up zlib to handle the inflating. You only need to call this yourself if you aren't using the convenience constructor 'decompressor' 34 | - (NSError *)setupStream; 35 | 36 | // Tells zlib to clean up. You need to call this if you need to cancel inflating part way through 37 | // If inflating finishes or fails, this method will be called automatically 38 | - (NSError *)closeStream; 39 | 40 | @property (assign, readonly) BOOL streamReady; 41 | @end 42 | -------------------------------------------------------------------------------- /3rd Party Sources/json/SBJsonStreamParserAccumulator.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Stig Brautaset. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the author nor the names of its contributors may be used 15 | to endorse or promote products derived from this software without specific 16 | prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | */ 29 | 30 | #import 31 | #import "SBJsonStreamParserAdapter.h" 32 | 33 | @interface SBJsonStreamParserAccumulator : NSObject 34 | 35 | @property (copy) id value; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Classes/Actions/AwfulVoteActions.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulVoteActions.m 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/23/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulVoteActions.h" 10 | #import "AwfulThread.h" 11 | #import "AwfulNetworkEngine.h" 12 | #import "AwfulUtil.h" 13 | #import "AwfulPage.h" 14 | 15 | @implementation AwfulVoteActions 16 | 17 | @synthesize thread; 18 | 19 | -(id)initWithAwfulThread : (AwfulThread *)aThread 20 | { 21 | if((self=[super init])) { 22 | self.thread = aThread; 23 | [self.titles addObjectsFromArray:[NSArray arrayWithObjects:@"5", @"4", @"3", @"2", @"1", nil]]; 24 | } 25 | return self; 26 | } 27 | 28 | -(NSString *)getOverallTitle 29 | { 30 | return @"Vote!"; 31 | } 32 | 33 | -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 34 | { 35 | // 0=5, 1=4, 2=3, 3=2, 4=1 36 | int vote_num = -1; 37 | switch (buttonIndex) { 38 | case 0: 39 | vote_num = 5; 40 | break; 41 | case 1: 42 | vote_num = 4; 43 | break; 44 | case 2: 45 | vote_num = 3; 46 | break; 47 | case 3: 48 | vote_num = 2; 49 | break; 50 | case 4: 51 | vote_num = 1; 52 | break; 53 | default: 54 | break; 55 | } 56 | 57 | if(vote_num != -1) { 58 | [ApplicationDelegate.awfulNetworkEngine submitVote:vote_num forThread:self.thread onCompletion:^(void) { 59 | if([self.viewController isKindOfClass:[AwfulPage class]]) { 60 | AwfulPage *page = (AwfulPage *)self.viewController; 61 | [page showCompletionMessage:@"Great Job!"]; 62 | } 63 | } onError:^(NSError *error) { 64 | [AwfulUtil requestFailed:error]; 65 | }]; 66 | } 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheAvailabilityMacros_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | 24 | /* 25 | * GRMUSTACHE_API_PUBLIC 26 | * 27 | * Used on public declarations 28 | */ 29 | #define GRMUSTACHE_API_PUBLIC 30 | 31 | /* 32 | * GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED 33 | * 34 | * Used on public but deprecated declarations 35 | */ 36 | #define GRMUSTACHE_API_PUBLIC_BUT_DEPRECATED UNAVAILABLE_ATTRIBUTE 37 | 38 | /* 39 | * GRMUSTACHE_API_INTERNAL 40 | * 41 | * Used on internal declaration 42 | */ 43 | #define GRMUSTACHE_API_INTERNAL 44 | 45 | /* 46 | * GRMUSTACHE_API_INTERNAL_PUBLIC_BUT_DEPRECATED 47 | * 48 | * Used on internal declaration that are publicly deprecated 49 | */ 50 | #define GRMUSTACHE_API_INTERNAL_PUBLIC_BUT_DEPRECATED 51 | -------------------------------------------------------------------------------- /3rd Party Sources/mwaterfall-MWFeedParser-ea43013/NSString+HTML.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+HTML.m 3 | // MWFeedParser 4 | // 5 | // Copyright (c) 2010 Michael Waterfall 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // 1. The above copyright notice and this permission notice shall be included 15 | // in all copies or substantial portions of the Software. 16 | // 17 | // 2. This Software cannot be used to archive or collect data such as (but not 18 | // limited to) that of events, news, experiences and activities, for the 19 | // purpose of any concept relating to diary/journal keeping. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 27 | // THE SOFTWARE. 28 | // 29 | 30 | #import "NSString+HTML.h" 31 | #import "GTMNSString+HTML.h" 32 | 33 | @implementation NSString (HTML) 34 | 35 | #pragma mark - 36 | #pragma mark Class Methods 37 | 38 | #pragma mark - 39 | #pragma mark Instance Methods 40 | 41 | - (NSString *)stringByEscapingUnicode { 42 | return [NSString stringWithString:[self gtm_stringByEscapingUnicode]]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheInvocation_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | #import "GRMustache_private.h" 26 | 27 | @class GRMustacheContext; 28 | @class GRMustacheToken; 29 | 30 | @interface GRMustacheInvocation : NSObject { 31 | @private 32 | id _returnValue; 33 | GRMustacheToken *_token; 34 | } 35 | @property (nonatomic, readonly) NSString *key GRMUSTACHE_API_PUBLIC; 36 | @property (nonatomic, retain) id returnValue GRMUSTACHE_API_PUBLIC; 37 | @property (nonatomic, retain, readonly) NSString *description GRMUSTACHE_API_PUBLIC; 38 | + (id)invocationWithToken:(GRMustacheToken *)token keys:(NSArray *)keys GRMUSTACHE_API_INTERNAL; 39 | - (void)invokeWithContext:(GRMustacheContext *)context GRMUSTACHE_API_INTERNAL; 40 | @end 41 | -------------------------------------------------------------------------------- /3rd Party Sources/topfunky-hpple/TFHpple.h: -------------------------------------------------------------------------------- 1 | // 2 | // TFHpple.h 3 | // Hpple 4 | // 5 | // Created by Geoffrey Grosenbach on 1/31/09. 6 | // 7 | // Copyright (c) 2009 Topfunky Corporation, http://topfunky.com 8 | // 9 | // MIT LICENSE 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining 12 | // a copy of this software and associated documentation files (the 13 | // "Software"), to deal in the Software without restriction, including 14 | // without limitation the rights to use, copy, modify, merge, publish, 15 | // distribute, sublicense, and/or sell copies of the Software, and to 16 | // permit persons to whom the Software is furnished to do so, subject to 17 | // the following conditions: 18 | // 19 | // The above copyright notice and this permission notice shall be 20 | // included in all copies or substantial portions of the Software. 21 | // 22 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 25 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 27 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 | 30 | 31 | #import 32 | 33 | #import "TFHppleElement.h" 34 | #import "AwfulPost.h" 35 | 36 | @interface TFHpple : NSObject { 37 | NSData * data; 38 | BOOL isXML; 39 | } 40 | 41 | -(id)initWithData:(NSData *)theData isXML:(BOOL)isDataXML; 42 | -(id)initWithHTMLData:(NSData *)theData; 43 | -(id)initWithXMLData:(NSData *)theData; 44 | -(NSArray *) search:(NSString *)xPathOrCSS; 45 | -(NSArray *)rawSearch : (NSString *)xpath; 46 | -(TFHppleElement *) at:(NSString *)xPathOrCSS; 47 | -(TFHppleElement *)searchForSingle : (NSString *)query; 48 | 49 | @property (strong) NSData * data; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheTemplateDelegate.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros.h" 25 | 26 | @class GRMustacheTemplate; 27 | @class GRMustacheInvocation; 28 | 29 | @protocol GRMustacheTemplateDelegate 30 | @optional 31 | - (void)templateWillRender:(GRMustacheTemplate *)template AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 32 | - (void)templateDidRender:(GRMustacheTemplate *)template AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 33 | - (void)template:(GRMustacheTemplate *)template willRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 34 | - (void)template:(GRMustacheTemplate *)template didRenderReturnValueOfInvocation:(GRMustacheInvocation *)invocation AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 35 | @end 36 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheError.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros.h" 25 | 26 | 27 | /** 28 | The domain of a GRMustache-generated NSError 29 | 30 | @since v1.0 31 | */ 32 | extern NSString* const GRMustacheErrorDomain AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 33 | 34 | /** 35 | The codes of a GRMustache-generated NSError 36 | 37 | @since v1.0 38 | */ 39 | typedef enum { 40 | /** 41 | The error code for parse errors. 42 | 43 | @since v1.0 44 | */ 45 | GRMustacheErrorCodeParseError, 46 | 47 | /** 48 | The error code for not found templates and partials. 49 | 50 | @since v1.0 51 | */ 52 | GRMustacheErrorCodeTemplateNotFound, 53 | } GRMustacheErrorCode AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 54 | 55 | 56 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheHelper.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros.h" 25 | 26 | @class GRMustacheSection; 27 | 28 | 29 | // ============================================================================= 30 | #pragma mark - 31 | 32 | @protocol GRMustacheHelper 33 | @required 34 | - (NSString *)renderSection:(GRMustacheSection *)section AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 35 | @end 36 | 37 | 38 | // ============================================================================= 39 | #pragma mark - GRMustacheHelper 40 | 41 | #if NS_BLOCKS_AVAILABLE 42 | 43 | @interface GRMustacheHelper: NSObject 44 | + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block AVAILABLE_GRMUSTACHE_VERSION_3_0_AND_LATER; 45 | @end 46 | 47 | #endif /* if NS_BLOCKS_AVAILABLE */ 48 | -------------------------------------------------------------------------------- /3rd Party Sources/json/SBJsonStreamParserAccumulator.m: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Stig Brautaset. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the author nor the names of its contributors may be used 15 | to endorse or promote products derived from this software without specific 16 | prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | */ 29 | 30 | #import "SBJsonStreamParserAccumulator.h" 31 | 32 | @implementation SBJsonStreamParserAccumulator 33 | 34 | @synthesize value; 35 | 36 | 37 | #pragma mark SBJsonStreamParserAdapterDelegate 38 | 39 | - (void)parser:(SBJsonStreamParser*)parser foundArray:(NSArray *)array { 40 | value = array; 41 | } 42 | 43 | - (void)parser:(SBJsonStreamParser*)parser foundObject:(NSDictionary *)dict { 44 | value = dict; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheHelper_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "GRMustacheAvailabilityMacros_private.h" 25 | 26 | @class GRMustacheSection; 27 | @class GRMustacheContext; 28 | 29 | // ============================================================================= 30 | #pragma mark - 31 | 32 | @protocol GRMustacheHelper 33 | @required 34 | - (NSString *)renderSection:(GRMustacheSection *)section GRMUSTACHE_API_PUBLIC; 35 | @end 36 | 37 | 38 | // ============================================================================= 39 | #pragma mark - GRMustacheHelper 40 | 41 | @interface GRMustacheHelper: NSObject 42 | 43 | #if NS_BLOCKS_AVAILABLE 44 | 45 | + (id)helperWithBlock:(NSString *(^)(GRMustacheSection* section))block GRMUSTACHE_API_PUBLIC; 46 | 47 | #endif /* if NS_BLOCKS_AVAILABLE */ 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /3rd Party Sources/MKNetworkKit/Categories/UIAlertView+MKNetworkKitAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertView+MKNetworkKitAdditions.m 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar (@mugunthkumar) on 11/11/11. 6 | // Copyright (C) 2011-2020 by Steinlogic 7 | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | #if TARGET_OS_IPHONE 26 | #import "UIAlertView+MKNetworkKitAdditions.h" 27 | 28 | @implementation UIAlertView (MKNetworkKitAdditions) 29 | 30 | +(UIAlertView*) showWithError:(NSError*) networkError { 31 | 32 | UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[networkError localizedDescription] 33 | message:[networkError localizedRecoverySuggestion] 34 | delegate:nil 35 | cancelButtonTitle:NSLocalizedString(@"Dismiss", @"") 36 | otherButtonTitles:nil]; 37 | [alert show]; 38 | return alert; 39 | } 40 | @end 41 | #endif -------------------------------------------------------------------------------- /3rd Party Sources/topfunky-hpple/TFHppleElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // TFHppleElement.h 3 | // Hpple 4 | // 5 | // Created by Geoffrey Grosenbach on 1/31/09. 6 | // 7 | // Copyright (c) 2009 Topfunky Corporation, http://topfunky.com 8 | // 9 | // MIT LICENSE 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining 12 | // a copy of this software and associated documentation files (the 13 | // "Software"), to deal in the Software without restriction, including 14 | // without limitation the rights to use, copy, modify, merge, publish, 15 | // distribute, sublicense, and/or sell copies of the Software, and to 16 | // permit persons to whom the Software is furnished to do so, subject to 17 | // the following conditions: 18 | // 19 | // The above copyright notice and this permission notice shall be 20 | // included in all copies or substantial portions of the Software. 21 | // 22 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 25 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 27 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 | 30 | #import 31 | 32 | 33 | @interface TFHppleElement : NSObject { 34 | NSDictionary * node; 35 | } 36 | 37 | - (id) initWithNode:(NSDictionary *) theNode; 38 | 39 | // Returns this tag's innerHTML content. 40 | - (NSString *) content; 41 | 42 | // Returns the name of the current tag, such as "h3". 43 | - (NSString *) tagName; 44 | 45 | // Returns tag attributes with name as key and content as value. 46 | // href = 'http://peepcode.com' 47 | // class = 'highlight' 48 | - (NSDictionary *) attributes; 49 | 50 | // Provides easy access to the content of a specific attribute, 51 | // such as 'href' or 'class'. 52 | - (NSString *) objectForKey:(NSString *) theKey; 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheSection_private.h: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustacheAvailabilityMacros_private.h" 24 | #import "GRMustacheRenderingElement_private.h" 25 | 26 | @class GRMustacheInvocation; 27 | @class GRMustacheTemplate; 28 | 29 | @interface GRMustacheSection: NSObject { 30 | @private 31 | GRMustacheInvocation *_invocation; 32 | GRMustacheTemplate *_rootTemplate; 33 | NSString *_templateString; 34 | NSRange _range; 35 | BOOL _inverted; 36 | NSArray *_elems; 37 | id _renderingContext; 38 | } 39 | 40 | @property (nonatomic, readonly) id renderingContext GRMUSTACHE_API_PUBLIC; 41 | @property (nonatomic, readonly) NSString *innerTemplateString GRMUSTACHE_API_PUBLIC; 42 | + (id)sectionElementWithInvocation:(GRMustacheInvocation *)invocation templateString:(NSString *)templateString range:(NSRange)range inverted:(BOOL)inverted elements:(NSArray *)elems GRMUSTACHE_API_INTERNAL; 43 | - (NSString *)render; 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /3rd Party Sources/GRMustache/classes/GRMustacheTextElement.m: -------------------------------------------------------------------------------- 1 | // The MIT License 2 | // 3 | // Copyright (c) 2012 Gwendal Roué 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "GRMustacheTextElement_private.h" 24 | 25 | 26 | @interface GRMustacheTextElement() 27 | @property (nonatomic, retain) NSString *text; 28 | - (id)initWithString:(NSString *)text; 29 | @end 30 | 31 | 32 | @implementation GRMustacheTextElement 33 | @synthesize text=_text; 34 | 35 | + (id)textElementWithString:(NSString *)text 36 | { 37 | return [[[self alloc] initWithString:text] autorelease]; 38 | } 39 | 40 | - (void)dealloc 41 | { 42 | [_text release]; 43 | [super dealloc]; 44 | } 45 | 46 | #pragma mark 47 | 48 | - (NSString *)renderContext:(GRMustacheContext *)context inRootTemplate:(GRMustacheTemplate *)rootTemplate 49 | { 50 | return _text; 51 | } 52 | 53 | #pragma mark Private 54 | 55 | - (id)initWithString:(NSString *)text 56 | { 57 | self = [self init]; 58 | if (self) { 59 | self.text = text; 60 | } 61 | return self; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Classes/AwfulForumList/AwfulForumCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // AwfulForumCell.m 3 | // Awful 4 | // 5 | // Created by Regular Berry on 6/16/11. 6 | // Copyright 2011 Regular Berry Software LLC. All rights reserved. 7 | // 8 | 9 | #import "AwfulForumCell.h" 10 | #import "AwfulForum.h" 11 | #import "AwfulForumsListControllerSubclass.h" 12 | 13 | #define LINE_SPACE 10 14 | #define PI_OVER_2 (3.14159f / 2.0f) 15 | 16 | @implementation AwfulForumCell 17 | 18 | @synthesize titleLabel = _titleLabel; 19 | @synthesize arrow = _arrow; 20 | @synthesize section = _section; 21 | @synthesize forumsList = _forumsList; 22 | 23 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 24 | { 25 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 26 | if (self) { 27 | // Initialization code 28 | } 29 | return self; 30 | } 31 | 32 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated 33 | { 34 | [super setSelected:selected animated:animated]; 35 | 36 | // Configure the view for the selected state 37 | } 38 | 39 | -(void)setSection:(AwfulForumSection *)aSection 40 | { 41 | _section = aSection; 42 | 43 | if(_section != nil) { 44 | 45 | self.titleLabel.text = self.section.forum.name; 46 | 47 | if([_section.children count] == 0) { 48 | [self.arrow removeFromSuperview]; 49 | } else { 50 | [self addSubview:self.arrow]; 51 | } 52 | 53 | if(_section.expanded) { 54 | [self.arrow setImage:[UIImage imageNamed:@"forum-arrow-down.png"] forState:UIControlStateNormal]; 55 | } else { 56 | [self.arrow setImage:[UIImage imageNamed:@"forum-arrow-right.png"] forState:UIControlStateNormal]; 57 | } 58 | 59 | if(_section.totalAncestors > 1) { 60 | self.arrow.center = CGPointMake(LINE_SPACE*3, self.arrow.center.y); 61 | } else { 62 | self.arrow.center = CGPointMake(LINE_SPACE*2, self.arrow.center.y); 63 | } 64 | } 65 | } 66 | 67 | - (IBAction)tappedArrow:(id)sender 68 | { 69 | [self.forumsList toggleExpandForForumSection:self.section]; 70 | } 71 | 72 | @end 73 | --------------------------------------------------------------------------------