mack-notifier 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (288) hide show
  1. data/lib/gems.rb +13 -0
  2. data/lib/gems/tmail-1.2.3.1/ext/Makefile +20 -0
  3. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/MANIFEST +4 -0
  4. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/depend +1 -0
  5. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/extconf.rb +33 -0
  6. data/lib/gems/tmail-1.2.3.1/ext/tmailscanner/tmail/tmailscanner.c +583 -0
  7. data/lib/gems/tmail-1.2.3.1/lib/tmail.rb +5 -0
  8. data/lib/gems/tmail-1.2.3.1/lib/tmail/Makefile +18 -0
  9. data/lib/gems/tmail-1.2.3.1/lib/tmail/address.rb +426 -0
  10. data/lib/gems/tmail-1.2.3.1/lib/tmail/attachments.rb +46 -0
  11. data/lib/gems/tmail-1.2.3.1/lib/tmail/base64.rb +46 -0
  12. data/lib/gems/tmail-1.2.3.1/lib/tmail/compat.rb +41 -0
  13. data/lib/gems/tmail-1.2.3.1/lib/tmail/config.rb +67 -0
  14. data/lib/gems/tmail-1.2.3.1/lib/tmail/core_extensions.rb +63 -0
  15. data/lib/gems/tmail-1.2.3.1/lib/tmail/encode.rb +581 -0
  16. data/lib/gems/tmail-1.2.3.1/lib/tmail/header.rb +960 -0
  17. data/lib/gems/tmail-1.2.3.1/lib/tmail/index.rb +9 -0
  18. data/lib/gems/tmail-1.2.3.1/lib/tmail/interface.rb +1125 -0
  19. data/lib/gems/tmail-1.2.3.1/lib/tmail/loader.rb +3 -0
  20. data/lib/gems/tmail-1.2.3.1/lib/tmail/mail.rb +578 -0
  21. data/lib/gems/tmail-1.2.3.1/lib/tmail/mailbox.rb +495 -0
  22. data/lib/gems/tmail-1.2.3.1/lib/tmail/main.rb +6 -0
  23. data/lib/gems/tmail-1.2.3.1/lib/tmail/mbox.rb +3 -0
  24. data/lib/gems/tmail-1.2.3.1/lib/tmail/net.rb +248 -0
  25. data/lib/gems/tmail-1.2.3.1/lib/tmail/obsolete.rb +132 -0
  26. data/lib/gems/tmail-1.2.3.1/lib/tmail/parser.rb +1476 -0
  27. data/lib/gems/tmail-1.2.3.1/lib/tmail/parser.y +381 -0
  28. data/lib/gems/tmail-1.2.3.1/lib/tmail/port.rb +379 -0
  29. data/lib/gems/tmail-1.2.3.1/lib/tmail/quoting.rb +118 -0
  30. data/lib/gems/tmail-1.2.3.1/lib/tmail/require_arch.rb +58 -0
  31. data/lib/gems/tmail-1.2.3.1/lib/tmail/scanner.rb +49 -0
  32. data/lib/gems/tmail-1.2.3.1/lib/tmail/scanner_r.rb +261 -0
  33. data/lib/gems/tmail-1.2.3.1/lib/tmail/stringio.rb +280 -0
  34. data/lib/gems/tmail-1.2.3.1/lib/tmail/utils.rb +337 -0
  35. data/lib/gems/tmail-1.2.3.1/lib/tmail/version.rb +39 -0
  36. data/lib/gems/tmail-1.2.3.1/meta/MANIFEST +128 -0
  37. data/lib/gems/tmail-1.2.3.1/meta/VERSION +1 -0
  38. data/lib/gems/tmail-1.2.3.1/meta/project.yaml +30 -0
  39. data/lib/gems/tmail-1.2.3.1/meta/unixname +1 -0
  40. data/lib/gems/validatable-1.6.7/README +118 -0
  41. data/lib/gems/validatable-1.6.7/lib/child_validation.rb +15 -0
  42. data/lib/gems/validatable-1.6.7/lib/errors.rb +74 -0
  43. data/lib/gems/validatable-1.6.7/lib/included_validation.rb +9 -0
  44. data/lib/gems/validatable-1.6.7/lib/macros.rb +283 -0
  45. data/lib/gems/validatable-1.6.7/lib/object_extension.rb +21 -0
  46. data/lib/gems/validatable-1.6.7/lib/requireable.rb +26 -0
  47. data/lib/gems/validatable-1.6.7/lib/understandable.rb +31 -0
  48. data/lib/gems/validatable-1.6.7/lib/validatable.rb +19 -0
  49. data/lib/gems/validatable-1.6.7/lib/validatable_class_methods.rb +85 -0
  50. data/lib/gems/validatable-1.6.7/lib/validatable_instance_methods.rb +106 -0
  51. data/lib/gems/validatable-1.6.7/lib/validations/validates_acceptance_of.rb +11 -0
  52. data/lib/gems/validatable-1.6.7/lib/validations/validates_confirmation_of.rb +15 -0
  53. data/lib/gems/validatable-1.6.7/lib/validations/validates_each.rb +14 -0
  54. data/lib/gems/validatable-1.6.7/lib/validations/validates_format_of.rb +13 -0
  55. data/lib/gems/validatable-1.6.7/lib/validations/validates_length_of.rb +25 -0
  56. data/lib/gems/validatable-1.6.7/lib/validations/validates_numericality_of.rb +16 -0
  57. data/lib/gems/validatable-1.6.7/lib/validations/validates_presence_of.rb +13 -0
  58. data/lib/gems/validatable-1.6.7/lib/validations/validates_true_for.rb +13 -0
  59. data/lib/gems/validatable-1.6.7/lib/validations/validation_base.rb +88 -0
  60. data/lib/gems/validatable-1.6.7/rakefile.rb +50 -0
  61. data/lib/gems/validatable-1.6.7/test/all_tests.rb +1 -0
  62. data/lib/gems/validatable-1.6.7/test/functional/validatable_test.rb +437 -0
  63. data/lib/gems/validatable-1.6.7/test/functional/validates_acceptance_of_test.rb +16 -0
  64. data/lib/gems/validatable-1.6.7/test/functional/validates_confirmation_of_test.rb +56 -0
  65. data/lib/gems/validatable-1.6.7/test/functional/validates_each_test.rb +14 -0
  66. data/lib/gems/validatable-1.6.7/test/functional/validates_format_of_test.rb +34 -0
  67. data/lib/gems/validatable-1.6.7/test/functional/validates_length_of_test.rb +64 -0
  68. data/lib/gems/validatable-1.6.7/test/functional/validates_numericality_of_test.rb +57 -0
  69. data/lib/gems/validatable-1.6.7/test/functional/validates_presence_of_test.rb +16 -0
  70. data/lib/gems/validatable-1.6.7/test/functional/validates_true_for_test.rb +27 -0
  71. data/lib/gems/validatable-1.6.7/test/test_helper.rb +33 -0
  72. data/lib/gems/validatable-1.6.7/test/unit/errors_test.rb +64 -0
  73. data/lib/gems/validatable-1.6.7/test/unit/understandable_test.rb +19 -0
  74. data/lib/gems/validatable-1.6.7/test/unit/validatable_test.rb +38 -0
  75. data/lib/gems/validatable-1.6.7/test/unit/validates_acceptance_of_test.rb +21 -0
  76. data/lib/gems/validatable-1.6.7/test/unit/validates_confirmation_of_test.rb +64 -0
  77. data/lib/gems/validatable-1.6.7/test/unit/validates_format_of_test.rb +34 -0
  78. data/lib/gems/validatable-1.6.7/test/unit/validates_length_of_test.rb +75 -0
  79. data/lib/gems/validatable-1.6.7/test/unit/validates_numericality_of_test.rb +52 -0
  80. data/lib/gems/validatable-1.6.7/test/unit/validates_presence_of_test.rb +25 -0
  81. data/lib/gems/validatable-1.6.7/test/unit/validates_true_for_test.rb +29 -0
  82. data/lib/gems/validatable-1.6.7/test/unit/validation_base_test.rb +52 -0
  83. data/lib/gems/xmpp4r-0.4/CHANGELOG +83 -0
  84. data/lib/gems/xmpp4r-0.4/COPYING +340 -0
  85. data/lib/gems/xmpp4r-0.4/LICENSE +59 -0
  86. data/lib/gems/xmpp4r-0.4/README.rdoc +110 -0
  87. data/lib/gems/xmpp4r-0.4/README_ruby19.txt +43 -0
  88. data/lib/gems/xmpp4r-0.4/Rakefile +262 -0
  89. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  90. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  91. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  92. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  93. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  94. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  95. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  96. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  97. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  98. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  99. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  100. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  101. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  102. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  103. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  104. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  105. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  106. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  107. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  108. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  109. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  110. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
  111. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  112. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  113. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  114. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  115. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  116. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  117. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  118. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  119. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  120. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  121. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  122. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  123. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  124. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  125. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  126. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  127. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  128. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  129. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  130. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  131. data/lib/gems/xmpp4r-0.4/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  132. data/lib/gems/xmpp4r-0.4/lib/xmpp4r.rb +116 -0
  133. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/base64.rb +32 -0
  134. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams.rb +15 -0
  135. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  136. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  137. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  138. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
  139. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  140. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  141. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  142. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  143. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
  144. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
  145. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  146. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  147. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/callbacks.rb +124 -0
  148. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps.rb +1 -0
  149. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/c.rb +53 -0
  150. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/helper/generator.rb +160 -0
  151. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/caps/helper/helper.rb +87 -0
  152. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/client.rb +317 -0
  153. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/command/helper/responder.rb +53 -0
  154. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/command/iq/command.rb +154 -0
  155. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/component.rb +103 -0
  156. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/connection.rb +219 -0
  157. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/dataforms.rb +5 -0
  158. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/dataforms/x/data.rb +297 -0
  159. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/debuglog.rb +42 -0
  160. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/delay.rb +5 -0
  161. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/delay/x/delay.rb +99 -0
  162. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery.rb +7 -0
  163. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  164. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  165. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  166. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/errors.rb +281 -0
  167. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/feature_negotiation.rb +5 -0
  168. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  169. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/framework/base.rb +55 -0
  170. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/framework/bot.rb +148 -0
  171. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/httpbinding.rb +5 -0
  172. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/httpbinding/client.rb +285 -0
  173. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/idgenerator.rb +37 -0
  174. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/iq.rb +221 -0
  175. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/jid.rb +167 -0
  176. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/message.rb +148 -0
  177. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc.rb +14 -0
  178. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  179. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  180. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  181. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  182. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  183. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  184. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/item.rb +143 -0
  185. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/muc.rb +70 -0
  186. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  187. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  188. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/presence.rb +232 -0
  189. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub.rb +8 -0
  190. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  191. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/event.rb +49 -0
  192. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/item.rb +35 -0
  193. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/items.rb +44 -0
  194. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  195. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/publish.rb +24 -0
  196. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  197. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  198. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  199. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
  200. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  201. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
  202. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  203. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/query.rb +15 -0
  204. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rexmladdons.rb +151 -0
  205. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster.rb +7 -0
  206. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/helper/roster.rb +519 -0
  207. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/iq/roster.rb +215 -0
  208. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/roster/x/roster.rb +138 -0
  209. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc.rb +2 -0
  210. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/client.rb +123 -0
  211. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/server.rb +74 -0
  212. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  213. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  214. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/sasl.rb +237 -0
  215. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/semaphore.rb +38 -0
  216. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/stream.rb +497 -0
  217. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/streamparser.rb +77 -0
  218. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune.rb +2 -0
  219. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune/helper/helper.rb +58 -0
  220. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/tune/tune.rb +113 -0
  221. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard.rb +6 -0
  222. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  223. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  224. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version.rb +7 -0
  225. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/helper/responder.rb +72 -0
  226. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  227. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/version/iq/version.rb +105 -0
  228. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/x.rb +37 -0
  229. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xhtml.rb +1 -0
  230. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xhtml/html.rb +115 -0
  231. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmpp4r.rb +18 -0
  232. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmppelement.rb +168 -0
  233. data/lib/gems/xmpp4r-0.4/lib/xmpp4r/xmppstanza.rb +162 -0
  234. data/lib/gems/xmpp4r-0.4/setup.rb +1586 -0
  235. data/lib/gems/xmpp4r-0.4/test/bytestreams/tc_ibb.rb +186 -0
  236. data/lib/gems/xmpp4r-0.4/test/bytestreams/tc_socks5bytestreams.rb +113 -0
  237. data/lib/gems/xmpp4r-0.4/test/caps/tc_helper.rb +156 -0
  238. data/lib/gems/xmpp4r-0.4/test/dataforms/tc_data.rb +81 -0
  239. data/lib/gems/xmpp4r-0.4/test/delay/tc_xdelay.rb +51 -0
  240. data/lib/gems/xmpp4r-0.4/test/discovery/tc_responder.rb +91 -0
  241. data/lib/gems/xmpp4r-0.4/test/lib/assert_equal_xml.rb +14 -0
  242. data/lib/gems/xmpp4r-0.4/test/lib/clienttester.rb +120 -0
  243. data/lib/gems/xmpp4r-0.4/test/muc/tc_muc_mucclient.rb +830 -0
  244. data/lib/gems/xmpp4r-0.4/test/muc/tc_muc_simplemucclient.rb +114 -0
  245. data/lib/gems/xmpp4r-0.4/test/muc/tc_mucowner.rb +50 -0
  246. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_helper.rb +662 -0
  247. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_nodeconfig.rb +54 -0
  248. data/lib/gems/xmpp4r-0.4/test/pubsub/tc_subscriptionconfig.rb +41 -0
  249. data/lib/gems/xmpp4r-0.4/test/roster/tc_helper.rb +514 -0
  250. data/lib/gems/xmpp4r-0.4/test/roster/tc_iqqueryroster.rb +173 -0
  251. data/lib/gems/xmpp4r-0.4/test/roster/tc_xroster.rb +73 -0
  252. data/lib/gems/xmpp4r-0.4/test/rpc/tc_helper.rb +96 -0
  253. data/lib/gems/xmpp4r-0.4/test/tc_callbacks.rb +129 -0
  254. data/lib/gems/xmpp4r-0.4/test/tc_class_names.rb +146 -0
  255. data/lib/gems/xmpp4r-0.4/test/tc_client.rb +30 -0
  256. data/lib/gems/xmpp4r-0.4/test/tc_errors.rb +146 -0
  257. data/lib/gems/xmpp4r-0.4/test/tc_idgenerator.rb +30 -0
  258. data/lib/gems/xmpp4r-0.4/test/tc_iq.rb +113 -0
  259. data/lib/gems/xmpp4r-0.4/test/tc_iqquery.rb +31 -0
  260. data/lib/gems/xmpp4r-0.4/test/tc_jid.rb +204 -0
  261. data/lib/gems/xmpp4r-0.4/test/tc_message.rb +116 -0
  262. data/lib/gems/xmpp4r-0.4/test/tc_presence.rb +150 -0
  263. data/lib/gems/xmpp4r-0.4/test/tc_rexml.rb +139 -0
  264. data/lib/gems/xmpp4r-0.4/test/tc_stream.rb +229 -0
  265. data/lib/gems/xmpp4r-0.4/test/tc_streamComponent.rb +95 -0
  266. data/lib/gems/xmpp4r-0.4/test/tc_streamError.rb +131 -0
  267. data/lib/gems/xmpp4r-0.4/test/tc_streamSend.rb +59 -0
  268. data/lib/gems/xmpp4r-0.4/test/tc_streamparser.rb +112 -0
  269. data/lib/gems/xmpp4r-0.4/test/tc_xmppstanza.rb +135 -0
  270. data/lib/gems/xmpp4r-0.4/test/ts_xmpp4r.rb +53 -0
  271. data/lib/gems/xmpp4r-0.4/test/tune/tc_helper_recv.rb +84 -0
  272. data/lib/gems/xmpp4r-0.4/test/tune/tc_helper_send.rb +74 -0
  273. data/lib/gems/xmpp4r-0.4/test/tune/tc_tune.rb +79 -0
  274. data/lib/gems/xmpp4r-0.4/test/vcard/tc_helper.rb +49 -0
  275. data/lib/gems/xmpp4r-0.4/test/vcard/tc_iqvcard.rb +62 -0
  276. data/lib/gems/xmpp4r-0.4/test/version/tc_helper.rb +60 -0
  277. data/lib/gems/xmpp4r-0.4/test/version/tc_iqqueryversion.rb +97 -0
  278. data/lib/gems/xmpp4r-0.4/test/xhtml/tc_html.rb +41 -0
  279. data/lib/gems/xmpp4r-0.4/tools/gen_requires.bash +31 -0
  280. data/lib/gems/xmpp4r-0.4/tools/xmpp4r-gemspec-test.rb +11 -0
  281. data/lib/gems/xmpp4r-0.4/xmpp4r.gemspec +291 -0
  282. data/lib/gems/xmpp4r-simple-0.8.8/CHANGELOG +73 -0
  283. data/lib/gems/xmpp4r-simple-0.8.8/COPYING +281 -0
  284. data/lib/gems/xmpp4r-simple-0.8.8/README +59 -0
  285. data/lib/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb +492 -0
  286. data/lib/gems/xmpp4r-simple-0.8.8/test/test_xmpp4r_simple.rb +242 -0
  287. data/lib/mack-notifier.rb +1 -3
  288. metadata +398 -46
