LilyPond-Ruby 0.1.1 → 0.1.2

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 (1109) hide show
  1. checksums.yaml +4 -4
  2. data/etc/fonts/conf.d/10-hinting-slight.conf +15 -0
  3. data/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +83 -0
  4. data/etc/fonts/conf.d/11-lcdfilter-default.conf +17 -0
  5. data/etc/fonts/conf.d/20-unhint-small-vera.conf +49 -0
  6. data/etc/fonts/conf.d/30-metric-aliases.conf +637 -0
  7. data/etc/fonts/conf.d/40-nonlatin.conf +332 -0
  8. data/etc/fonts/conf.d/45-generic.conf +136 -0
  9. data/etc/fonts/conf.d/45-latin.conf +301 -0
  10. data/etc/fonts/conf.d/48-spacing.conf +16 -0
  11. data/etc/fonts/conf.d/49-sansserif.conf +22 -0
  12. data/etc/fonts/conf.d/50-user.conf +16 -0
  13. data/etc/fonts/conf.d/51-local.conf +7 -0
  14. data/etc/fonts/conf.d/60-generic.conf +64 -0
  15. data/etc/fonts/conf.d/60-latin.conf +88 -0
  16. data/etc/fonts/conf.d/65-fonts-persian.conf +418 -0
  17. data/etc/fonts/conf.d/65-nonlatin.conf +228 -0
  18. data/etc/fonts/conf.d/69-unifont.conf +28 -0
  19. data/etc/fonts/conf.d/80-delicious.conf +19 -0
  20. data/etc/fonts/conf.d/90-synthetic.conf +64 -0
  21. data/etc/fonts/conf.d/README +23 -0
  22. data/etc/fonts/fonts.conf +101 -0
  23. data/etc/relocate/fontconfig.reloc +2 -0
  24. data/etc/relocate/guile.reloc +2 -0
  25. data/etc/relocate/libexec.reloc +1 -0
  26. data/lib/guile/2.2/ccache/ice-9/and-let-star.go +0 -0
  27. data/lib/guile/2.2/ccache/ice-9/arrays.go +0 -0
  28. data/lib/guile/2.2/ccache/ice-9/atomic.go +0 -0
  29. data/lib/guile/2.2/ccache/ice-9/binary-ports.go +0 -0
  30. data/lib/guile/2.2/ccache/ice-9/boot-9.go +0 -0
  31. data/lib/guile/2.2/ccache/ice-9/buffered-input.go +0 -0
  32. data/lib/guile/2.2/ccache/ice-9/calling.go +0 -0
  33. data/lib/guile/2.2/ccache/ice-9/channel.go +0 -0
  34. data/lib/guile/2.2/ccache/ice-9/command-line.go +0 -0
  35. data/lib/guile/2.2/ccache/ice-9/common-list.go +0 -0
  36. data/lib/guile/2.2/ccache/ice-9/control.go +0 -0
  37. data/lib/guile/2.2/ccache/ice-9/curried-definitions.go +0 -0
  38. data/lib/guile/2.2/ccache/ice-9/debug.go +0 -0
  39. data/lib/guile/2.2/ccache/ice-9/deprecated.go +0 -0
  40. data/lib/guile/2.2/ccache/ice-9/documentation.go +0 -0
  41. data/lib/guile/2.2/ccache/ice-9/eval-string.go +0 -0
  42. data/lib/guile/2.2/ccache/ice-9/eval.go +0 -0
  43. data/lib/guile/2.2/ccache/ice-9/expect.go +0 -0
  44. data/lib/guile/2.2/ccache/ice-9/fdes-finalizers.go +0 -0
  45. data/lib/guile/2.2/ccache/ice-9/format.go +0 -0
  46. data/lib/guile/2.2/ccache/ice-9/ftw.go +0 -0
  47. data/lib/guile/2.2/ccache/ice-9/futures.go +0 -0
  48. data/lib/guile/2.2/ccache/ice-9/gap-buffer.go +0 -0
  49. data/lib/guile/2.2/ccache/ice-9/getopt-long.go +0 -0
  50. data/lib/guile/2.2/ccache/ice-9/hash-table.go +0 -0
  51. data/lib/guile/2.2/ccache/ice-9/hcons.go +0 -0
  52. data/lib/guile/2.2/ccache/ice-9/history.go +0 -0
  53. data/lib/guile/2.2/ccache/ice-9/i18n.go +0 -0
  54. data/lib/guile/2.2/ccache/ice-9/iconv.go +0 -0
  55. data/lib/guile/2.2/ccache/ice-9/lineio.go +0 -0
  56. data/lib/guile/2.2/ccache/ice-9/list.go +0 -0
  57. data/lib/guile/2.2/ccache/ice-9/local-eval.go +0 -0
  58. data/lib/guile/2.2/ccache/ice-9/ls.go +0 -0
  59. data/lib/guile/2.2/ccache/ice-9/mapping.go +0 -0
  60. data/lib/guile/2.2/ccache/ice-9/match.go +0 -0
  61. data/lib/guile/2.2/ccache/ice-9/networking.go +0 -0
  62. data/lib/guile/2.2/ccache/ice-9/null.go +0 -0
  63. data/lib/guile/2.2/ccache/ice-9/occam-channel.go +0 -0
  64. data/lib/guile/2.2/ccache/ice-9/optargs.go +0 -0
  65. data/lib/guile/2.2/ccache/ice-9/peg/cache.go +0 -0
  66. data/lib/guile/2.2/ccache/ice-9/peg/codegen.go +0 -0
  67. data/lib/guile/2.2/ccache/ice-9/peg/simplify-tree.go +0 -0
  68. data/lib/guile/2.2/ccache/ice-9/peg/string-peg.go +0 -0
  69. data/lib/guile/2.2/ccache/ice-9/peg/using-parsers.go +0 -0
  70. data/lib/guile/2.2/ccache/ice-9/peg.go +0 -0
  71. data/lib/guile/2.2/ccache/ice-9/poe.go +0 -0
  72. data/lib/guile/2.2/ccache/ice-9/poll.go +0 -0
  73. data/lib/guile/2.2/ccache/ice-9/popen.go +0 -0
  74. data/lib/guile/2.2/ccache/ice-9/ports.go +0 -0
  75. data/lib/guile/2.2/ccache/ice-9/posix.go +0 -0
  76. data/lib/guile/2.2/ccache/ice-9/pretty-print.go +0 -0
  77. data/lib/guile/2.2/ccache/ice-9/psyntax-pp.go +0 -0
  78. data/lib/guile/2.2/ccache/ice-9/q.go +0 -0
  79. data/lib/guile/2.2/ccache/ice-9/r5rs.go +0 -0
  80. data/lib/guile/2.2/ccache/ice-9/rdelim.go +0 -0
  81. data/lib/guile/2.2/ccache/ice-9/receive.go +0 -0
  82. data/lib/guile/2.2/ccache/ice-9/regex.go +0 -0
  83. data/lib/guile/2.2/ccache/ice-9/runq.go +0 -0
  84. data/lib/guile/2.2/ccache/ice-9/rw.go +0 -0
  85. data/lib/guile/2.2/ccache/ice-9/safe-r5rs.go +0 -0
  86. data/lib/guile/2.2/ccache/ice-9/safe.go +0 -0
  87. data/lib/guile/2.2/ccache/ice-9/sandbox.go +0 -0
  88. data/lib/guile/2.2/ccache/ice-9/save-stack.go +0 -0
  89. data/lib/guile/2.2/ccache/ice-9/scm-style-repl.go +0 -0
  90. data/lib/guile/2.2/ccache/ice-9/serialize.go +0 -0
  91. data/lib/guile/2.2/ccache/ice-9/session.go +0 -0
  92. data/lib/guile/2.2/ccache/ice-9/slib.go +0 -0
  93. data/lib/guile/2.2/ccache/ice-9/stack-catch.go +0 -0
  94. data/lib/guile/2.2/ccache/ice-9/streams.go +0 -0
  95. data/lib/guile/2.2/ccache/ice-9/string-fun.go +0 -0
  96. data/lib/guile/2.2/ccache/ice-9/suspendable-ports.go +0 -0
  97. data/lib/guile/2.2/ccache/ice-9/syncase.go +0 -0
  98. data/lib/guile/2.2/ccache/ice-9/textual-ports.go +0 -0
  99. data/lib/guile/2.2/ccache/ice-9/threads.go +0 -0
  100. data/lib/guile/2.2/ccache/ice-9/time.go +0 -0
  101. data/lib/guile/2.2/ccache/ice-9/top-repl.go +0 -0
  102. data/lib/guile/2.2/ccache/ice-9/unicode.go +0 -0
  103. data/lib/guile/2.2/ccache/ice-9/vlist.go +0 -0
  104. data/lib/guile/2.2/ccache/ice-9/weak-vector.go +0 -0
  105. data/lib/guile/2.2/ccache/language/brainfuck/compile-scheme.go +0 -0
  106. data/lib/guile/2.2/ccache/language/brainfuck/compile-tree-il.go +0 -0
  107. data/lib/guile/2.2/ccache/language/brainfuck/parse.go +0 -0
  108. data/lib/guile/2.2/ccache/language/brainfuck/spec.go +0 -0
  109. data/lib/guile/2.2/ccache/language/bytecode/spec.go +0 -0
  110. data/lib/guile/2.2/ccache/language/bytecode.go +0 -0
  111. data/lib/guile/2.2/ccache/language/cps/closure-conversion.go +0 -0
  112. data/lib/guile/2.2/ccache/language/cps/compile-bytecode.go +0 -0
  113. data/lib/guile/2.2/ccache/language/cps/constructors.go +0 -0
  114. data/lib/guile/2.2/ccache/language/cps/contification.go +0 -0
  115. data/lib/guile/2.2/ccache/language/cps/cse.go +0 -0
  116. data/lib/guile/2.2/ccache/language/cps/dce.go +0 -0
  117. data/lib/guile/2.2/ccache/language/cps/effects-analysis.go +0 -0
  118. data/lib/guile/2.2/ccache/language/cps/elide-values.go +0 -0
  119. data/lib/guile/2.2/ccache/language/cps/handle-interrupts.go +0 -0
  120. data/lib/guile/2.2/ccache/language/cps/intmap.go +0 -0
  121. data/lib/guile/2.2/ccache/language/cps/intset.go +0 -0
  122. data/lib/guile/2.2/ccache/language/cps/licm.go +0 -0
  123. data/lib/guile/2.2/ccache/language/cps/optimize.go +0 -0
  124. data/lib/guile/2.2/ccache/language/cps/peel-loops.go +0 -0
  125. data/lib/guile/2.2/ccache/language/cps/primitives.go +0 -0
  126. data/lib/guile/2.2/ccache/language/cps/prune-bailouts.go +0 -0
  127. data/lib/guile/2.2/ccache/language/cps/prune-top-level-scopes.go +0 -0
  128. data/lib/guile/2.2/ccache/language/cps/reify-primitives.go +0 -0
  129. data/lib/guile/2.2/ccache/language/cps/renumber.go +0 -0
  130. data/lib/guile/2.2/ccache/language/cps/rotate-loops.go +0 -0
  131. data/lib/guile/2.2/ccache/language/cps/self-references.go +0 -0
  132. data/lib/guile/2.2/ccache/language/cps/simplify.go +0 -0
  133. data/lib/guile/2.2/ccache/language/cps/slot-allocation.go +0 -0
  134. data/lib/guile/2.2/ccache/language/cps/spec.go +0 -0
  135. data/lib/guile/2.2/ccache/language/cps/specialize-numbers.go +0 -0
  136. data/lib/guile/2.2/ccache/language/cps/specialize-primcalls.go +0 -0
  137. data/lib/guile/2.2/ccache/language/cps/split-rec.go +0 -0
  138. data/lib/guile/2.2/ccache/language/cps/type-checks.go +0 -0
  139. data/lib/guile/2.2/ccache/language/cps/type-fold.go +0 -0
  140. data/lib/guile/2.2/ccache/language/cps/types.go +0 -0
  141. data/lib/guile/2.2/ccache/language/cps/utils.go +0 -0
  142. data/lib/guile/2.2/ccache/language/cps/verify.go +0 -0
  143. data/lib/guile/2.2/ccache/language/cps/with-cps.go +0 -0
  144. data/lib/guile/2.2/ccache/language/cps.go +0 -0
  145. data/lib/guile/2.2/ccache/language/ecmascript/array.go +0 -0
  146. data/lib/guile/2.2/ccache/language/ecmascript/base.go +0 -0
  147. data/lib/guile/2.2/ccache/language/ecmascript/compile-tree-il.go +0 -0
  148. data/lib/guile/2.2/ccache/language/ecmascript/function.go +0 -0
  149. data/lib/guile/2.2/ccache/language/ecmascript/impl.go +0 -0
  150. data/lib/guile/2.2/ccache/language/ecmascript/parse.go +0 -0
  151. data/lib/guile/2.2/ccache/language/ecmascript/spec.go +0 -0
  152. data/lib/guile/2.2/ccache/language/ecmascript/tokenize.go +0 -0
  153. data/lib/guile/2.2/ccache/language/elisp/bindings.go +0 -0
  154. data/lib/guile/2.2/ccache/language/elisp/boot.go +0 -0
  155. data/lib/guile/2.2/ccache/language/elisp/compile-tree-il.go +0 -0
  156. data/lib/guile/2.2/ccache/language/elisp/falias.go +0 -0
  157. data/lib/guile/2.2/ccache/language/elisp/lexer.go +0 -0
  158. data/lib/guile/2.2/ccache/language/elisp/parser.go +0 -0
  159. data/lib/guile/2.2/ccache/language/elisp/runtime/function-slot.go +0 -0
  160. data/lib/guile/2.2/ccache/language/elisp/runtime/value-slot.go +0 -0
  161. data/lib/guile/2.2/ccache/language/elisp/runtime.go +0 -0
  162. data/lib/guile/2.2/ccache/language/elisp/spec.go +0 -0
  163. data/lib/guile/2.2/ccache/language/scheme/compile-tree-il.go +0 -0
  164. data/lib/guile/2.2/ccache/language/scheme/decompile-tree-il.go +0 -0
  165. data/lib/guile/2.2/ccache/language/scheme/spec.go +0 -0
  166. data/lib/guile/2.2/ccache/language/tree-il/analyze.go +0 -0
  167. data/lib/guile/2.2/ccache/language/tree-il/canonicalize.go +0 -0
  168. data/lib/guile/2.2/ccache/language/tree-il/compile-cps.go +0 -0
  169. data/lib/guile/2.2/ccache/language/tree-il/debug.go +0 -0
  170. data/lib/guile/2.2/ccache/language/tree-il/effects.go +0 -0
  171. data/lib/guile/2.2/ccache/language/tree-il/fix-letrec.go +0 -0
  172. data/lib/guile/2.2/ccache/language/tree-il/optimize.go +0 -0
  173. data/lib/guile/2.2/ccache/language/tree-il/peval.go +0 -0
  174. data/lib/guile/2.2/ccache/language/tree-il/primitives.go +0 -0
  175. data/lib/guile/2.2/ccache/language/tree-il/spec.go +0 -0
  176. data/lib/guile/2.2/ccache/language/tree-il.go +0 -0
  177. data/lib/guile/2.2/ccache/language/value/spec.go +0 -0
  178. data/lib/guile/2.2/ccache/oop/goops/accessors.go +0 -0
  179. data/lib/guile/2.2/ccache/oop/goops/active-slot.go +0 -0
  180. data/lib/guile/2.2/ccache/oop/goops/composite-slot.go +0 -0
  181. data/lib/guile/2.2/ccache/oop/goops/describe.go +0 -0
  182. data/lib/guile/2.2/ccache/oop/goops/internal.go +0 -0
  183. data/lib/guile/2.2/ccache/oop/goops/save.go +0 -0
  184. data/lib/guile/2.2/ccache/oop/goops/simple.go +0 -0
  185. data/lib/guile/2.2/ccache/oop/goops/stklos.go +0 -0
  186. data/lib/guile/2.2/ccache/oop/goops.go +0 -0
  187. data/lib/guile/2.2/ccache/rnrs/arithmetic/bitwise.go +0 -0
  188. data/lib/guile/2.2/ccache/rnrs/arithmetic/fixnums.go +0 -0
  189. data/lib/guile/2.2/ccache/rnrs/arithmetic/flonums.go +0 -0
  190. data/lib/guile/2.2/ccache/rnrs/base.go +0 -0
  191. data/lib/guile/2.2/ccache/rnrs/bytevectors.go +0 -0
  192. data/lib/guile/2.2/ccache/rnrs/conditions.go +0 -0
  193. data/lib/guile/2.2/ccache/rnrs/control.go +0 -0
  194. data/lib/guile/2.2/ccache/rnrs/enums.go +0 -0
  195. data/lib/guile/2.2/ccache/rnrs/eval.go +0 -0
  196. data/lib/guile/2.2/ccache/rnrs/exceptions.go +0 -0
  197. data/lib/guile/2.2/ccache/rnrs/files.go +0 -0
  198. data/lib/guile/2.2/ccache/rnrs/hashtables.go +0 -0
  199. data/lib/guile/2.2/ccache/rnrs/io/ports.go +0 -0
  200. data/lib/guile/2.2/ccache/rnrs/io/simple.go +0 -0
  201. data/lib/guile/2.2/ccache/rnrs/lists.go +0 -0
  202. data/lib/guile/2.2/ccache/rnrs/mutable-pairs.go +0 -0
  203. data/lib/guile/2.2/ccache/rnrs/mutable-strings.go +0 -0
  204. data/lib/guile/2.2/ccache/rnrs/programs.go +0 -0
  205. data/lib/guile/2.2/ccache/rnrs/r5rs.go +0 -0
  206. data/lib/guile/2.2/ccache/rnrs/records/inspection.go +0 -0
  207. data/lib/guile/2.2/ccache/rnrs/records/procedural.go +0 -0
  208. data/lib/guile/2.2/ccache/rnrs/records/syntactic.go +0 -0
  209. data/lib/guile/2.2/ccache/rnrs/sorting.go +0 -0
  210. data/lib/guile/2.2/ccache/rnrs/syntax-case.go +0 -0
  211. data/lib/guile/2.2/ccache/rnrs/unicode.go +0 -0
  212. data/lib/guile/2.2/ccache/rnrs.go +0 -0
  213. data/lib/guile/2.2/ccache/scripts/api-diff.go +0 -0
  214. data/lib/guile/2.2/ccache/scripts/autofrisk.go +0 -0
  215. data/lib/guile/2.2/ccache/scripts/compile.go +0 -0
  216. data/lib/guile/2.2/ccache/scripts/disassemble.go +0 -0
  217. data/lib/guile/2.2/ccache/scripts/display-commentary.go +0 -0
  218. data/lib/guile/2.2/ccache/scripts/doc-snarf.go +0 -0
  219. data/lib/guile/2.2/ccache/scripts/frisk.go +0 -0
  220. data/lib/guile/2.2/ccache/scripts/generate-autoload.go +0 -0
  221. data/lib/guile/2.2/ccache/scripts/help.go +0 -0
  222. data/lib/guile/2.2/ccache/scripts/lint.go +0 -0
  223. data/lib/guile/2.2/ccache/scripts/list.go +0 -0
  224. data/lib/guile/2.2/ccache/scripts/punify.go +0 -0
  225. data/lib/guile/2.2/ccache/scripts/read-rfc822.go +0 -0
  226. data/lib/guile/2.2/ccache/scripts/read-scheme-source.go +0 -0
  227. data/lib/guile/2.2/ccache/scripts/read-text-outline.go +0 -0
  228. data/lib/guile/2.2/ccache/scripts/scan-api.go +0 -0
  229. data/lib/guile/2.2/ccache/scripts/snarf-check-and-output-texi.go +0 -0
  230. data/lib/guile/2.2/ccache/scripts/snarf-guile-m4-docs.go +0 -0
  231. data/lib/guile/2.2/ccache/scripts/summarize-guile-TODO.go +0 -0
  232. data/lib/guile/2.2/ccache/scripts/use2dot.go +0 -0
  233. data/lib/guile/2.2/ccache/srfi/srfi-1.go +0 -0
  234. data/lib/guile/2.2/ccache/srfi/srfi-10.go +0 -0
  235. data/lib/guile/2.2/ccache/srfi/srfi-11.go +0 -0
  236. data/lib/guile/2.2/ccache/srfi/srfi-111.go +0 -0
  237. data/lib/guile/2.2/ccache/srfi/srfi-13.go +0 -0
  238. data/lib/guile/2.2/ccache/srfi/srfi-14.go +0 -0
  239. data/lib/guile/2.2/ccache/srfi/srfi-16.go +0 -0
  240. data/lib/guile/2.2/ccache/srfi/srfi-17.go +0 -0
  241. data/lib/guile/2.2/ccache/srfi/srfi-18.go +0 -0
  242. data/lib/guile/2.2/ccache/srfi/srfi-19.go +0 -0
  243. data/lib/guile/2.2/ccache/srfi/srfi-2.go +0 -0
  244. data/lib/guile/2.2/ccache/srfi/srfi-26.go +0 -0
  245. data/lib/guile/2.2/ccache/srfi/srfi-27.go +0 -0
  246. data/lib/guile/2.2/ccache/srfi/srfi-28.go +0 -0
  247. data/lib/guile/2.2/ccache/srfi/srfi-31.go +0 -0
  248. data/lib/guile/2.2/ccache/srfi/srfi-34.go +0 -0
  249. data/lib/guile/2.2/ccache/srfi/srfi-35.go +0 -0
  250. data/lib/guile/2.2/ccache/srfi/srfi-37.go +0 -0
  251. data/lib/guile/2.2/ccache/srfi/srfi-38.go +0 -0
  252. data/lib/guile/2.2/ccache/srfi/srfi-39.go +0 -0
  253. data/lib/guile/2.2/ccache/srfi/srfi-4/gnu.go +0 -0
  254. data/lib/guile/2.2/ccache/srfi/srfi-4.go +0 -0
  255. data/lib/guile/2.2/ccache/srfi/srfi-41.go +0 -0
  256. data/lib/guile/2.2/ccache/srfi/srfi-42.go +0 -0
  257. data/lib/guile/2.2/ccache/srfi/srfi-43.go +0 -0
  258. data/lib/guile/2.2/ccache/srfi/srfi-45.go +0 -0
  259. data/lib/guile/2.2/ccache/srfi/srfi-6.go +0 -0
  260. data/lib/guile/2.2/ccache/srfi/srfi-60.go +0 -0
  261. data/lib/guile/2.2/ccache/srfi/srfi-64.go +0 -0
  262. data/lib/guile/2.2/ccache/srfi/srfi-67.go +0 -0
  263. data/lib/guile/2.2/ccache/srfi/srfi-69.go +0 -0
  264. data/lib/guile/2.2/ccache/srfi/srfi-71.go +0 -0
  265. data/lib/guile/2.2/ccache/srfi/srfi-8.go +0 -0
  266. data/lib/guile/2.2/ccache/srfi/srfi-88.go +0 -0
  267. data/lib/guile/2.2/ccache/srfi/srfi-9/gnu.go +0 -0
  268. data/lib/guile/2.2/ccache/srfi/srfi-9.go +0 -0
  269. data/lib/guile/2.2/ccache/srfi/srfi-98.go +0 -0
  270. data/lib/guile/2.2/ccache/statprof.go +0 -0
  271. data/lib/guile/2.2/ccache/sxml/apply-templates.go +0 -0
  272. data/lib/guile/2.2/ccache/sxml/fold.go +0 -0
  273. data/lib/guile/2.2/ccache/sxml/match.go +0 -0
  274. data/lib/guile/2.2/ccache/sxml/simple.go +0 -0
  275. data/lib/guile/2.2/ccache/sxml/ssax/input-parse.go +0 -0
  276. data/lib/guile/2.2/ccache/sxml/ssax.go +0 -0
  277. data/lib/guile/2.2/ccache/sxml/transform.go +0 -0
  278. data/lib/guile/2.2/ccache/sxml/xpath.go +0 -0
  279. data/lib/guile/2.2/ccache/system/base/ck.go +0 -0
  280. data/lib/guile/2.2/ccache/system/base/compile.go +0 -0
  281. data/lib/guile/2.2/ccache/system/base/lalr.go +0 -0
  282. data/lib/guile/2.2/ccache/system/base/language.go +0 -0
  283. data/lib/guile/2.2/ccache/system/base/message.go +0 -0
  284. data/lib/guile/2.2/ccache/system/base/pmatch.go +0 -0
  285. data/lib/guile/2.2/ccache/system/base/syntax.go +0 -0
  286. data/lib/guile/2.2/ccache/system/base/target.go +0 -0
  287. data/lib/guile/2.2/ccache/system/base/types.go +0 -0
  288. data/lib/guile/2.2/ccache/system/foreign-object.go +0 -0
  289. data/lib/guile/2.2/ccache/system/foreign.go +0 -0
  290. data/lib/guile/2.2/ccache/system/repl/command.go +0 -0
  291. data/lib/guile/2.2/ccache/system/repl/common.go +0 -0
  292. data/lib/guile/2.2/ccache/system/repl/coop-server.go +0 -0
  293. data/lib/guile/2.2/ccache/system/repl/debug.go +0 -0
  294. data/lib/guile/2.2/ccache/system/repl/error-handling.go +0 -0
  295. data/lib/guile/2.2/ccache/system/repl/repl.go +0 -0
  296. data/lib/guile/2.2/ccache/system/repl/server.go +0 -0
  297. data/lib/guile/2.2/ccache/system/syntax.go +0 -0
  298. data/lib/guile/2.2/ccache/system/vm/assembler.go +0 -0
  299. data/lib/guile/2.2/ccache/system/vm/coverage.go +0 -0
  300. data/lib/guile/2.2/ccache/system/vm/debug.go +0 -0
  301. data/lib/guile/2.2/ccache/system/vm/disassembler.go +0 -0
  302. data/lib/guile/2.2/ccache/system/vm/dwarf.go +0 -0
  303. data/lib/guile/2.2/ccache/system/vm/elf.go +0 -0
  304. data/lib/guile/2.2/ccache/system/vm/frame.go +0 -0
  305. data/lib/guile/2.2/ccache/system/vm/inspect.go +0 -0
  306. data/lib/guile/2.2/ccache/system/vm/linker.go +0 -0
  307. data/lib/guile/2.2/ccache/system/vm/loader.go +0 -0
  308. data/lib/guile/2.2/ccache/system/vm/program.go +0 -0
  309. data/lib/guile/2.2/ccache/system/vm/trace.go +0 -0
  310. data/lib/guile/2.2/ccache/system/vm/trap-state.go +0 -0
  311. data/lib/guile/2.2/ccache/system/vm/traps.go +0 -0
  312. data/lib/guile/2.2/ccache/system/vm/vm.go +0 -0
  313. data/lib/guile/2.2/ccache/system/xref.go +0 -0
  314. data/lib/guile/2.2/ccache/texinfo/docbook.go +0 -0
  315. data/lib/guile/2.2/ccache/texinfo/html.go +0 -0
  316. data/lib/guile/2.2/ccache/texinfo/indexing.go +0 -0
  317. data/lib/guile/2.2/ccache/texinfo/plain-text.go +0 -0
  318. data/lib/guile/2.2/ccache/texinfo/reflection.go +0 -0
  319. data/lib/guile/2.2/ccache/texinfo/serialize.go +0 -0
  320. data/lib/guile/2.2/ccache/texinfo/string-utils.go +0 -0
  321. data/lib/guile/2.2/ccache/texinfo.go +0 -0
  322. data/lib/guile/2.2/ccache/web/client.go +0 -0
  323. data/lib/guile/2.2/ccache/web/http.go +0 -0
  324. data/lib/guile/2.2/ccache/web/request.go +0 -0
  325. data/lib/guile/2.2/ccache/web/response.go +0 -0
  326. data/lib/guile/2.2/ccache/web/server/http.go +0 -0
  327. data/lib/guile/2.2/ccache/web/server.go +0 -0
  328. data/lib/guile/2.2/ccache/web/uri.go +0 -0
  329. data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  401. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  402. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  403. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  404. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  405. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  406. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  407. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  408. data/share/guile/2.2/guile-procedures.txt +8860 -0
  409. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  410. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  411. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  412. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  413. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  414. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  415. data/share/guile/2.2/ice-9/calling.scm +326 -0
  416. data/share/guile/2.2/ice-9/channel.scm +170 -0
  417. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  418. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  419. data/share/guile/2.2/ice-9/control.scm +110 -0
  420. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  421. data/share/guile/2.2/ice-9/debug.scm +25 -0
  422. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  423. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  424. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  425. data/share/guile/2.2/ice-9/eval.scm +723 -0
  426. data/share/guile/2.2/ice-9/expect.scm +171 -0
  427. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  428. data/share/guile/2.2/ice-9/format.scm +1626 -0
  429. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  430. data/share/guile/2.2/ice-9/futures.scm +308 -0
  431. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  432. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  433. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  434. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  435. data/share/guile/2.2/ice-9/history.scm +65 -0
  436. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  437. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  438. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  439. data/share/guile/2.2/ice-9/list.scm +36 -0
  440. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  441. data/share/guile/2.2/ice-9/ls.scm +94 -0
  442. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  443. data/share/guile/2.2/ice-9/match.scm +59 -0
  444. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  445. data/share/guile/2.2/ice-9/networking.scm +94 -0
  446. data/share/guile/2.2/ice-9/null.scm +34 -0
  447. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  448. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  449. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  450. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  451. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  452. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  453. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  454. data/share/guile/2.2/ice-9/peg.scm +42 -0
  455. data/share/guile/2.2/ice-9/poe.scm +116 -0
  456. data/share/guile/2.2/ice-9/poll.scm +172 -0
  457. data/share/guile/2.2/ice-9/popen.scm +178 -0
  458. data/share/guile/2.2/ice-9/ports.scm +566 -0
  459. data/share/guile/2.2/ice-9/posix.scm +75 -0
  460. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  461. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  462. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  463. data/share/guile/2.2/ice-9/q.scm +153 -0
  464. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  465. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  466. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  467. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  468. data/share/guile/2.2/ice-9/receive.scm +26 -0
  469. data/share/guile/2.2/ice-9/regex.scm +229 -0
  470. data/share/guile/2.2/ice-9/runq.scm +241 -0
  471. data/share/guile/2.2/ice-9/rw.scm +27 -0
  472. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  473. data/share/guile/2.2/ice-9/safe.scm +34 -0
  474. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  475. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  476. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  477. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  478. data/share/guile/2.2/ice-9/session.scm +530 -0
  479. data/share/guile/2.2/ice-9/slib.scm +33 -0
  480. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  481. data/share/guile/2.2/ice-9/streams.scm +168 -0
  482. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  483. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  484. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  485. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  486. data/share/guile/2.2/ice-9/threads.scm +392 -0
  487. data/share/guile/2.2/ice-9/time.scm +58 -0
  488. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  489. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  490. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  491. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  492. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  493. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  494. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  495. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  496. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  497. data/share/guile/2.2/language/bytecode.scm +104 -0
  498. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  499. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  500. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  501. data/share/guile/2.2/language/cps/contification.scm +448 -0
  502. data/share/guile/2.2/language/cps/cse.scm +414 -0
  503. data/share/guile/2.2/language/cps/dce.scm +363 -0
  504. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  505. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  506. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  507. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  508. data/share/guile/2.2/language/cps/intset.scm +830 -0
  509. data/share/guile/2.2/language/cps/licm.scm +308 -0
  510. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  511. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  512. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  513. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  514. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  515. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  516. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  517. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  518. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  519. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  520. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  521. data/share/guile/2.2/language/cps/spec.scm +51 -0
  522. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  523. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  524. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  525. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  526. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  527. data/share/guile/2.2/language/cps/types.scm +1826 -0
  528. data/share/guile/2.2/language/cps/utils.scm +550 -0
  529. data/share/guile/2.2/language/cps/verify.scm +304 -0
  530. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  531. data/share/guile/2.2/language/cps.scm +358 -0
  532. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  533. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  534. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  535. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  536. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  537. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  538. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  539. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  540. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  541. data/share/guile/2.2/language/elisp/boot.el +617 -0
  542. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  543. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  544. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  545. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  546. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  547. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  548. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  549. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  550. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  551. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  552. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  553. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  554. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  555. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  556. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  557. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  558. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  559. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  560. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  561. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  562. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  563. data/share/guile/2.2/language/tree-il.scm +630 -0
  564. data/share/guile/2.2/language/value/spec.scm +30 -0
  565. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  566. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  567. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  568. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  569. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  570. data/share/guile/2.2/oop/goops/save.scm +874 -0
  571. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  572. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  573. data/share/guile/2.2/oop/goops.scm +3176 -0
  574. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  575. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  576. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  577. data/share/guile/2.2/rnrs/base.scm +291 -0
  578. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  579. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  580. data/share/guile/2.2/rnrs/control.scm +22 -0
  581. data/share/guile/2.2/rnrs/enums.scm +152 -0
  582. data/share/guile/2.2/rnrs/eval.scm +39 -0
  583. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  584. data/share/guile/2.2/rnrs/files.scm +96 -0
  585. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  586. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  587. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  588. data/share/guile/2.2/rnrs/lists.scm +55 -0
  589. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  590. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  591. data/share/guile/2.2/rnrs/programs.scm +22 -0
  592. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  593. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  594. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  595. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  596. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  597. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  598. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  599. data/share/guile/2.2/rnrs.scm +289 -0
  600. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  601. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  602. data/share/guile/2.2/scripts/compile.scm +273 -0
  603. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  604. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  605. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  606. data/share/guile/2.2/scripts/frisk.scm +290 -0
  607. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  608. data/share/guile/2.2/scripts/help.scm +188 -0
  609. data/share/guile/2.2/scripts/lint.scm +318 -0
  610. data/share/guile/2.2/scripts/list.scm +91 -0
  611. data/share/guile/2.2/scripts/punify.scm +87 -0
  612. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  613. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  614. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  615. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  616. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  617. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  618. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  619. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  620. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  621. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  622. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  623. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  624. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  625. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  626. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  627. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  628. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  629. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  630. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  631. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  632. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  633. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  634. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  635. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  636. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  637. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  638. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  639. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  640. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  641. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  642. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  643. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  644. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  645. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  646. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  647. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  648. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  649. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  650. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  651. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  652. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  653. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  654. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  655. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  656. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  657. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  658. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  659. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  660. data/share/guile/2.2/statprof.scm +988 -0
  661. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  662. data/share/guile/2.2/sxml/fold.scm +250 -0
  663. data/share/guile/2.2/sxml/match.scm +75 -0
  664. data/share/guile/2.2/sxml/simple.scm +408 -0
  665. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  666. data/share/guile/2.2/sxml/ssax.scm +265 -0
  667. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  668. data/share/guile/2.2/sxml/transform.scm +298 -0
  669. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  670. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  671. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  672. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  673. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  674. data/share/guile/2.2/sxml/xpath.scm +493 -0
  675. data/share/guile/2.2/system/base/ck.scm +55 -0
  676. data/share/guile/2.2/system/base/compile.scm +282 -0
  677. data/share/guile/2.2/system/base/lalr.scm +51 -0
  678. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  679. data/share/guile/2.2/system/base/language.scm +119 -0
  680. data/share/guile/2.2/system/base/message.scm +238 -0
  681. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  682. data/share/guile/2.2/system/base/syntax.scm +299 -0
  683. data/share/guile/2.2/system/base/target.scm +152 -0
  684. data/share/guile/2.2/system/base/types.scm +561 -0
  685. data/share/guile/2.2/system/foreign-object.scm +91 -0
  686. data/share/guile/2.2/system/foreign.scm +200 -0
  687. data/share/guile/2.2/system/repl/command.scm +946 -0
  688. data/share/guile/2.2/system/repl/common.scm +263 -0
  689. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  690. data/share/guile/2.2/system/repl/debug.scm +210 -0
  691. data/share/guile/2.2/system/repl/describe.scm +347 -0
  692. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  693. data/share/guile/2.2/system/repl/repl.scm +233 -0
  694. data/share/guile/2.2/system/repl/server.scm +332 -0
  695. data/share/guile/2.2/system/syntax.scm +33 -0
  696. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  697. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  698. data/share/guile/2.2/system/vm/debug.scm +766 -0
  699. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  700. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  701. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  702. data/share/guile/2.2/system/vm/frame.scm +485 -0
  703. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  704. data/share/guile/2.2/system/vm/linker.scm +732 -0
  705. data/share/guile/2.2/system/vm/loader.scm +27 -0
  706. data/share/guile/2.2/system/vm/program.scm +312 -0
  707. data/share/guile/2.2/system/vm/trace.scm +121 -0
  708. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  709. data/share/guile/2.2/system/vm/traps.scm +608 -0
  710. data/share/guile/2.2/system/vm/vm.scm +32 -0
  711. data/share/guile/2.2/system/xref.scm +369 -0
  712. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  713. data/share/guile/2.2/texinfo/html.scm +279 -0
  714. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  715. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  716. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  717. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  718. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  719. data/share/guile/2.2/texinfo.scm +1263 -0
  720. data/share/guile/2.2/web/client.scm +513 -0
  721. data/share/guile/2.2/web/http.scm +2043 -0
  722. data/share/guile/2.2/web/request.scm +326 -0
  723. data/share/guile/2.2/web/response.scm +379 -0
  724. data/share/guile/2.2/web/server/http.scm +183 -0
  725. data/share/guile/2.2/web/server.scm +397 -0
  726. data/share/guile/2.2/web/uri.scm +552 -0
  727. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  728. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  729. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  730. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  739. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  742. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  748. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  749. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  750. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  751. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  783. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  784. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  785. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  786. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  787. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  858. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  859. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  886. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  887. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  903. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  904. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  905. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  906. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  907. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  908. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  909. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  910. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  911. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  912. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  913. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  914. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  915. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  916. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  918. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  919. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  920. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  921. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  922. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  923. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  924. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  925. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  926. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  927. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  928. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  929. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  930. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  931. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  932. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  933. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  934. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  935. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  936. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  937. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  938. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  939. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  940. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  941. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  942. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  943. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  944. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  945. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  946. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  947. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  948. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  949. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  950. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  951. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  952. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  953. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  954. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  955. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  956. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  957. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  958. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  959. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  960. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  961. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  962. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  963. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  964. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  965. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  966. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  967. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  968. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  969. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  970. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  983. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  984. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  985. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  986. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  987. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  988. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  989. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  990. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  991. data/share/lilypond/2.24.1/python/midi.py +212 -0
  992. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  993. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  994. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  995. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  996. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  997. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  998. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  999. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1000. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1001. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1002. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1003. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1004. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1005. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1006. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1007. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1008. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1009. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1010. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1011. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1022. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1023. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1024. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1025. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1026. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1034. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1035. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1036. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1037. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1038. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1039. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1040. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1041. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1042. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1043. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1044. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1045. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1046. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1047. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1048. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1049. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1050. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1051. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1052. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1053. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1054. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1055. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1056. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1057. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1058. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1059. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1060. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1061. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1062. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1063. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1064. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1065. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1066. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1067. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1068. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1069. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1070. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1071. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1072. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1073. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1074. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1075. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1076. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1077. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1078. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1079. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1080. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1081. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1082. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1083. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1084. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1085. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1086. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1087. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1088. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1089. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1090. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1091. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1092. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1093. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1109. metadata +1108 -1
