motion-yapper 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +5 -0
  5. data/Gemfile.lock +63 -0
  6. data/README.md +16 -0
  7. data/Rakefile +20 -0
  8. data/app/app_delegate.rb +5 -0
  9. data/lib/yapper.rb +30 -0
  10. data/lib/yapper/attachment.rb +48 -0
  11. data/lib/yapper/bson.rb +20 -0
  12. data/lib/yapper/config.rb +18 -0
  13. data/lib/yapper/db.rb +151 -0
  14. data/lib/yapper/document.rb +54 -0
  15. data/lib/yapper/document/attachment.rb +26 -0
  16. data/lib/yapper/document/callbacks.rb +86 -0
  17. data/lib/yapper/document/persistance.rb +171 -0
  18. data/lib/yapper/document/relation.rb +84 -0
  19. data/lib/yapper/document/selection.rb +100 -0
  20. data/lib/yapper/extensions.rb +80 -0
  21. data/lib/yapper/log.rb +5 -0
  22. data/lib/yapper/sync.rb +134 -0
  23. data/lib/yapper/sync/data.rb +12 -0
  24. data/lib/yapper/sync/event.rb +194 -0
  25. data/lib/yapper/sync/queue.rb +164 -0
  26. data/lib/yapper/timestamps.rb +16 -0
  27. data/lib/yapper/version.rb +3 -0
  28. data/lib/yapper/yapper.rb +2 -0
  29. data/spec/helpers/time_helper.rb +3 -0
  30. data/spec/integration/all_spec.rb +40 -0
  31. data/spec/integration/callback_spec.rb +87 -0
  32. data/spec/integration/db_spec.rb +40 -0
  33. data/spec/integration/find_spec.rb +51 -0
  34. data/spec/integration/persistance_spec.rb +118 -0
  35. data/spec/integration/relation_spec.rb +174 -0
  36. data/spec/integration/sync_spec.rb +42 -0
  37. data/spec/integration/timestamps_spec.rb +34 -0
  38. data/spec/integration/types_spec.rb +23 -0
  39. data/spec/integration/when_spec.rb +29 -0
  40. data/spec/integration/where_spec.rb +132 -0
  41. data/vendor/Podfile.lock +24 -0
  42. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +641 -0
  43. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +1396 -0
  44. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +133 -0
  45. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +327 -0
  46. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +113 -0
  47. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +321 -0
  48. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +71 -0
  49. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +150 -0
  50. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  51. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +157 -0
  52. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +43 -0
  53. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  54. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +143 -0
  55. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +370 -0
  56. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +848 -0
  57. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +89 -0
  58. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +167 -0
  59. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +78 -0
  60. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +191 -0
  61. data/vendor/Pods/AFNetworking/LICENSE +19 -0
  62. data/vendor/Pods/AFNetworking/README.md +208 -0
  63. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +641 -0
  64. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +133 -0
  65. data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +113 -0
  66. data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +71 -0
  67. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  68. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +43 -0
  69. data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  70. data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +370 -0
  71. data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +89 -0
  72. data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +78 -0
  73. data/vendor/Pods/BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
  74. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +41 -0
  75. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
  76. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +334 -0
  77. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +601 -0
  78. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +167 -0
  79. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
  80. data/vendor/Pods/BuildHeaders/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  81. data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +109 -0
  82. data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +90 -0
  83. data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +20 -0
  84. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +547 -0
  85. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +447 -0
  86. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnectionState.h +29 -0
  87. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +37 -0
  88. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtension.h +15 -0
  89. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
  90. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
  91. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
  92. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +108 -0
  93. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
  94. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
  95. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
  96. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
  97. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
  98. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
  99. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  100. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
  101. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseLogging.h +158 -0
  102. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseManager.h +17 -0
  103. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +424 -0
  104. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseQuery.h +42 -0
  105. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
  106. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
  107. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
  108. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
  109. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
  110. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseStatement.h +13 -0
  111. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseString.h +121 -0
  112. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +541 -0
  113. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +186 -0
  114. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +272 -0
  115. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
  116. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +115 -0
  117. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +825 -0
  118. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
  119. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +56 -0
  120. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPage.h +36 -0
  121. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
  122. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +153 -0
  123. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
  124. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  125. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +447 -0
  126. data/vendor/Pods/BuildHeaders/YapDatabase/YapMemoryTable.h +74 -0
  127. data/vendor/Pods/BuildHeaders/YapDatabase/YapNull.h +17 -0
  128. data/vendor/Pods/BuildHeaders/YapDatabase/YapSet.h +41 -0
  129. data/vendor/Pods/BuildHeaders/YapDatabase/YapTouch.h +15 -0
  130. data/vendor/Pods/CocoaLumberjack/LICENSE.txt +18 -0
  131. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +41 -0
  132. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +99 -0
  133. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +102 -0
  134. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +727 -0
  135. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +334 -0
  136. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1353 -0
  137. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +601 -0
  138. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +1083 -0
  139. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +167 -0
  140. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1479 -0
  141. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h +65 -0
  142. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.m +191 -0
  143. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.h +116 -0
  144. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +251 -0
  145. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +7 -0
  146. data/vendor/Pods/CocoaLumberjack/README.markdown +37 -0
  147. data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +641 -0
  148. data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +133 -0
  149. data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +113 -0
  150. data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +71 -0
  151. data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  152. data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +43 -0
  153. data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  154. data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +370 -0
  155. data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +89 -0
  156. data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +78 -0
  157. data/vendor/Pods/Headers/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
  158. data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +41 -0
  159. data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
  160. data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +334 -0
  161. data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +601 -0
  162. data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +167 -0
  163. data/vendor/Pods/Headers/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
  164. data/vendor/Pods/Headers/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  165. data/vendor/Pods/Headers/Reachability/Reachability.h +109 -0
  166. data/vendor/Pods/Headers/YapDatabase/YapCache.h +90 -0
  167. data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +20 -0
  168. data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +547 -0
  169. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +447 -0
  170. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +29 -0
  171. data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +37 -0
  172. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtension.h +15 -0
  173. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
  174. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
  175. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
  176. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +108 -0
  177. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
  178. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
  179. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
  180. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
  181. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
  182. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
  183. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  184. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
  185. data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +158 -0
  186. data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +17 -0
  187. data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +424 -0
  188. data/vendor/Pods/Headers/YapDatabase/YapDatabaseQuery.h +42 -0
  189. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
  190. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
  191. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
  192. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
  193. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
  194. data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +13 -0
  195. data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +121 -0
  196. data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +541 -0
  197. data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +186 -0
  198. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +272 -0
  199. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
  200. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +115 -0
  201. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +825 -0
  202. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
  203. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +56 -0
  204. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +36 -0
  205. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
  206. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +153 -0
  207. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
  208. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  209. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +447 -0
  210. data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +74 -0
  211. data/vendor/Pods/Headers/YapDatabase/YapNull.h +17 -0
  212. data/vendor/Pods/Headers/YapDatabase/YapSet.h +41 -0
  213. data/vendor/Pods/Headers/YapDatabase/YapTouch.h +15 -0
  214. data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +17 -0
  215. data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +5 -0
  216. data/vendor/Pods/Headers/____Pods-NSData+MD5Digest-prefix.h +5 -0
  217. data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +5 -0
  218. data/vendor/Pods/Headers/____Pods-YapDatabase-prefix.h +5 -0
  219. data/vendor/Pods/Headers/____Pods-environment.h +38 -0
  220. data/vendor/Pods/Manifest.lock +24 -0
  221. data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  222. data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.m +39 -0
  223. data/vendor/Pods/NSData+MD5Digest/README.md +11 -0
  224. data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +5 -0
  225. data/vendor/Pods/Pods-AFNetworking-dummy.m +5 -0
  226. data/vendor/Pods/Pods-AFNetworking-prefix.pch +17 -0
  227. data/vendor/Pods/Pods-AFNetworking.xcconfig +1 -0
  228. data/vendor/Pods/Pods-Acknowledgements.markdown +96 -0
  229. data/vendor/Pods/Pods-Acknowledgements.plist +142 -0
  230. data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +5 -0
  231. data/vendor/Pods/Pods-CocoaLumberjack-dummy.m +5 -0
  232. data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +5 -0
  233. data/vendor/Pods/Pods-CocoaLumberjack.xcconfig +0 -0
  234. data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +5 -0
  235. data/vendor/Pods/Pods-NSData+MD5Digest-dummy.m +5 -0
  236. data/vendor/Pods/Pods-NSData+MD5Digest-prefix.pch +5 -0
  237. data/vendor/Pods/Pods-NSData+MD5Digest.xcconfig +0 -0
  238. data/vendor/Pods/Pods-Reachability-Private.xcconfig +5 -0
  239. data/vendor/Pods/Pods-Reachability-dummy.m +5 -0
  240. data/vendor/Pods/Pods-Reachability-prefix.pch +5 -0
  241. data/vendor/Pods/Pods-Reachability.xcconfig +1 -0
  242. data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +5 -0
  243. data/vendor/Pods/Pods-YapDatabase-dummy.m +5 -0
  244. data/vendor/Pods/Pods-YapDatabase-prefix.pch +5 -0
  245. data/vendor/Pods/Pods-YapDatabase.xcconfig +1 -0
  246. data/vendor/Pods/Pods-dummy.m +5 -0
  247. data/vendor/Pods/Pods-environment.h +38 -0
  248. data/vendor/Pods/Pods-resources.sh +68 -0
  249. data/vendor/Pods/Pods.bridgesupport +5096 -0
  250. data/vendor/Pods/Pods.xcconfig +5 -0
  251. data/vendor/Pods/Pods.xcodeproj/project.pbxproj +5536 -0
  252. data/vendor/Pods/Reachability/LICENCE.txt +24 -0
  253. data/vendor/Pods/Reachability/README.md +65 -0
  254. data/vendor/Pods/Reachability/Reachability.h +109 -0
  255. data/vendor/Pods/Reachability/Reachability.m +527 -0
  256. data/vendor/Pods/YapDatabase/LICENSE.txt +18 -0
  257. data/vendor/Pods/YapDatabase/README.md +30 -0
  258. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +19 -0
  259. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +108 -0
  260. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +175 -0
  261. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.h +12 -0
  262. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.m +41 -0
  263. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +39 -0
  264. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +966 -0
  265. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +69 -0
  266. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h +89 -0
  267. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m +146 -0
  268. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h +32 -0
  269. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +298 -0
  270. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  271. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m +95 -0
  272. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h +68 -0
  273. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +1352 -0
  274. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +440 -0
  275. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.h +15 -0
  276. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +58 -0
  277. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.h +11 -0
  278. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +46 -0
  279. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.h +11 -0
  280. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +180 -0
  281. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +73 -0
  282. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +100 -0
  283. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +149 -0
  284. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h +33 -0
  285. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +330 -0
  286. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h +33 -0
  287. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +184 -0
  288. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h +58 -0
  289. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +1166 -0
  290. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewChangePrivate.h +94 -0
  291. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewMappingsPrivate.h +72 -0
  292. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.h +36 -0
  293. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.mm +296 -0
  294. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.h +27 -0
  295. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.m +28 -0
  296. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +153 -0
  297. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  298. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +272 -0
  299. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +2494 -0
  300. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +825 -0
  301. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +1567 -0
  302. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.h +330 -0
  303. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.m +141 -0
  304. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +186 -0
  305. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +191 -0
  306. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +115 -0
  307. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +897 -0
  308. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +56 -0
  309. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.m +27 -0
  310. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +447 -0
  311. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +4505 -0
  312. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +90 -0
  313. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +453 -0
  314. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.h +29 -0
  315. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.m +48 -0
  316. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +37 -0
  317. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +83 -0
  318. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.h +158 -0
  319. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.m +73 -0
  320. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.h +17 -0
  321. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.m +56 -0
  322. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +424 -0
  323. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.h +13 -0
  324. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.m +26 -0
  325. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseString.h +121 -0
  326. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.h +74 -0
  327. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.m +603 -0
  328. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.h +17 -0
  329. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +31 -0
  330. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.h +15 -0
  331. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.m +31 -0
  332. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +20 -0
  333. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +194 -0
  334. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.h +42 -0
  335. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.m +96 -0
  336. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.h +41 -0
  337. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.m +82 -0
  338. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +547 -0
  339. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +2022 -0
  340. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +447 -0
  341. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +3874 -0
  342. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +541 -0
  343. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +5282 -0
  344. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +16 -0
  345. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +13 -0
  346. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +20 -0
  347. data/yapper.gemspec +24 -0
  348. metadata +458 -0
