galaaz 0.4.10 → 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 (391) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/LICENSE +0 -0
  4. data/README.md +3123 -882
  5. data/Rakefile +62 -41
  6. data/bin/galaaz-bootstrap +137 -0
  7. data/bin/galaaz-jruby +14 -0
  8. data/bin/galaaz_jruby_env.inc.sh +6 -0
  9. data/bin/gbookdown +64 -0
  10. data/bin/gknit +223 -6
  11. data/bin/gknit-draft +105 -0
  12. data/bin/gknit-draft.rb +28 -0
  13. data/bin/gknit_Rscript +127 -0
  14. data/bin/grun +27 -1
  15. data/bin/gstudio +49 -4
  16. data/bin/{gstudio.rb → gstudio_irb.rb} +0 -0
  17. data/bin/gstudio_pry.rb +7 -0
  18. data/bin/install-tinytex +6 -0
  19. data/bin/run_all_rspec +43 -0
  20. data/bin/run_example +14 -0
  21. data/bin/run_old_rspec +19 -0
  22. data/bin/run_rspec +23 -0
  23. data/bin/run_rspec_subset +38 -0
  24. data/bin/run_slow_rspec +19 -0
  25. data/blogs/R-on-Rails-Planning-Document.md +940 -0
  26. data/blogs/README.md +100 -0
  27. data/blogs/galaaz_ggplot/galaaz_ggplot.Rmd +38 -66
  28. data/blogs/galaaz_ggplot/galaaz_ggplot.log +754 -0
  29. data/blogs/galaaz_ggplot/galaaz_ggplot.md +364 -0
  30. data/blogs/galaaz_ggplot/galaaz_ggplot.tex +607 -0
  31. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
  32. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
  33. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/midwest_rb.png +0 -0
  34. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/scatter_plot_rb.png +0 -0
  35. data/blogs/galaaz_ggplot/midwest.Rmd +3 -3
  36. data/blogs/galaaz_ggplot/midwest_external_png +0 -0
  37. data/blogs/gknit/gknit.Rmd +52 -55
  38. data/blogs/gknit/gknit.md +94 -94
  39. data/blogs/gknit/gknit_files/figure-html/bubble-1.png +0 -0
  40. data/blogs/gknit/gknit_files/figure-html/diverging_bar.png +0 -0
  41. data/blogs/gknit/lst.rds +0 -0
  42. data/blogs/gknit/model.rb +1 -1
  43. data/blogs/gknit/stats.bib +0 -0
  44. data/blogs/manual/include_model_local_repro.Rmd +14 -0
  45. data/blogs/manual/include_model_local_repro.md +75 -0
  46. data/blogs/manual/lst.rds +0 -0
  47. data/blogs/manual/manual.Rmd +1582 -196
  48. data/blogs/manual/manual.log +1786 -0
  49. data/blogs/manual/manual.md +3107 -890
  50. data/blogs/manual/manual.tex +3018 -1086
  51. data/blogs/manual/manual_files/figure-html/bubble-1.png +0 -0
  52. data/blogs/manual/manual_files/figure-html/diverging_bar.png +0 -0
  53. data/blogs/manual/manual_files/figure-latex/bubble-1.png +0 -0
  54. data/blogs/manual/model.rb +41 -0
  55. data/blogs/nse_dplyr/nse_dplyr.Rmd +277 -151
  56. data/blogs/nse_dplyr/nse_dplyr.log +928 -0
  57. data/blogs/nse_dplyr/nse_dplyr.md +457 -293
  58. data/blogs/oh_my/not_so.rb +0 -0
  59. data/blogs/oh_my/oh_my.Rmd +1234 -25
  60. data/blogs/oh_my/oh_my.log +804 -0
  61. data/blogs/oh_my/oh_my.md +1808 -228
  62. data/blogs/oh_my/oh_my.tex +821 -0
  63. data/blogs/oh_my/old.Rmd +15 -14
  64. data/blogs/ruby_plot/ruby_plot.Rmd +58 -82
  65. data/blogs/ruby_plot/ruby_plot.log +885 -0
  66. data/blogs/ruby_plot/ruby_plot.md +71 -103
  67. data/blogs/ruby_plot/ruby_plot.tex +940 -0
  68. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
  69. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
  70. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
  71. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
  72. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
  73. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_decorations.png +0 -0
  74. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
  75. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
  76. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
  77. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
  78. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
  79. data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
  80. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
  81. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
  82. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
  83. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
  84. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
  85. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
  86. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
  87. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
  88. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
  89. data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
  90. data/blogs/test/test.Rmd +14 -0
  91. data/examples/50Plots_MasterList/Images/midwest-scatterplot.PNG +0 -0
  92. data/examples/50Plots_MasterList/ScatterPlot.rb +0 -0
  93. data/examples/50Plots_MasterList/scatter_plot.rb +0 -0
  94. data/examples/Bibliography/master.bib +50 -0
  95. data/examples/Bibliography/stats.bib +72 -0
  96. data/examples/R/calc.R +0 -0
  97. data/examples/R/java_interop.R +0 -0
  98. data/examples/bioconductor_deseq2_airway/Documentation/DESeq2-airway-walkthrough.md +56 -0
  99. data/examples/bioconductor_deseq2_airway/bench_galaaz_three_same_process.rb +53 -0
  100. data/examples/bioconductor_deseq2_airway/bench_r_three_same_process.R +34 -0
  101. data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz.rb +33 -0
  102. data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz_optimized.rb +34 -0
  103. data/examples/bioconductor_deseq2_airway/deseq2_airway_minimal.R +30 -0
  104. data/examples/bioconductor_deseq2_airway/deseq2_airway_pipeline_for_bench.R +36 -0
  105. data/examples/islr/all.rb +13 -0
  106. data/examples/islr/ch2.spec.rb +37 -7
  107. data/examples/islr/ch3.spec.rb +11 -2
  108. data/examples/islr/ch3_boston.rb +27 -0
  109. data/examples/islr/ch3_multiple_regression.rb +0 -0
  110. data/examples/islr/ch6.spec.rb +24 -1
  111. data/examples/islr/x_y_rnorm.jpg +0 -0
  112. data/examples/latex_templates/Test-acm_article/Makefile +16 -0
  113. data/examples/latex_templates/Test-acm_article/Test-acm_article.Rmd +65 -0
  114. data/examples/latex_templates/Test-acm_article/acm_proc_article-sp.cls +1670 -0
  115. data/examples/latex_templates/Test-acm_article/sensys-abstract.cls +703 -0
  116. data/examples/latex_templates/Test-acm_article/sigproc.bib +59 -0
  117. data/examples/latex_templates/Test-acs_article/Test-acs_article.Rmd +260 -0
  118. data/examples/latex_templates/Test-acs_article/acs-Test-acs_article.bib +11 -0
  119. data/examples/latex_templates/Test-acs_article/acs-my_output.bib +11 -0
  120. data/examples/latex_templates/Test-acs_article/acstest.bib +17 -0
  121. data/examples/latex_templates/Test-aea_article/AEA.cls +1414 -0
  122. data/{blogs/gknit/marshal.dump → examples/latex_templates/Test-aea_article/BibFile.bib} +0 -0
  123. data/examples/latex_templates/Test-aea_article/Test-aea_article.Rmd +108 -0
  124. data/examples/latex_templates/Test-aea_article/aea.bst +1269 -0
  125. data/examples/latex_templates/Test-aea_article/multicol.sty +853 -0
  126. data/examples/latex_templates/Test-aea_article/references.bib +0 -0
  127. data/examples/latex_templates/Test-aea_article/setspace.sty +546 -0
  128. data/examples/latex_templates/Test-amq_article/Test-amq_article.Rmd +256 -0
  129. data/examples/latex_templates/Test-amq_article/Test-amq_article.pdfsync +3397 -0
  130. data/examples/latex_templates/Test-ams_article/Test-ams_article.Rmd +215 -0
  131. data/examples/latex_templates/Test-ams_article/amstest.bib +436 -0
  132. data/examples/latex_templates/Test-asa_article/Test-asa_article.Rmd +153 -0
  133. data/examples/latex_templates/Test-asa_article/agsm.bst +1353 -0
  134. data/examples/latex_templates/Test-asa_article/bibliography.bib +233 -0
  135. data/examples/latex_templates/Test-ieee_article/IEEEtran.bst +2409 -0
  136. data/examples/latex_templates/Test-ieee_article/IEEEtran.cls +6346 -0
  137. data/examples/latex_templates/Test-ieee_article/Test-ieee_article.Rmd +175 -0
  138. data/examples/latex_templates/Test-ieee_article/mybibfile.bib +20 -0
  139. data/examples/latex_templates/Test-rjournal_article/RJournal.sty +335 -0
  140. data/examples/latex_templates/Test-rjournal_article/RJreferences.bib +18 -0
  141. data/examples/latex_templates/Test-rjournal_article/Test-rjournal_article.Rmd +52 -0
  142. data/examples/latex_templates/Test-springer_article/Test-springer_article.Rmd +65 -0
  143. data/examples/latex_templates/Test-springer_article/bibliography.bib +26 -0
  144. data/examples/latex_templates/Test-springer_article/spbasic.bst +1658 -0
  145. data/examples/latex_templates/Test-springer_article/spmpsci.bst +1512 -0
  146. data/examples/latex_templates/Test-springer_article/spphys.bst +1443 -0
  147. data/examples/latex_templates/Test-springer_article/svglov3.clo +113 -0
  148. data/examples/latex_templates/Test-springer_article/svjour3.cls +1431 -0
  149. data/examples/misc/baseball.csv +0 -0
  150. data/examples/misc/ggplot.rb +3 -2
  151. data/examples/misc/moneyball.rb +0 -0
  152. data/examples/misc/subsetting.rb +0 -0
  153. data/examples/multithread_shards_to_r/shards_to_r.rb +67 -0
  154. data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.Rmd +73 -0
  155. data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.Rmd +382 -0
  156. data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.Rmd +164 -0
  157. data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.Rmd +92 -0
  158. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/attend-grade-relationships.csv +482 -0
  159. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.Rmd +280 -0
  160. data/examples/rmarkdown/svm-xaringan-example/svm-xaringan-example.Rmd +386 -0
  161. data/examples/sthda_ggplot/README.md +0 -0
  162. data/examples/sthda_ggplot/RUN.md +41 -0
  163. data/examples/sthda_ggplot/all.rb +0 -0
  164. data/examples/sthda_ggplot/one_variable_continuous/density_gg.rb +0 -0
  165. data/examples/sthda_ggplot/one_variable_continuous/geom_area.rb +0 -0
  166. data/examples/sthda_ggplot/one_variable_continuous/geom_density.rb +2 -0
  167. data/examples/sthda_ggplot/one_variable_continuous/geom_dotplot.rb +0 -0
  168. data/examples/sthda_ggplot/one_variable_continuous/geom_freqpoly.rb +0 -0
  169. data/examples/sthda_ggplot/one_variable_continuous/geom_histogram.rb +0 -0
  170. data/examples/sthda_ggplot/one_variable_continuous/histogram_density.rb +0 -0
  171. data/examples/sthda_ggplot/one_variable_continuous/stat.rb +0 -0
  172. data/examples/sthda_ggplot/one_variable_discrete/bar.rb +0 -0
  173. data/examples/sthda_ggplot/qplots/box_violin_dot.rb +0 -0
  174. data/examples/sthda_ggplot/qplots/scatter_plots.rb +0 -0
  175. data/examples/sthda_ggplot/scatter_gg.rb +0 -0
  176. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_bin2d.rb +0 -0
  177. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_density2d.rb +0 -0
  178. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_hex.rb +0 -0
  179. data/examples/sthda_ggplot/two_variables_cont_cont/geom_point.rb +0 -0
  180. data/examples/sthda_ggplot/two_variables_cont_cont/geom_smooth.rb +0 -0
  181. data/examples/sthda_ggplot/two_variables_cont_cont/misc.rb +0 -0
  182. data/examples/sthda_ggplot/two_variables_cont_function/geom_area.rb +4 -3
  183. data/examples/sthda_ggplot/two_variables_disc_cont/geom_bar.rb +0 -0
  184. data/examples/sthda_ggplot/two_variables_disc_cont/geom_boxplot.rb +0 -0
  185. data/examples/sthda_ggplot/two_variables_disc_cont/geom_dotplot.rb +0 -0
  186. data/examples/sthda_ggplot/two_variables_disc_cont/geom_jitter.rb +0 -0
  187. data/examples/sthda_ggplot/two_variables_disc_cont/geom_line.rb +0 -0
  188. data/examples/sthda_ggplot/two_variables_disc_cont/geom_violin.rb +0 -0
  189. data/examples/sthda_ggplot/two_variables_disc_disc/geom_jitter.rb +0 -0
  190. data/examples/sthda_ggplot/two_variables_error/geom_crossbar.rb +0 -0
  191. data/ext/new_bridge/Makefile +46 -0
  192. data/ext/new_bridge/galaaz_gatekeeper_phase0.cpp +12 -0
  193. data/ext/new_bridge/galaaz_gatekeeper_phase1.cpp +1639 -0
  194. data/lib/R_interface/galaaz_device.R +20 -0
  195. data/lib/R_interface/include_engine.R +109 -0
  196. data/lib/R_interface/new_bridge_adapter.rb +824 -0
  197. data/lib/R_interface/r.rb +177 -25
  198. data/lib/R_interface/r_arrow.rb +113 -0
  199. data/lib/R_interface/r_libs.R +4 -4
  200. data/lib/R_interface/r_methods.rb +13 -116
  201. data/lib/R_interface/r_module_s.rb +0 -0
  202. data/lib/R_interface/rbinary_operators.rb +20 -2
  203. data/lib/R_interface/rclosure.rb +5 -1
  204. data/lib/R_interface/rdata_frame.rb +34 -70
  205. data/lib/R_interface/rdevice.rb +125 -0
  206. data/lib/R_interface/rdevices.R +0 -0
  207. data/lib/R_interface/renvironment.rb +10 -4
  208. data/lib/R_interface/rexpression.rb +5 -1
  209. data/lib/R_interface/rindexed_object.rb +41 -13
  210. data/lib/R_interface/rlanguage.rb +20 -62
  211. data/lib/R_interface/rlist.rb +115 -25
  212. data/lib/R_interface/rlogical_operators.rb +0 -0
  213. data/lib/R_interface/rmatrix.rb +2 -11
  214. data/lib/R_interface/rmd_indexed_object.rb +5 -1
  215. data/lib/R_interface/robject.rb +348 -290
  216. data/lib/R_interface/rpkg.rb +1 -0
  217. data/lib/R_interface/rsupport.rb +610 -331
  218. data/lib/R_interface/rsupport_scope.rb +2 -1
  219. data/lib/R_interface/rsymbol.rb +50 -0
  220. data/lib/R_interface/ruby_callback.rb +2 -3
  221. data/lib/R_interface/ruby_extensions.rb +225 -175
  222. data/lib/R_interface/runary_operators.rb +0 -0
  223. data/lib/R_interface/rvector.rb +147 -31
  224. data/lib/galaaz.rb +0 -0
  225. data/lib/galaaz_jruby.rb +22 -0
  226. data/lib/gknit/diagnostics.rb +50 -0
  227. data/lib/gknit/draft.rb +111 -0
  228. data/lib/gknit/include_engine.rb +15 -7
  229. data/lib/gknit/knitr_engine.rb +223 -107
  230. data/lib/gknit/rb_engine.rb +3 -3
  231. data/lib/gknit/ruby_engine.rb +0 -0
  232. data/lib/gknit.rb +3 -0
  233. data/lib/new_bridge/bootstrap/windows_bootstrap.rb +285 -0
  234. data/lib/new_bridge/envelope.rb +51 -0
  235. data/lib/new_bridge/eval_result.rb +26 -0
  236. data/lib/new_bridge/framing.rb +39 -0
  237. data/lib/new_bridge/instance_pool_client.rb +38 -0
  238. data/lib/new_bridge/r_instance_manager.rb +404 -0
  239. data/lib/new_bridge/session_client.rb +530 -0
  240. data/lib/new_bridge/tcp_framed.rb +44 -0
  241. data/lib/new_bridge.rb +9 -0
  242. data/lib/util/exec_ruby.rb +95 -46
  243. data/lib/util/inline_file.rb +35 -30
  244. data/new_bridge_specs/benchmark_phase5_5_unboxing_spec.rb +96 -0
  245. data/new_bridge_specs/eval_r_async_spec.rb +113 -0
  246. data/new_bridge_specs/integration_phase5_1_concurrent_spec.rb +50 -0
  247. data/new_bridge_specs/integration_phase5_1_eval_spec.rb +16 -0
  248. data/new_bridge_specs/integration_phase5_1_r_api_spec.rb +25 -0
  249. data/new_bridge_specs/integration_phase5_1_smoke_spec.rb +31 -0
  250. data/new_bridge_specs/integration_phase5_2_dataframe_unboxing_spec.rb +19 -0
  251. data/new_bridge_specs/integration_phase5_2_handle_eval_unboxing_spec.rb +25 -0
  252. data/new_bridge_specs/integration_phase5_3_callback_args_spec.rb +28 -0
  253. data/new_bridge_specs/integration_phase5_3_callback_error_spec.rb +22 -0
  254. data/new_bridge_specs/integration_phase5_3_callback_timeout_spec.rb +28 -0
  255. data/new_bridge_specs/integration_phase5_3_callbacks_smoke_spec.rb +22 -0
  256. data/new_bridge_specs/integration_phase5_3_edge_cases_spec.rb +52 -0
  257. data/new_bridge_specs/integration_phase5_3_nested_spec.rb +30 -0
  258. data/new_bridge_specs/integration_phase5_4_concurrent_sessions_spec.rb +53 -0
  259. data/new_bridge_specs/integration_phase5_4_nested_session_callbacks_spec.rb +49 -0
  260. data/new_bridge_specs/integration_phase5_4_session_routing_spec.rb +38 -0
  261. data/new_bridge_specs/integration_phase5_5_stress_concurrency_spec.rb +52 -0
  262. data/new_bridge_specs/integration_phase5_5_unbox_walk_spec.rb +46 -0
  263. data/new_bridge_specs/phase0_protocol_spec.rb +96 -0
  264. data/new_bridge_specs/phase1_req_ret_spec.rb +66 -0
  265. data/new_bridge_specs/phase2_multi_instance_spec.rb +67 -0
  266. data/new_bridge_specs/phase3_callbacks_spec.rb +71 -0
  267. data/new_bridge_specs/phase4_2_hardening_spec.rb +252 -0
  268. data/new_bridge_specs/phase4_3_r_instance_manager_spec.rb +85 -0
  269. data/new_bridge_specs/phase4_nested_callbacks_spec.rb +123 -0
  270. data/r_requires/ggplot.rb +0 -0
  271. data/r_requires/knitr.rb +0 -0
  272. data/specs/all.rb +15 -11
  273. data/specs/arrow_from_ruby_batches_spec.rb +50 -0
  274. data/specs/arrow_semantics_spec.rb +64 -0
  275. data/specs/bridge_concurrent_spec.rb +46 -0
  276. data/specs/bridge_nested_spec.rb +25 -0
  277. data/specs/dataframe_semantics_spec.rb +122 -0
  278. data/specs/dataframe_single_index_logical_filter_spec.rb +21 -0
  279. data/specs/dispatch_probe_cache_spec.rb +38 -0
  280. data/specs/dispatch_probe_error_class_fallback_spec.rb +20 -0
  281. data/specs/dispatch_probe_fallback_spec.rb +18 -0
  282. data/specs/environment_semantics_spec.rb +89 -0
  283. data/specs/field_access_spec.rb +31 -0
  284. data/specs/figures/bg.jpeg +0 -0
  285. data/specs/figures/bg.png +0 -0
  286. data/specs/figures/bg.svg +168 -57
  287. data/specs/figures/dose_len.png +0 -0
  288. data/specs/figures/no_args.jpeg +0 -0
  289. data/specs/figures/no_args.png +0 -0
  290. data/specs/figures/no_args.svg +168 -57
  291. data/specs/figures/width_height.jpeg +0 -0
  292. data/specs/figures/width_height.png +0 -0
  293. data/specs/figures/width_height_units1.jpeg +0 -0
  294. data/specs/figures/width_height_units1.png +0 -0
  295. data/specs/figures/width_height_units2.jpeg +0 -0
  296. data/specs/figures/width_height_units2.png +0 -0
  297. data/specs/formula_semantics_spec.rb +81 -0
  298. data/specs/galaaz_util_exec_ruby_spec.rb +85 -0
  299. data/specs/galaaz_util_inline_file_spec.rb +54 -0
  300. data/specs/gknit_cli_option_permutation_spec.rb +24 -0
  301. data/specs/gknit_include_engine_spec.rb +72 -0
  302. data/specs/gknit_install_timeout_report_spec.rb +69 -0
  303. data/specs/gknit_internal_error_report_spec.rb +57 -0
  304. data/specs/gknit_vector_map_output_spec.rb +59 -0
  305. data/specs/globalenv_guardrail_spec.rb +52 -0
  306. data/specs/language_expression_semantics_spec.rb +145 -0
  307. data/specs/list_semantics_spec.rb +111 -0
  308. data/specs/new_bridge_bulk_dataframe_transfer_spec.rb +44 -0
  309. data/specs/new_bridge_bulk_vector_transfer_spec.rb +73 -0
  310. data/specs/new_bridge_callback_timeout_spec.rb +69 -0
  311. data/specs/new_bridge_eval_r_fallback_spec.rb +55 -0
  312. data/specs/nil_null_spec.rb +42 -0
  313. data/specs/object_build_phase2_spec.rb +53 -0
  314. data/specs/phase1_callback_bridge_spec.rb +84 -0
  315. data/specs/phase2_gknit_generic_rendering_guardrail_spec.rb +46 -0
  316. data/specs/phase2_gknit_no_raw_code_leakage_spec.rb +43 -0
  317. data/specs/phase3_gknit_generic_graphics_capture_spec.rb +71 -0
  318. data/specs/plot_device_semantics_spec.rb +28 -0
  319. data/specs/plot_snapshot_semantics_spec.rb +58 -0
  320. data/specs/protocol_result_spec.rb +236 -0
  321. data/specs/r_batch_fail_fast_spec.rb +47 -0
  322. data/specs/r_bridge_bootstrap_spec.rb +11 -0
  323. data/specs/r_devices.spec.rb +1 -1
  324. data/specs/r_eval.spec.rb +16 -18
  325. data/specs/r_function.spec.rb +1 -1
  326. data/specs/r_instance_manager_spec.rb +285 -0
  327. data/specs/r_list_apply.spec.rb +15 -15
  328. data/specs/r_matrix.spec.rb +0 -0
  329. data/specs/r_nse.spec.rb +5 -5
  330. data/specs/r_object_send_dispatch_spec.rb +13 -0
  331. data/specs/r_vector_comparator_spec.rb +8 -0
  332. data/specs/r_vector_creation.spec.rb +0 -0
  333. data/specs/r_vector_functions.spec.rb +0 -0
  334. data/specs/r_vector_object.spec.rb +0 -0
  335. data/specs/r_vector_operators.spec.rb +0 -0
  336. data/specs/r_vector_structured_scalar_reads_spec.rb +35 -0
  337. data/specs/r_vector_subsetting.spec.rb +0 -0
  338. data/specs/range_helper_spec.rb +21 -0
  339. data/specs/rsupport_scope_spec.rb +28 -0
  340. data/specs/rsupport_var_name_thread_safety_spec.rb +24 -0
  341. data/specs/scalar_character_spec.rb +44 -0
  342. data/specs/scoped_symbol_dsl_refinement_spec.rb +40 -0
  343. data/specs/session_env_bridge_spec.rb +25 -0
  344. data/specs/simplecov_bootstrap_spec.rb +10 -0
  345. data/specs/spec_helper.rb +10 -0
  346. data/specs/tmp.rb +41 -20
  347. data/specs/unboxing_recursion_regression_spec.rb +30 -0
  348. data/specs/unboxing_spec.rb +49 -0
  349. data/specs/verify_callbacks.rb +42 -0
  350. data/sty/galaaz.sty +0 -0
  351. data/version.rb +1 -1
  352. metadata +239 -71
  353. data/blogs/galaaz_ggplot/galaaz_ggplot.aux +0 -41
  354. data/blogs/galaaz_ggplot/galaaz_ggplot.html +0 -705
  355. data/blogs/galaaz_ggplot/galaaz_ggplot.out +0 -10
  356. data/blogs/galaaz_ggplot/galaaz_ggplot.pdf +0 -0
  357. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/midwest_rb.pdf +0 -0
  358. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/scatter_plot_rb.pdf +0 -0
  359. data/blogs/galaaz_ggplot/midwest.html +0 -188
  360. data/blogs/gknit/gknit.html +0 -2266
  361. data/blogs/gknit/gknit.pdf +0 -0
  362. data/blogs/gknit/gknit.tex +0 -1358
  363. data/blogs/manual/graph.rb +0 -29
  364. data/blogs/manual/manual.html +0 -2995
  365. data/blogs/manual/manual.pdf +0 -0
  366. data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
  367. data/blogs/nse_dplyr/nse_dplyr.html +0 -960
  368. data/blogs/nse_dplyr/nse_dplyr.pdf +0 -0
  369. data/blogs/nse_dplyr/nse_dplyr.tex +0 -1373
  370. data/blogs/oh_my/oh_my.html +0 -680
  371. data/blogs/ruby_plot/ruby_plot.Rmd_external_figs +0 -662
  372. data/blogs/ruby_plot/ruby_plot.html +0 -729
  373. data/blogs/ruby_plot/ruby_plot.pdf +0 -0
  374. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.svg +0 -57
  375. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.svg +0 -106
  376. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.svg +0 -110
  377. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.svg +0 -174
  378. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.svg +0 -236
  379. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.svg +0 -296
  380. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.svg +0 -236
  381. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.svg +0 -218
  382. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.svg +0 -128
  383. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.svg +0 -150
  384. data/examples/paper/paper.rb +0 -36
  385. data/specs/r_dataframe.spec.rb +0 -379
  386. data/specs/r_environment.spec.rb +0 -140
  387. data/specs/r_formula.spec.rb +0 -232
  388. data/specs/r_language.spec.rb +0 -112
  389. data/specs/r_list.spec.rb +0 -293
  390. data/specs/r_plots.spec.rb +0 -72
  391. data/specs/ruby_expression.spec.rb +0 -315
