de.oddb 2.0.0

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 (431) hide show
  1. data/Guide.txt +3 -0
  2. data/History.txt +5 -0
  3. data/LICENCE.txt +339 -0
  4. data/Manifest.txt +430 -0
  5. data/README +423 -0
  6. data/README.txt +25 -0
  7. data/Rakefile +28 -0
  8. data/bin/admin +71 -0
  9. data/bin/exportd +44 -0
  10. data/bin/oddbd +33 -0
  11. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  12. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  13. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  14. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  15. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  16. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  17. data/data/fulltext/data/german_compound/README +15 -0
  18. data/data/fulltext/data/german_compound/compound.pl +63 -0
  19. data/data/fulltext/data/german_compound/german.stop +20 -0
  20. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  21. data/data/fulltext/redist/dict_french/Makefile +12 -0
  22. data/data/fulltext/redist/dict_french/README.french +1 -0
  23. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  24. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  25. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  26. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  27. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  28. data/data/fulltext/redist/dict_german/Makefile +12 -0
  29. data/data/fulltext/redist/dict_german/README.german +1 -0
  30. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  31. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  32. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  33. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  34. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  35. data/data/fulltext/redist/french_stem.c +1222 -0
  36. data/data/fulltext/redist/french_stem.h +16 -0
  37. data/data/fulltext/redist/german_stem.c +527 -0
  38. data/data/fulltext/redist/german_stem.h +16 -0
  39. data/jobs/export_chde_xls +20 -0
  40. data/jobs/export_csv +20 -0
  41. data/jobs/export_fachinfo_yaml +20 -0
  42. data/jobs/export_patinfo_yaml +20 -0
  43. data/jobs/export_yaml +20 -0
  44. data/jobs/import_dimdi +15 -0
  45. data/jobs/import_gkv +19 -0
  46. data/jobs/import_pharma24 +15 -0
  47. data/jobs/import_pharmnet +30 -0
  48. data/jobs/import_whocc +18 -0
  49. data/lib/fixes/singular.rb +9 -0
  50. data/lib/fixes/yaml.rb +13 -0
  51. data/lib/oddb.rb +13 -0
  52. data/lib/oddb/business/company.rb +18 -0
  53. data/lib/oddb/business/grant_download.rb +27 -0
  54. data/lib/oddb/business/invoice.rb +75 -0
  55. data/lib/oddb/config.rb +112 -0
  56. data/lib/oddb/currency.rb +6 -0
  57. data/lib/oddb/drugs.rb +16 -0
  58. data/lib/oddb/drugs/active_agent.rb +37 -0
  59. data/lib/oddb/drugs/atc.rb +53 -0
  60. data/lib/oddb/drugs/composition.rb +41 -0
  61. data/lib/oddb/drugs/ddd.rb +24 -0
  62. data/lib/oddb/drugs/dose.rb +107 -0
  63. data/lib/oddb/drugs/galenic_form.rb +21 -0
  64. data/lib/oddb/drugs/galenic_group.rb +17 -0
  65. data/lib/oddb/drugs/package.rb +111 -0
  66. data/lib/oddb/drugs/part.rb +55 -0
  67. data/lib/oddb/drugs/product.rb +25 -0
  68. data/lib/oddb/drugs/sequence.rb +68 -0
  69. data/lib/oddb/drugs/substance.rb +31 -0
  70. data/lib/oddb/drugs/substance_group.rb +13 -0
  71. data/lib/oddb/drugs/unit.rb +12 -0
  72. data/lib/oddb/export.rb +4 -0
  73. data/lib/oddb/export/csv.rb +94 -0
  74. data/lib/oddb/export/l10n_sessions.rb +30 -0
  75. data/lib/oddb/export/rss.rb +44 -0
  76. data/lib/oddb/export/server.rb +137 -0
  77. data/lib/oddb/export/xls.rb +127 -0
  78. data/lib/oddb/export/yaml.rb +212 -0
  79. data/lib/oddb/html/state/download.rb +13 -0
  80. data/lib/oddb/html/state/drugs/admin/package.rb +190 -0
  81. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  82. data/lib/oddb/html/state/drugs/admin/sequence.rb +253 -0
  83. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  84. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  85. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  86. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  87. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  88. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  89. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  90. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  91. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  92. data/lib/oddb/html/state/drugs/downloads.rb +42 -0
  93. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  94. data/lib/oddb/html/state/drugs/feedback.rb +91 -0
  95. data/lib/oddb/html/state/drugs/global.rb +270 -0
  96. data/lib/oddb/html/state/drugs/init.rb +18 -0
  97. data/lib/oddb/html/state/drugs/login.rb +17 -0
  98. data/lib/oddb/html/state/drugs/package.rb +32 -0
  99. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  100. data/lib/oddb/html/state/drugs/products.rb +51 -0
  101. data/lib/oddb/html/state/drugs/result.rb +125 -0
  102. data/lib/oddb/html/state/global.rb +206 -0
  103. data/lib/oddb/html/state/global_predefine.rb +17 -0
  104. data/lib/oddb/html/state/limit.rb +17 -0
  105. data/lib/oddb/html/state/login.rb +56 -0
  106. data/lib/oddb/html/state/paypal/checkout.rb +97 -0
  107. data/lib/oddb/html/state/paypal/collect.rb +19 -0
  108. data/lib/oddb/html/state/paypal/download.rb +61 -0
  109. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  110. data/lib/oddb/html/state/register_download.rb +24 -0
  111. data/lib/oddb/html/state/register_export.rb +38 -0
  112. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  113. data/lib/oddb/html/state/viral/admin.rb +79 -0
  114. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  115. data/lib/oddb/html/util/annotated_list.rb +39 -0
  116. data/lib/oddb/html/util/know_it_all.rb +28 -0
  117. data/lib/oddb/html/util/known_user.rb +55 -0
  118. data/lib/oddb/html/util/lookandfeel.rb +698 -0
  119. data/lib/oddb/html/util/need_all_input.rb +29 -0
  120. data/lib/oddb/html/util/session.rb +84 -0
  121. data/lib/oddb/html/util/sort.rb +72 -0
  122. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  123. data/lib/oddb/html/util/validator.rb +59 -0
  124. data/lib/oddb/html/view/ajax/json.rb +22 -0
  125. data/lib/oddb/html/view/alpha_header.rb +28 -0
  126. data/lib/oddb/html/view/document.rb +117 -0
  127. data/lib/oddb/html/view/download.rb +33 -0
  128. data/lib/oddb/html/view/drugs/admin/package.rb +245 -0
  129. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  130. data/lib/oddb/html/view/drugs/admin/sequence.rb +305 -0
  131. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  132. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  133. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  134. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  135. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  136. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  137. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  138. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  139. data/lib/oddb/html/view/drugs/downloads.rb +128 -0
  140. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  141. data/lib/oddb/html/view/drugs/feedback.rb +235 -0
  142. data/lib/oddb/html/view/drugs/init.rb +51 -0
  143. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  144. data/lib/oddb/html/view/drugs/package.rb +403 -0
  145. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  146. data/lib/oddb/html/view/drugs/products.rb +97 -0
  147. data/lib/oddb/html/view/drugs/result.rb +296 -0
  148. data/lib/oddb/html/view/drugs/search.rb +33 -0
  149. data/lib/oddb/html/view/drugs/template.rb +15 -0
  150. data/lib/oddb/html/view/foot.rb +52 -0
  151. data/lib/oddb/html/view/google.rb +23 -0
  152. data/lib/oddb/html/view/google_ads.rb +40 -0
  153. data/lib/oddb/html/view/head.rb +78 -0
  154. data/lib/oddb/html/view/limit.rb +109 -0
  155. data/lib/oddb/html/view/list.rb +59 -0
  156. data/lib/oddb/html/view/login.rb +38 -0
  157. data/lib/oddb/html/view/navigation.rb +67 -0
  158. data/lib/oddb/html/view/offset_header.rb +35 -0
  159. data/lib/oddb/html/view/paypal/collect.rb +95 -0
  160. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  161. data/lib/oddb/html/view/paypal/register_form.rb +149 -0
  162. data/lib/oddb/html/view/register_download.rb +29 -0
  163. data/lib/oddb/html/view/register_export.rb +29 -0
  164. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  165. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  166. data/lib/oddb/html/view/rss_preview.rb +61 -0
  167. data/lib/oddb/html/view/search.rb +104 -0
  168. data/lib/oddb/html/view/snapback.rb +24 -0
  169. data/lib/oddb/html/view/template.rb +56 -0
  170. data/lib/oddb/import/dimdi.rb +583 -0
  171. data/lib/oddb/import/excel.rb +45 -0
  172. data/lib/oddb/import/gkv.rb +463 -0
  173. data/lib/oddb/import/importer.rb +36 -0
  174. data/lib/oddb/import/pharma24.rb +211 -0
  175. data/lib/oddb/import/pharmnet.rb +1186 -0
  176. data/lib/oddb/import/rtf.rb +409 -0
  177. data/lib/oddb/import/whocc.rb +148 -0
  178. data/lib/oddb/import/xml.rb +15 -0
  179. data/lib/oddb/model.rb +179 -0
  180. data/lib/oddb/persistence.rb +22 -0
  181. data/lib/oddb/persistence/odba.rb +32 -0
  182. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  183. data/lib/oddb/persistence/odba/business/grant_download.rb +14 -0
  184. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  185. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  186. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  187. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  188. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  189. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  190. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  191. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  192. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  193. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  194. data/lib/oddb/persistence/odba/export.rb +26 -0
  195. data/lib/oddb/persistence/odba/model.rb +68 -0
  196. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  197. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  198. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  199. data/lib/oddb/persistence/og.rb +16 -0
  200. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  201. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  202. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  203. data/lib/oddb/persistence/og/model.rb +25 -0
  204. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  205. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  206. data/lib/oddb/remote/business/company.rb +17 -0
  207. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  208. data/lib/oddb/remote/drugs/atc.rb +31 -0
  209. data/lib/oddb/remote/drugs/dose.rb +8 -0
  210. data/lib/oddb/remote/drugs/galenic_form.rb +24 -0
  211. data/lib/oddb/remote/drugs/package.rb +128 -0
  212. data/lib/oddb/remote/drugs/part.rb +30 -0
  213. data/lib/oddb/remote/drugs/substance.rb +20 -0
  214. data/lib/oddb/remote/drugs/unit.rb +20 -0
  215. data/lib/oddb/remote/object.rb +36 -0
  216. data/lib/oddb/text/chapter.rb +23 -0
  217. data/lib/oddb/text/document.rb +42 -0
  218. data/lib/oddb/text/format.rb +37 -0
  219. data/lib/oddb/text/paragraph.rb +53 -0
  220. data/lib/oddb/text/picture.rb +89 -0
  221. data/lib/oddb/text/table.rb +68 -0
  222. data/lib/oddb/util.rb +9 -0
  223. data/lib/oddb/util/annotated_list.rb +37 -0
  224. data/lib/oddb/util/code.rb +69 -0
  225. data/lib/oddb/util/comparison.rb +36 -0
  226. data/lib/oddb/util/download.rb +17 -0
  227. data/lib/oddb/util/exporter.rb +8 -0
  228. data/lib/oddb/util/feedback.rb +23 -0
  229. data/lib/oddb/util/ipn.rb +53 -0
  230. data/lib/oddb/util/job.rb +23 -0
  231. data/lib/oddb/util/logger.rb +20 -0
  232. data/lib/oddb/util/m10l_document.rb +41 -0
  233. data/lib/oddb/util/mail.rb +87 -0
  234. data/lib/oddb/util/money.rb +64 -0
  235. data/lib/oddb/util/multilingual.rb +70 -0
  236. data/lib/oddb/util/quanty.rb +3 -0
  237. data/lib/oddb/util/quanty/fact.rb +242 -0
  238. data/lib/oddb/util/quanty/main.rb +164 -0
  239. data/lib/oddb/util/quanty/parse.rb +872 -0
  240. data/lib/oddb/util/quanty/units.dump +0 -0
  241. data/lib/oddb/util/server.rb +150 -0
  242. data/lib/oddb/util/smtp_tls.rb +58 -0
  243. data/lib/oddb/util/updater.rb +161 -0
  244. data/lib/oddb/util/ydim.rb +110 -0
  245. data/lib/oddb/util/yus.rb +46 -0
  246. data/test/business/test_company.rb +29 -0
  247. data/test/business/test_grant_download.rb +29 -0
  248. data/test/drugs/test_active_agent.rb +53 -0
  249. data/test/drugs/test_atc.rb +54 -0
  250. data/test/drugs/test_composition.rb +88 -0
  251. data/test/drugs/test_ddd.rb +22 -0
  252. data/test/drugs/test_dose.rb +189 -0
  253. data/test/drugs/test_galenic_form.rb +41 -0
  254. data/test/drugs/test_package.rb +172 -0
  255. data/test/drugs/test_part.rb +32 -0
  256. data/test/drugs/test_product.rb +31 -0
  257. data/test/drugs/test_sequence.rb +140 -0
  258. data/test/drugs/test_substance.rb +51 -0
  259. data/test/drugs/test_substance_group.rb +27 -0
  260. data/test/export/test_rss.rb +86 -0
  261. data/test/export/test_server.rb +163 -0
  262. data/test/export/test_xls.rb +146 -0
  263. data/test/export/test_yaml.rb +120 -0
  264. data/test/import/data/csv/products.csv +11 -0
  265. data/test/import/data/html/dimdi_index.html +400 -0
  266. data/test/import/data/html/gkv/Befreiungsliste_Arzneimittel_Versicherte.gkvnet +508 -0
  267. data/test/import/data/html/pharma24/1337397.html +754 -0
  268. data/test/import/data/html/pharma24/842756.html +570 -0
  269. data/test/import/data/html/pharma24/ac-page-10.html +2999 -0
  270. data/test/import/data/html/pharma24/ac-page-11.html +2999 -0
  271. data/test/import/data/html/pharma24/ac-page-12.html +2999 -0
  272. data/test/import/data/html/pharma24/ac-page-13.html +2999 -0
  273. data/test/import/data/html/pharma24/ac-page-14.html +2999 -0
  274. data/test/import/data/html/pharma24/ac-page-15.html +3011 -0
  275. data/test/import/data/html/pharma24/ac-page-16.html +3050 -0
  276. data/test/import/data/html/pharma24/ac-page-17.html +3285 -0
  277. data/test/import/data/html/pharma24/ac-page-18.html +3109 -0
  278. data/test/import/data/html/pharma24/ac-page-19.html +3126 -0
  279. data/test/import/data/html/pharma24/ac-page-2.html +3005 -0
  280. data/test/import/data/html/pharma24/ac-page-20.html +3007 -0
  281. data/test/import/data/html/pharma24/ac-page-21.html +2999 -0
  282. data/test/import/data/html/pharma24/ac-page-22.html +2999 -0
  283. data/test/import/data/html/pharma24/ac-page-23.html +3055 -0
  284. data/test/import/data/html/pharma24/ac-page-24.html +2999 -0
  285. data/test/import/data/html/pharma24/ac-page-25.html +3004 -0
  286. data/test/import/data/html/pharma24/ac-page-26.html +2999 -0
  287. data/test/import/data/html/pharma24/ac-page-27.html +3167 -0
  288. data/test/import/data/html/pharma24/ac-page-28.html +3236 -0
  289. data/test/import/data/html/pharma24/ac-page-29.html +3110 -0
  290. data/test/import/data/html/pharma24/ac-page-3.html +2999 -0
  291. data/test/import/data/html/pharma24/ac-page-30.html +2999 -0
  292. data/test/import/data/html/pharma24/ac-page-31.html +2999 -0
  293. data/test/import/data/html/pharma24/ac-page-32.html +2999 -0
  294. data/test/import/data/html/pharma24/ac-page-33.html +3001 -0
  295. data/test/import/data/html/pharma24/ac-page-34.html +2999 -0
  296. data/test/import/data/html/pharma24/ac-page-35.html +2999 -0
  297. data/test/import/data/html/pharma24/ac-page-36.html +2999 -0
  298. data/test/import/data/html/pharma24/ac-page-37.html +2999 -0
  299. data/test/import/data/html/pharma24/ac-page-38.html +3003 -0
  300. data/test/import/data/html/pharma24/ac-page-39.html +2999 -0
  301. data/test/import/data/html/pharma24/ac-page-4.html +2999 -0
  302. data/test/import/data/html/pharma24/ac-page-40.html +2999 -0
  303. data/test/import/data/html/pharma24/ac-page-41.html +2999 -0
  304. data/test/import/data/html/pharma24/ac-page-42.html +2999 -0
  305. data/test/import/data/html/pharma24/ac-page-43.html +2999 -0
  306. data/test/import/data/html/pharma24/ac-page-44.html +2999 -0
  307. data/test/import/data/html/pharma24/ac-page-45.html +2999 -0
  308. data/test/import/data/html/pharma24/ac-page-46.html +2999 -0
  309. data/test/import/data/html/pharma24/ac-page-47.html +2999 -0
  310. data/test/import/data/html/pharma24/ac-page-48.html +2999 -0
  311. data/test/import/data/html/pharma24/ac-page-49.html +2999 -0
  312. data/test/import/data/html/pharma24/ac-page-5.html +3168 -0
  313. data/test/import/data/html/pharma24/ac-page-50.html +2999 -0
  314. data/test/import/data/html/pharma24/ac-page-51.html +2999 -0
  315. data/test/import/data/html/pharma24/ac-page-52.html +3003 -0
  316. data/test/import/data/html/pharma24/ac-page-53.html +2999 -0
  317. data/test/import/data/html/pharma24/ac-page-54.html +3095 -0
  318. data/test/import/data/html/pharma24/ac-page-55.html +3041 -0
  319. data/test/import/data/html/pharma24/ac-page-56.html +2999 -0
  320. data/test/import/data/html/pharma24/ac-page-57.html +3001 -0
  321. data/test/import/data/html/pharma24/ac-page-58.html +3001 -0
  322. data/test/import/data/html/pharma24/ac-page-59.html +2999 -0
  323. data/test/import/data/html/pharma24/ac-page-6.html +3072 -0
  324. data/test/import/data/html/pharma24/ac-page-60.html +3001 -0
  325. data/test/import/data/html/pharma24/ac-page-61.html +3005 -0
  326. data/test/import/data/html/pharma24/ac-page-62.html +2999 -0
  327. data/test/import/data/html/pharma24/ac-page-63.html +3007 -0
  328. data/test/import/data/html/pharma24/ac-page-64.html +3007 -0
  329. data/test/import/data/html/pharma24/ac-page-65.html +2999 -0
  330. data/test/import/data/html/pharma24/ac-page-66.html +3011 -0
  331. data/test/import/data/html/pharma24/ac-page-67.html +3026 -0
  332. data/test/import/data/html/pharma24/ac-page-68.html +2999 -0
  333. data/test/import/data/html/pharma24/ac-page-69.html +3010 -0
  334. data/test/import/data/html/pharma24/ac-page-7.html +2999 -0
  335. data/test/import/data/html/pharma24/ac-page-70.html +3192 -0
  336. data/test/import/data/html/pharma24/ac-page-71.html +3133 -0
  337. data/test/import/data/html/pharma24/ac-page-72.html +2999 -0
  338. data/test/import/data/html/pharma24/ac-page-73.html +3227 -0
  339. data/test/import/data/html/pharma24/ac-page-74.html +3241 -0
  340. data/test/import/data/html/pharma24/ac-page-75.html +3227 -0
  341. data/test/import/data/html/pharma24/ac-page-76.html +3244 -0
  342. data/test/import/data/html/pharma24/ac-page-77.html +1164 -0
  343. data/test/import/data/html/pharma24/ac-page-8.html +2999 -0
  344. data/test/import/data/html/pharma24/ac-page-9.html +2999 -0
  345. data/test/import/data/html/pharma24/ac.html +2999 -0
  346. data/test/import/data/html/pharmnet/display.html +662 -0
  347. data/test/import/data/html/pharmnet/display1.html +625 -0
  348. data/test/import/data/html/pharmnet/display2.html +625 -0
  349. data/test/import/data/html/pharmnet/display3.html +625 -0
  350. data/test/import/data/html/pharmnet/display_tramal.html +634 -0
  351. data/test/import/data/html/pharmnet/empty_result.html +395 -0
  352. data/test/import/data/html/pharmnet/gate.html +246 -0
  353. data/test/import/data/html/pharmnet/index.html +258 -0
  354. data/test/import/data/html/pharmnet/paged_result_1.html +401 -0
  355. data/test/import/data/html/pharmnet/paged_result_2.html +401 -0
  356. data/test/import/data/html/pharmnet/result.html +401 -0
  357. data/test/import/data/html/pharmnet/search.html +865 -0
  358. data/test/import/data/html/pharmnet/search_filtered.html +182 -0
  359. data/test/import/data/html/whocc/A.html +56 -0
  360. data/test/import/data/html/whocc/A03.html +48 -0
  361. data/test/import/data/html/whocc/A03AB.html +48 -0
  362. data/test/import/data/html/whocc/A06AA.html +47 -0
  363. data/test/import/data/html/whocc/C03.html +47 -0
  364. data/test/import/data/html/whocc/login.html +77 -0
  365. data/test/import/data/mail/csv.mail +81 -0
  366. data/test/import/data/rtf/pharmnet/aarane.pi.rtf +648 -0
  367. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.pi.rtf +324 -0
  368. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.rtf +4816 -0
  369. data/test/import/data/rtf/pharmnet/acemetacin.pi.rtf +388 -0
  370. data/test/import/data/rtf/pharmnet/acemit.pi.rtf +240 -0
  371. data/test/import/data/rtf/pharmnet/acerbon.pi.rtf +1257 -0
  372. data/test/import/data/rtf/pharmnet/acetylcystein.pi.rtf +323 -0
  373. data/test/import/data/rtf/pharmnet/aciclo.pi.rtf +287 -0
  374. data/test/import/data/rtf/pharmnet/aciclovir.pi.rtf +236 -0
  375. data/test/import/data/rtf/pharmnet/actrapid.pi.rtf +322 -0
  376. data/test/import/data/rtf/pharmnet/amlodipin.pi.rtf +452 -0
  377. data/test/import/data/rtf/pharmnet/amlodipin.rtf +473 -0
  378. data/test/import/data/rtf/pharmnet/aspirin.pi.rtf +313 -0
  379. data/test/import/data/rtf/pharmnet/aspirin.rtf +781 -0
  380. data/test/import/data/rtf/pharmnet/baymycard.pi.rtf +447 -0
  381. data/test/import/data/rtf/pharmnet/omeprazol.pi.rtf +510 -0
  382. data/test/import/data/rtf/pharmnet/omeprazol.rtf +9216 -0
  383. data/test/import/data/rtf/pharmnet/paroxetin.pi.rtf +678 -0
  384. data/test/import/data/rtf/pharmnet/selegilin.pi.rtf +312 -0
  385. data/test/import/data/rtf/pharmnet/selegilin.rtf +683 -0
  386. data/test/import/data/rtf/pharmnet/valium.pi.rtf +387 -0
  387. data/test/import/data/txt/gkv/gkv_p1.txt +17 -0
  388. data/test/import/data/xls/darform_010706.xls +0 -0
  389. data/test/import/data/xls/fb010706.xls +0 -0
  390. data/test/import/data/xls/liste_zuzahlungsbefreite_arzneimittel_suchfunktion.xls +0 -0
  391. data/test/import/data/xls/wirkkurz_010406.xls +0 -0
  392. data/test/import/data/xml/ATC_2006.xml +47 -0
  393. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  394. data/test/import/test_dimdi.rb +323 -0
  395. data/test/import/test_excel.rb +31 -0
  396. data/test/import/test_gkv.rb +260 -0
  397. data/test/import/test_pharma24.rb +112 -0
  398. data/test/import/test_pharmnet.rb +980 -0
  399. data/test/import/test_rtf.rb +37 -0
  400. data/test/import/test_whocc.rb +314 -0
  401. data/test/remote/drugs/test_active_agent.rb +36 -0
  402. data/test/selenium/selenium-server.jar +0 -0
  403. data/test/selenium/test_atc_browser.rb +121 -0
  404. data/test/selenium/test_atc_guidelines.rb +95 -0
  405. data/test/selenium/test_collect.rb +137 -0
  406. data/test/selenium/test_compare.rb +294 -0
  407. data/test/selenium/test_fachinfo.rb +128 -0
  408. data/test/selenium/test_feedback.rb +192 -0
  409. data/test/selenium/test_init.rb +64 -0
  410. data/test/selenium/test_limit.rb +304 -0
  411. data/test/selenium/test_login.rb +67 -0
  412. data/test/selenium/test_package.rb +516 -0
  413. data/test/selenium/test_patinfo.rb +128 -0
  414. data/test/selenium/test_product.rb +80 -0
  415. data/test/selenium/test_products.rb +141 -0
  416. data/test/selenium/test_search.rb +933 -0
  417. data/test/selenium/test_sequence.rb +513 -0
  418. data/test/selenium/unit.rb +190 -0
  419. data/test/stub/http_server.rb +144 -0
  420. data/test/stub/model.rb +173 -0
  421. data/test/suite.rb +15 -0
  422. data/test/test_model.rb +83 -0
  423. data/test/util/test_code.rb +74 -0
  424. data/test/util/test_ipn.rb +117 -0
  425. data/test/util/test_mail.rb +85 -0
  426. data/test/util/test_multilingual.rb +97 -0
  427. data/test/util/test_server.rb +94 -0
  428. data/test/util/test_updater.rb +130 -0
  429. data/test/util/test_ydim.rb +115 -0
  430. data/test/util/test_yus.rb +79 -0
  431. metadata +568 -0
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::Money -- de.oddb.org -- 14.11.2006 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Util
6
+ class Money
7
+ attr_reader :credits
8
+ attr_accessor :type, :country
9
+ include Comparable
10
+ class << self
11
+ def five
12
+ @five ||= self.new(5)
13
+ end
14
+ def ten
15
+ @ten ||= self.new(10)
16
+ end
17
+ end
18
+ def initialize(amount, type=nil, country=nil)
19
+ self.amount = amount
20
+ self.type = type
21
+ self.country = country
22
+ end
23
+ def amount=(amount)
24
+ @amount = amount.to_f
25
+ @credits = (@amount * 100).round
26
+ end
27
+ def country=(country)
28
+ @country = country.to_s.upcase
29
+ end
30
+ def is_for?(type, country)
31
+ @type == type.to_s.downcase && @country == country.to_s.upcase
32
+ end
33
+ def to_f
34
+ @amount || (@credits.to_f / 100)
35
+ end
36
+ def to_s
37
+ sprintf("%1.2f", to_f)
38
+ end
39
+ def type=(type)
40
+ @type = type.to_s.downcase
41
+ end
42
+ def +(other)
43
+ Money.new((@amount || to_f) + other.to_f)
44
+ end
45
+ def -(other)
46
+ Money.new((@amount || to_f) - other.to_f)
47
+ end
48
+ def *(other)
49
+ Money.new((@amount || to_f) * other.to_f)
50
+ end
51
+ def /(other)
52
+ Money.new((@amount || to_f) / other.to_f)
53
+ end
54
+ def <=>(other)
55
+ case other
56
+ when Money
57
+ @credits <=> other.credits
58
+ else
59
+ to_f <=> other.to_f
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::Multilingual -- de.oddb.org -- 04.09.2006 -- hwyss@ywesee.com
3
+
4
+ module ODDB
5
+ module Util
6
+ module M10lMethods
7
+ include Comparable
8
+ attr_reader :canonical
9
+ attr_reader :synonyms
10
+ def initialize(canonical={})
11
+ @canonical = canonical
12
+ end
13
+ def all
14
+ @canonical.values
15
+ end
16
+ def empty?
17
+ @canonical.empty?
18
+ end
19
+ def method_missing(meth, *args, &block)
20
+ case meth.to_s
21
+ when /^[a-z]{2}$/
22
+ @canonical[meth]
23
+ when /^([a-z]{2})=$/
24
+ @canonical.store($~[1].to_sym, args.first)
25
+ else
26
+ super(meth, *args, &block)
27
+ end
28
+ end
29
+ def to_s
30
+ @canonical.values.sort.first.to_s
31
+ end
32
+ def ==(other)
33
+ case other
34
+ when String
35
+ @canonical.values.any? { |val| val == other } \
36
+ || @synonyms.any? { |val| val == other }
37
+ when M10lDocument
38
+ @canonical == other.canonical && @synonyms == other.synonyms
39
+ when M10lMethods
40
+ @canonical == other.canonical
41
+ else
42
+ false
43
+ end
44
+ end
45
+ def <=>(other)
46
+ all.sort <=> other.all.sort
47
+ end
48
+ end
49
+ class Multilingual
50
+ include M10lMethods
51
+ def initialize(canonical={})
52
+ super
53
+ @synonyms = []
54
+ end
55
+ def add_synonym(synonym)
56
+ @synonyms.push(synonym).uniq! && synonym
57
+ end
58
+ def all
59
+ terms = super.concat(@synonyms)
60
+ terms.concat(terms.collect do |term| term.gsub(/[^\w]/, '') end)
61
+ terms.uniq
62
+ end
63
+ def merge(other)
64
+ @synonyms.concat(other.all).uniq!
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ require 'oddb/util/m10l_document'
@@ -0,0 +1,3 @@
1
+ require 'oddb/util/quanty/parse'
2
+ require 'oddb/util/quanty/fact'
3
+ require 'oddb/util/quanty/main'
@@ -0,0 +1,242 @@
1
+ #
2
+ # quanty/fact.rb
3
+ #
4
+ # Copyright (c) 2001 Masahiro Tanaka <masa@ir.isas.ac.jp>
5
+ #
6
+ # This program is free software.
7
+ # You can distribute/modify this program under the terms of
8
+ # the GNU General Public License version 2 or later.
9
+
10
+ class Quanty
11
+
12
+ class Fact < Hash
13
+ Self = self
14
+ Parser = Parse.new
15
+
16
+ attr_reader :factor
17
+
18
+ # SI units: Fact.new("m",true) => {"m"=>1}
19
+ # Derivative units: Fact.new("km") => 1000*{"m"=>1}
20
+ def initialize(key=nil,si=false)
21
+ self.default = 0.0
22
+ @factor = 1.0
23
+ case key
24
+ when Numeric
25
+ @factor = key
26
+ when String
27
+ if si
28
+ store(key, 1.0)
29
+ else
30
+ decomp(key)
31
+ end
32
+ when Self
33
+ replace(key)
34
+ end
35
+ end
36
+
37
+ def []=(key,val)
38
+ if val == 0
39
+ delete(key)
40
+ else
41
+ super(key,val)
42
+ end
43
+ end
44
+
45
+ def replace(other)
46
+ @factor = other.factor
47
+ super(other)
48
+ end
49
+
50
+ def dup
51
+ Fact.new(self)
52
+ end
53
+
54
+ attr_writer :factor
55
+ protected :factor=
56
+
57
+ def find_prefix(a,n)
58
+ Prefix.each{ |key,factor|
59
+ if /^#{key}-?/ =~ a && (unit = List[b=$']) && b.size>n
60
+ #p [a,b,factor]
61
+ return Fact.new(b).fac!(factor)
62
+ end
63
+ }
64
+ nil
65
+ end
66
+
67
+ def decomp(a)
68
+ if /^([µA-Za-z_]+([A-Za-z_0-9-]+[A-Za-z_])?)$|^[$%'"]'?$/o =~ a
69
+ #if /^[A-Za-z_0-9$%-]+$/o =~ a
70
+ unit = List[a] || find_prefix(a,0) ||
71
+ if a.size>3 && /chs$/o !~ a && /(.*[a-rt-y])s$/o =~ a
72
+ b = $1
73
+ List[b] || find_prefix(b,2) ||
74
+ if a.size>4 && /(.*s|.*z|.*ch)es$/o =~ a
75
+ b = $1
76
+ List[b] || find_prefix(b,2)
77
+ end
78
+ end
79
+ else
80
+ unit = Parser.parse(a)
81
+ end
82
+ unless unit
83
+ raise "`%s': unknown unit"%a
84
+ end
85
+ @factor *= factor if factor
86
+ mul!(unit)
87
+ end
88
+
89
+ def mul!(other)
90
+ raise unless other.kind_of?(Fact)
91
+ other.each{ |key,val| self[key] += val }
92
+ delete_if{ |key,val| val == 0 }
93
+ @factor *= other.factor
94
+ self
95
+ end
96
+
97
+ def * (other)
98
+ dup.mul!(other)
99
+ end
100
+
101
+ def div!(other)
102
+ raise unless other.kind_of?(Fact)
103
+ other.each{ |key,val| self[key] -= val }
104
+ delete_if{ |key,val| val == 0 }
105
+ @factor /= other.factor
106
+ self
107
+ end
108
+
109
+ def / (other)
110
+ dup.div!(other)
111
+ end
112
+
113
+ def pow!(other)
114
+ raise unless other.kind_of?(Numeric)
115
+ each{ |key,val| self[key] = other*val }
116
+ @factor **= other
117
+ self
118
+ end
119
+
120
+ def ** (other)
121
+ dup.pow!(other)
122
+ end
123
+
124
+ def fac!(other)
125
+ raise unless other.kind_of?(Numeric)
126
+ @factor *= other
127
+ self
128
+ end
129
+
130
+ def inspect
131
+ @factor.to_s+"*"+super
132
+ end
133
+
134
+ def unit
135
+ a = []
136
+ SI.each do |k|
137
+ v = self[k]
138
+ if v && v!=0
139
+ if v != 1
140
+ v = v.to_i if v%1 == 0
141
+ k += v.to_s
142
+ end
143
+ a.push(k)
144
+ end
145
+ end
146
+ a.join(" ")
147
+ end
148
+
149
+ def to_s
150
+ @factor.to_s+" "+unit()
151
+ end
152
+
153
+ def to_quanty
154
+ f = dup
155
+ f.factor = 1.0
156
+ Quanty(@factor, unit(), f)
157
+ end
158
+
159
+ def null?
160
+ each_value{ |val| return false if val != 0 }
161
+ true
162
+ end
163
+
164
+ alias __equal__ :==
165
+
166
+ def ==(other)
167
+ if other.kind_of?(Numeric)
168
+ null? && @factor==other
169
+ else
170
+ __equal__(other) && @factor==other.factor
171
+ end
172
+ end
173
+
174
+ # check only dimension
175
+ def ===(other)
176
+ if other.kind_of?(Numeric)
177
+ null?
178
+ else
179
+ __equal__(other)
180
+ end
181
+ end
182
+
183
+ def to_f
184
+ raise inspect + ": not null unit" unless null?
185
+ @factor
186
+ end
187
+
188
+ class << self
189
+ def mkdump(filename)
190
+ Prefix.clear
191
+ List.clear
192
+ SI.clear
193
+ #s = open("units.succ","w")
194
+ #f = open("units.fail","w")
195
+ open("units.dat","r").readlines.each do |str|
196
+ if /^([µA-Za-z_0-9%$"'-]+)\s+([^#]+)/ =~ str #"
197
+ name,repr = $1,$2.strip
198
+ # conversion due to the different rule from GNU units:
199
+ # A / B C => A / (B C)
200
+ if /\// =~ repr #/
201
+ pre,suf = $`,$'.strip #`
202
+ if /\s/ =~ suf
203
+ repr = pre + ' / (' + suf + ')'
204
+ end
205
+ end
206
+ if repr=="!" # SI
207
+ List[name] = Fact.new(name,true).freeze
208
+ SI << name
209
+ elsif /-$/ =~ name
210
+ Prefix[name[0..-2]] = Prefix[repr] || (List[repr] || repr).to_f
211
+ else
212
+ #p [name,repr]
213
+ List[name] = Fact.new(repr).freeze
214
+ end
215
+ #s.print str
216
+ #rescue
217
+ #f.print str
218
+ end
219
+ end
220
+ #Prefix.each{|key,val| p [key,val]}
221
+ #List.each{|key,val| p [key,val]}
222
+ Marshal.dump( [Prefix, List, SI], open(filename,"w") )
223
+ end
224
+ end
225
+
226
+ end # class Fact
227
+
228
+
229
+ ### Loading unit data ###
230
+ fn = nil
231
+ $:.each{ |dir|
232
+ fn = File.join(dir, "oddb/util/quanty/units.dump")
233
+ break if FileTest.exist?( fn )
234
+ fn = nil
235
+ }
236
+ if fn
237
+ Prefix, List, SI = Marshal.load(open(fn,"r"))
238
+ else
239
+ Prefix, List, SI = {},{},[]
240
+ end
241
+
242
+ end # class Quanty
@@ -0,0 +1,164 @@
1
+ #
2
+ # quanty/main.rb
3
+ #
4
+ # Copyright (c) 2001 Masahiro Tanaka <masa@ir.isas.ac.jp>
5
+ #
6
+ # This program is free software.
7
+ # You can distribute/modify this program under the terms of
8
+ # the GNU General Public License version 2 or later.
9
+
10
+ # require 'fact.rb'
11
+
12
+ def Quanty(*a)
13
+ Quanty.new(*a)
14
+ end
15
+
16
+ class Quanty #< Numeric
17
+ Self = self
18
+ RadianUnit = Quanty::Fact.new('radian')
19
+
20
+ def initialize(*a)
21
+ case a.size
22
+ when 1
23
+ if String === a[0]
24
+ @val,@unit,@fact = 1.0, a[0], nil
25
+ else
26
+ @val,@unit,@fact = a[0], '', nil
27
+ end
28
+ when 2..3
29
+ @val,@unit,@fact = a
30
+ else
31
+ raise ArgumentError, 'wrong # of arguments'
32
+ end
33
+ unless Fact === @fact
34
+ @fact = Fact.new(@unit)
35
+ end
36
+ end
37
+
38
+ attr_reader :val
39
+ attr_reader :unit
40
+ attr_reader :fact
41
+ alias value val
42
+
43
+ def adjust(other)
44
+ if other.kind_of?(Self)
45
+ unless @fact === other.fact
46
+ raise "not same unit: %s != %s" % [@unit,other.unit]
47
+ end
48
+ other.val * ( other.fact.factor / @fact.factor )
49
+ else
50
+ raise @unit + ": not null unit" unless @fact.null?
51
+ other / @fact.factor
52
+ end
53
+ end
54
+
55
+ def want(unit)
56
+ obj = Self.new(unit)
57
+ val = obj.adjust(self)
58
+ Self.new( val, unit, obj.fact )
59
+ end
60
+
61
+ def + (other)
62
+ val = @val + adjust(other)
63
+ if @unit==''
64
+ val
65
+ else
66
+ Self.new( val, @unit, @fact )
67
+ end
68
+ end
69
+
70
+ def - (other)
71
+ val = @val - adjust(other)
72
+ if @unit==''
73
+ val
74
+ else
75
+ Self.new( val, @unit, @fact )
76
+ end
77
+ end
78
+
79
+ def +@ ; Self.new( @val, @unit, @fact ) end
80
+ def -@ ; Self.new( -@val, @unit, @fact ) end
81
+
82
+ def <=> (other); @val <=> adjust(other) end
83
+ def == (other); @val == adjust(other) end
84
+ def >= (other); @val >= adjust(other) end
85
+ def <= (other); @val <= adjust(other) end
86
+ def < (other); @val < adjust(other) end
87
+ def > (other); @val > adjust(other) end
88
+
89
+ def **(n)
90
+ if /^[A-Za-z_]+&/o =~ @unit
91
+ unit = @unit+'^'+n.to_s
92
+ else
93
+ unit = '('+@unit+')^'+n.to_s+''
94
+ end
95
+ Self.new( @val**n, unit, @fact**n )
96
+ end
97
+
98
+ def * (other)
99
+ if other.kind_of?(Self)
100
+ unit = other.unit
101
+ unless @unit.empty?
102
+ if unit.empty?
103
+ unit = @unit
104
+ else
105
+ if /\A[A-Za-z_]/o =~ unit
106
+ unit = @unit+' '+unit
107
+ else
108
+ unit = @unit+' ('+unit+')'
109
+ end
110
+ end
111
+ end
112
+ Self.new( @val*other.val, unit, @fact*other.fact )
113
+ else
114
+ Self.new( @val*other, @unit, @fact )
115
+ end
116
+ end
117
+
118
+ def / (other)
119
+ if other.kind_of?(Self)
120
+ unit = other.unit
121
+ if unit.empty?
122
+ unit = @unit
123
+ else
124
+ if /\A[A-Za-z_-]+((\^|\*\*)?[0-9.]+)?$/o =~ unit
125
+ unit = '/ '+unit
126
+ else
127
+ unit = '/ ('+unit+')'
128
+ end
129
+ unit = @unit+' '+unit unless @unit.empty?
130
+ end
131
+ Self.new( @val/other.val, unit, @fact/other.fact )
132
+ else
133
+ Self.new( @val/other, @unit, @fact )
134
+ end
135
+ end
136
+
137
+ def coerce(other)
138
+ [ Self.new(other), self ]
139
+ end
140
+
141
+ def to_si
142
+ @fact.to_quanty * @val
143
+ end
144
+ alias to_SI :to_si
145
+
146
+ def to_f
147
+ if @fact.null?
148
+ @val * @fact.factor
149
+ elsif @fact === RadianUnit
150
+ want('radian').value
151
+ else
152
+ raise 'cannot convert into non-dimensional Float'
153
+ end
154
+ end
155
+
156
+ def to_s
157
+ @val.to_s + "[" + @unit + "]"
158
+ end
159
+
160
+ def inspect
161
+ "Quanty(" + @val.to_s + ",'" + @unit + "')"
162
+ end
163
+
164
+ end