@@ -0,0 +1,65 @@
1
+ #import <Foundation/Foundation.h>
2
+ #import "DDLog.h"
3
+
4
+ @class ContextFilterLogFormatter;
5
+
6
+ /**
7
+ * Welcome to Cocoa Lumberjack!
8
+ *
9
+ * The project page has a wealth of documentation if you have any questions.
10
+ * https://github.com/robbiehanson/CocoaLumberjack
11
+ *
12
+ * If you're new to the project you may wish to read the "Getting Started" page.
13
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
14
+ *
15
+ *
16
+ * This class provides a log formatter that filters log statements from a logging context not on the whitelist.
17
+ *
18
+ * A log formatter can be added to any logger to format and/or filter its output.
19
+ * You can learn more about log formatters here:
20
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters
21
+ *
22
+ * You can learn more about logging context's here:
23
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext
24
+ *
25
+ * But here's a quick overview / refresher:
26
+ *
27
+ * Every log statement has a logging context.
28
+ * These come from the underlying logging macros defined in DDLog.h.
29
+ * The default logging context is zero.
30
+ * You can define multiple logging context's for use in your application.
31
+ * For example, logically separate parts of your app each have a different logging context.
32
+ * Also 3rd party frameworks that make use of Lumberjack generally use their own dedicated logging context.
33
+ **/
34
+ @interface ContextWhitelistFilterLogFormatter : NSObject <DDLogFormatter>
35
+
36
+ - (id)init;
37
+
38
+ - (void)addToWhitelist:(int)loggingContext;
39
+ - (void)removeFromWhitelist:(int)loggingContext;
40
+
41
+ - (NSArray *)whitelist;
42
+
43
+ - (BOOL)isOnWhitelist:(int)loggingContext;
44
+
45
+ @end
46
+
47
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
48
+ #pragma mark -
49
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
50
+
51
+ /**
52
+ * This class provides a log formatter that filters log statements from a logging context on the blacklist.
53
+ **/
54
+ @interface ContextBlacklistFilterLogFormatter : NSObject <DDLogFormatter>
55
+
56
+ - (id)init;
57
+
58
+ - (void)addToBlacklist:(int)loggingContext;
59
+ - (void)removeFromBlacklist:(int)loggingContext;
60
+
61
+ - (NSArray *)blacklist;
62
+
63
+ - (BOOL)isOnBlacklist:(int)loggingContext;
64
+
65
+ @end
@@ -0,0 +1,191 @@
1
+ #import "ContextFilterLogFormatter.h"
2
+ #import <libkern/OSAtomic.h>
3
+
4
+ /**
5
+ * Welcome to Cocoa Lumberjack!
6
+ *
7
+ * The project page has a wealth of documentation if you have any questions.
8
+ * https://github.com/robbiehanson/CocoaLumberjack
9
+ *
10
+ * If you're new to the project you may wish to read the "Getting Started" wiki.
11
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
12
+ **/
13
+
14
+ #if ! __has_feature(objc_arc)
15
+ #warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
16
+ #endif
17
+
18
+ @interface LoggingContextSet : NSObject
19
+
20
+ - (void)addToSet:(int)loggingContext;
21
+ - (void)removeFromSet:(int)loggingContext;
22
+
23
+ - (NSArray *)currentSet;
24
+
25
+ - (BOOL)isInSet:(int)loggingContext;
26
+
27
+ @end
28
+
29
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
30
+ #pragma mark -
31
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
32
+
33
+ @implementation ContextWhitelistFilterLogFormatter
34
+ {
35
+ LoggingContextSet *contextSet;
36
+ }
37
+
38
+ - (id)init
39
+ {
40
+ if ((self = [super init]))
41
+ {
42
+ contextSet = [[LoggingContextSet alloc] init];
43
+ }
44
+ return self;
45
+ }
46
+
47
+
48
+ - (void)addToWhitelist:(int)loggingContext
49
+ {
50
+ [contextSet addToSet:loggingContext];
51
+ }
52
+
53
+ - (void)removeFromWhitelist:(int)loggingContext
54
+ {
55
+ [contextSet removeFromSet:loggingContext];
56
+ }
57
+
58
+ - (NSArray *)whitelist
59
+ {
60
+ return [contextSet currentSet];
61
+ }
62
+
63
+ - (BOOL)isOnWhitelist:(int)loggingContext
64
+ {
65
+ return [contextSet isInSet:loggingContext];
66
+ }
67
+
68
+ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage
69
+ {
70
+ if ([self isOnWhitelist:logMessage->logContext])
71
+ return logMessage->logMsg;
72
+ else
73
+ return nil;
74
+ }
75
+
76
+ @end
77
+
78
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
79
+ #pragma mark -
80
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
81
+
82
+ @implementation ContextBlacklistFilterLogFormatter
83
+ {
84
+ LoggingContextSet *contextSet;
85
+ }
86
+
87
+ - (id)init
88
+ {
89
+ if ((self = [super init]))
90
+ {
91
+ contextSet = [[LoggingContextSet alloc] init];
92
+ }
93
+ return self;
94
+ }
95
+
96
+
97
+ - (void)addToBlacklist:(int)loggingContext
98
+ {
99
+ [contextSet addToSet:loggingContext];
100
+ }
101
+
102
+ - (void)removeFromBlacklist:(int)loggingContext
103
+ {
104
+ [contextSet removeFromSet:loggingContext];
105
+ }
106
+
107
+ - (NSArray *)blacklist
108
+ {
109
+ return [contextSet currentSet];
110
+ }
111
+
112
+ - (BOOL)isOnBlacklist:(int)loggingContext
113
+ {
114
+ return [contextSet isInSet:loggingContext];
115
+ }
116
+
117
+ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage
118
+ {
119
+ if ([self isOnBlacklist:logMessage->logContext])
120
+ return nil;
121
+ else
122
+ return logMessage->logMsg;
123
+ }
124
+
125
+ @end
126
+
127
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
128
+ #pragma mark -
129
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
130
+
131
+ @implementation LoggingContextSet
132
+ {
133
+ OSSpinLock lock;
134
+ NSMutableSet *set;
135
+ }
136
+
137
+ - (id)init
138
+ {
139
+ if ((self = [super init]))
140
+ {
141
+ set = [[NSMutableSet alloc] init];
142
+ }
143
+ return self;
144
+ }
145
+
146
+
147
+ - (void)addToSet:(int)loggingContext
148
+ {
149
+ OSSpinLockLock(&lock);
150
+ {
151
+ [set addObject:@(loggingContext)];
152
+ }
153
+ OSSpinLockUnlock(&lock);
154
+ }
155
+
156
+ - (void)removeFromSet:(int)loggingContext
157
+ {
158
+ OSSpinLockLock(&lock);
159
+ {
160
+ [set removeObject:@(loggingContext)];
161
+ }
162
+ OSSpinLockUnlock(&lock);
163
+ }
164
+
165
+ - (NSArray *)currentSet
166
+ {
167
+ NSArray *result = nil;
168
+
169
+ OSSpinLockLock(&lock);
170
+ {
171
+ result = [set allObjects];
172
+ }
173
+ OSSpinLockUnlock(&lock);
174
+
175
+ return result;
176
+ }
177
+
178
+ - (BOOL)isInSet:(int)loggingContext
179
+ {
180
+ BOOL result = NO;
181
+
182
+ OSSpinLockLock(&lock);
183
+ {
184
+ result = [set containsObject:@(loggingContext)];
185
+ }
186
+ OSSpinLockUnlock(&lock);
187
+
188
+ return result;
189
+ }
190
+
191
+ @end
@@ -0,0 +1,116 @@
1
+ #import <Foundation/Foundation.h>
2
+ #import <libkern/OSAtomic.h>
3
+ #import "DDLog.h"
4
+
5
+
6
+ /**
7
+ * Welcome to Cocoa Lumberjack!
8
+ *
9
+ * The project page has a wealth of documentation if you have any questions.
10
+ * https://github.com/robbiehanson/CocoaLumberjack
11
+ *
12
+ * If you're new to the project you may wish to read the "Getting Started" page.
13
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
14
+ *
15
+ *
16
+ * This class provides a log formatter that prints the dispatch_queue label instead of the mach_thread_id.
17
+ *
18
+ * A log formatter can be added to any logger to format and/or filter its output.
19
+ * You can learn more about log formatters here:
20
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters
21
+ *
22
+ * A typical NSLog (or DDTTYLogger) prints detailed info as [<process_id>:<thread_id>].
23
+ * For example:
24
+ *
25
+ * 2011-10-17 20:21:45.435 AppName[19928:5207] Your log message here
26
+ *
27
+ * Where:
28
+ * - 19928 = process id
29
+ * - 5207 = thread id (mach_thread_id printed in hex)
30
+ *
31
+ * When using grand central dispatch (GCD), this information is less useful.
32
+ * This is because a single serial dispatch queue may be run on any thread from an internally managed thread pool.
33
+ * For example:
34
+ *
35
+ * 2011-10-17 20:32:31.111 AppName[19954:4d07] Message from my_serial_dispatch_queue
36
+ * 2011-10-17 20:32:31.112 AppName[19954:5207] Message from my_serial_dispatch_queue
37
+ * 2011-10-17 20:32:31.113 AppName[19954:2c55] Message from my_serial_dispatch_queue
38
+ *
39
+ * This formatter allows you to replace the standard [box:info] with the dispatch_queue name.
40
+ * For example:
41
+ *
42
+ * 2011-10-17 20:32:31.111 AppName[img-scaling] Message from my_serial_dispatch_queue
43
+ * 2011-10-17 20:32:31.112 AppName[img-scaling] Message from my_serial_dispatch_queue
44
+ * 2011-10-17 20:32:31.113 AppName[img-scaling] Message from my_serial_dispatch_queue
45
+ *
46
+ * If the dispatch_queue doesn't have a set name, then it falls back to the thread name.
47
+ * If the current thread doesn't have a set name, then it falls back to the mach_thread_id in hex (like normal).
48
+ *
49
+ * Note: If manually creating your own background threads (via NSThread/alloc/init or NSThread/detachNeThread),
50
+ * you can use [[NSThread currentThread] setName:(NSString *)].
51
+ **/
52
+ @interface DispatchQueueLogFormatter : NSObject <DDLogFormatter> {
53
+ @protected
54
+
55
+ NSString *dateFormatString;
56
+ }
57
+
58
+ /**
59
+ * Standard init method.
60
+ * Configure using properties as desired.
61
+ **/
62
+ - (id)init;
63
+
64
+ /**
65
+ * The minQueueLength restricts the minimum size of the [detail box].
66
+ * If the minQueueLength is set to 0, there is no restriction.
67
+ *
68
+ * For example, say a dispatch_queue has a label of "diskIO":
69
+ *
70
+ * If the minQueueLength is 0: [diskIO]
71
+ * If the minQueueLength is 4: [diskIO]
72
+ * If the minQueueLength is 5: [diskIO]
73
+ * If the minQueueLength is 6: [diskIO]
74
+ * If the minQueueLength is 7: [diskIO ]
75
+ * If the minQueueLength is 8: [diskIO ]
76
+ *
77
+ * The default minQueueLength is 0 (no minimum, so [detail box] won't be padded).
78
+ *
79
+ * If you want every [detail box] to have the exact same width,
80
+ * set both minQueueLength and maxQueueLength to the same value.
81
+ **/
82
+ @property (assign) NSUInteger minQueueLength;
83
+
84
+ /**
85
+ * The maxQueueLength restricts the number of characters that will be inside the [detail box].
86
+ * If the maxQueueLength is 0, there is no restriction.
87
+ *
88
+ * For example, say a dispatch_queue has a label of "diskIO":
89
+ *
90
+ * If the maxQueueLength is 0: [diskIO]
91
+ * If the maxQueueLength is 4: [disk]
92
+ * If the maxQueueLength is 5: [diskI]
93
+ * If the maxQueueLength is 6: [diskIO]
94
+ * If the maxQueueLength is 7: [diskIO]
95
+ * If the maxQueueLength is 8: [diskIO]
96
+ *
97
+ * The default maxQueueLength is 0 (no maximum, so [detail box] won't be truncated).
98
+ *
99
+ * If you want every [detail box] to have the exact same width,
100
+ * set both minQueueLength and maxQueueLength to the same value.
101
+ **/
102
+ @property (assign) NSUInteger maxQueueLength;
103
+
104
+ /**
105
+ * Sometimes queue labels have long names like "com.apple.main-queue",
106
+ * but you'd prefer something shorter like simply "main".
107
+ *
108
+ * This method allows you to set such preferred replacements.
109
+ * The above example is set by default.
110
+ *
111
+ * To remove/undo a previous replacement, invoke this method with nil for the 'shortLabel' parameter.
112
+ **/
113
+ - (NSString *)replacementStringForQueueLabel:(NSString *)longLabel;
114
+ - (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel;
115
+
116
+ @end
@@ -0,0 +1,251 @@
1
+ #import "DispatchQueueLogFormatter.h"
2
+ #import <libkern/OSAtomic.h>
3
+
4
+ /**
5
+ * Welcome to Cocoa Lumberjack!
6
+ *
7
+ * The project page has a wealth of documentation if you have any questions.
8
+ * https://github.com/robbiehanson/CocoaLumberjack
9
+ *
10
+ * If you're new to the project you may wish to read the "Getting Started" wiki.
11
+ * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
12
+ **/
13
+
14
+ #if ! __has_feature(objc_arc)
15
+ #warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
16
+ #endif
17
+
18
+
19
+ @implementation DispatchQueueLogFormatter
20
+ {
21
+ int32_t atomicLoggerCount;
22
+ NSDateFormatter *threadUnsafeDateFormatter; // Use [self stringFromDate]
23
+
24
+ OSSpinLock lock;
25
+
26
+ NSUInteger _minQueueLength; // _prefix == Only access via atomic property
27
+ NSUInteger _maxQueueLength; // _prefix == Only access via atomic property
28
+ NSMutableDictionary *_replacements; // _prefix == Only access from within spinlock
29
+ }
30
+
31
+ - (id)init
32
+ {
33
+ if ((self = [super init]))
34
+ {
35
+ dateFormatString = @"yyyy-MM-dd HH:mm:ss:SSS";
36
+
37
+ atomicLoggerCount = 0;
38
+ threadUnsafeDateFormatter = nil;
39
+
40
+ _minQueueLength = 0;
41
+ _maxQueueLength = 0;
42
+ _replacements = [[NSMutableDictionary alloc] init];
43
+
44
+ // Set default replacements:
45
+
46
+ [_replacements setObject:@"main" forKey:@"com.apple.main-thread"];
47
+ }
48
+ return self;
49
+ }
50
+
51
+
52
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
53
+ #pragma mark Configuration
54
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
55
+
56
+ @synthesize minQueueLength = _minQueueLength;
57
+ @synthesize maxQueueLength = _maxQueueLength;
58
+
59
+ - (NSString *)replacementStringForQueueLabel:(NSString *)longLabel
60
+ {
61
+ NSString *result = nil;
62
+
63
+ OSSpinLockLock(&lock);
64
+ {
65
+ result = [_replacements objectForKey:longLabel];
66
+ }
67
+ OSSpinLockUnlock(&lock);
68
+
69
+ return result;
70
+ }
71
+
72
+ - (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel
73
+ {
74
+ OSSpinLockLock(&lock);
75
+ {
76
+ if (shortLabel)
77
+ [_replacements setObject:shortLabel forKey:longLabel];
78
+ else
79
+ [_replacements removeObjectForKey:longLabel];
80
+ }
81
+ OSSpinLockUnlock(&lock);
82
+ }
83
+
84
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
85
+ #pragma mark DDLogFormatter
86
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
87
+
88
+ - (NSString *)stringFromDate:(NSDate *)date
89
+ {
90
+ int32_t loggerCount = OSAtomicAdd32(0, &atomicLoggerCount);
91
+
92
+ if (loggerCount <= 1)
93
+ {
94
+ // Single-threaded mode.
95
+
96
+ if (threadUnsafeDateFormatter == nil)
97
+ {
98
+ threadUnsafeDateFormatter = [[NSDateFormatter alloc] init];
99
+ [threadUnsafeDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
100
+ [threadUnsafeDateFormatter setDateFormat:dateFormatString];
101
+ }
102
+
103
+ return [threadUnsafeDateFormatter stringFromDate:date];
104
+ }
105
+ else
106
+ {
107
+ // Multi-threaded mode.
108
+ // NSDateFormatter is NOT thread-safe.
109
+
110
+ NSString *key = @"DispatchQueueLogFormatter_NSDateFormatter";
111
+
112
+ NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary];
113
+ NSDateFormatter *dateFormatter = [threadDictionary objectForKey:key];
114
+
115
+ if (dateFormatter == nil)
116
+ {
117
+ dateFormatter = [[NSDateFormatter alloc] init];
118
+ [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
119
+ [dateFormatter setDateFormat:dateFormatString];
120
+
121
+ [threadDictionary setObject:dateFormatter forKey:key];
122
+ }
123
+
124
+ return [dateFormatter stringFromDate:date];
125
+ }
126
+ }
127
+
128
+ - (NSString *)queueThreadLabelForLogMessage:(DDLogMessage *)logMessage
129
+ {
130
+ // As per the DDLogFormatter contract, this method is always invoked on the same thread/dispatch_queue
131
+
132
+ NSUInteger minQueueLength = self.minQueueLength;
133
+ NSUInteger maxQueueLength = self.maxQueueLength;
134
+
135
+ // Get the name of the queue, thread, or machID (whichever we are to use).
136
+
137
+ NSString *queueThreadLabel = nil;
138
+
139
+ BOOL useQueueLabel = YES;
140
+ BOOL useThreadName = NO;
141
+
142
+ if (logMessage->queueLabel)
143
+ {
144
+ // If you manually create a thread, it's dispatch_queue will have one of the thread names below.
145
+ // Since all such threads have the same name, we'd prefer to use the threadName or the machThreadID.
146
+
147
+ char *names[] = { "com.apple.root.low-priority",
148
+ "com.apple.root.default-priority",
149
+ "com.apple.root.high-priority",
150
+ "com.apple.root.low-overcommit-priority",
151
+ "com.apple.root.default-overcommit-priority",
152
+ "com.apple.root.high-overcommit-priority" };
153
+
154
+ int length = sizeof(names) / sizeof(char *);
155
+
156
+ int i;
157
+ for (i = 0; i < length; i++)
158
+ {
159
+ if (strcmp(logMessage->queueLabel, names[i]) == 0)
160
+ {
161
+ useQueueLabel = NO;
162
+ useThreadName = [logMessage->threadName length] > 0;
163
+ break;
164
+ }
165
+ }
166
+ }
167
+ else
168
+ {
169
+ useQueueLabel = NO;
170
+ useThreadName = [logMessage->threadName length] > 0;
171
+ }
172
+
173
+ if (useQueueLabel || useThreadName)
174
+ {
175
+ NSString *fullLabel;
176
+ NSString *abrvLabel;
177
+
178
+ if (useQueueLabel)
179
+ fullLabel = @(logMessage->queueLabel);
180
+ else
181
+ fullLabel = logMessage->threadName;
182
+
183
+ OSSpinLockLock(&lock);
184
+ {
185
+ abrvLabel = [_replacements objectForKey:fullLabel];
186
+ }
187
+ OSSpinLockUnlock(&lock);
188
+
189
+ if (abrvLabel)
190
+ queueThreadLabel = abrvLabel;
191
+ else
192
+ queueThreadLabel = fullLabel;
193
+ }
194
+ else
195
+ {
196
+ queueThreadLabel = [NSString stringWithFormat:@"%x", logMessage->machThreadID];
197
+ }
198
+
199
+ // Now use the thread label in the output
200
+
201
+ NSUInteger labelLength = [queueThreadLabel length];
202
+
203
+ // labelLength > maxQueueLength : truncate
204
+ // labelLength < minQueueLength : padding
205
+ // : exact
206
+
207
+ if ((maxQueueLength > 0) && (labelLength > maxQueueLength))
208
+ {
209
+ // Truncate
210
+
211
+ return [queueThreadLabel substringToIndex:maxQueueLength];
212
+ }
213
+ else if (labelLength < minQueueLength)
214
+ {
215
+ // Padding
216
+
217
+ NSUInteger numSpaces = minQueueLength - labelLength;
218
+
219
+ char spaces[numSpaces + 1];
220
+ memset(spaces, ' ', numSpaces);
221
+ spaces[numSpaces] = '\0';
222
+
223
+ return [NSString stringWithFormat:@"%@%s", queueThreadLabel, spaces];
224
+ }
225
+ else
226
+ {
227
+ // Exact
228
+
229
+ return queueThreadLabel;
230
+ }
231
+ }
232
+
233
+ - (NSString *)formatLogMessage:(DDLogMessage *)logMessage
234
+ {
235
+ NSString *timestamp = [self stringFromDate:(logMessage->timestamp)];
236
+ NSString *queueThreadLabel = [self queueThreadLabelForLogMessage:logMessage];
237
+
238
+ return [NSString stringWithFormat:@"%@ [%@] %@", timestamp, queueThreadLabel, logMessage->logMsg];
239
+ }
240
+
241
+ - (void)didAddToLogger:(id <DDLogger>)logger
242
+ {
243
+ OSAtomicIncrement32(&atomicLoggerCount);
244
+ }
245
+
246
+ - (void)willRemoveFromLogger:(id <DDLogger>)logger
247
+ {
248
+ OSAtomicDecrement32(&atomicLoggerCount);
249
+ }
250
+
251
+ @end