@@ -0,0 +1,1353 @@
1
+ % BibTeX standard bibliography style `agsm' (one of the harvard family)
2
+ % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
3
+ % Copyright (C) 1991, all rights reserved.
4
+ % Copying of this file is authorized only if either
5
+ % (1) you make absolutely no changes to your copy, including name, or
6
+ % (2) if you do make changes, you name it something other than
7
+ % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, abbrv.bst, agsm.bst,
8
+ % dcu.bst or kluwer.bst.
9
+ % This restriction helps ensure that all standard styles are identical.
10
+ % The file harvard.tex has the documentation for this style.
11
+
12
+ % ACKNOWLEDGEMENT:
13
+ % This document is a modified version of alpha.bst to which it owes much of
14
+ % its functionality.
15
+
16
+ % AUTHOR
17
+ % Peter Williams, Key Centre for Design Quality, Sydney University
18
+ % e-mail: peterw@archsci.arch.su.oz.au
19
+
20
+ ENTRY
21
+ { address
22
+ author
23
+ booktitle
24
+ chapter
25
+ edition
26
+ editor
27
+ howpublished
28
+ institution
29
+ journal
30
+ key
31
+ month
32
+ note
33
+ number
34
+ organization
35
+ pages
36
+ publisher
37
+ school
38
+ series
39
+ title
40
+ type
41
+ URL
42
+ volume
43
+ year
44
+ }
45
+ { field.used etal.allowed etal.required} %%%XXX change
46
+ { extra.label sort.label list.year }
47
+
48
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
49
+
50
+ FUNCTION {init.state.consts}
51
+ { #0 'before.all :=
52
+ #1 'mid.sentence :=
53
+ #2 'after.sentence :=
54
+ #3 'after.block :=
55
+ }
56
+
57
+ STRINGS { s t f }
58
+
59
+ FUNCTION {output.nonnull}
60
+ { 's :=
61
+ output.state mid.sentence =
62
+ { ", " * write$ }
63
+ { output.state after.block =
64
+ { add.period$ write$
65
+ newline$
66
+ "\newblock " write$
67
+ }
68
+ { output.state before.all =
69
+ 'write$
70
+ { add.period$ " " * write$ }
71
+ if$
72
+ }
73
+ if$
74
+ mid.sentence 'output.state :=
75
+ }
76
+ if$
77
+ s
78
+ }
79
+
80
+ FUNCTION {output}
81
+ { duplicate$ empty$
82
+ 'pop$
83
+ 'output.nonnull
84
+ if$
85
+ }
86
+
87
+ FUNCTION {output.check}
88
+ { 't :=
89
+ duplicate$ empty$
90
+ { pop$ "empty " t * " in " * cite$ * warning$ }
91
+ 'output.nonnull
92
+ if$
93
+ }
94
+
95
+ FUNCTION {item.check}
96
+ { 't :=
97
+ empty$
98
+ { "empty " t * " in " * cite$ * warning$ }
99
+ { skip$ }
100
+ if$
101
+ }
102
+
103
+ FUNCTION {fin.entry}
104
+ { add.period$
105
+ write$
106
+ newline$
107
+ }
108
+
109
+ FUNCTION {new.block}
110
+ { output.state before.all =
111
+ 'skip$
112
+ { after.block 'output.state := }
113
+ if$
114
+ }
115
+
116
+ FUNCTION {not}
117
+ { { #0 }
118
+ { #1 }
119
+ if$
120
+ }
121
+
122
+ FUNCTION {and}
123
+ { 'skip$
124
+ { pop$ #0 }
125
+ if$
126
+ }
127
+
128
+ FUNCTION {or}
129
+ { { pop$ #1 }
130
+ 'skip$
131
+ if$
132
+ }
133
+
134
+ FUNCTION {field.or.null}
135
+ { duplicate$ empty$
136
+ { pop$ "" }
137
+ 'skip$
138
+ if$
139
+ }
140
+
141
+ FUNCTION {emphasize}
142
+ { duplicate$ empty$
143
+ { pop$ "" }
144
+ { "{\em " swap$ * "}" * }
145
+ if$
146
+ }
147
+
148
+ FUNCTION {embolden}
149
+ { duplicate$ empty$
150
+ { pop$ "" }
151
+ { "{\bf " swap$ * "}" * }
152
+ if$
153
+ }
154
+
155
+ FUNCTION {quote}
156
+ { duplicate$ empty$
157
+ { pop$ "" }
158
+ { "`" swap$ * "'" * }
159
+ if$
160
+ }
161
+
162
+ FUNCTION {write.url}
163
+ { URL empty$
164
+ { skip$ }
165
+ { "\newline\harvardurl{" URL * "}" * write$ newline$ }
166
+ if$
167
+ }
168
+
169
+ INTEGERS { nameptr namesleft numnames }
170
+
171
+ FUNCTION {format.names}
172
+ { 's :=
173
+ 'f :=
174
+ #1 'nameptr :=
175
+ s num.names$ 'numnames :=
176
+ numnames 'namesleft :=
177
+ { namesleft #0 > }
178
+ { s nameptr f format.name$ 't :=
179
+ nameptr #1 >
180
+ { namesleft #1 >
181
+ { ", " * t * }
182
+ { t "others" =
183
+ { " et~al." * }
184
+ { " \harvardand\ " * t * }
185
+ if$
186
+ }
187
+ if$
188
+ }
189
+ 't
190
+ if$
191
+ nameptr #1 + 'nameptr :=
192
+ namesleft #1 - 'namesleft :=
193
+ }
194
+ while$
195
+ }
196
+
197
+ FUNCTION {format.authors}
198
+ { author empty$
199
+ { "" }
200
+ { "{vv~}{ll}{, jj}{, f.}" author format.names }
201
+ if$
202
+ }
203
+
204
+ FUNCTION {format.editors}
205
+ { editor empty$
206
+ { "" }
207
+ { "{vv~}{ll}{, jj}{, f.}" editor format.names
208
+ editor num.names$ #1 >
209
+ { ", eds" * }
210
+ { ", ed." * }
211
+ if$
212
+ }
213
+ if$
214
+ }
215
+
216
+ FUNCTION {format.editors.reverse}
217
+ { editor empty$
218
+ { "" }
219
+ { "{f.~}{vv~}{ll}{, jj}" editor format.names
220
+ editor num.names$ #1 >
221
+ { ", eds" * }
222
+ { ", ed." * }
223
+ if$
224
+ }
225
+ if$
226
+ }
227
+
228
+ FUNCTION {format.title}
229
+ { title empty$
230
+ { "" }
231
+ { title "t" change.case$ }
232
+ if$
233
+ }
234
+
235
+ FUNCTION {n.dashify}
236
+ { 't :=
237
+ ""
238
+ { t empty$ not }
239
+ { t #1 #1 substring$ "-" =
240
+ { t #1 #2 substring$ "--" = not
241
+ { "--" *
242
+ t #2 global.max$ substring$ 't :=
243
+ }
244
+ { { t #1 #1 substring$ "-" = }
245
+ { "-" *
246
+ t #2 global.max$ substring$ 't :=
247
+ }
248
+ while$
249
+ }
250
+ if$
251
+ }
252
+ { t #1 #1 substring$ *
253
+ t #2 global.max$ substring$ 't :=
254
+ }
255
+ if$
256
+ }
257
+ while$
258
+ }
259
+
260
+ FUNCTION {format.btitle}
261
+ { title emphasize
262
+ }
263
+
264
+ FUNCTION {tie.or.space.connect}
265
+ { duplicate$ text.length$ #3 <
266
+ { "~" }
267
+ { " " }
268
+ if$
269
+ swap$ * *
270
+ }
271
+
272
+ FUNCTION {either.or.check}
273
+ { empty$
274
+ 'pop$
275
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
276
+ if$
277
+ }
278
+
279
+ FUNCTION {format.bvolume}
280
+ { volume empty$
281
+ { "" }
282
+ { "Vol." volume tie.or.space.connect
283
+ series empty$
284
+ 'skip$
285
+ { " of " * series emphasize * }
286
+ if$
287
+ "volume and number" number either.or.check
288
+ }
289
+ if$
290
+ }
291
+
292
+ FUNCTION {format.number.series}
293
+ { volume empty$
294
+ { number empty$
295
+ { series field.or.null }
296
+ { output.state mid.sentence =
297
+ { "number" }
298
+ { "Number" }
299
+ if$
300
+ number tie.or.space.connect
301
+ series empty$
302
+ { "there's a number but no series in " cite$ * warning$ }
303
+ { " {\em in} " * series quote * }
304
+ if$
305
+ }
306
+ if$
307
+ }
308
+ { "" }
309
+ if$
310
+ }
311
+
312
+ FUNCTION {format.edition}
313
+ { edition empty$
314
+ { "" }
315
+ { output.state mid.sentence =
316
+ { edition "l" change.case$ " edn" * }
317
+ { edition "t" change.case$ " edn" * }
318
+ if$
319
+ }
320
+ if$
321
+ }
322
+
323
+ INTEGERS { multiresult }
324
+
325
+ FUNCTION {multi.page.check}
326
+ { 't :=
327
+ #0 'multiresult :=
328
+ { multiresult not
329
+ t empty$ not
330
+ and
331
+ }
332
+ { t #1 #1 substring$
333
+ duplicate$ "-" =
334
+ swap$ duplicate$ "," =
335
+ swap$ "+" =
336
+ or or
337
+ { #1 'multiresult := }
338
+ { t #2 global.max$ substring$ 't := }
339
+ if$
340
+ }
341
+ while$
342
+ multiresult
343
+ }
344
+
345
+ FUNCTION {format.pages}
346
+ { pages empty$
347
+ { "" }
348
+ { pages multi.page.check
349
+ { "pp.~" pages n.dashify * }
350
+ { "p.~" pages * }
351
+ if$
352
+ }
353
+ if$
354
+ }
355
+
356
+ FUNCTION {format.vol.num.pages}
357
+ { volume embolden field.or.null
358
+ number empty$
359
+ 'skip$
360
+ { "(" number * ")" * *
361
+ volume empty$
362
+ { "there's a number but no volume in " cite$ * warning$ }
363
+ 'skip$
364
+ if$
365
+ }
366
+ if$
367
+ pages empty$
368
+ 'skip$
369
+ { duplicate$ empty$
370
+ { pop$ format.pages }
371
+ { ",~" * pages n.dashify * }
372
+ if$
373
+ }
374
+ if$
375
+ }
376
+
377
+ FUNCTION {format.chapter.pages}
378
+ { chapter empty$
379
+ 'format.pages
380
+ { type empty$
381
+ { "chapter" }
382
+ { type "l" change.case$ }
383
+ if$
384
+ chapter tie.or.space.connect
385
+ pages empty$
386
+ 'skip$
387
+ { ", " * format.pages * }
388
+ if$
389
+ }
390
+ if$
391
+ }
392
+
393
+ FUNCTION {format.in.ed.booktitle}
394
+ { booktitle empty$
395
+ { "" }
396
+ { editor empty$
397
+ { "{\em in} " booktitle quote * }
398
+ { "{\em in} " format.editors.reverse * ", " * booktitle quote * }
399
+ if$
400
+ }
401
+ if$
402
+ }
403
+
404
+ FUNCTION {empty.misc.check}
405
+ { author empty$ title empty$ howpublished empty$
406
+ month empty$ year empty$ note empty$
407
+ and and and and and
408
+ key empty$ not and
409
+ { "all relevant fields are empty in " cite$ * warning$ }
410
+ 'skip$
411
+ if$
412
+ }
413
+
414
+ FUNCTION {format.thesis.type}
415
+ { type empty$
416
+ 'skip$
417
+ { pop$
418
+ type "t" change.case$
419
+ }
420
+ if$
421
+ }
422
+
423
+ FUNCTION {format.tr.number}
424
+ { type empty$
425
+ { "Technical Report" }
426
+ 'type
427
+ if$
428
+ number empty$
429
+ { "t" change.case$ }
430
+ { number tie.or.space.connect }
431
+ if$
432
+ }
433
+
434
+ FUNCTION {format.article.crossref}
435
+ { key empty$
436
+ { journal empty$
437
+ { "need key or journal for " cite$ * " to crossref " * crossref *
438
+ warning$
439
+ ""
440
+ }
441
+ { "in {\em " journal * "\/} \cite{" * crossref * "}" *}
442
+ if$
443
+ }
444
+ { "{\em in} \citeasnoun{" crossref * "}" * }
445
+ if$
446
+
447
+ }
448
+
449
+ FUNCTION {format.book.crossref}
450
+ { volume empty$
451
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
452
+ "in "
453
+ }
454
+ { "Vol." volume tie.or.space.connect
455
+ " of " *
456
+ }
457
+ if$
458
+ editor empty$
459
+ editor field.or.null author field.or.null =
460
+ or
461
+ { key empty$
462
+ { series empty$
463
+ { "need editor, key, or series for " cite$ * " to crossref " *
464
+ crossref * warning$
465
+ "" *
466
+ }
467
+ { "{\em " * series * "\/} \cite{" * crossref * "}" *}
468
+ if$
469
+ }
470
+ { " \citeasnoun{" * crossref * "}" * }
471
+ if$
472
+ }
473
+ { " \citeasnoun{" * crossref * "}" * }
474
+ if$
475
+ }
476
+
477
+ FUNCTION {format.incoll.inproc.crossref}
478
+ { editor empty$
479
+ editor field.or.null author field.or.null =
480
+ or
481
+ { key empty$
482
+ { booktitle empty$
483
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
484
+ crossref * warning$
485
+ ""
486
+ }
487
+ { "in {\em " booktitle * "\/}" * " \cite{" * crossref * "}" *}
488
+ if$
489
+ }
490
+ { "{\em in} \citeasnoun{" crossref * "}" * }
491
+ if$
492
+ }
493
+ { "{\em in} \citeasnoun{" crossref * "}" * }
494
+ if$
495
+
496
+ }
497
+
498
+ INTEGERS { len }
499
+
500
+ FUNCTION {chop.word}
501
+ { 's :=
502
+ 'len :=
503
+ s #1 len substring$ =
504
+ { s len #1 + global.max$ substring$ }
505
+ 's
506
+ if$
507
+ }
508
+
509
+ INTEGERS { ind tsslen }
510
+
511
+ STRINGS { tss ret rss istr }
512
+
513
+ FUNCTION {replace.substring}{
514
+ 'rss :=
515
+ 'tss :=
516
+ 'istr :=
517
+ "" 'ret :=
518
+ tss text.length$ 'tsslen :=
519
+ #1 'ind :=
520
+ { istr ind tsslen substring$ "" = not }
521
+ { istr ind tsslen substring$ tss =
522
+ { ret rss * 'ret :=
523
+ ind tsslen + 'ind :=
524
+ }
525
+ { ret istr ind #1 substring$ * 'ret :=
526
+ ind #1 + 'ind :=
527
+ }
528
+ if$
529
+ }
530
+ while$
531
+ ret
532
+ }
533
+
534
+ FUNCTION {format.lab.names.abbr}
535
+ { 's :=
536
+ s num.names$ 'numnames :=
537
+ numnames #1 >
538
+ { numnames #2 >
539
+ { s #1 "{vv~}{ll}" format.name$ " et~al." * }
540
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
541
+ { s #1 "{vv~}{ll}" format.name$ " et~al." * }
542
+ { s #1 "{vv~}{ll}" format.name$ " \harvardand\ " *
543
+ s #2 "{vv~}{ll}" format.name$ *
544
+ }
545
+ if$
546
+ }
547
+ if$
548
+ }
549
+ { s #1 "{vv~}{ll}" format.name$ }
550
+ if$
551
+ }
552
+
553
+ FUNCTION {format.lab.names.full}
554
+ { 's :=
555
+ #1 'nameptr :=
556
+ s num.names$ 'numnames :=
557
+ numnames 'namesleft :=
558
+ { namesleft #0 > }
559
+ { s nameptr "{vv~}{ll}" format.name$ 't :=
560
+ nameptr #1 >
561
+ { namesleft #1 >
562
+ { ", " * t * }
563
+ { t "others" =
564
+ { " et~al." * }
565
+ { " \harvardand\ " * t * }
566
+ if$
567
+ }
568
+ if$
569
+ }
570
+ 't
571
+ if$
572
+ nameptr #1 + 'nameptr :=
573
+ namesleft #1 - 'namesleft :=
574
+ }
575
+ while$
576
+ }
577
+
578
+ INTEGERS { author.field editor.field organization.field title.field key.field }
579
+
580
+ FUNCTION {init.field.constants}
581
+ { #0 'author.field :=
582
+ #1 'editor.field :=
583
+ #2 'organization.field :=
584
+ #3 'title.field :=
585
+ #4 'key.field :=
586
+ }
587
+
588
+ FUNCTION {make.list.label}
589
+ { author.field field.used =
590
+ { format.authors }
591
+ { editor.field field.used =
592
+ { format.editors }
593
+ { organization.field field.used =
594
+ { "The " #4 organization chop.word #3 text.prefix$ }
595
+ { title.field field.used =
596
+ { format.btitle }
597
+ { key.field field.used =
598
+ { key #3 text.prefix$ }
599
+ { "Internal error :001 on " cite$ * " label" * warning$ }
600
+ if$
601
+ }
602
+ if$
603
+ }
604
+ if$
605
+ }
606
+ if$
607
+ }
608
+ if$
609
+ }
610
+
611
+ FUNCTION {make.full.label}
612
+ { author.field field.used =
613
+ { author format.lab.names.full }
614
+ { editor.field field.used =
615
+ { editor format.lab.names.full }
616
+ { organization.field field.used =
617
+ { "The " #4 organization chop.word #3 text.prefix$ }
618
+ { title.field field.used =
619
+ { format.btitle }
620
+ { key.field field.used =
621
+ { key #3 text.prefix$ }
622
+ { "Internal error :001 on " cite$ * " label" * warning$ }
623
+ if$
624
+ }
625
+ if$
626
+ }
627
+ if$
628
+ }
629
+ if$
630
+ }
631
+ if$
632
+ }
633
+
634
+ FUNCTION {make.abbr.label} %%%XXX change
635
+ {
636
+ etal.allowed
637
+ { author.field field.used =
638
+ { author format.lab.names.abbr }
639
+ { editor.field field.used =
640
+ { editor format.lab.names.abbr }
641
+ { organization.field field.used =
642
+ { "The " #4 organization chop.word #3 text.prefix$ }
643
+ { title.field field.used =
644
+ { format.btitle }
645
+ { key.field field.used =
646
+ { key #3 text.prefix$ }
647
+ {"Internal error :001 on " cite$ * " label" * warning$ }
648
+ if$
649
+ }
650
+ if$
651
+ }
652
+ if$
653
+ }
654
+ if$
655
+ }
656
+ if$
657
+ }
658
+ { make.full.label }
659
+ if$
660
+ }
661
+
662
+ FUNCTION {output.bibitem}
663
+ { newline$
664
+ etal.allowed %%%XXX change
665
+ etal.required
666
+ and
667
+ {
668
+ "\harvarditem[" write$
669
+ make.abbr.label write$
670
+ "]{" write$
671
+ }
672
+ {
673
+ "\harvarditem{" write$
674
+ }
675
+ if$
676
+ make.full.label write$
677
+ "}{" write$
678
+ list.year write$
679
+ "}{" write$
680
+ cite$ write$
681
+ "}" write$
682
+ newline$
683
+ ""
684
+ before.all 'output.state :=
685
+ }
686
+
687
+ FUNCTION {list.label.output}
688
+ { make.list.label " " * write$
689
+ }
690
+
691
+ FUNCTION {article}
692
+ { output.bibitem
693
+ list.label.output
694
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
695
+ author "author" item.check
696
+ title.field field.used =
697
+ { skip$ }
698
+ { format.title quote "title" output.check }
699
+ if$
700
+ crossref missing$
701
+ { journal emphasize "journal" duplicate$ item.check
702
+ " " * format.vol.num.pages * output
703
+ }
704
+ { format.article.crossref output.nonnull
705
+ format.pages output
706
+ }
707
+ if$
708
+ new.block
709
+ note output
710
+ fin.entry
711
+ write.url
712
+ }
713
+
714
+ FUNCTION {book}
715
+ { output.bibitem
716
+ list.label.output
717
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
718
+ author empty$
719
+ { editor "author and editor" item.check }
720
+ { crossref missing$
721
+ { "author and editor" editor either.or.check }
722
+ 'skip$
723
+ if$
724
+ }
725
+ if$
726
+ title.field field.used =
727
+ { skip$ }
728
+ { format.btitle "title" output.check }
729
+ if$
730
+ crossref missing$
731
+ { format.bvolume output
732
+ format.number.series output
733
+ format.edition output
734
+ publisher "publisher" output.check
735
+ address output
736
+ }
737
+ { format.book.crossref output.nonnull
738
+ format.edition output
739
+ }
740
+ if$
741
+ new.block
742
+ note output
743
+ fin.entry
744
+ write.url
745
+ }
746
+
747
+ FUNCTION {booklet}
748
+ { output.bibitem
749
+ list.label.output
750
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
751
+ title.field field.used =
752
+ { skip$ }
753
+ { format.title quote "title" output.check }
754
+ if$
755
+ howpublished output
756
+ address output
757
+ new.block
758
+ note output
759
+ fin.entry
760
+ write.url
761
+ }
762
+
763
+ FUNCTION {inbook}
764
+ { output.bibitem
765
+ list.label.output
766
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
767
+ author empty$
768
+ { editor "author and editor" item.check }
769
+ { crossref missing$
770
+ { "author and editor" editor either.or.check }
771
+ 'skip$
772
+ if$
773
+ }
774
+ if$
775
+ title.field field.used =
776
+ { skip$ }
777
+ { format.btitle "title" output.check }
778
+ if$
779
+ crossref missing$
780
+ { format.bvolume output
781
+ format.number.series output
782
+ format.edition output
783
+ publisher "publisher" output.check
784
+ address output
785
+ }
786
+ { format.book.crossref output.nonnull
787
+ format.edition output
788
+ }
789
+ if$
790
+ format.chapter.pages "chapter and pages" output.check
791
+ new.block
792
+ note output
793
+ fin.entry
794
+ write.url
795
+ }
796
+
797
+ FUNCTION {incollection}
798
+ { output.bibitem
799
+ list.label.output
800
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
801
+ title.field field.used =
802
+ { skip$ }
803
+ { format.title "title" output.check }
804
+ if$
805
+ author "author" item.check
806
+ crossref missing$
807
+ { format.in.ed.booktitle "booktitle" output.check
808
+ format.edition output
809
+ format.bvolume output
810
+ format.number.series output
811
+ publisher "publisher" output.check
812
+ address output
813
+ }
814
+ { format.incoll.inproc.crossref output.nonnull
815
+ }
816
+ if$
817
+ format.chapter.pages output
818
+ new.block
819
+ note output
820
+ fin.entry
821
+ write.url
822
+ }
823
+
824
+ FUNCTION {inproceedings}
825
+ { output.bibitem
826
+ list.label.output
827
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
828
+ title.field field.used =
829
+ { skip$ }
830
+ { format.title "title" output.check }
831
+ if$
832
+ author "author" item.check
833
+ crossref missing$
834
+ { format.in.ed.booktitle "booktitle" output.check
835
+ format.bvolume output
836
+ format.number.series output
837
+ address empty$
838
+ { organization output
839
+ publisher output
840
+ }
841
+ { organization output
842
+ publisher output
843
+ address output.nonnull
844
+ }
845
+ if$
846
+ }
847
+ { format.incoll.inproc.crossref output.nonnull
848
+ }
849
+ if$
850
+ format.pages output
851
+ new.block
852
+ note output
853
+ fin.entry
854
+ write.url
855
+ }
856
+
857
+ FUNCTION {conference} { inproceedings }
858
+
859
+ FUNCTION {manual}
860
+ { output.bibitem
861
+ list.label.output
862
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
863
+ title.field field.used =
864
+ { skip$ }
865
+ { format.btitle "title" output.check }
866
+ if$
867
+ format.edition output
868
+ author empty$
869
+ { organization empty$
870
+ { address output }
871
+ 'skip$
872
+ if$
873
+ }
874
+ { organization output
875
+ address output
876
+ }
877
+ if$
878
+ new.block
879
+ note output
880
+ fin.entry
881
+ write.url
882
+ }
883
+
884
+ FUNCTION {mastersthesis}
885
+ { output.bibitem
886
+ list.label.output
887
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
888
+ author "author" item.check
889
+ title.field field.used =
890
+ { skip$ }
891
+ { format.title "title" output.check }
892
+ if$
893
+ "Master's thesis" format.thesis.type output.nonnull
894
+ school "school" output.check
895
+ address output
896
+ new.block
897
+ note output
898
+ fin.entry
899
+ write.url
900
+ }
901
+
902
+ FUNCTION {misc}
903
+ { output.bibitem
904
+ list.label.output
905
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
906
+ title.field field.used =
907
+ { skip$ }
908
+ { format.title quote output }
909
+ if$
910
+ howpublished output
911
+ new.block
912
+ note output
913
+ fin.entry
914
+ write.url
915
+ empty.misc.check
916
+ }
917
+
918
+ FUNCTION {phdthesis}
919
+ { output.bibitem
920
+ list.label.output
921
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
922
+ author "author" item.check
923
+ title.field field.used =
924
+ { skip$ }
925
+ { title "title" output.check }
926
+ if$
927
+ "PhD thesis" format.thesis.type output.nonnull
928
+ school "school" output.check
929
+ address output
930
+ new.block
931
+ note output
932
+ fin.entry
933
+ write.url
934
+ }
935
+
936
+ FUNCTION {proceedings}
937
+ { output.bibitem
938
+ list.label.output
939
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
940
+ title.field field.used =
941
+ { skip$ }
942
+ { format.btitle "title" output.check }
943
+ if$
944
+ format.bvolume output
945
+ format.number.series output
946
+ address empty$
947
+ { editor empty$
948
+ { skip$ }
949
+ { organization output
950
+ }
951
+ if$
952
+ publisher output
953
+ }
954
+ { editor empty$
955
+ 'skip$
956
+ { organization output }
957
+ if$
958
+ publisher output
959
+ address output.nonnull
960
+ }
961
+ if$
962
+ new.block
963
+ note output
964
+ fin.entry
965
+ write.url
966
+ }
967
+
968
+ FUNCTION {techreport}
969
+ { output.bibitem
970
+ list.label.output
971
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
972
+ author "author" item.check
973
+ title.field field.used =
974
+ { skip$ }
975
+ { format.title "title" output.check }
976
+ if$
977
+ format.tr.number output.nonnull
978
+ institution "institution" output.check
979
+ address output
980
+ new.block
981
+ note output
982
+ fin.entry
983
+ write.url
984
+ }
985
+
986
+ FUNCTION {unpublished}
987
+ { output.bibitem
988
+ list.label.output
989
+ " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
990
+ author "author" item.check
991
+ title.field field.used =
992
+ { skip$ }
993
+ { format.title "title" output.check }
994
+ if$
995
+ new.block
996
+ note "note" output.check
997
+ fin.entry
998
+ write.url
999
+ }
1000
+
1001
+ FUNCTION {default.type} { misc }
1002
+
1003
+ MACRO {jan} {"January"}
1004
+
1005
+ MACRO {feb} {"February"}
1006
+
1007
+ MACRO {mar} {"March"}
1008
+
1009
+ MACRO {apr} {"April"}
1010
+
1011
+ MACRO {may} {"May"}
1012
+
1013
+ MACRO {jun} {"June"}
1014
+
1015
+ MACRO {jul} {"July"}
1016
+
1017
+ MACRO {aug} {"August"}
1018
+
1019
+ MACRO {sep} {"September"}
1020
+
1021
+ MACRO {oct} {"October"}
1022
+
1023
+ MACRO {nov} {"November"}
1024
+
1025
+ MACRO {dec} {"December"}
1026
+
1027
+ MACRO {acmcs} {"ACM Computing Surveys"}
1028
+
1029
+ MACRO {acta} {"Acta Informatica"}
1030
+
1031
+ MACRO {cacm} {"Communications of the ACM"}
1032
+
1033
+ MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1034
+
1035
+ MACRO {ibmsj} {"IBM Systems Journal"}
1036
+
1037
+ MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1038
+
1039
+ MACRO {ieeetc} {"IEEE Transactions on Computers"}
1040
+
1041
+ MACRO {ieeetcad}
1042
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1043
+
1044
+ MACRO {ipl} {"Information Processing Letters"}
1045
+
1046
+ MACRO {jacm} {"Journal of the ACM"}
1047
+
1048
+ MACRO {jcss} {"Journal of Computer and System Sciences"}
1049
+
1050
+ MACRO {scp} {"Science of Computer Programming"}
1051
+
1052
+ MACRO {sicomp} {"SIAM Journal on Computing"}
1053
+
1054
+ MACRO {tocs} {"ACM Transactions on Computer Systems"}
1055
+
1056
+ MACRO {tods} {"ACM Transactions on Database Systems"}
1057
+
1058
+ MACRO {tog} {"ACM Transactions on Graphics"}
1059
+
1060
+ MACRO {toms} {"ACM Transactions on Mathematical Software"}
1061
+
1062
+ MACRO {toois} {"ACM Transactions on Office Information Systems"}
1063
+
1064
+ MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1065
+
1066
+ MACRO {tcs} {"Theoretical Computer Science"}
1067
+
1068
+ READ
1069
+
1070
+ EXECUTE {init.field.constants}
1071
+
1072
+ FUNCTION {sortify}
1073
+ { purify$
1074
+ "l" change.case$
1075
+ }
1076
+
1077
+ FUNCTION {sortify.names}
1078
+ { " \harvardand\ " " " replace.substring
1079
+ " et~al." " zzz" replace.substring
1080
+ sortify
1081
+ }
1082
+
1083
+ FUNCTION {author.key.label}
1084
+ { author empty$
1085
+ { key empty$
1086
+ { title.field 'field.used := }
1087
+ { key.field 'field.used := }
1088
+ if$
1089
+ }
1090
+ { author.field 'field.used := }
1091
+ if$
1092
+ }
1093
+
1094
+ FUNCTION {author.editor.key.label}
1095
+ { author empty$
1096
+ { editor empty$
1097
+ { key empty$
1098
+ { title.field 'field.used := }
1099
+ { key.field 'field.used := }
1100
+ if$
1101
+ }
1102
+ { editor.field 'field.used := }
1103
+ if$
1104
+ }
1105
+ { author.field 'field.used := }
1106
+ if$
1107
+ }
1108
+
1109
+ FUNCTION {author.key.organization.label}
1110
+ { author empty$
1111
+ { key empty$
1112
+ { organization empty$
1113
+ { title.field 'field.used := }
1114
+ { organization.field 'field.used := }
1115
+ if$
1116
+ }
1117
+ { key.field 'field.used := }
1118
+ if$
1119
+ }
1120
+ { author.field 'field.used := }
1121
+ if$
1122
+ }
1123
+
1124
+ FUNCTION {editor.key.organization.label}
1125
+ { editor empty$
1126
+ { key empty$
1127
+ { organization empty$
1128
+ { title.field 'field.used := }
1129
+ { organization.field 'field.used := }
1130
+ if$
1131
+ }
1132
+ { key.field 'field.used := }
1133
+ if$
1134
+ }
1135
+ { editor.field 'field.used := }
1136
+ if$
1137
+ }
1138
+
1139
+ FUNCTION {sort.format.title}
1140
+ { 't :=
1141
+ "A " #2
1142
+ "An " #3
1143
+ "The " #4 t chop.word
1144
+ chop.word
1145
+ chop.word
1146
+ sortify
1147
+ #1 global.max$ substring$
1148
+ }
1149
+
1150
+ FUNCTION {calc.label} %%%XXX change
1151
+ { make.abbr.label
1152
+ title.field field.used =
1153
+ { sort.format.title }
1154
+ { sortify.names }
1155
+ if$
1156
+ year field.or.null purify$ #-1 #4 substring$ sortify
1157
+ *
1158
+ 'sort.label :=
1159
+ }
1160
+
1161
+ FUNCTION {preliminaries} %%%XXX change
1162
+ { type$ "book" =
1163
+ type$ "inbook" =
1164
+ or
1165
+ 'author.editor.key.label
1166
+ { type$ "proceedings" =
1167
+ 'editor.key.organization.label
1168
+ { type$ "manual" =
1169
+ 'author.key.organization.label
1170
+ 'author.key.label
1171
+ if$
1172
+ }
1173
+ if$
1174
+ }
1175
+ if$
1176
+ author.field field.used = %%%XXX change
1177
+ {
1178
+ author num.names$ #2 >
1179
+ { #1 }
1180
+ { #0 }
1181
+ if$
1182
+ 'etal.required :=
1183
+ }
1184
+ {
1185
+ editor.field field.used =
1186
+ {
1187
+ editor num.names$ #2 >
1188
+ { #1 }
1189
+ { #0 }
1190
+ if$
1191
+ }
1192
+ { #0 }
1193
+ if$
1194
+ 'etal.required :=
1195
+ }
1196
+ if$
1197
+ #1 'etal.allowed :=
1198
+ }
1199
+
1200
+ FUNCTION {first.presort}
1201
+ { calc.label
1202
+ sort.label
1203
+ title.field field.used =
1204
+ { skip$ }
1205
+ { " "
1206
+ *
1207
+ make.list.label sortify.names
1208
+ *
1209
+ " "
1210
+ *
1211
+ title field.or.null
1212
+ sort.format.title
1213
+ *
1214
+ }
1215
+ if$
1216
+ #1 entry.max$ substring$
1217
+ 'sort.key$ :=
1218
+ }
1219
+
1220
+ ITERATE {preliminaries}
1221
+
1222
+ ITERATE {first.presort}
1223
+
1224
+ SORT
1225
+
1226
+ STRINGS { last.sort.label next.extra last.full.label}
1227
+
1228
+ INTEGERS { last.extra.num last.etal.allowed}
1229
+
1230
+ FUNCTION {initialize.confusion}
1231
+ { #0 int.to.chr$ 'last.sort.label :=
1232
+ #0 int.to.chr$ 'last.full.label :=
1233
+ #1 'last.etal.allowed :=
1234
+ }
1235
+
1236
+ FUNCTION {confusion.pass}
1237
+ { last.sort.label sort.label =
1238
+ { last.etal.allowed
1239
+ { last.full.label make.full.label sortify.names =
1240
+ { skip$ }
1241
+ { #0 'etal.allowed :=
1242
+ #0 'last.etal.allowed :=
1243
+ }
1244
+ if$
1245
+ }
1246
+ { #0 'etal.allowed := }
1247
+ if$
1248
+ }
1249
+ { sort.label 'last.sort.label :=
1250
+ make.full.label sortify.names 'last.full.label :=
1251
+ #1 'last.etal.allowed :=
1252
+ }
1253
+ if$
1254
+ }
1255
+
1256
+ EXECUTE {initialize.confusion}
1257
+
1258
+ ITERATE {confusion.pass}
1259
+
1260
+ EXECUTE {initialize.confusion}
1261
+
1262
+ REVERSE {confusion.pass}
1263
+
1264
+ FUNCTION {initialize.last.extra.num}
1265
+ { #0 int.to.chr$ 'last.sort.label :=
1266
+ "" 'next.extra :=
1267
+ #0 'last.extra.num :=
1268
+ }
1269
+
1270
+ FUNCTION {forward.pass}
1271
+ { last.sort.label sort.label =
1272
+ { last.extra.num #1 + 'last.extra.num :=
1273
+ last.extra.num int.to.chr$ 'extra.label :=
1274
+ }
1275
+ { "a" chr.to.int$ 'last.extra.num :=
1276
+ "" 'extra.label :=
1277
+ sort.label 'last.sort.label :=
1278
+ }
1279
+ if$
1280
+ }
1281
+
1282
+ FUNCTION {reverse.pass}
1283
+ { next.extra "b" =
1284
+ { "a" 'extra.label := }
1285
+ 'skip$
1286
+ if$
1287
+ year empty$
1288
+ { "n.d." extra.label emphasize * 'list.year := }
1289
+ { year extra.label emphasize * 'list.year := }
1290
+ if$
1291
+ extra.label 'next.extra :=
1292
+ }
1293
+
1294
+ ITERATE {first.presort}
1295
+
1296
+ SORT
1297
+
1298
+ EXECUTE {initialize.last.extra.num}
1299
+
1300
+ ITERATE {forward.pass}
1301
+
1302
+ REVERSE {reverse.pass}
1303
+
1304
+ FUNCTION {second.presort}
1305
+ { make.list.label
1306
+ title.field field.used =
1307
+ { sort.format.title }
1308
+ { sortify.names }
1309
+ if$
1310
+ " "
1311
+ *
1312
+ list.year field.or.null sortify
1313
+ *
1314
+ " "
1315
+ *
1316
+ title.field field.used =
1317
+ { skip$ }
1318
+ { title field.or.null
1319
+ sort.format.title
1320
+ *
1321
+ }
1322
+ if$
1323
+ #1 entry.max$ substring$
1324
+ 'sort.key$ :=
1325
+ }
1326
+
1327
+ ITERATE {second.presort}
1328
+
1329
+ SORT
1330
+
1331
+ FUNCTION {begin.bib}
1332
+ { preamble$ empty$
1333
+ 'skip$
1334
+ { "\harvardpreambledefs{%" write$ newline$
1335
+ preamble$ write$ "}" write$ newline$
1336
+ "\harvardpreambletext{%" write$ newline$
1337
+ preamble$ write$ "}" write$ newline$ }
1338
+ if$
1339
+ "\begin{thebibliography}{xx}" write$ newline$
1340
+ }
1341
+
1342
+ EXECUTE {begin.bib}
1343
+
1344
+ EXECUTE {init.state.consts}
1345
+
1346
+ ITERATE {call.type$}
1347
+
1348
+ FUNCTION {end.bib}
1349
+ { newline$
1350
+ "\end{thebibliography}" write$ newline$
1351
+ }
1352
+
1353
+ EXECUTE {end.bib}