├── 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 |
--------------------------------------------------------------------------------