data/lib/gems.rb ADDED
@@ -0,0 +1,13 @@
1
+ path = File.expand_path(File.join(File.dirname(__FILE__), 'gems'))
2
+ Gem.set_paths(path)
3
+
4
+ Dir.glob(File.join(path, '*')).each do |p|
5
+ full_gem_name = File.basename(p)
6
+ version = full_gem_name.match(/([\d\.?]+)/).to_s
7
+ gem_name = full_gem_name.gsub("-#{version}", '')
8
+ $:.unshift(File.join(p, 'lib'))
9
+ begin
10
+ gem gem_name, "~> #{version}"
11
+ rescue Gem::LoadError
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ #
2
+ # ext/tmail/Makefile
3
+ #
4
+
5
+ .PHONY: tmailscanner clean distclean
6
+
7
+ all: tmailscanner
8
+
9
+ tmailscanner: tmailscanner/tmail/Makefile
10
+ cd tmailscanner/tmail; $(MAKE)
11
+
12
+ tmailscanner/tmail/Makefile: tmailscanner/tmail/extconf.rb
13
+ cd tmailscanner/tmail; ruby extconf.rb
14
+
15
+ clean:
16
+ cd tmailscanner/tmail; $(MAKE) clean
17
+
18
+ distclean:
19
+ cd tmailscanner/tmail; $(MAKE) distclean
20
+
@@ -0,0 +1,4 @@
1
+ MANIFEST
2
+ tmailscanner.c
3
+ extconf.rb
4
+ depend
@@ -0,0 +1 @@
1
+ tmailscanner.o: tmailscanner.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h Makefile
@@ -0,0 +1,33 @@
1
+ require 'mkmf'
2
+ require 'rbconfig'
3
+
4
+ extension_name = 'tmailscanner'
5
+
6
+ windows = (/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM)
7
+
8
+ # For now use pure Ruby tmailscanner if on Windows, since
9
+ # most Window's users don't have developer tools needed.
10
+
11
+ if (ENV['NORUBYEXT'] == 'true' || windows)
12
+ if windows
13
+ File.open('make.bat', 'w') do |f|
14
+ f << 'echo Native extension will be omitted.'
15
+ end
16
+ File.open('nmake.bat', 'w') do |f|
17
+ f << 'echo Native extension will be omitted.'
18
+ end
19
+ end
20
+ File.open('Makefile', 'w') do |f|
21
+ f << "all:\n"
22
+ f << "install:\n"
23
+ end
24
+ else
25
+ #dir_config(extension_name)
26
+ if windows && ENV['make'].nil?
27
+ $LIBS += " msvcprt.lib"
28
+ else
29
+ $CFLAGS += " -D_FILE_OFFSET_BITS=64" #???
30
+ end
31
+ create_makefile(extension_name)
32
+ end
33
+
@@ -0,0 +1,583 @@
1
+ /*
2
+
3
+ tmailscanner.c
4
+
5
+ Copyright (c) 1998-2007 Minero Aoki
6
+
7
+ This program is free software.
8
+ You can distribute/modify this program under the terms of
9
+ the GNU Lesser General Public License version 2.1.
10
+
11
+ */
12
+
13
+ #include <stdio.h>
14
+ #ifdef __STDC__
15
+ # include <stdlib.h>
16
+ #endif
17
+
18
+ #include "ruby.h"
19
+ #include "re.h"
20
+
21
+
22
+ #define TMAIL_VERSION "1.2.3"
23
+
24
+ static VALUE TMailScanner;
25
+ static VALUE ScanError;
26
+
27
+ struct scanner
28
+ {
29
+ char *pbeg;
30
+ char *p;
31
+ char *pend;
32
+ unsigned int flags;
33
+ VALUE comments;
34
+ };
35
+
36
+ #define MODE_MIME (1 << 0)
37
+ #define MODE_RECV (1 << 1)
38
+ #define MODE_ISO2022 (1 << 2)
39
+ #define MODE_DEBUG (1 << 4)
40
+
41
+ #define MIME_MODE_P(s) ((s)->flags & MODE_MIME)
42
+ #define RECV_MODE_P(s) ((s)->flags & MODE_RECV)
43
+ #define ISO2022_MODE_P(s) ((s)->flags & MODE_ISO2022)
44
+
45
+ #define GET_SCANNER(val, s) Data_Get_Struct(val, struct scanner, s)
46
+
47
+
48
+ static void
49
+ mails_free(sc)
50
+ struct scanner *sc;
51
+ {
52
+ free(sc);
53
+ }
54
+
55
+ #ifndef StringValue
56
+ # define StringValue(s) Check_Type(str, T_STRING);
57
+ #endif
58
+
59
+ /*
60
+ * Document-method: mails_s_new
61
+ *
62
+ * Creates a new mail
63
+ *
64
+ */
65
+ static VALUE
66
+ mails_s_new(klass, str, ident, cmt)
67
+ VALUE klass, str, ident, cmt;
68
+ {
69
+ struct scanner *sc;
70
+ const char *tmp;
71
+
72
+ sc = ALLOC_N(struct scanner, 1);
73
+
74
+ StringValue(str);
75
+ sc->pbeg = RSTRING(str)->ptr;
76
+ sc->p = sc->pbeg;
77
+ sc->pend = sc->p + RSTRING(str)->len;
78
+
79
+ sc->flags = 0;
80
+ Check_Type(ident, T_SYMBOL);
81
+ tmp = rb_id2name(SYM2ID(ident));
82
+ if (strcmp(tmp, "RECEIVED") == 0) sc->flags |= MODE_RECV;
83
+ else if (strcmp(tmp, "CTYPE") == 0) sc->flags |= MODE_MIME;
84
+ else if (strcmp(tmp, "CENCODING") == 0) sc->flags |= MODE_MIME;
85
+ else if (strcmp(tmp, "CDISPOSITION") == 0) sc->flags |= MODE_MIME;
86
+
87
+ tmp = rb_get_kcode();
88
+ if (strcmp(tmp, "EUC") == 0 || strcmp(tmp, "SJIS") == 0) {
89
+ sc->flags |= MODE_ISO2022;
90
+ }
91
+
92
+ sc->comments = Qnil;
93
+ if (! NIL_P(cmt)) {
94
+ Check_Type(cmt, T_ARRAY);
95
+ sc->comments = cmt;
96
+ }
97
+
98
+ return Data_Wrap_Struct(TMailScanner, 0, mails_free, sc);
99
+ }
100
+
101
+ /*
102
+ * Document-method: mails_debug_get
103
+ *
104
+ * TODO: Documentation needed
105
+ *
106
+ */
107
+ static VALUE
108
+ mails_debug_get(self)
109
+ VALUE self;
110
+ {
111
+ struct scanner *sc;
112
+
113
+ GET_SCANNER(self, sc);
114
+ if (sc->flags & MODE_DEBUG)
115
+ return Qtrue;
116
+ else
117
+ return Qfalse;
118
+ }
119
+
120
+ /*
121
+ * Document-method: mails_debug_set
122
+ *
123
+ * TODO: Documentation needed
124
+ *
125
+ */
126
+ static VALUE
127
+ mails_debug_set(self, flag)
128
+ VALUE self, flag;
129
+ {
130
+ struct scanner *sc;
131
+
132
+ GET_SCANNER(self, sc);
133
+ if (RTEST(flag))
134
+ sc->flags |= MODE_DEBUG;
135
+ else
136
+ sc->flags &= ~MODE_DEBUG;
137
+ return Qnil;
138
+ }
139
+
140
+
141
+ /*
142
+ ----------------------------------------------------------------------
143
+ scanning routines
144
+ ----------------------------------------------------------------------
145
+ */
146
+
147
+ #define ESC '\033'
148
+ #define ATOM_SYMBOLS "_#!$%&'`*+-{|}~^/=?"
149
+ #define TOKEN_SYMBOLS "_#!$%&'`*+-{|}~^."
150
+ #define ATOM_SPECIAL "()<>[]@,;:\"\\."
151
+ #define TOKEN_SPECIAL "()<>[]@,;:\"\\/?="
152
+ #define LWSP " \t\r\n"
153
+
154
+ #define IS_ALPHA(ch) (('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z'))
155
+ #define IS_UPPER(ch) ('A' <= ch && ch <= 'Z')
156
+ #define TO_LOWER(ch) (IS_UPPER(ch) ? ch + 32 : ch)
157
+ #define IS_LWSP(ch) (strchr(LWSP, ch))
158
+ #define IS_DIGIT(ch) ('0' <= ch && ch <= '9')
159
+ #define IS_WORDCHAR(ch, symlist) \
160
+ (IS_ALPHA(ch) || IS_DIGIT(ch) || strchr(symlist, ch))
161
+ #define IS_ATOMCHAR(ch) IS_WORDCHAR(ch, ATOM_SYMBOLS)
162
+ #define IS_TOKENCHAR(ch) IS_WORDCHAR(ch, TOKEN_SYMBOLS)
163
+ #define IS_JCHAR(ch) ismbchar(ch)
164
+
165
+
166
+ /* I know this implement is ugly, but usually useful. */
167
+
168
+ /* skip until "\e(B" (us-ascii) */
169
+ static void
170
+ skip_iso2022jp_string(sc)
171
+ struct scanner *sc;
172
+ {
173
+ for (; sc->p < sc->pend; sc->p++) {
174
+ if (*sc->p == ESC) {
175
+ if (strncmp(sc->p, "\033(B", 3) == 0) {
176
+ sc->p += 3;
177
+ return;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ static void
184
+ skip_japanese_string(sc)
185
+ struct scanner *sc;
186
+ {
187
+ while (sc->p < sc->pend) {
188
+ if (! ismbchar(*sc->p)) return;
189
+ sc->p += mbclen(*sc->p);
190
+ }
191
+ }
192
+
193
+
194
+ #define scan_atom(sc) scan_word(sc, ATOM_SYMBOLS)
195
+ #define scan_token(sc) scan_word(sc, TOKEN_SYMBOLS)
196
+
197
+ static VALUE
198
+ scan_word(sc, syms)
199
+ struct scanner *sc;
200
+ char *syms;
201
+ {
202
+ char *beg = sc->p;
203
+
204
+ while (sc->p < sc->pend) {
205
+ if (ISO2022_MODE_P(sc) && *sc->p == ESC) {
206
+ skip_iso2022jp_string(sc);
207
+ }
208
+ else if (IS_JCHAR(*sc->p)) {
209
+ skip_japanese_string(sc);
210
+ }
211
+ else if (IS_WORDCHAR(*sc->p, syms)) {
212
+ sc->p++;
213
+ }
214
+ else {
215
+ break;
216
+ }
217
+ }
218
+
219
+ return rb_str_new(beg, sc->p - beg);
220
+ }
221
+
222
+
223
+ #define BUFSIZE 256
224
+
225
+ static VALUE
226
+ scan_quoted_word(sc)
227
+ struct scanner *sc;
228
+ {
229
+ char buf[BUFSIZE];
230
+ char *p;
231
+ char *save;
232
+ VALUE result = rb_str_new("", 0);
233
+
234
+ sc->p++; /* discard first dquote */
235
+ p = buf;
236
+ while (sc->p < sc->pend) {
237
+ if (*sc->p == '"') {
238
+ sc->p++; /* discard terminal dquote */
239
+ rb_str_cat(result, buf, p - buf);
240
+ return result;
241
+ }
242
+ if (ISO2022_MODE_P(sc) && *sc->p == ESC) {
243
+ save = sc->p;
244
+ skip_iso2022jp_string(sc);
245
+ while (save < sc->p) {
246
+ *p++ = *save++;
247
+ if (p >= buf + BUFSIZE) {
248
+ /* flush buffer */
249
+ rb_str_cat(result, buf, BUFSIZE);
250
+ p = buf;
251
+ }
252
+ }
253
+ continue;
254
+ }
255
+
256
+ if (*sc->p == '\\')
257
+ sc->p++; /* discard quoting backslash */
258
+ *p++ = *sc->p++;
259
+ if (p >= buf + BUFSIZE) {
260
+ /* flush buffer */
261
+ rb_str_cat(result, buf, BUFSIZE);
262
+ p = buf;
263
+ }
264
+ }
265
+
266
+ rb_raise(ScanError, "unterminated quoted-word");
267
+ return Qnil;
268
+ }
269
+
270
+ static VALUE
271
+ scan_domain_literal(sc)
272
+ struct scanner *sc;
273
+ {
274
+ char buf[BUFSIZE];
275
+ char *p;
276
+ VALUE result = rb_str_new("", 0);
277
+
278
+ p = buf;
279
+ while (sc->p < sc->pend) {
280
+ if (*sc->p == ']') {
281
+ *p++ = *sc->p++;
282
+ rb_str_cat(result, buf, p - buf);
283
+ return result;
284
+ }
285
+
286
+ if (*sc->p == '\\')
287
+ sc->p++; /* discard backslash */
288
+ *p++ = *sc->p++;
289
+ if (p >= buf + BUFSIZE) {
290
+ /* flush buffer */
291
+ rb_str_cat(result, buf, BUFSIZE);
292
+ p = buf;
293
+ }
294
+ }
295
+
296
+ rb_raise(ScanError, "unterminated domain literal");
297
+ return Qnil;
298
+ }
299
+
300
+
301
+ static VALUE
302
+ scan_comment(sc)
303
+ struct scanner *sc;
304
+ {
305
+ int nest = 1;
306
+ char *p;
307
+ VALUE ret = rb_str_new("", 0);
308
+
309
+ sc->p++;
310
+ p = sc->p;
311
+ while (sc->p < sc->pend) {
312
+ if (ISO2022_MODE_P(sc) && *sc->p == ESC) {
313
+ skip_iso2022jp_string(sc);
314
+ }
315
+ else if (IS_JCHAR(*sc->p)) {
316
+ skip_japanese_string(sc);
317
+ }
318
+ else {
319
+ switch (*sc->p) {
320
+ case '(':
321
+ nest++;
322
+ break;
323
+ case ')':
324
+ nest--;
325
+ if (nest == 0) {
326
+ rb_str_cat(ret, p, sc->p - p);
327
+ sc->p++;
328
+ return ret;
329
+ }
330
+ break;
331
+ case '\\':
332
+ rb_str_cat(ret, p, sc->p - p);
333
+ sc->p++;
334
+ if (sc->p == sc->pend)
335
+ rb_raise(ScanError, "incomplete char quote");
336
+ p = sc->p;
337
+ break;
338
+ default:
339
+ break;
340
+ }
341
+ sc->p++;
342
+ }
343
+ }
344
+
345
+ rb_raise(ScanError, "unterminated comment");
346
+ return Qnil;
347
+ }
348
+
349
+
350
+ static void
351
+ skip_lwsp(sc)
352
+ struct scanner *sc;
353
+ {
354
+ while (sc->p < sc->pend) {
355
+ if (IS_LWSP(*sc->p)) sc->p++;
356
+ else break;
357
+ }
358
+ }
359
+
360
+ static int
361
+ nccmp(a, b)
362
+ char *a, *b;
363
+ {
364
+ while (*a && *b) {
365
+ if ((*a != *b) && (TO_LOWER(*a) != TO_LOWER(*b)))
366
+ return 0;
367
+ a++; b++;
368
+ }
369
+ return (*a == *b);
370
+ }
371
+
372
+ static int
373
+ digit_p(str)
374
+ VALUE str;
375
+ {
376
+ char *p;
377
+ int i;
378
+
379
+ p = RSTRING(str)->ptr;
380
+ for (i = 0; i < RSTRING(str)->len; i++) {
381
+ if (! IS_DIGIT(RSTRING(str)->ptr[i]))
382
+ return 0;
383
+ }
384
+ return 1;
385
+ }
386
+
387
+ static VALUE tok_atom, tok_digit, tok_token, tok_quoted, tok_domlit;
388
+ static VALUE tok_from, tok_by, tok_via, tok_with, tok_id, tok_for;
389
+
390
+ static VALUE
391
+ atomsym(sc, str)
392
+ struct scanner *sc;
393
+ VALUE str;
394
+ {
395
+ if (digit_p(str)) {
396
+ return tok_digit;
397
+ }
398
+ else if (RECV_MODE_P(sc)) {
399
+ char *p = RSTRING(str)->ptr;
400
+ if (nccmp(p, "from")) return tok_from;
401
+ else if (nccmp(p, "by")) return tok_by;
402
+ else if (nccmp(p, "via")) return tok_via;
403
+ else if (nccmp(p, "with")) return tok_with;
404
+ else if (nccmp(p, "id")) return tok_id;
405
+ else if (nccmp(p, "for")) return tok_for;
406
+ }
407
+ return tok_atom;
408
+ }
409
+
410
+ static void
411
+ debug_print(sc, sym, val)
412
+ struct scanner *sc;
413
+ VALUE sym, val;
414
+ {
415
+ VALUE s;
416
+
417
+ s = rb_funcall(sym, rb_intern("inspect"), 0),
418
+ printf("%7ld %-10s token=<%s>\n",
419
+ (unsigned long)(sc->pend - sc->p),
420
+ RSTRING(s)->ptr,
421
+ RSTRING(val)->ptr);
422
+ }
423
+
424
+ #define D(expr) do {\
425
+ if (sc->flags & MODE_DEBUG) {expr;}\
426
+ } while (0)
427
+
428
+ static void
429
+ pass_token(sc, sym, tok, arr)
430
+ struct scanner *sc;
431
+ VALUE sym, tok, arr;
432
+ {
433
+ D(debug_print(sc, sym, tok));
434
+ rb_ary_store(arr, 0, sym);
435
+ rb_ary_store(arr, 1, tok);
436
+ rb_yield(arr);
437
+ }
438
+
439
+ /*
440
+ * Document-method: mails_scan
441
+ *
442
+ * TODO: Documentation needed
443
+ *
444
+ */
445
+ static VALUE
446
+ mails_scan(self)
447
+ VALUE self;
448
+ {
449
+ struct scanner *sc;
450
+ VALUE arr;
451
+
452
+ #define PASS(s,v) pass_token(sc,s,v,arr)
453
+ GET_SCANNER(self, sc);
454
+ if (!sc->p) {
455
+ rb_raise(ScanError, "Mails#scan called before reset");
456
+ }
457
+ arr = rb_assoc_new(Qnil, Qnil);
458
+
459
+ while (sc->p < sc->pend) {
460
+ D(puts("new loop"));
461
+ D(printf("char='%c'\n", *sc->p));
462
+ if (IS_LWSP(*sc->p)) {
463
+ D(puts("lwsp"));
464
+ skip_lwsp(sc);
465
+ if (sc->p >= sc->pend)
466
+ break;
467
+ }
468
+
469
+ if (MIME_MODE_P(sc)) {
470
+ if (IS_TOKENCHAR(*sc->p) ||
471
+ (ISO2022_MODE_P(sc) && (*sc->p == ESC)) ||
472
+ IS_JCHAR(*sc->p)) {
473
+ D(puts("token"));
474
+ PASS(tok_token, scan_token(sc));
475
+ continue;
476
+ }
477
+ }
478
+ else {
479
+ if (IS_ATOMCHAR(*sc->p) ||
480
+ (ISO2022_MODE_P(sc) && (*sc->p == ESC)) ||
481
+ IS_JCHAR(*sc->p)) {
482
+ VALUE tmp;
483
+ D(puts("atom"));
484
+ tmp = scan_atom(sc);
485
+ PASS(atomsym(sc, tmp), tmp);
486
+ continue;
487
+ }
488
+ }
489
+
490
+ if (*sc->p == '"') {
491
+ D(puts("quoted"));
492
+ PASS(tok_quoted, scan_quoted_word(sc));
493
+ D(puts("quoted"));
494
+ }
495
+ else if (*sc->p == '(') {
496
+ VALUE c;
497
+ D(puts("comment"));
498
+ c = scan_comment(sc);
499
+ if (! NIL_P(sc->comments))
500
+ rb_ary_push(sc->comments, c);
501
+ }
502
+ else if (*sc->p == '[') {
503
+ D(puts("domlit"));
504
+ PASS(tok_domlit, scan_domain_literal(sc));
505
+ }
506
+ else {
507
+ VALUE ch;
508
+ D(puts("char"));
509
+ ch = rb_str_new(sc->p, 1);
510
+ sc->p++;
511
+ PASS(ch, ch);
512
+ }
513
+ }
514
+
515
+ PASS(Qfalse, rb_str_new("$", 1));
516
+ return Qnil;
517
+ }
518
+
519
+
520
+ /*
521
+ ------------------------------------------------------------------
522
+ ruby interface
523
+ ------------------------------------------------------------------
524
+ */
525
+
526
+ static VALUE
527
+ cstr2symbol(str)
528
+ char *str;
529
+ {
530
+ ID tmp;
531
+
532
+ tmp = rb_intern(str);
533
+ #ifdef ID2SYM
534
+ return ID2SYM(tmp);
535
+ #else
536
+ return INT2FIX(tmp);
537
+ #endif
538
+ }
539
+
540
+ void
541
+ Init_tmailscanner()
542
+ {
543
+ VALUE TMail;
544
+ VALUE tmp;
545
+
546
+ if (rb_const_defined(rb_cObject, rb_intern("TMail"))) {
547
+ TMail = rb_const_get(rb_cObject, rb_intern("TMail"));
548
+ }
549
+ else {
550
+ TMail = rb_define_module("TMail");
551
+ }
552
+ TMailScanner = rb_define_class_under(TMail, "TMailScanner", rb_cObject);
553
+
554
+ tmp = rb_str_new2(TMAIL_VERSION);
555
+ rb_obj_freeze(tmp);
556
+ rb_define_const(TMailScanner, "Version", tmp);
557
+
558
+ rb_define_singleton_method(TMailScanner, "new", mails_s_new, 3);
559
+ rb_define_method(TMailScanner, "scan", mails_scan, 0);
560
+ rb_define_method(TMailScanner, "debug", mails_debug_get, 0);
561
+ rb_define_method(TMailScanner, "debug=", mails_debug_set, 1);
562
+
563
+ if (rb_const_defined(TMail, rb_intern("SyntaxError"))) {
564
+ ScanError = rb_const_get(rb_cObject, rb_intern("SyntaxError"));
565
+ }
566
+ else {
567
+ ScanError = rb_define_class_under(TMail, "SyntaxError", rb_eStandardError);
568
+ }
569
+
570
+ tok_atom = cstr2symbol("ATOM");
571
+ tok_digit = cstr2symbol("DIGIT");
572
+ tok_token = cstr2symbol("TOKEN");
573
+ tok_quoted = cstr2symbol("QUOTED");
574
+ tok_domlit = cstr2symbol("DOMLIT");
575
+
576
+ tok_from = cstr2symbol("FROM");
577
+ tok_by = cstr2symbol("BY");
578
+ tok_via = cstr2symbol("VIA");
579
+ tok_with = cstr2symbol("WITH");
580
+ tok_id = cstr2symbol("ID");
581
+ tok_for = cstr2symbol("FOR");
582
+ }
583
+