@@ -0,0 +1,1626 @@
1
+ ;;;; "format.scm" Common LISP text output formatter for SLIB
2
+ ;;; Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
3
+ ;;;
4
+ ;;; This library is free software; you can redistribute it and/or
5
+ ;;; modify it under the terms of the GNU Lesser General Public
6
+ ;;; License as published by the Free Software Foundation; either
7
+ ;;; version 3 of the License, or (at your option) any later version.
8
+ ;;;
9
+ ;;; This library is distributed in the hope that it will be useful,
10
+ ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ ;;; Lesser General Public License for more details.
13
+ ;;;
14
+ ;;; You should have received a copy of the GNU Lesser General Public
15
+ ;;; License along with this library; if not, write to the Free Software
16
+ ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
+ ;;;
18
+
19
+ ;;; This code was orignally in the public domain.
20
+ ;;;
21
+ ;;; Written 1992-1994 by Dirk Lutzebaeck (lutzeb@cs.tu-berlin.de).
22
+ ;;;
23
+ ;;; Authors of the version from SLIB (< 1.4) were Ken Dickey and Aubrey
24
+ ;;; Jaffer.
25
+ ;;;
26
+ ;;; Assimilated into Guile May 1999.
27
+ ;;;
28
+ ;;; Please don't bother the original authors with bug reports, though;
29
+ ;;; send them to bug-guile@gnu.org.
30
+ ;;;
31
+
32
+ (define-module (ice-9 format)
33
+ #:autoload (ice-9 pretty-print) (pretty-print truncated-print)
34
+ #:autoload (ice-9 i18n) (%global-locale number->locale-string)
35
+ #:replace (format))
36
+
37
+ (define format:version "3.0")
38
+
39
+ (define (format destination format-string . format-args)
40
+ (if (not (string? format-string))
41
+ (error "format: expected a string for format string" format-string))
42
+
43
+ (let* ((port
44
+ (cond
45
+ ((not destination) (open-output-string))
46
+ ((boolean? destination) (current-output-port)) ; boolean but not false
47
+ ((output-port? destination) destination)
48
+ ((number? destination)
49
+ (issue-deprecation-warning
50
+ "Passing a number to format as the port is deprecated."
51
+ "Pass (current-error-port) instead.")
52
+ (current-error-port))
53
+ (else
54
+ (error "format: bad destination `~a'" destination))))
55
+
56
+ (output-col (or (port-column port) 0))
57
+
58
+ (flush-output? #f))
59
+
60
+ (define format:case-conversion #f)
61
+ (define format:pos 0) ; curr. format string parsing position
62
+ (define format:arg-pos 0) ; curr. format argument position
63
+ ; this is global for error presentation
64
+
65
+ ;; format string and char output routines on port
66
+
67
+ (define (format:out-str str)
68
+ (if format:case-conversion
69
+ (display (format:case-conversion str) port)
70
+ (display str port))
71
+ (set! output-col
72
+ (+ output-col (string-length str))))
73
+
74
+ (define (format:out-char ch)
75
+ (if format:case-conversion
76
+ (display (format:case-conversion (string ch))
77
+ port)
78
+ (write-char ch port))
79
+ (set! output-col
80
+ (if (char=? ch #\newline)
81
+ 0
82
+ (+ output-col 1))))
83
+
84
+ ;;(define (format:out-substr str i n) ; this allocates a new string
85
+ ;; (display (substring str i n) port)
86
+ ;; (set! output-col (+ output-col n)))
87
+
88
+ (define (format:out-substr str i n)
89
+ (do ((k i (+ k 1)))
90
+ ((= k n))
91
+ (write-char (string-ref str k) port))
92
+ (set! output-col (+ output-col (- n i))))
93
+
94
+ ;;(define (format:out-fill n ch) ; this allocates a new string
95
+ ;; (format:out-str (make-string n ch)))
96
+
97
+ (define (format:out-fill n ch)
98
+ (do ((i 0 (+ i 1)))
99
+ ((= i n))
100
+ (write-char ch port))
101
+ (set! output-col (+ output-col n)))
102
+
103
+ ;; format's user error handler
104
+
105
+ (define (format:error . args) ; never returns!
106
+ (let ((port (current-error-port)))
107
+ (set! format:error format:intern-error)
108
+ (if (not (zero? format:arg-pos))
109
+ (set! format:arg-pos (- format:arg-pos 1)))
110
+ (format port
111
+ "~%FORMAT: error with call: (format ~a \"~a<===~a\" ~
112
+ ~{~a ~}===>~{~a ~})~% "
113
+ destination
114
+ (substring format-string 0 format:pos)
115
+ (substring format-string format:pos
116
+ (string-length format-string))
117
+ (list-head format-args format:arg-pos)
118
+ (list-tail format-args format:arg-pos))
119
+ (apply format port args)
120
+ (newline port)
121
+ (set! format:error format:error-save)
122
+ (format:abort)))
123
+
124
+ (define (format:intern-error . args)
125
+ ;;if something goes wrong in format:error
126
+ (display "FORMAT: INTERNAL ERROR IN FORMAT:ERROR!") (newline)
127
+ (display " destination: ") (write destination) (newline)
128
+ (display " format string: ") (write format-string) (newline)
129
+ (display " format args: ") (write format-args) (newline)
130
+ (display " error args: ") (write args) (newline)
131
+ (set! format:error format:error-save)
132
+ (format:abort))
133
+
134
+ (define format:error-save format:error)
135
+
136
+ (define format:parameter-characters
137
+ '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\- #\+ #\v #\# #\'))
138
+
139
+ (define (format:format-work format-string arglist) ; does the formatting work
140
+ (letrec
141
+ ((format-string-len (string-length format-string))
142
+ (arg-pos 0) ; argument position in arglist
143
+ (arg-len (length arglist)) ; number of arguments
144
+ (modifier #f) ; 'colon | 'at | 'colon-at | #f
145
+ (params '()) ; directive parameter list
146
+ (param-value-found #f) ; a directive
147
+ ; parameter value
148
+ ; found
149
+ (conditional-nest 0) ; conditional nesting level
150
+ (clause-pos 0) ; last cond. clause
151
+ ; beginning char pos
152
+ (clause-default #f) ; conditional default
153
+ ; clause string
154
+ (clauses '()) ; conditional clause
155
+ ; string list
156
+ (conditional-type #f) ; reflects the
157
+ ; contional modifiers
158
+ (conditional-arg #f) ; argument to apply the conditional
159
+ (iteration-nest 0) ; iteration nesting level
160
+ (iteration-pos 0) ; iteration string
161
+ ; beginning char pos
162
+ (iteration-type #f) ; reflects the
163
+ ; iteration modifiers
164
+ (max-iterations #f) ; maximum number of
165
+ ; iterations
166
+ (recursive-pos-save format:pos)
167
+
168
+ (next-char ; gets the next char
169
+ ; from format-string
170
+ (lambda ()
171
+ (let ((ch (peek-next-char)))
172
+ (set! format:pos (+ 1 format:pos))
173
+ ch)))
174
+
175
+ (peek-next-char
176
+ (lambda ()
177
+ (if (>= format:pos format-string-len)
178
+ (format:error "illegal format string")
179
+ (string-ref format-string format:pos))))
180
+
181
+ (one-positive-integer?
182
+ (lambda (params)
183
+ (cond
184
+ ((null? params) #f)
185
+ ((and (integer? (car params))
186
+ (>= (car params) 0)
187
+ (= (length params) 1)) #t)
188
+ (else
189
+ (format:error
190
+ "one positive integer parameter expected")))))
191
+
192
+ (next-arg
193
+ (lambda ()
194
+ (if (>= arg-pos arg-len)
195
+ (begin
196
+ (set! format:arg-pos (+ arg-len 1))
197
+ (format:error "missing argument(s)")))
198
+ (add-arg-pos 1)
199
+ (list-ref arglist (- arg-pos 1))))
200
+
201
+ (prev-arg
202
+ (lambda ()
203
+ (add-arg-pos -1)
204
+ (if (negative? arg-pos)
205
+ (format:error "missing backward argument(s)"))
206
+ (list-ref arglist arg-pos)))
207
+
208
+ (rest-args
209
+ (lambda ()
210
+ (let loop ((l arglist) (k arg-pos)) ; list-tail definition
211
+ (if (= k 0) l (loop (cdr l) (- k 1))))))
212
+
213
+ (add-arg-pos
214
+ (lambda (n)
215
+ (set! arg-pos (+ n arg-pos))
216
+ (set! format:arg-pos arg-pos)))
217
+
218
+ (anychar-dispatch ; dispatches the format-string
219
+ (lambda ()
220
+ (if (>= format:pos format-string-len)
221
+ arg-pos ; used for ~? continuance
222
+ (let ((char (next-char)))
223
+ (cond
224
+ ((char=? char #\~)
225
+ (set! modifier #f)
226
+ (set! params '())
227
+ (set! param-value-found #f)
228
+ (tilde-dispatch))
229
+ (else
230
+ (if (and (zero? conditional-nest)
231
+ (zero? iteration-nest))
232
+ (format:out-char char))
233
+ (anychar-dispatch)))))))
234
+
235
+ (tilde-dispatch
236
+ (lambda ()
237
+ (cond
238
+ ((>= format:pos format-string-len)
239
+ (format:out-str "~") ; tilde at end of
240
+ ; string is just
241
+ ; output
242
+ arg-pos) ; used for ~?
243
+ ; continuance
244
+ ((and (or (zero? conditional-nest)
245
+ (memv (peek-next-char) ; find conditional
246
+ ; directives
247
+ (append '(#\[ #\] #\; #\: #\@ #\^)
248
+ format:parameter-characters)))
249
+ (or (zero? iteration-nest)
250
+ (memv (peek-next-char) ; find iteration
251
+ ; directives
252
+ (append '(#\{ #\} #\: #\@ #\^)
253
+ format:parameter-characters))))
254
+ (case (char-upcase (next-char))
255
+
256
+ ;; format directives
257
+
258
+ ((#\A) ; Any -- for humans
259
+ (set! format:read-proof
260
+ (memq modifier '(colon colon-at)))
261
+ (format:out-obj-padded (memq modifier '(at colon-at))
262
+ (next-arg) #f params)
263
+ (anychar-dispatch))
264
+ ((#\S) ; Slashified -- for parsers
265
+ (set! format:read-proof
266
+ (memq modifier '(colon colon-at)))
267
+ (format:out-obj-padded (memq modifier '(at colon-at))
268
+ (next-arg) #t params)
269
+ (anychar-dispatch))
270
+ ((#\D) ; Decimal
271
+ (format:out-num-padded modifier (next-arg) params 10)
272
+ (anychar-dispatch))
273
+ ((#\H) ; Localized number
274
+ (let* ((num (next-arg))
275
+ (locale (case modifier
276
+ ((colon) (next-arg))
277
+ (else %global-locale)))
278
+ (argc (length params))
279
+ (width (format:par params argc 0 #f "width"))
280
+ (decimals (format:par params argc 1 #t "decimals"))
281
+ (padchar (integer->char
282
+ (format:par params argc 2 format:space-ch
283
+ "padchar")))
284
+ (str (number->locale-string num decimals
285
+ locale)))
286
+ (format:out-str (if (and width
287
+ (< (string-length str) width))
288
+ (string-pad str width padchar)
289
+ str)))
290
+ (anychar-dispatch))
291
+ ((#\X) ; Hexadecimal
292
+ (format:out-num-padded modifier (next-arg) params 16)
293
+ (anychar-dispatch))
294
+ ((#\O) ; Octal
295
+ (format:out-num-padded modifier (next-arg) params 8)
296
+ (anychar-dispatch))
297
+ ((#\B) ; Binary
298
+ (format:out-num-padded modifier (next-arg) params 2)
299
+ (anychar-dispatch))
300
+ ((#\R)
301
+ (if (null? params)
302
+ (format:out-obj-padded ; Roman, cardinal,
303
+ ; ordinal numerals
304
+ #f
305
+ ((case modifier
306
+ ((at) format:num->roman)
307
+ ((colon-at) format:num->old-roman)
308
+ ((colon) format:num->ordinal)
309
+ (else format:num->cardinal))
310
+ (next-arg))
311
+ #f params)
312
+ (format:out-num-padded ; any Radix
313
+ modifier (next-arg) (cdr params) (car params)))
314
+ (anychar-dispatch))
315
+ ((#\F) ; Fixed-format floating-point
316
+ (format:out-fixed modifier (next-arg) params)
317
+ (anychar-dispatch))
318
+ ((#\E) ; Exponential floating-point
319
+ (format:out-expon modifier (next-arg) params)
320
+ (anychar-dispatch))
321
+ ((#\G) ; General floating-point
322
+ (format:out-general modifier (next-arg) params)
323
+ (anychar-dispatch))
324
+ ((#\$) ; Dollars floating-point
325
+ (format:out-dollar modifier (next-arg) params)
326
+ (anychar-dispatch))
327
+ ((#\I) ; Complex numbers
328
+ (let ((z (next-arg)))
329
+ (if (not (complex? z))
330
+ (format:error "argument not a complex number"))
331
+ (format:out-fixed modifier (real-part z) params)
332
+ (format:out-fixed 'at (imag-part z) params)
333
+ (format:out-char #\i))
334
+ (anychar-dispatch))
335
+ ((#\C) ; Character
336
+ (let ((ch (if (one-positive-integer? params)
337
+ (integer->char (car params))
338
+ (next-arg))))
339
+ (if (not (char? ch))
340
+ (format:error "~~c expects a character"))
341
+ (case modifier
342
+ ((at)
343
+ (format:out-str (object->string ch)))
344
+ ((colon)
345
+ (let ((c (char->integer ch)))
346
+ (if (< c 0)
347
+ (set! c (+ c 256))) ; compensate
348
+ ; complement
349
+ ; impl.
350
+ (cond
351
+ ((< c #x20) ; assumes that control
352
+ ; chars are < #x20
353
+ (format:out-char #\^)
354
+ (format:out-char
355
+ (integer->char (+ c #x40))))
356
+ ((>= c #x7f)
357
+ (format:out-str "#\\")
358
+ (format:out-str
359
+ (number->string c 8)))
360
+ (else
361
+ (format:out-char ch)))))
362
+ (else (format:out-char ch))))
363
+ (anychar-dispatch))
364
+ ((#\P) ; Plural
365
+ (if (memq modifier '(colon colon-at))
366
+ (prev-arg))
367
+ (let ((arg (next-arg)))
368
+ (if (not (number? arg))
369
+ (format:error "~~p expects a number argument"))
370
+ (if (= arg 1)
371
+ (if (memq modifier '(at colon-at))
372
+ (format:out-char #\y))
373
+ (if (memq modifier '(at colon-at))
374
+ (format:out-str "ies")
375
+ (format:out-char #\s))))
376
+ (anychar-dispatch))
377
+ ((#\~) ; Tilde
378
+ (if (one-positive-integer? params)
379
+ (format:out-fill (car params) #\~)
380
+ (format:out-char #\~))
381
+ (anychar-dispatch))
382
+ ((#\%) ; Newline
383
+ (if (one-positive-integer? params)
384
+ (format:out-fill (car params) #\newline)
385
+ (format:out-char #\newline))
386
+ (set! output-col 0)
387
+ (anychar-dispatch))
388
+ ((#\&) ; Fresh line
389
+ (if (one-positive-integer? params)
390
+ (begin
391
+ (if (> (car params) 0)
392
+ (format:out-fill (- (car params)
393
+ (if (>
394
+ output-col
395
+ 0) 0 1))
396
+ #\newline))
397
+ (set! output-col 0))
398
+ (if (> output-col 0)
399
+ (format:out-char #\newline)))
400
+ (anychar-dispatch))
401
+ ((#\_) ; Space character
402
+ (if (one-positive-integer? params)
403
+ (format:out-fill (car params) #\space)
404
+ (format:out-char #\space))
405
+ (anychar-dispatch))
406
+ ((#\/) ; Tabulator character
407
+ (if (one-positive-integer? params)
408
+ (format:out-fill (car params) #\tab)
409
+ (format:out-char #\tab))
410
+ (anychar-dispatch))
411
+ ((#\|) ; Page seperator
412
+ (if (one-positive-integer? params)
413
+ (format:out-fill (car params) #\page)
414
+ (format:out-char #\page))
415
+ (set! output-col 0)
416
+ (anychar-dispatch))
417
+ ((#\T) ; Tabulate
418
+ (format:tabulate modifier params)
419
+ (anychar-dispatch))
420
+ ((#\Y) ; Structured print
421
+ (let ((width (if (one-positive-integer? params)
422
+ (car params)
423
+ 79)))
424
+ (case modifier
425
+ ((at)
426
+ (format:out-str
427
+ (call-with-output-string
428
+ (lambda (p)
429
+ (truncated-print (next-arg) p
430
+ #:width width)))))
431
+ ((colon-at)
432
+ (format:out-str
433
+ (call-with-output-string
434
+ (lambda (p)
435
+ (truncated-print (next-arg) p
436
+ #:width
437
+ (max (- width
438
+ output-col)
439
+ 1))))))
440
+ ((colon)
441
+ (format:error "illegal modifier in ~~?"))
442
+ (else
443
+ (pretty-print (next-arg) port
444
+ #:width width)
445
+ (set! output-col 0))))
446
+ (anychar-dispatch))
447
+ ((#\? #\K) ; Indirection (is "~K" in T-Scheme)
448
+ (cond
449
+ ((memq modifier '(colon colon-at))
450
+ (format:error "illegal modifier in ~~?"))
451
+ ((eq? modifier 'at)
452
+ (let* ((frmt (next-arg))
453
+ (args (rest-args)))
454
+ (add-arg-pos (format:format-work frmt args))))
455
+ (else
456
+ (let* ((frmt (next-arg))
457
+ (args (next-arg)))
458
+ (format:format-work frmt args))))
459
+ (anychar-dispatch))
460
+ ((#\!) ; Flush output
461
+ (set! flush-output? #t)
462
+ (anychar-dispatch))
463
+ ((#\newline) ; Continuation lines
464
+ (if (eq? modifier 'at)
465
+ (format:out-char #\newline))
466
+ (if (< format:pos format-string-len)
467
+ (do ((ch (peek-next-char) (peek-next-char)))
468
+ ((or (not (char-whitespace? ch))
469
+ (= format:pos (- format-string-len 1))))
470
+ (if (eq? modifier 'colon)
471
+ (format:out-char (next-char))
472
+ (next-char))))
473
+ (anychar-dispatch))
474
+ ((#\*) ; Argument jumping
475
+ (case modifier
476
+ ((colon) ; jump backwards
477
+ (if (one-positive-integer? params)
478
+ (do ((i 0 (+ i 1)))
479
+ ((= i (car params)))
480
+ (prev-arg))
481
+ (prev-arg)))
482
+ ((at) ; jump absolute
483
+ (set! arg-pos (if (one-positive-integer? params)
484
+ (car params) 0)))
485
+ ((colon-at)
486
+ (format:error "illegal modifier `:@' in ~~* directive"))
487
+ (else ; jump forward
488
+ (if (one-positive-integer? params)
489
+ (do ((i 0 (+ i 1)))
490
+ ((= i (car params)))
491
+ (next-arg))
492
+ (next-arg))))
493
+ (anychar-dispatch))
494
+ ((#\() ; Case conversion begin
495
+ (set! format:case-conversion
496
+ (case modifier
497
+ ((at) string-capitalize-first)
498
+ ((colon) string-capitalize)
499
+ ((colon-at) string-upcase)
500
+ (else string-downcase)))
501
+ (anychar-dispatch))
502
+ ((#\)) ; Case conversion end
503
+ (if (not format:case-conversion)
504
+ (format:error "missing ~~("))
505
+ (set! format:case-conversion #f)
506
+ (anychar-dispatch))
507
+ ((#\[) ; Conditional begin
508
+ (set! conditional-nest (+ conditional-nest 1))
509
+ (cond
510
+ ((= conditional-nest 1)
511
+ (set! clause-pos format:pos)
512
+ (set! clause-default #f)
513
+ (set! clauses '())
514
+ (set! conditional-type
515
+ (case modifier
516
+ ((at) 'if-then)
517
+ ((colon) 'if-else-then)
518
+ ((colon-at) (format:error "illegal modifier in ~~["))
519
+ (else 'num-case)))
520
+ (set! conditional-arg
521
+ (if (one-positive-integer? params)
522
+ (car params)
523
+ (next-arg)))))
524
+ (anychar-dispatch))
525
+ ((#\;) ; Conditional separator
526
+ (if (zero? conditional-nest)
527
+ (format:error "~~; not in ~~[~~] conditional"))
528
+ (if (not (null? params))
529
+ (format:error "no parameter allowed in ~~;"))
530
+ (if (= conditional-nest 1)
531
+ (let ((clause-str
532
+ (cond
533
+ ((eq? modifier 'colon)
534
+ (set! clause-default #t)
535
+ (substring format-string clause-pos
536
+ (- format:pos 3)))
537
+ ((memq modifier '(at colon-at))
538
+ (format:error "illegal modifier in ~~;"))
539
+ (else
540
+ (substring format-string clause-pos
541
+ (- format:pos 2))))))
542
+ (set! clauses (append clauses (list clause-str)))
543
+ (set! clause-pos format:pos)))
544
+ (anychar-dispatch))
545
+ ((#\]) ; Conditional end
546
+ (if (zero? conditional-nest) (format:error "missing ~~["))
547
+ (set! conditional-nest (- conditional-nest 1))
548
+ (if modifier
549
+ (format:error "no modifier allowed in ~~]"))
550
+ (if (not (null? params))
551
+ (format:error "no parameter allowed in ~~]"))
552
+ (cond
553
+ ((zero? conditional-nest)
554
+ (let ((clause-str (substring format-string clause-pos
555
+ (- format:pos 2))))
556
+ (if clause-default
557
+ (set! clause-default clause-str)
558
+ (set! clauses (append clauses (list clause-str)))))
559
+ (case conditional-type
560
+ ((if-then)
561
+ (if conditional-arg
562
+ (format:format-work (car clauses)
563
+ (list conditional-arg))))
564
+ ((if-else-then)
565
+ (add-arg-pos
566
+ (format:format-work (if conditional-arg
567
+ (cadr clauses)
568
+ (car clauses))
569
+ (rest-args))))
570
+ ((num-case)
571
+ (if (or (not (integer? conditional-arg))
572
+ (< conditional-arg 0))
573
+ (format:error "argument not a positive integer"))
574
+ (if (not (and (>= conditional-arg (length clauses))
575
+ (not clause-default)))
576
+ (add-arg-pos
577
+ (format:format-work
578
+ (if (>= conditional-arg (length clauses))
579
+ clause-default
580
+ (list-ref clauses conditional-arg))
581
+ (rest-args))))))))
582
+ (anychar-dispatch))
583
+ ((#\{) ; Iteration begin
584
+ (set! iteration-nest (+ iteration-nest 1))
585
+ (cond
586
+ ((= iteration-nest 1)
587
+ (set! iteration-pos format:pos)
588
+ (set! iteration-type
589
+ (case modifier
590
+ ((at) 'rest-args)
591
+ ((colon) 'sublists)
592
+ ((colon-at) 'rest-sublists)
593
+ (else 'list)))
594
+ (set! max-iterations (if (one-positive-integer? params)
595
+ (car params) #f))))
596
+ (anychar-dispatch))
597
+ ((#\}) ; Iteration end
598
+ (if (zero? iteration-nest) (format:error "missing ~~{"))
599
+ (set! iteration-nest (- iteration-nest 1))
600
+ (case modifier
601
+ ((colon)
602
+ (if (not max-iterations) (set! max-iterations 1)))
603
+ ((colon-at at) (format:error "illegal modifier")))
604
+ (if (not (null? params))
605
+ (format:error "no parameters allowed in ~~}"))
606
+ (if (zero? iteration-nest)
607
+ (let ((iteration-str
608
+ (substring format-string iteration-pos
609
+ (- format:pos (if modifier 3 2)))))
610
+ (if (string=? iteration-str "")
611
+ (set! iteration-str (next-arg)))
612
+ (case iteration-type
613
+ ((list)
614
+ (let ((args (next-arg))
615
+ (args-len 0))
616
+ (if (not (list? args))
617
+ (format:error "expected a list argument"))
618
+ (set! args-len (length args))
619
+ (do ((arg-pos 0 (+ arg-pos
620
+ (format:format-work
621
+ iteration-str
622
+ (list-tail args arg-pos))))
623
+ (i 0 (+ i 1)))
624
+ ((or (>= arg-pos args-len)
625
+ (and max-iterations
626
+ (>= i max-iterations)))))))
627
+ ((sublists)
628
+ (let ((args (next-arg))
629
+ (args-len 0))
630
+ (if (not (list? args))
631
+ (format:error "expected a list argument"))
632
+ (set! args-len (length args))
633
+ (do ((arg-pos 0 (+ arg-pos 1)))
634
+ ((or (>= arg-pos args-len)
635
+ (and max-iterations
636
+ (>= arg-pos max-iterations))))
637
+ (let ((sublist (list-ref args arg-pos)))
638
+ (if (not (list? sublist))
639
+ (format:error
640
+ "expected a list of lists argument"))
641
+ (format:format-work iteration-str sublist)))))
642
+ ((rest-args)
643
+ (let* ((args (rest-args))
644
+ (args-len (length args))
645
+ (usedup-args
646
+ (do ((arg-pos 0 (+ arg-pos
647
+ (format:format-work
648
+ iteration-str
649
+ (list-tail
650
+ args arg-pos))))
651
+ (i 0 (+ i 1)))
652
+ ((or (>= arg-pos args-len)
653
+ (and max-iterations
654
+ (>= i max-iterations)))
655
+ arg-pos))))
656
+ (add-arg-pos usedup-args)))
657
+ ((rest-sublists)
658
+ (let* ((args (rest-args))
659
+ (args-len (length args))
660
+ (usedup-args
661
+ (do ((arg-pos 0 (+ arg-pos 1)))
662
+ ((or (>= arg-pos args-len)
663
+ (and max-iterations
664
+ (>= arg-pos max-iterations)))
665
+ arg-pos)
666
+ (let ((sublist (list-ref args arg-pos)))
667
+ (if (not (list? sublist))
668
+ (format:error "expected list arguments"))
669
+ (format:format-work iteration-str sublist)))))
670
+ (add-arg-pos usedup-args)))
671
+ (else (format:error "internal error in ~~}")))))
672
+ (anychar-dispatch))
673
+ ((#\^) ; Up and out
674
+ (let* ((continue
675
+ (cond
676
+ ((not (null? params))
677
+ (not
678
+ (case (length params)
679
+ ((1) (zero? (car params)))
680
+ ((2) (= (list-ref params 0) (list-ref params 1)))
681
+ ((3) (<= (list-ref params 0)
682
+ (list-ref params 1)
683
+ (list-ref params 2)))
684
+ (else (format:error "too much parameters")))))
685
+ (format:case-conversion ; if conversion stop conversion
686
+ (set! format:case-conversion string-copy) #t)
687
+ ((= iteration-nest 1) #t)
688
+ ((= conditional-nest 1) #t)
689
+ ((>= arg-pos arg-len)
690
+ (set! format:pos format-string-len) #f)
691
+ (else #t))))
692
+ (if continue
693
+ (anychar-dispatch))))
694
+
695
+ ;; format directive modifiers and parameters
696
+
697
+ ((#\@) ; `@' modifier
698
+ (if (memq modifier '(at colon-at))
699
+ (format:error "double `@' modifier"))
700
+ (set! modifier (if (eq? modifier 'colon) 'colon-at 'at))
701
+ (tilde-dispatch))
702
+ ((#\:) ; `:' modifier
703
+ (if (memq modifier '(colon colon-at))
704
+ (format:error "double `:' modifier"))
705
+ (set! modifier (if (eq? modifier 'at) 'colon-at 'colon))
706
+ (tilde-dispatch))
707
+ ((#\') ; Character parameter
708
+ (if modifier (format:error "misplaced modifier"))
709
+ (set! params (append params (list (char->integer (next-char)))))
710
+ (set! param-value-found #t)
711
+ (tilde-dispatch))
712
+ ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\- #\+) ; num. paramtr
713
+ (if modifier (format:error "misplaced modifier"))
714
+ (let ((num-str-beg (- format:pos 1))
715
+ (num-str-end format:pos))
716
+ (do ((ch (peek-next-char) (peek-next-char)))
717
+ ((not (char-numeric? ch)))
718
+ (next-char)
719
+ (set! num-str-end (+ 1 num-str-end)))
720
+ (set! params
721
+ (append params
722
+ (list (string->number
723
+ (substring format-string
724
+ num-str-beg
725
+ num-str-end))))))
726
+ (set! param-value-found #t)
727
+ (tilde-dispatch))
728
+ ((#\V) ; Variable parameter from next argum.
729
+ (if modifier (format:error "misplaced modifier"))
730
+ (set! params (append params (list (next-arg))))
731
+ (set! param-value-found #t)
732
+ (tilde-dispatch))
733
+ ((#\#) ; Parameter is number of remaining args
734
+ (if param-value-found (format:error "misplaced '#'"))
735
+ (if modifier (format:error "misplaced modifier"))
736
+ (set! params (append params (list (length (rest-args)))))
737
+ (set! param-value-found #t)
738
+ (tilde-dispatch))
739
+ ((#\,) ; Parameter separators
740
+ (if modifier (format:error "misplaced modifier"))
741
+ (if (not param-value-found)
742
+ (set! params (append params '(#f)))) ; append empty paramtr
743
+ (set! param-value-found #f)
744
+ (tilde-dispatch))
745
+ ((#\Q) ; Inquiry messages
746
+ (if (eq? modifier 'colon)
747
+ (format:out-str format:version)
748
+ (let ((nl (string #\newline)))
749
+ (format:out-str
750
+ (string-append
751
+ "SLIB Common LISP format version " format:version nl
752
+ " (C) copyright 1992-1994 by Dirk Lutzebaeck" nl
753
+ " please send bug reports to `lutzeb@cs.tu-berlin.de'"
754
+ nl))))
755
+ (anychar-dispatch))
756
+ (else ; Unknown tilde directive
757
+ (format:error "unknown control character `~c'"
758
+ (string-ref format-string (- format:pos 1))))))
759
+ (else (anychar-dispatch)))))) ; in case of conditional
760
+
761
+ (set! format:pos 0)
762
+ (set! format:arg-pos 0)
763
+ (anychar-dispatch) ; start the formatting
764
+ (set! format:pos recursive-pos-save)
765
+ arg-pos)) ; return the position in the arg. list
766
+
767
+ ;; when format:read-proof is true, format:obj->str will wrap
768
+ ;; result strings starting with "#<" in an extra pair of double
769
+ ;; quotes.
770
+
771
+ (define format:read-proof #f)
772
+
773
+ ;; format:obj->str returns a R4RS representation as a string of
774
+ ;; an arbitrary scheme object.
775
+
776
+ (define (format:obj->str obj slashify)
777
+ (let ((res (if slashify
778
+ (object->string obj)
779
+ (call-with-output-string (lambda (p) (display obj p))))))
780
+ (if (and format:read-proof (string-prefix? "#<" res))
781
+ (object->string res)
782
+ res)))
783
+
784
+ (define format:space-ch (char->integer #\space))
785
+ (define format:zero-ch (char->integer #\0))
786
+
787
+ (define (format:par pars length index default name)
788
+ (if (> length index)
789
+ (let ((par (list-ref pars index)))
790
+ (if par
791
+ (if name
792
+ (if (< par 0)
793
+ (format:error
794
+ "~s parameter must be a positive integer" name)
795
+ par)
796
+ par)
797
+ default))
798
+ default))
799
+
800
+ (define (format:out-obj-padded pad-left obj slashify pars)
801
+ (if (null? pars)
802
+ (format:out-str (format:obj->str obj slashify))
803
+ (let ((l (length pars)))
804
+ (let ((mincol (format:par pars l 0 0 "mincol"))
805
+ (colinc (format:par pars l 1 1 "colinc"))
806
+ (minpad (format:par pars l 2 0 "minpad"))
807
+ (padchar (integer->char
808
+ (format:par pars l 3 format:space-ch #f)))
809
+ (objstr (format:obj->str obj slashify)))
810
+ (if (not pad-left)
811
+ (format:out-str objstr))
812
+ (do ((objstr-len (string-length objstr))
813
+ (i minpad (+ i colinc)))
814
+ ((>= (+ objstr-len i) mincol)
815
+ (format:out-fill i padchar)))
816
+ (if pad-left
817
+ (format:out-str objstr))))))
818
+
819
+ (define (format:out-num-padded modifier number pars radix)
820
+ (if (not (integer? number)) (format:error "argument not an integer"))
821
+ (let ((numstr (number->string number radix)))
822
+ (if (and (null? pars) (not modifier))
823
+ (format:out-str numstr)
824
+ (let ((l (length pars))
825
+ (numstr-len (string-length numstr)))
826
+ (let ((mincol (format:par pars l 0 #f "mincol"))
827
+ (padchar (integer->char
828
+ (format:par pars l 1 format:space-ch #f)))
829
+ (commachar (integer->char
830
+ (format:par pars l 2 (char->integer #\,) #f)))
831
+ (commawidth (format:par pars l 3 3 "commawidth")))
832
+ (if mincol
833
+ (let ((numlen numstr-len)) ; calc. the output len of number
834
+ (if (and (memq modifier '(at colon-at)) (>= number 0))
835
+ (set! numlen (+ numlen 1)))
836
+ (if (memq modifier '(colon colon-at))
837
+ (set! numlen (+ (quotient (- numstr-len
838
+ (if (< number 0) 2 1))
839
+ commawidth)
840
+ numlen)))
841
+ (if (> mincol numlen)
842
+ (format:out-fill (- mincol numlen) padchar))))
843
+ (if (and (memq modifier '(at colon-at))
844
+ (>= number 0))
845
+ (format:out-char #\+))
846
+ (if (memq modifier '(colon colon-at)) ; insert comma character
847
+ (let ((start (remainder numstr-len commawidth))
848
+ (ns (if (< number 0) 1 0)))
849
+ (format:out-substr numstr 0 start)
850
+ (do ((i start (+ i commawidth)))
851
+ ((>= i numstr-len))
852
+ (if (> i ns)
853
+ (format:out-char commachar))
854
+ (format:out-substr numstr i (+ i commawidth))))
855
+ (format:out-str numstr)))))))
856
+
857
+ (define (format:tabulate modifier pars)
858
+ (let ((l (length pars)))
859
+ (let ((colnum (format:par pars l 0 1 "colnum"))
860
+ (colinc (format:par pars l 1 1 "colinc"))
861
+ (padch (integer->char (format:par pars l 2 format:space-ch #f))))
862
+ (case modifier
863
+ ((colon colon-at)
864
+ (format:error "unsupported modifier for ~~t"))
865
+ ((at) ; relative tabulation
866
+ (format:out-fill
867
+ (if (= colinc 0)
868
+ colnum ; colnum = colrel
869
+ (do ((c 0 (+ c colinc))
870
+ (col (+ output-col colnum)))
871
+ ((>= c col)
872
+ (- c output-col))))
873
+ padch))
874
+ (else ; absolute tabulation
875
+ (format:out-fill
876
+ (cond
877
+ ((< output-col colnum)
878
+ (- colnum output-col))
879
+ ((= colinc 0)
880
+ 0)
881
+ (else
882
+ (do ((c colnum (+ c colinc)))
883
+ ((>= c output-col)
884
+ (- c output-col)))))
885
+ padch))))))
886
+
887
+
888
+ ;; roman numerals (from dorai@cs.rice.edu).
889
+
890
+ (define format:roman-alist
891
+ '((1000 #\M) (500 #\D) (100 #\C) (50 #\L)
892
+ (10 #\X) (5 #\V) (1 #\I)))
893
+
894
+ (define format:roman-boundary-values
895
+ '(100 100 10 10 1 1 #f))
896
+
897
+ (define (format:num->old-roman n)
898
+ (if (and (integer? n) (>= n 1))
899
+ (let loop ((n n)
900
+ (romans format:roman-alist)
901
+ (s '()))
902
+ (if (null? romans) (list->string (reverse s))
903
+ (let ((roman-val (caar romans))
904
+ (roman-dgt (cadar romans)))
905
+ (do ((q (quotient n roman-val) (- q 1))
906
+ (s s (cons roman-dgt s)))
907
+ ((= q 0)
908
+ (loop (remainder n roman-val)
909
+ (cdr romans) s))))))
910
+ (format:error "only positive integers can be romanized")))
911
+
912
+ (define (format:num->roman n)
913
+ (if (and (integer? n) (> n 0))
914
+ (let loop ((n n)
915
+ (romans format:roman-alist)
916
+ (boundaries format:roman-boundary-values)
917
+ (s '()))
918
+ (if (null? romans)
919
+ (list->string (reverse s))
920
+ (let ((roman-val (caar romans))
921
+ (roman-dgt (cadar romans))
922
+ (bdry (car boundaries)))
923
+ (let loop2 ((q (quotient n roman-val))
924
+ (r (remainder n roman-val))
925
+ (s s))
926
+ (if (= q 0)
927
+ (if (and bdry (>= r (- roman-val bdry)))
928
+ (loop (remainder r bdry) (cdr romans)
929
+ (cdr boundaries)
930
+ (cons roman-dgt
931
+ (append
932
+ (cdr (assv bdry romans))
933
+ s)))
934
+ (loop r (cdr romans) (cdr boundaries) s))
935
+ (loop2 (- q 1) r (cons roman-dgt s)))))))
936
+ (format:error "only positive integers can be romanized")))
937
+
938
+ ;; cardinals & ordinals (from dorai@cs.rice.edu)
939
+
940
+ (define format:cardinal-ones-list
941
+ '(#f "one" "two" "three" "four" "five"
942
+ "six" "seven" "eight" "nine" "ten" "eleven" "twelve" "thirteen"
943
+ "fourteen" "fifteen" "sixteen" "seventeen" "eighteen"
944
+ "nineteen"))
945
+
946
+ (define format:cardinal-tens-list
947
+ '(#f #f "twenty" "thirty" "forty" "fifty" "sixty" "seventy" "eighty"
948
+ "ninety"))
949
+
950
+ (define (format:num->cardinal999 n)
951
+ ;; this procedure is inspired by the Bruno Haible's CLisp
952
+ ;; function format-small-cardinal, which converts numbers
953
+ ;; in the range 1 to 999, and is used for converting each
954
+ ;; thousand-block in a larger number
955
+ (let* ((hundreds (quotient n 100))
956
+ (tens+ones (remainder n 100))
957
+ (tens (quotient tens+ones 10))
958
+ (ones (remainder tens+ones 10)))
959
+ (append
960
+ (if (> hundreds 0)
961
+ (append
962
+ (string->list
963
+ (list-ref format:cardinal-ones-list hundreds))
964
+ (string->list" hundred")
965
+ (if (> tens+ones 0) '(#\space) '()))
966
+ '())
967
+ (if (< tens+ones 20)
968
+ (if (> tens+ones 0)
969
+ (string->list
970
+ (list-ref format:cardinal-ones-list tens+ones))
971
+ '())
972
+ (append
973
+ (string->list
974
+ (list-ref format:cardinal-tens-list tens))
975
+ (if (> ones 0)
976
+ (cons #\-
977
+ (string->list
978
+ (list-ref format:cardinal-ones-list ones)))
979
+ '()))))))
980
+
981
+ (define format:cardinal-thousand-block-list
982
+ '("" " thousand" " million" " billion" " trillion" " quadrillion"
983
+ " quintillion" " sextillion" " septillion" " octillion" " nonillion"
984
+ " decillion" " undecillion" " duodecillion" " tredecillion"
985
+ " quattuordecillion" " quindecillion" " sexdecillion" " septendecillion"
986
+ " octodecillion" " novemdecillion" " vigintillion"))
987
+
988
+ (define (format:num->cardinal n)
989
+ (cond ((not (integer? n))
990
+ (format:error
991
+ "only integers can be converted to English cardinals"))
992
+ ((= n 0) "zero")
993
+ ((< n 0) (string-append "minus " (format:num->cardinal (- n))))
994
+ (else
995
+ (let ((power3-word-limit
996
+ (length format:cardinal-thousand-block-list)))
997
+ (let loop ((n n)
998
+ (power3 0)
999
+ (s '()))
1000
+ (if (= n 0)
1001
+ (list->string s)
1002
+ (let ((n-before-block (quotient n 1000))
1003
+ (n-after-block (remainder n 1000)))
1004
+ (loop n-before-block
1005
+ (+ power3 1)
1006
+ (if (> n-after-block 0)
1007
+ (append
1008
+ (if (> n-before-block 0)
1009
+ (string->list ", ") '())
1010
+ (format:num->cardinal999 n-after-block)
1011
+ (if (< power3 power3-word-limit)
1012
+ (string->list
1013
+ (list-ref
1014
+ format:cardinal-thousand-block-list
1015
+ power3))
1016
+ (append
1017
+ (string->list " times ten to the ")
1018
+ (string->list
1019
+ (format:num->ordinal
1020
+ (* power3 3)))
1021
+ (string->list " power")))
1022
+ s)
1023
+ s)))))))))
1024
+
1025
+ (define format:ordinal-ones-list
1026
+ '(#f "first" "second" "third" "fourth" "fifth"
1027
+ "sixth" "seventh" "eighth" "ninth" "tenth" "eleventh" "twelfth"
1028
+ "thirteenth" "fourteenth" "fifteenth" "sixteenth" "seventeenth"
1029
+ "eighteenth" "nineteenth"))
1030
+
1031
+ (define format:ordinal-tens-list
1032
+ '(#f #f "twentieth" "thirtieth" "fortieth" "fiftieth" "sixtieth"
1033
+ "seventieth" "eightieth" "ninetieth"))
1034
+
1035
+ (define (format:num->ordinal n)
1036
+ (cond ((not (integer? n))
1037
+ (format:error
1038
+ "only integers can be converted to English ordinals"))
1039
+ ((= n 0) "zeroth")
1040
+ ((< n 0) (string-append "minus " (format:num->ordinal (- n))))
1041
+ (else
1042
+ (let ((hundreds (quotient n 100))
1043
+ (tens+ones (remainder n 100)))
1044
+ (string-append
1045
+ (if (> hundreds 0)
1046
+ (string-append
1047
+ (format:num->cardinal (* hundreds 100))
1048
+ (if (= tens+ones 0) "th" " "))
1049
+ "")
1050
+ (if (= tens+ones 0) ""
1051
+ (if (< tens+ones 20)
1052
+ (list-ref format:ordinal-ones-list tens+ones)
1053
+ (let ((tens (quotient tens+ones 10))
1054
+ (ones (remainder tens+ones 10)))
1055
+ (if (= ones 0)
1056
+ (list-ref format:ordinal-tens-list tens)
1057
+ (string-append
1058
+ (list-ref format:cardinal-tens-list tens)
1059
+ "-"
1060
+ (list-ref format:ordinal-ones-list ones))))
1061
+ )))))))
1062
+
1063
+ ;; format inf and nan.
1064
+
1065
+ (define (format:out-inf-nan number width digits edigits overch padch)
1066
+ ;; inf and nan are always printed exactly as "+inf.0", "-inf.0" or
1067
+ ;; "+nan.0", suitably justified in their field. We insist on
1068
+ ;; printing this exact form so that the numbers can be read back in.
1069
+ (let* ((str (number->string number))
1070
+ (len (string-length str))
1071
+ (dot (string-index str #\.))
1072
+ (digits (+ (or digits 0)
1073
+ (if edigits (+ edigits 2) 0))))
1074
+ (if (and width overch (< width len))
1075
+ (format:out-fill width (integer->char overch))
1076
+ (let* ((leftpad (if width
1077
+ (max (- width (max len (+ dot 1 digits))) 0)
1078
+ 0))
1079
+ (rightpad (if width
1080
+ (max (- width leftpad len) 0)
1081
+ 0))
1082
+ (padch (integer->char (or padch format:space-ch))))
1083
+ (format:out-fill leftpad padch)
1084
+ (format:out-str str)
1085
+ (format:out-fill rightpad padch)))))
1086
+
1087
+ ;; format fixed flonums (~F)
1088
+
1089
+ (define (format:out-fixed modifier number pars)
1090
+ (if (not (or (number? number) (string? number)))
1091
+ (format:error "argument is not a number or a number string"))
1092
+
1093
+ (let ((l (length pars)))
1094
+ (let ((width (format:par pars l 0 #f "width"))
1095
+ (digits (format:par pars l 1 #f "digits"))
1096
+ (scale (format:par pars l 2 0 #f))
1097
+ (overch (format:par pars l 3 #f #f))
1098
+ (padch (format:par pars l 4 format:space-ch #f)))
1099
+
1100
+ (cond
1101
+ ((and (number? number)
1102
+ (or (inf? number) (nan? number)))
1103
+ (format:out-inf-nan number width digits #f overch padch))
1104
+
1105
+ (digits
1106
+ (format:parse-float number #t scale)
1107
+ (if (<= (- format:fn-len format:fn-dot) digits)
1108
+ (format:fn-zfill #f (- digits (- format:fn-len format:fn-dot)))
1109
+ (format:fn-round digits))
1110
+ (if width
1111
+ (let ((numlen (+ format:fn-len 1)))
1112
+ (if (or (not format:fn-pos?) (eq? modifier 'at))
1113
+ (set! numlen (+ numlen 1)))
1114
+ (if (and (= format:fn-dot 0) (> width (+ digits 1)))
1115
+ (set! numlen (+ numlen 1)))
1116
+ (if (< numlen width)
1117
+ (format:out-fill (- width numlen) (integer->char padch)))
1118
+ (if (and overch (> numlen width))
1119
+ (format:out-fill width (integer->char overch))
1120
+ (format:fn-out modifier (> width (+ digits 1)))))
1121
+ (format:fn-out modifier #t)))
1122
+
1123
+ (else
1124
+ (format:parse-float number #t scale)
1125
+ (format:fn-strip)
1126
+ (if width
1127
+ (let ((numlen (+ format:fn-len 1)))
1128
+ (if (or (not format:fn-pos?) (eq? modifier 'at))
1129
+ (set! numlen (+ numlen 1)))
1130
+ (if (= format:fn-dot 0)
1131
+ (set! numlen (+ numlen 1)))
1132
+ (if (< numlen width)
1133
+ (format:out-fill (- width numlen) (integer->char padch)))
1134
+ (if (> numlen width) ; adjust precision if possible
1135
+ (let ((dot-index (- numlen
1136
+ (- format:fn-len format:fn-dot))))
1137
+ (if (> dot-index width)
1138
+ (if overch ; numstr too big for required width
1139
+ (format:out-fill width (integer->char overch))
1140
+ (format:fn-out modifier #t))
1141
+ (begin
1142
+ (format:fn-round (- width dot-index))
1143
+ (format:fn-out modifier #t))))
1144
+ (format:fn-out modifier #t)))
1145
+ (format:fn-out modifier #t)))))))
1146
+
1147
+ ;; format exponential flonums (~E)
1148
+
1149
+ (define (format:out-expon modifier number pars)
1150
+ (if (not (or (number? number) (string? number)))
1151
+ (format:error "argument is not a number"))
1152
+
1153
+ (let ((l (length pars)))
1154
+ (let ((width (format:par pars l 0 #f "width"))
1155
+ (digits (format:par pars l 1 #f "digits"))
1156
+ (edigits (format:par pars l 2 #f "exponent digits"))
1157
+ (scale (format:par pars l 3 1 #f))
1158
+ (overch (format:par pars l 4 #f #f))
1159
+ (padch (format:par pars l 5 format:space-ch #f))
1160
+ (expch (format:par pars l 6 #f #f)))
1161
+
1162
+ (cond
1163
+ ((and (number? number)
1164
+ (or (inf? number) (nan? number)))
1165
+ (format:out-inf-nan number width digits edigits overch padch))
1166
+
1167
+ (digits ; fixed precision
1168
+
1169
+ (let ((digits (if (> scale 0)
1170
+ (if (< scale (+ digits 2))
1171
+ (+ (- digits scale) 1)
1172
+ 0)
1173
+ digits)))
1174
+ (format:parse-float number #f scale)
1175
+ (if (<= (- format:fn-len format:fn-dot) digits)
1176
+ (format:fn-zfill #f (- digits (- format:fn-len format:fn-dot)))
1177
+ (format:fn-round digits))
1178
+ (if width
1179
+ (if (and edigits overch (> format:en-len edigits))
1180
+ (format:out-fill width (integer->char overch))
1181
+ (let ((numlen (+ format:fn-len 3))) ; .E+
1182
+ (if (or (not format:fn-pos?) (eq? modifier 'at))
1183
+ (set! numlen (+ numlen 1)))
1184
+ (if (and (= format:fn-dot 0) (> width (+ digits 1)))
1185
+ (set! numlen (+ numlen 1)))
1186
+ (set! numlen
1187
+ (+ numlen
1188
+ (if (and edigits (>= edigits format:en-len))
1189
+ edigits
1190
+ format:en-len)))
1191
+ (if (< numlen width)
1192
+ (format:out-fill (- width numlen)
1193
+ (integer->char padch)))
1194
+ (if (and overch (> numlen width))
1195
+ (format:out-fill width (integer->char overch))
1196
+ (begin
1197
+ (format:fn-out modifier (> width (- numlen 1)))
1198
+ (format:en-out edigits expch)))))
1199
+ (begin
1200
+ (format:fn-out modifier #t)
1201
+ (format:en-out edigits expch)))))
1202
+
1203
+ (else
1204
+ (format:parse-float number #f scale)
1205
+ (format:fn-strip)
1206
+ (if width
1207
+ (if (and edigits overch (> format:en-len edigits))
1208
+ (format:out-fill width (integer->char overch))
1209
+ (let ((numlen (+ format:fn-len 3))) ; .E+
1210
+ (if (or (not format:fn-pos?) (eq? modifier 'at))
1211
+ (set! numlen (+ numlen 1)))
1212
+ (if (= format:fn-dot 0)
1213
+ (set! numlen (+ numlen 1)))
1214
+ (set! numlen
1215
+ (+ numlen
1216
+ (if (and edigits (>= edigits format:en-len))
1217
+ edigits
1218
+ format:en-len)))
1219
+ (if (< numlen width)
1220
+ (format:out-fill (- width numlen)
1221
+ (integer->char padch)))
1222
+ (if (> numlen width) ; adjust precision if possible
1223
+ (let ((f (- format:fn-len format:fn-dot))) ; fract len
1224
+ (if (> (- numlen f) width)
1225
+ (if overch ; numstr too big for required width
1226
+ (format:out-fill width
1227
+ (integer->char overch))
1228
+ (begin
1229
+ (format:fn-out modifier #t)
1230
+ (format:en-out edigits expch)))
1231
+ (begin
1232
+ (format:fn-round (+ (- f numlen) width))
1233
+ (format:fn-out modifier #t)
1234
+ (format:en-out edigits expch))))
1235
+ (begin
1236
+ (format:fn-out modifier #t)
1237
+ (format:en-out edigits expch)))))
1238
+ (begin
1239
+ (format:fn-out modifier #t)
1240
+ (format:en-out edigits expch))))))))
1241
+
1242
+ ;; format general flonums (~G)
1243
+
1244
+ (define (format:out-general modifier number pars)
1245
+ (if (not (or (number? number) (string? number)))
1246
+ (format:error "argument is not a number or a number string"))
1247
+
1248
+ (let ((l (length pars)))
1249
+ (let ((width (if (> l 0) (list-ref pars 0) #f))
1250
+ (digits (if (> l 1) (list-ref pars 1) #f))
1251
+ (edigits (if (> l 2) (list-ref pars 2) #f))
1252
+ (overch (if (> l 4) (list-ref pars 4) #f))
1253
+ (padch (if (> l 5) (list-ref pars 5) #f)))
1254
+ (cond
1255
+ ((and (number? number)
1256
+ (or (inf? number) (nan? number)))
1257
+ ;; FIXME: this isn't right.
1258
+ (format:out-inf-nan number width digits edigits overch padch))
1259
+ (else
1260
+ (format:parse-float number #t 0)
1261
+ (format:fn-strip)
1262
+ (let* ((ee (if edigits (+ edigits 2) 4)) ; for the following algorithm
1263
+ (ww (if width (- width ee) #f)) ; see Steele's CL book p.395
1264
+ (n (if (= format:fn-dot 0) ; number less than (abs 1.0) ?
1265
+ (- (format:fn-zlead))
1266
+ format:fn-dot))
1267
+ (d (if digits
1268
+ digits
1269
+ (max format:fn-len (min n 7)))) ; q = format:fn-len
1270
+ (dd (- d n)))
1271
+ (if (<= 0 dd d)
1272
+ (begin
1273
+ (format:out-fixed modifier number (list ww dd #f overch padch))
1274
+ (format:out-fill ee #\space)) ;~@T not implemented yet
1275
+ (format:out-expon modifier number pars))))))))
1276
+
1277
+ ;; format dollar flonums (~$)
1278
+
1279
+ (define (format:out-dollar modifier number pars)
1280
+ (if (not (or (number? number) (string? number)))
1281
+ (format:error "argument is not a number or a number string"))
1282
+
1283
+ (let ((l (length pars)))
1284
+ (let ((digits (format:par pars l 0 2 "digits"))
1285
+ (mindig (format:par pars l 1 1 "mindig"))
1286
+ (width (format:par pars l 2 0 "width"))
1287
+ (padch (format:par pars l 3 format:space-ch #f)))
1288
+
1289
+ (cond
1290
+ ((and (number? number)
1291
+ (or (inf? number) (nan? number)))
1292
+ (format:out-inf-nan number width digits #f #f padch))
1293
+
1294
+ (else
1295
+ (format:parse-float number #t 0)
1296
+ (if (<= (- format:fn-len format:fn-dot) digits)
1297
+ (format:fn-zfill #f (- digits (- format:fn-len format:fn-dot)))
1298
+ (format:fn-round digits))
1299
+ (let ((numlen (+ format:fn-len 1)))
1300
+ (if (or (not format:fn-pos?) (memq modifier '(at colon-at)))
1301
+ (set! numlen (+ numlen 1)))
1302
+ (if (and mindig (> mindig format:fn-dot))
1303
+ (set! numlen (+ numlen (- mindig format:fn-dot))))
1304
+ (if (and (= format:fn-dot 0) (not mindig))
1305
+ (set! numlen (+ numlen 1)))
1306
+ (if (< numlen width)
1307
+ (case modifier
1308
+ ((colon)
1309
+ (if (not format:fn-pos?)
1310
+ (format:out-char #\-))
1311
+ (format:out-fill (- width numlen) (integer->char padch)))
1312
+ ((at)
1313
+ (format:out-fill (- width numlen) (integer->char padch))
1314
+ (format:out-char (if format:fn-pos? #\+ #\-)))
1315
+ ((colon-at)
1316
+ (format:out-char (if format:fn-pos? #\+ #\-))
1317
+ (format:out-fill (- width numlen) (integer->char padch)))
1318
+ (else
1319
+ (format:out-fill (- width numlen) (integer->char padch))
1320
+ (if (not format:fn-pos?)
1321
+ (format:out-char #\-))))
1322
+ (if format:fn-pos?
1323
+ (if (memq modifier '(at colon-at)) (format:out-char #\+))
1324
+ (format:out-char #\-))))
1325
+ (if (and mindig (> mindig format:fn-dot))
1326
+ (format:out-fill (- mindig format:fn-dot) #\0))
1327
+ (if (and (= format:fn-dot 0) (not mindig))
1328
+ (format:out-char #\0))
1329
+ (format:out-substr format:fn-str 0 format:fn-dot)
1330
+ (format:out-char #\.)
1331
+ (format:out-substr format:fn-str format:fn-dot format:fn-len))))))
1332
+
1333
+ ; the flonum buffers
1334
+
1335
+ (define format:fn-max 400) ; max. number of number digits
1336
+ (define format:fn-str (make-string format:fn-max)) ; number buffer
1337
+ (define format:fn-len 0) ; digit length of number
1338
+ (define format:fn-dot #f) ; dot position of number
1339
+ (define format:fn-pos? #t) ; number positive?
1340
+ (define format:en-max 10) ; max. number of exponent digits
1341
+ (define format:en-str (make-string format:en-max)) ; exponent buffer
1342
+ (define format:en-len 0) ; digit length of exponent
1343
+ (define format:en-pos? #t) ; exponent positive?
1344
+
1345
+ (define (format:parse-float num fixed? scale)
1346
+ (let ((num-str (if (string? num)
1347
+ num
1348
+ (number->string (exact->inexact num)))))
1349
+ (set! format:fn-pos? #t)
1350
+ (set! format:fn-len 0)
1351
+ (set! format:fn-dot #f)
1352
+ (set! format:en-pos? #t)
1353
+ (set! format:en-len 0)
1354
+ (do ((i 0 (+ i 1))
1355
+ (left-zeros 0)
1356
+ (mantissa? #t)
1357
+ (all-zeros? #t)
1358
+ (num-len (string-length num-str))
1359
+ (c #f)) ; current exam. character in num-str
1360
+ ((= i num-len)
1361
+ (if (not format:fn-dot)
1362
+ (set! format:fn-dot format:fn-len))
1363
+
1364
+ (if all-zeros?
1365
+ (begin
1366
+ (set! left-zeros 0)
1367
+ (set! format:fn-dot 0)
1368
+ (set! format:fn-len 1)))
1369
+
1370
+ ;; now format the parsed values according to format's need
1371
+
1372
+ (if fixed?
1373
+
1374
+ (begin ; fixed format m.nnn or .nnn
1375
+ (if (and (> left-zeros 0) (> format:fn-dot 0))
1376
+ (if (> format:fn-dot left-zeros)
1377
+ (begin ; norm 0{0}nn.mm to nn.mm
1378
+ (format:fn-shiftleft left-zeros)
1379
+ (set! format:fn-dot (- format:fn-dot left-zeros))
1380
+ (set! left-zeros 0))
1381
+ (begin ; normalize 0{0}.nnn to .nnn
1382
+ (format:fn-shiftleft format:fn-dot)
1383
+ (set! left-zeros (- left-zeros format:fn-dot))
1384
+ (set! format:fn-dot 0))))
1385
+ (if (or (not (= scale 0)) (> format:en-len 0))
1386
+ (let ((shift (+ scale (format:en-int))))
1387
+ (cond
1388
+ (all-zeros? #t)
1389
+ ((> (+ format:fn-dot shift) format:fn-len)
1390
+ (format:fn-zfill
1391
+ #f (- shift (- format:fn-len format:fn-dot)))
1392
+ (set! format:fn-dot format:fn-len))
1393
+ ((< (+ format:fn-dot shift) 0)
1394
+ (format:fn-zfill #t (- (- shift) format:fn-dot))
1395
+ (set! format:fn-dot 0))
1396
+ (else
1397
+ (if (> left-zeros 0)
1398
+ (if (<= left-zeros shift) ; shift always > 0 here
1399
+ (format:fn-shiftleft shift) ; shift out 0s
1400
+ (begin
1401
+ (format:fn-shiftleft left-zeros)
1402
+ (set! format:fn-dot (- shift left-zeros))))
1403
+ (set! format:fn-dot (+ format:fn-dot shift))))))))
1404
+
1405
+ (let ((negexp ; expon format m.nnnEee
1406
+ (if (> left-zeros 0)
1407
+ (- left-zeros format:fn-dot -1)
1408
+ (if (= format:fn-dot 0) 1 0))))
1409
+ (if (> left-zeros 0)
1410
+ (begin ; normalize 0{0}.nnn to n.nn
1411
+ (format:fn-shiftleft left-zeros)
1412
+ (set! format:fn-dot 1))
1413
+ (if (= format:fn-dot 0)
1414
+ (set! format:fn-dot 1)))
1415
+ (format:en-set (- (+ (- format:fn-dot scale) (format:en-int))
1416
+ negexp))
1417
+ (cond
1418
+ (all-zeros?
1419
+ (format:en-set 0)
1420
+ (set! format:fn-dot 1))
1421
+ ((< scale 0) ; leading zero
1422
+ (format:fn-zfill #t (- scale))
1423
+ (set! format:fn-dot 0))
1424
+ ((> scale format:fn-dot)
1425
+ (format:fn-zfill #f (- scale format:fn-dot))
1426
+ (set! format:fn-dot scale))
1427
+ (else
1428
+ (set! format:fn-dot scale)))))
1429
+ #t)
1430
+
1431
+ ;; do body
1432
+ (set! c (string-ref num-str i)) ; parse the output of number->string
1433
+ (cond ; which can be any valid number
1434
+ ((char-numeric? c) ; representation of R4RS except
1435
+ (if mantissa? ; complex numbers
1436
+ (begin
1437
+ (if (char=? c #\0)
1438
+ (if all-zeros?
1439
+ (set! left-zeros (+ left-zeros 1)))
1440
+ (begin
1441
+ (set! all-zeros? #f)))
1442
+ (string-set! format:fn-str format:fn-len c)
1443
+ (set! format:fn-len (+ format:fn-len 1)))
1444
+ (begin
1445
+ (string-set! format:en-str format:en-len c)
1446
+ (set! format:en-len (+ format:en-len 1)))))
1447
+ ((or (char=? c #\-) (char=? c #\+))
1448
+ (if mantissa?
1449
+ (set! format:fn-pos? (char=? c #\+))
1450
+ (set! format:en-pos? (char=? c #\+))))
1451
+ ((char=? c #\.)
1452
+ (set! format:fn-dot format:fn-len))
1453
+ ((char=? c #\e)
1454
+ (set! mantissa? #f))
1455
+ ((char=? c #\E)
1456
+ (set! mantissa? #f))
1457
+ ((char-whitespace? c) #t)
1458
+ ((char=? c #\d) #t) ; decimal radix prefix
1459
+ ((char=? c #\#) #t)
1460
+ (else
1461
+ (format:error "illegal character `~c' in number->string" c))))))
1462
+
1463
+ (define (format:en-int) ; convert exponent string to integer
1464
+ (if (= format:en-len 0)
1465
+ 0
1466
+ (do ((i 0 (+ i 1))
1467
+ (n 0))
1468
+ ((= i format:en-len)
1469
+ (if format:en-pos?
1470
+ n
1471
+ (- n)))
1472
+ (set! n (+ (* n 10) (- (char->integer (string-ref format:en-str i))
1473
+ format:zero-ch))))))
1474
+
1475
+ (define (format:en-set en) ; set exponent string number
1476
+ (set! format:en-len 0)
1477
+ (set! format:en-pos? (>= en 0))
1478
+ (let ((en-str (number->string en)))
1479
+ (do ((i 0 (+ i 1))
1480
+ (en-len (string-length en-str))
1481
+ (c #f))
1482
+ ((= i en-len))
1483
+ (set! c (string-ref en-str i))
1484
+ (if (char-numeric? c)
1485
+ (begin
1486
+ (string-set! format:en-str format:en-len c)
1487
+ (set! format:en-len (+ format:en-len 1)))))))
1488
+
1489
+ (define (format:fn-zfill left? n) ; fill current number string with 0s
1490
+ (if (> (+ n format:fn-len) format:fn-max) ; from the left or right
1491
+ (format:error "number is too long to format (enlarge format:fn-max)"))
1492
+ (set! format:fn-len (+ format:fn-len n))
1493
+ (if left?
1494
+ (do ((i format:fn-len (- i 1))) ; fill n 0s to left
1495
+ ((< i 0))
1496
+ (string-set! format:fn-str i
1497
+ (if (< i n)
1498
+ #\0
1499
+ (string-ref format:fn-str (- i n)))))
1500
+ (do ((i (- format:fn-len n) (+ i 1))) ; fill n 0s to the right
1501
+ ((= i format:fn-len))
1502
+ (string-set! format:fn-str i #\0))))
1503
+
1504
+ (define (format:fn-shiftleft n) ; shift left current number n positions
1505
+ (if (> n format:fn-len)
1506
+ (format:error "internal error in format:fn-shiftleft (~d,~d)"
1507
+ n format:fn-len))
1508
+ (do ((i n (+ i 1)))
1509
+ ((= i format:fn-len)
1510
+ (set! format:fn-len (- format:fn-len n)))
1511
+ (string-set! format:fn-str (- i n) (string-ref format:fn-str i))))
1512
+
1513
+ (define (format:fn-round digits) ; round format:fn-str
1514
+ (set! digits (+ digits format:fn-dot))
1515
+ (do ((i digits (- i 1)) ; "099",2 -> "10"
1516
+ (c 5)) ; "023",2 -> "02"
1517
+ ((or (= c 0) (< i 0)) ; "999",2 -> "100"
1518
+ (if (= c 1) ; "005",2 -> "01"
1519
+ (begin ; carry overflow
1520
+ (set! format:fn-len digits)
1521
+ (format:fn-zfill #t 1) ; add a 1 before fn-str
1522
+ (string-set! format:fn-str 0 #\1)
1523
+ (set! format:fn-dot (+ format:fn-dot 1)))
1524
+ (set! format:fn-len digits)))
1525
+ (set! c (+ (- (char->integer (string-ref format:fn-str i))
1526
+ format:zero-ch) c))
1527
+ (string-set! format:fn-str i (integer->char
1528
+ (if (< c 10)
1529
+ (+ c format:zero-ch)
1530
+ (+ (- c 10) format:zero-ch))))
1531
+ (set! c (if (< c 10) 0 1))))
1532
+
1533
+ (define (format:fn-out modifier add-leading-zero?)
1534
+ (if format:fn-pos?
1535
+ (if (eq? modifier 'at)
1536
+ (format:out-char #\+))
1537
+ (format:out-char #\-))
1538
+ (if (= format:fn-dot 0)
1539
+ (if add-leading-zero?
1540
+ (format:out-char #\0))
1541
+ (format:out-substr format:fn-str 0 format:fn-dot))
1542
+ (format:out-char #\.)
1543
+ (format:out-substr format:fn-str format:fn-dot format:fn-len))
1544
+
1545
+ (define (format:en-out edigits expch)
1546
+ (format:out-char (if expch (integer->char expch) #\E))
1547
+ (format:out-char (if format:en-pos? #\+ #\-))
1548
+ (if edigits
1549
+ (if (< format:en-len edigits)
1550
+ (format:out-fill (- edigits format:en-len) #\0)))
1551
+ (format:out-substr format:en-str 0 format:en-len))
1552
+
1553
+ (define (format:fn-strip) ; strip trailing zeros but one
1554
+ (string-set! format:fn-str format:fn-len #\0)
1555
+ (do ((i format:fn-len (- i 1)))
1556
+ ((or (not (char=? (string-ref format:fn-str i) #\0))
1557
+ (<= i format:fn-dot))
1558
+ (set! format:fn-len (+ i 1)))))
1559
+
1560
+ (define (format:fn-zlead) ; count leading zeros
1561
+ (do ((i 0 (+ i 1)))
1562
+ ((or (= i format:fn-len)
1563
+ (not (char=? (string-ref format:fn-str i) #\0)))
1564
+ (if (= i format:fn-len) ; found a real zero
1565
+ 0
1566
+ i))))
1567
+
1568
+
1569
+ ;;; some global functions not found in SLIB
1570
+
1571
+ (define (string-capitalize-first str) ; "hello" -> "Hello"
1572
+ (let ((cap-str (string-copy str)) ; "hELLO" -> "Hello"
1573
+ (non-first-alpha #f) ; "*hello" -> "*Hello"
1574
+ (str-len (string-length str))) ; "hello you" -> "Hello you"
1575
+ (do ((i 0 (+ i 1)))
1576
+ ((= i str-len) cap-str)
1577
+ (let ((c (string-ref str i)))
1578
+ (if (char-alphabetic? c)
1579
+ (if non-first-alpha
1580
+ (string-set! cap-str i (char-downcase c))
1581
+ (begin
1582
+ (set! non-first-alpha #t)
1583
+ (string-set! cap-str i (char-upcase c)))))))))
1584
+
1585
+ ;; Aborts the program when a formatting error occures. This is a null
1586
+ ;; argument closure to jump to the interpreters toplevel continuation.
1587
+
1588
+ (define (format:abort) (error "error in format"))
1589
+
1590
+ (let ((arg-pos (format:format-work format-string format-args))
1591
+ (arg-len (length format-args)))
1592
+ (cond
1593
+ ((> arg-pos arg-len)
1594
+ (set! format:arg-pos (+ arg-len 1))
1595
+ (display format:arg-pos)
1596
+ (format:error "~a missing argument~:p" (- arg-pos arg-len)))
1597
+ (else
1598
+ (if flush-output?
1599
+ (force-output port))
1600
+ (if destination
1601
+ #t
1602
+ (let ((str (get-output-string port)))
1603
+ (close-port port)
1604
+ str)))))))
1605
+
1606
+ (begin-deprecated
1607
+ (set! format
1608
+ (let ((format format))
1609
+ (case-lambda
1610
+ ((destination format-string . args)
1611
+ (if (string? destination)
1612
+ (begin
1613
+ (issue-deprecation-warning
1614
+ "Omitting the destination on a call to format is deprecated."
1615
+ "Pass #f as the destination, before the format string.")
1616
+ (apply format #f destination format-string args))
1617
+ (apply format destination format-string args)))
1618
+ ((deprecated-format-string-only)
1619
+ (issue-deprecation-warning
1620
+ "Omitting the destination port on a call to format is deprecated."
1621
+ "Pass #f as the destination port, before the format string.")
1622
+ (format #f deprecated-format-string-only))))))
1623
+
1624
+
1625
+ ;; Thanks to Shuji Narazaki
1626
+ (module-set! the-root-module 'format format)