LilyPond-Ruby 0.0.2.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1112) 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/guile.rb +19 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  401. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  402. data/lib/lilypond/builder.rb +161 -0
  403. data/lib/lilypond-ruby.rb +18 -3
  404. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  405. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  406. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  407. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  408. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  409. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  410. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  411. data/share/guile/2.2/guile-procedures.txt +8860 -0
  412. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  413. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  414. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  415. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  416. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  417. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  418. data/share/guile/2.2/ice-9/calling.scm +326 -0
  419. data/share/guile/2.2/ice-9/channel.scm +170 -0
  420. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  421. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  422. data/share/guile/2.2/ice-9/control.scm +110 -0
  423. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  424. data/share/guile/2.2/ice-9/debug.scm +25 -0
  425. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  426. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  427. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  428. data/share/guile/2.2/ice-9/eval.scm +723 -0
  429. data/share/guile/2.2/ice-9/expect.scm +171 -0
  430. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  431. data/share/guile/2.2/ice-9/format.scm +1626 -0
  432. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  433. data/share/guile/2.2/ice-9/futures.scm +308 -0
  434. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  435. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  436. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  437. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  438. data/share/guile/2.2/ice-9/history.scm +65 -0
  439. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  440. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  441. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  442. data/share/guile/2.2/ice-9/list.scm +36 -0
  443. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  444. data/share/guile/2.2/ice-9/ls.scm +94 -0
  445. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  446. data/share/guile/2.2/ice-9/match.scm +59 -0
  447. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  448. data/share/guile/2.2/ice-9/networking.scm +94 -0
  449. data/share/guile/2.2/ice-9/null.scm +34 -0
  450. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  451. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  452. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  453. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  454. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  455. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  456. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  457. data/share/guile/2.2/ice-9/peg.scm +42 -0
  458. data/share/guile/2.2/ice-9/poe.scm +116 -0
  459. data/share/guile/2.2/ice-9/poll.scm +172 -0
  460. data/share/guile/2.2/ice-9/popen.scm +178 -0
  461. data/share/guile/2.2/ice-9/ports.scm +566 -0
  462. data/share/guile/2.2/ice-9/posix.scm +75 -0
  463. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  464. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  465. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  466. data/share/guile/2.2/ice-9/q.scm +153 -0
  467. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  468. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  469. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  470. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  471. data/share/guile/2.2/ice-9/receive.scm +26 -0
  472. data/share/guile/2.2/ice-9/regex.scm +229 -0
  473. data/share/guile/2.2/ice-9/runq.scm +241 -0
  474. data/share/guile/2.2/ice-9/rw.scm +27 -0
  475. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  476. data/share/guile/2.2/ice-9/safe.scm +34 -0
  477. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  478. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  479. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  480. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  481. data/share/guile/2.2/ice-9/session.scm +530 -0
  482. data/share/guile/2.2/ice-9/slib.scm +33 -0
  483. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  484. data/share/guile/2.2/ice-9/streams.scm +168 -0
  485. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  486. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  487. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  488. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  489. data/share/guile/2.2/ice-9/threads.scm +392 -0
  490. data/share/guile/2.2/ice-9/time.scm +58 -0
  491. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  492. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  493. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  494. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  495. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  496. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  497. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  498. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  499. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  500. data/share/guile/2.2/language/bytecode.scm +104 -0
  501. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  502. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  503. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  504. data/share/guile/2.2/language/cps/contification.scm +448 -0
  505. data/share/guile/2.2/language/cps/cse.scm +414 -0
  506. data/share/guile/2.2/language/cps/dce.scm +363 -0
  507. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  508. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  509. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  510. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  511. data/share/guile/2.2/language/cps/intset.scm +830 -0
  512. data/share/guile/2.2/language/cps/licm.scm +308 -0
  513. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  514. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  515. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  516. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  517. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  518. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  519. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  520. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  521. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  522. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  523. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  524. data/share/guile/2.2/language/cps/spec.scm +51 -0
  525. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  526. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  527. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  528. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  529. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  530. data/share/guile/2.2/language/cps/types.scm +1826 -0
  531. data/share/guile/2.2/language/cps/utils.scm +550 -0
  532. data/share/guile/2.2/language/cps/verify.scm +304 -0
  533. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  534. data/share/guile/2.2/language/cps.scm +358 -0
  535. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  536. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  537. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  538. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  539. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  540. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  541. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  542. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  543. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  544. data/share/guile/2.2/language/elisp/boot.el +617 -0
  545. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  546. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  547. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  548. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  549. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  550. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  551. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  552. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  553. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  554. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  555. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  556. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  557. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  558. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  559. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  560. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  561. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  562. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  563. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  564. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  565. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  566. data/share/guile/2.2/language/tree-il.scm +630 -0
  567. data/share/guile/2.2/language/value/spec.scm +30 -0
  568. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  569. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  570. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  571. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  572. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  573. data/share/guile/2.2/oop/goops/save.scm +874 -0
  574. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  575. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  576. data/share/guile/2.2/oop/goops.scm +3176 -0
  577. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  578. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  579. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  580. data/share/guile/2.2/rnrs/base.scm +291 -0
  581. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  582. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  583. data/share/guile/2.2/rnrs/control.scm +22 -0
  584. data/share/guile/2.2/rnrs/enums.scm +152 -0
  585. data/share/guile/2.2/rnrs/eval.scm +39 -0
  586. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  587. data/share/guile/2.2/rnrs/files.scm +96 -0
  588. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  589. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  590. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  591. data/share/guile/2.2/rnrs/lists.scm +55 -0
  592. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  593. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  594. data/share/guile/2.2/rnrs/programs.scm +22 -0
  595. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  596. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  597. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  598. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  599. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  600. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  601. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  602. data/share/guile/2.2/rnrs.scm +289 -0
  603. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  604. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  605. data/share/guile/2.2/scripts/compile.scm +273 -0
  606. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  607. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  608. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  609. data/share/guile/2.2/scripts/frisk.scm +290 -0
  610. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  611. data/share/guile/2.2/scripts/help.scm +188 -0
  612. data/share/guile/2.2/scripts/lint.scm +318 -0
  613. data/share/guile/2.2/scripts/list.scm +91 -0
  614. data/share/guile/2.2/scripts/punify.scm +87 -0
  615. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  616. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  617. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  618. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  619. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  620. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  621. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  622. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  623. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  624. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  625. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  626. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  627. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  628. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  629. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  630. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  631. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  632. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  633. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  634. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  635. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  636. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  637. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  638. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  639. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  640. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  641. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  642. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  643. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  644. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  645. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  646. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  647. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  648. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  649. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  650. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  651. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  652. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  653. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  654. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  655. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  656. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  657. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  658. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  659. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  660. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  661. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  662. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  663. data/share/guile/2.2/statprof.scm +988 -0
  664. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  665. data/share/guile/2.2/sxml/fold.scm +250 -0
  666. data/share/guile/2.2/sxml/match.scm +75 -0
  667. data/share/guile/2.2/sxml/simple.scm +408 -0
  668. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  669. data/share/guile/2.2/sxml/ssax.scm +265 -0
  670. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  671. data/share/guile/2.2/sxml/transform.scm +298 -0
  672. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  673. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  674. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  675. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  676. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  677. data/share/guile/2.2/sxml/xpath.scm +493 -0
  678. data/share/guile/2.2/system/base/ck.scm +55 -0
  679. data/share/guile/2.2/system/base/compile.scm +282 -0
  680. data/share/guile/2.2/system/base/lalr.scm +51 -0
  681. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  682. data/share/guile/2.2/system/base/language.scm +119 -0
  683. data/share/guile/2.2/system/base/message.scm +238 -0
  684. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  685. data/share/guile/2.2/system/base/syntax.scm +299 -0
  686. data/share/guile/2.2/system/base/target.scm +152 -0
  687. data/share/guile/2.2/system/base/types.scm +561 -0
  688. data/share/guile/2.2/system/foreign-object.scm +91 -0
  689. data/share/guile/2.2/system/foreign.scm +200 -0
  690. data/share/guile/2.2/system/repl/command.scm +946 -0
  691. data/share/guile/2.2/system/repl/common.scm +263 -0
  692. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  693. data/share/guile/2.2/system/repl/debug.scm +210 -0
  694. data/share/guile/2.2/system/repl/describe.scm +347 -0
  695. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  696. data/share/guile/2.2/system/repl/repl.scm +233 -0
  697. data/share/guile/2.2/system/repl/server.scm +332 -0
  698. data/share/guile/2.2/system/syntax.scm +33 -0
  699. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  700. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  701. data/share/guile/2.2/system/vm/debug.scm +766 -0
  702. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  703. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  704. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  705. data/share/guile/2.2/system/vm/frame.scm +485 -0
  706. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  707. data/share/guile/2.2/system/vm/linker.scm +732 -0
  708. data/share/guile/2.2/system/vm/loader.scm +27 -0
  709. data/share/guile/2.2/system/vm/program.scm +312 -0
  710. data/share/guile/2.2/system/vm/trace.scm +121 -0
  711. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  712. data/share/guile/2.2/system/vm/traps.scm +608 -0
  713. data/share/guile/2.2/system/vm/vm.scm +32 -0
  714. data/share/guile/2.2/system/xref.scm +369 -0
  715. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  716. data/share/guile/2.2/texinfo/html.scm +279 -0
  717. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  718. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  719. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  720. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  721. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  722. data/share/guile/2.2/texinfo.scm +1263 -0
  723. data/share/guile/2.2/web/client.scm +513 -0
  724. data/share/guile/2.2/web/http.scm +2043 -0
  725. data/share/guile/2.2/web/request.scm +326 -0
  726. data/share/guile/2.2/web/response.scm +379 -0
  727. data/share/guile/2.2/web/server/http.scm +183 -0
  728. data/share/guile/2.2/web/server.scm +397 -0
  729. data/share/guile/2.2/web/uri.scm +552 -0
  730. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  739. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  742. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  748. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  749. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  750. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  751. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  783. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  784. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  785. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  786. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  787. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  858. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  859. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  886. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  887. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  903. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  904. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  905. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  906. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  907. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  908. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  909. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  910. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  911. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  912. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  913. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  914. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  915. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  916. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  918. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  919. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  920. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  921. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  922. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  923. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  924. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  925. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  926. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  927. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  928. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  929. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  930. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  931. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  932. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  933. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  934. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  935. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  936. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  937. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  938. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  939. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  940. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  941. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  942. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  943. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  944. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  945. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  946. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  947. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  948. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  949. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  950. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  951. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  952. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  953. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  954. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  955. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  956. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  957. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  958. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  959. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  960. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  961. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  962. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  963. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  964. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  965. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  966. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  967. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  968. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  969. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  970. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  983. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  984. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  985. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  986. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  987. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  988. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  989. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  990. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  991. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  992. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  993. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  994. data/share/lilypond/2.24.1/python/midi.py +212 -0
  995. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  996. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  997. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  998. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  999. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  1000. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  1001. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  1002. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1003. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1004. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1005. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1006. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1007. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1008. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1009. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1010. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1011. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1022. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1023. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1024. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1025. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1026. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1034. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1035. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1036. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1037. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1038. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1039. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1040. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1041. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1042. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1043. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1044. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1045. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1046. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1047. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1048. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1049. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1050. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1051. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1052. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1053. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1054. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1055. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1056. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1057. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1058. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1059. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1060. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1061. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1062. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1063. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1064. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1065. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1066. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1067. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1068. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1069. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1070. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1071. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1072. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1073. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1074. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1075. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1076. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1077. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1078. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1079. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1080. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1081. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1082. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1083. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1084. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1085. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1086. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1087. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1088. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1089. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1090. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1091. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1092. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1093. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1109. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1110. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1111. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1112. metadata +1135 -4
@@ -0,0 +1,1263 @@
1
+ ;;;; (texinfo) -- parsing of texinfo into SXML
2
+ ;;;;
3
+ ;;;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
4
+ ;;;; Copyright (C) 2004, 2009 Andy Wingo <wingo at pobox dot com>
5
+ ;;;; Copyright (C) 2001,2002 Oleg Kiselyov <oleg at pobox dot com>
6
+ ;;;;
7
+ ;;;; This file is based on SSAX's SSAX.scm.
8
+ ;;;;
9
+ ;;;; This library is free software; you can redistribute it and/or
10
+ ;;;; modify it under the terms of the GNU Lesser General Public
11
+ ;;;; License as published by the Free Software Foundation; either
12
+ ;;;; version 3 of the License, or (at your option) any later version.
13
+ ;;;;
14
+ ;;;; This library is distributed in the hope that it will be useful,
15
+ ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ ;;;; Lesser General Public License for more details.
18
+ ;;;;
19
+ ;;;; You should have received a copy of the GNU Lesser General Public
20
+ ;;;; License along with this library; if not, write to the Free Software
21
+ ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+
23
+ ;;; Commentary:
24
+ ;;
25
+ ;; @subheading Texinfo processing in scheme
26
+ ;;
27
+ ;; This module parses texinfo into SXML. TeX will always be the
28
+ ;; processor of choice for print output, of course. However, although
29
+ ;; @code{makeinfo} works well for info, its output in other formats is
30
+ ;; not very customizable, and the program is not extensible as a whole.
31
+ ;; This module aims to provide an extensible framework for texinfo
32
+ ;; processing that integrates texinfo into the constellation of SXML
33
+ ;; processing tools.
34
+ ;;
35
+ ;; @subheading Notes on the SXML vocabulary
36
+ ;;
37
+ ;; Consider the following texinfo fragment:
38
+ ;;
39
+ ;;@example
40
+ ;; @@deffn Primitive set-car! pair value
41
+ ;; This function...
42
+ ;; @@end deffn
43
+ ;;@end example
44
+ ;;
45
+ ;; Logically, the category (Primitive), name (set-car!), and arguments
46
+ ;; (pair value) are ``attributes'' of the deffn, with the description as
47
+ ;; the content. However, texinfo allows for @@-commands within the
48
+ ;; arguments to an environment, like @code{@@deffn}, which means that
49
+ ;; texinfo ``attributes'' are PCDATA. XML attributes, on the other hand,
50
+ ;; are CDATA. For this reason, ``attributes'' of texinfo @@-commands are
51
+ ;; called ``arguments'', and are grouped under the special element, `%'.
52
+ ;;
53
+ ;; Because `%' is not a valid NCName, stexinfo is a superset of SXML. In
54
+ ;; the interests of interoperability, this module provides a conversion
55
+ ;; function to replace the `%' with `texinfo-arguments'.
56
+ ;;
57
+ ;;; Code:
58
+
59
+ ;; Comparison to xml output of texinfo (which is rather undocumented):
60
+ ;; Doesn't conform to texinfo dtd
61
+ ;; No DTD at all, in fact :-/
62
+ ;; Actually outputs valid xml, after transforming %
63
+ ;; Slower (although with caching the SXML that problem can go away)
64
+ ;; Doesn't parse menus (although menus are shite)
65
+ ;; Args go in a dedicated element, FBOFW
66
+ ;; Definitions are handled a lot better
67
+ ;; Does parse comments
68
+ ;; Outputs only significant line breaks (a biggie!)
69
+ ;; Nodes are treated as anchors, rather than content organizers (a biggie)
70
+ ;; (more book-like, less info-like)
71
+
72
+ ;; TODO
73
+ ;; Integration: help, indexing, plain text
74
+
75
+ (define-module (texinfo)
76
+ #:use-module (sxml simple)
77
+ #:use-module (sxml transform)
78
+ #:use-module (sxml ssax input-parse)
79
+ #:use-module (srfi srfi-1)
80
+ #:use-module (srfi srfi-11)
81
+ #:use-module (srfi srfi-13)
82
+ #:export (call-with-file-and-dir
83
+ texi-command-specs
84
+ texi-command-depth
85
+ texi-fragment->stexi
86
+ texi->stexi
87
+ stexi->sxml))
88
+
89
+ ;; Some utilities
90
+
91
+ (define (parser-error port message . rest)
92
+ (apply throw 'parser-error port message rest))
93
+
94
+ (define (call-with-file-and-dir filename proc)
95
+ "Call the one-argument procedure @var{proc} with an input port that
96
+ reads from @var{filename}. During the dynamic extent of @var{proc}'s
97
+ execution, the current directory will be @code{(dirname
98
+ @var{filename})}. This is useful for parsing documents that can include
99
+ files by relative path name."
100
+ (let ((current-dir (getcwd)))
101
+ (dynamic-wind
102
+ (lambda () (chdir (dirname filename)))
103
+ (lambda ()
104
+ (call-with-input-file (basename filename) proc))
105
+ (lambda () (chdir current-dir)))))
106
+
107
+ ;;========================================================================
108
+ ;; Reflection on the XML vocabulary
109
+
110
+ (define texi-command-specs
111
+ #;
112
+ "A list of (@var{name} @var{content-model} . @var{args})
113
+
114
+ @table @var
115
+ @item name
116
+ The name of an @@-command, as a symbol.
117
+
118
+ @item content-model
119
+ A symbol indicating the syntactic type of the @@-command:
120
+ @table @code
121
+ @item EMPTY-COMMAND
122
+ No content, and no @code{@@end} is coming
123
+ @item EOL-ARGS
124
+ Unparsed arguments until end of line
125
+ @item EOL-TEXT
126
+ Parsed arguments until end of line
127
+ @item INLINE-ARGS
128
+ Unparsed arguments ending with @code{#\\@}}
129
+ @item INLINE-TEXT
130
+ Parsed arguments ending with @code{#\\@}}
131
+ @item INLINE-TEXT-ARGS
132
+ Parsed arguments ending with @code{#\\@}}
133
+ @item ENVIRON
134
+ The tag is an environment tag, expect @code{@@end foo}.
135
+ @item TABLE-ENVIRON
136
+ Like ENVIRON, but with special parsing rules for its arguments.
137
+ @item FRAGMENT
138
+ For @code{*fragment*}, the command used for parsing fragments of
139
+ texinfo documents.
140
+ @end table
141
+
142
+ @code{INLINE-TEXT} commands will receive their arguments within their
143
+ bodies, whereas the @code{-ARGS} commands will receive them in their
144
+ attribute list.
145
+
146
+ @code{EOF-TEXT} receives its arguments in its body.
147
+
148
+ @code{ENVIRON} commands have both: parsed arguments until the end of
149
+ line, received through their attribute list, and parsed text until the
150
+ @code{@@end}, received in their bodies.
151
+
152
+ @code{EOF-TEXT-ARGS} receives its arguments in its attribute list, as in
153
+ @code{ENVIRON}.
154
+
155
+ In addition, @code{ALIAS} can alias one command to another. The alias
156
+ will never be seen in parsed stexinfo.
157
+
158
+ There are four @@-commands that are treated specially. @code{@@include}
159
+ is a low-level token that will not be seen by higher-level parsers, so
160
+ it has no content-model. @code{@@para} is the paragraph command, which
161
+ is only implicit in the texinfo source. @code{@@item} has special
162
+ syntax, as noted above, and @code{@@entry} is how this parser treats
163
+ @code{@@item} commands within @code{@@table}, @code{@@ftable}, and
164
+ @code{@@vtable}.
165
+
166
+ Also, indexing commands (@code{@@cindex}, etc.) are treated specially.
167
+ Their arguments are parsed, but they are needed before entering the
168
+ element so that an anchor can be inserted into the text before the index
169
+ entry.
170
+
171
+ @item args
172
+ Named arguments to the command, in the same format as the formals for a
173
+ lambda. Only present for @code{INLINE-ARGS}, @code{EOL-ARGS},
174
+ @code{INLINE-TEXT-ARGS}, @code{ENVIRON}, @code{TABLE-ENVIRON} commands.
175
+ @end table"
176
+ '(;; Special commands
177
+ (include #f) ;; this is a low-level token
178
+ (para PARAGRAPH)
179
+ (item ITEM)
180
+ (entry ENTRY . heading)
181
+ (noindent EMPTY-COMMAND)
182
+ (*fragment* FRAGMENT)
183
+
184
+ ;; Inline text commands
185
+ (*braces* INLINE-TEXT) ;; FIXME: make me irrelevant
186
+ (bold INLINE-TEXT)
187
+ (sample INLINE-TEXT)
188
+ (samp INLINE-TEXT)
189
+ (code INLINE-TEXT)
190
+ (math INLINE-TEXT)
191
+ (kbd INLINE-TEXT)
192
+ (key INLINE-TEXT)
193
+ (var INLINE-TEXT)
194
+ (env INLINE-TEXT)
195
+ (file INLINE-TEXT)
196
+ (command INLINE-TEXT)
197
+ (option INLINE-TEXT)
198
+ (dfn INLINE-TEXT)
199
+ (cite INLINE-TEXT)
200
+ (acro INLINE-TEXT)
201
+ (email INLINE-TEXT)
202
+ (emph INLINE-TEXT)
203
+ (strong INLINE-TEXT)
204
+ (sample INLINE-TEXT)
205
+ (sc INLINE-TEXT)
206
+ (titlefont INLINE-TEXT)
207
+ (asis INLINE-TEXT)
208
+ (b INLINE-TEXT)
209
+ (i INLINE-TEXT)
210
+ (r INLINE-TEXT)
211
+ (sansserif INLINE-TEXT)
212
+ (slanted INLINE-TEXT)
213
+ (t INLINE-TEXT)
214
+
215
+ ;; Inline args commands
216
+ (value INLINE-ARGS . (key))
217
+ (ref INLINE-ARGS . (node #:opt name section info-file manual))
218
+ (xref INLINE-ARGS . (node #:opt name section info-file manual))
219
+ (pxref INLINE-TEXT-ARGS
220
+ . (node #:opt name section info-file manual))
221
+ (url ALIAS . uref)
222
+ (uref INLINE-TEXT-ARGS . (url #:opt title replacement))
223
+ (anchor INLINE-ARGS . (name))
224
+ (dots INLINE-ARGS . ())
225
+ (result INLINE-ARGS . ())
226
+ (bullet INLINE-ARGS . ())
227
+ (copyright INLINE-ARGS . ())
228
+ (tie INLINE-ARGS . ())
229
+ (image INLINE-ARGS . (file #:opt width height alt-text extension))
230
+
231
+ ;; Inline parsed args commands
232
+ (acronym INLINE-TEXT-ARGS . (acronym #:opt meaning))
233
+
234
+ ;; EOL args elements
235
+ (node EOL-ARGS . (name #:opt next previous up))
236
+ (c EOL-ARGS . all)
237
+ (comment EOL-ARGS . all)
238
+ (setchapternewpage EOL-ARGS . all)
239
+ (sp EOL-ARGS . all)
240
+ (page EOL-ARGS . ())
241
+ (vskip EOL-ARGS . all)
242
+ (syncodeindex EOL-ARGS . all)
243
+ (contents EOL-ARGS . ())
244
+ (shortcontents EOL-ARGS . ())
245
+ (summarycontents EOL-ARGS . ())
246
+ (insertcopying EOL-ARGS . ())
247
+ (dircategory EOL-ARGS . (category))
248
+ (top EOL-ARGS . (title))
249
+ (printindex EOL-ARGS . (type))
250
+ (paragraphindent EOL-ARGS . (indent))
251
+
252
+ ;; EOL text commands
253
+ (*ENVIRON-ARGS* EOL-TEXT)
254
+ (itemx EOL-TEXT)
255
+ (set EOL-TEXT)
256
+ (center EOL-TEXT)
257
+ (title EOL-TEXT)
258
+ (subtitle EOL-TEXT)
259
+ (author EOL-TEXT)
260
+ (chapter EOL-TEXT)
261
+ (section EOL-TEXT)
262
+ (appendix EOL-TEXT)
263
+ (appendixsec EOL-TEXT)
264
+ (unnumbered EOL-TEXT)
265
+ (unnumberedsec EOL-TEXT)
266
+ (subsection EOL-TEXT)
267
+ (subsubsection EOL-TEXT)
268
+ (appendixsubsec EOL-TEXT)
269
+ (appendixsubsubsec EOL-TEXT)
270
+ (unnumberedsubsec EOL-TEXT)
271
+ (unnumberedsubsubsec EOL-TEXT)
272
+ (chapheading EOL-TEXT)
273
+ (majorheading EOL-TEXT)
274
+ (heading EOL-TEXT)
275
+ (subheading EOL-TEXT)
276
+ (subsubheading EOL-TEXT)
277
+
278
+ (deftpx EOL-TEXT-ARGS . (category name . attributes))
279
+ (defcvx EOL-TEXT-ARGS . (category class name))
280
+ (defivarx EOL-TEXT-ARGS . (class name))
281
+ (deftypeivarx EOL-TEXT-ARGS . (class data-type name))
282
+ (defopx EOL-TEXT-ARGS . (category class name . arguments))
283
+ (deftypeopx EOL-TEXT-ARGS . (category class data-type name . arguments))
284
+ (defmethodx EOL-TEXT-ARGS . (class name . arguments))
285
+ (deftypemethodx EOL-TEXT-ARGS . (class data-type name . arguments))
286
+ (defoptx EOL-TEXT-ARGS . (name))
287
+ (defvrx EOL-TEXT-ARGS . (category name))
288
+ (defvarx EOL-TEXT-ARGS . (name))
289
+ (deftypevrx EOL-TEXT-ARGS . (category data-type name))
290
+ (deftypevarx EOL-TEXT-ARGS . (data-type name))
291
+ (deffnx EOL-TEXT-ARGS . (category name . arguments))
292
+ (deftypefnx EOL-TEXT-ARGS . (category data-type name . arguments))
293
+ (defspecx EOL-TEXT-ARGS . (name . arguments))
294
+ (defmacx EOL-TEXT-ARGS . (name . arguments))
295
+ (defunx EOL-TEXT-ARGS . (name . arguments))
296
+ (deftypefunx EOL-TEXT-ARGS . (data-type name . arguments))
297
+
298
+ ;; Indexing commands
299
+ (cindex INDEX . entry)
300
+ (findex INDEX . entry)
301
+ (vindex INDEX . entry)
302
+ (kindex INDEX . entry)
303
+ (pindex INDEX . entry)
304
+ (tindex INDEX . entry)
305
+
306
+ ;; Environment commands (those that need @end)
307
+ (texinfo ENVIRON . title)
308
+ (ignore ENVIRON . ())
309
+ (ifinfo ENVIRON . ())
310
+ (iftex ENVIRON . ())
311
+ (ifhtml ENVIRON . ())
312
+ (ifxml ENVIRON . ())
313
+ (ifplaintext ENVIRON . ())
314
+ (ifnotinfo ENVIRON . ())
315
+ (ifnottex ENVIRON . ())
316
+ (ifnothtml ENVIRON . ())
317
+ (ifnotxml ENVIRON . ())
318
+ (ifnotplaintext ENVIRON . ())
319
+ (titlepage ENVIRON . ())
320
+ (menu ENVIRON . ())
321
+ (direntry ENVIRON . ())
322
+ (copying ENVIRON . ())
323
+ (example ENVIRON . ())
324
+ (smallexample ENVIRON . ())
325
+ (display ENVIRON . ())
326
+ (smalldisplay ENVIRON . ())
327
+ (verbatim ENVIRON . ())
328
+ (format ENVIRON . ())
329
+ (smallformat ENVIRON . ())
330
+ (lisp ENVIRON . ())
331
+ (smalllisp ENVIRON . ())
332
+ (cartouche ENVIRON . ())
333
+ (quotation ENVIRON . ())
334
+
335
+ (deftp ENVIRON . (category name . attributes))
336
+ (defcv ENVIRON . (category class name))
337
+ (defivar ENVIRON . (class name))
338
+ (deftypeivar ENVIRON . (class data-type name))
339
+ (defop ENVIRON . (category class name . arguments))
340
+ (deftypeop ENVIRON . (category class data-type name . arguments))
341
+ (defmethod ENVIRON . (class name . arguments))
342
+ (deftypemethod ENVIRON . (class data-type name . arguments))
343
+ (defopt ENVIRON . (name))
344
+ (defvr ENVIRON . (category name))
345
+ (defvar ENVIRON . (name))
346
+ (deftypevr ENVIRON . (category data-type name))
347
+ (deftypevar ENVIRON . (data-type name))
348
+ (deffn ENVIRON . (category name . arguments))
349
+ (deftypefn ENVIRON . (category data-type name . arguments))
350
+ (defspec ENVIRON . (name . arguments))
351
+ (defmac ENVIRON . (name . arguments))
352
+ (defun ENVIRON . (name . arguments))
353
+ (deftypefun ENVIRON . (data-type name . arguments))
354
+
355
+ (table TABLE-ENVIRON . (formatter))
356
+ (itemize TABLE-ENVIRON . (formatter))
357
+ (enumerate TABLE-ENVIRON . (start))
358
+ (ftable TABLE-ENVIRON . (formatter))
359
+ (vtable TABLE-ENVIRON . (formatter))))
360
+
361
+ (define command-depths
362
+ '((chapter . 1) (section . 2) (subsection . 3) (subsubsection . 4)
363
+ (top . 0) (unnumbered . 1) (unnumberedsec . 2)
364
+ (unnumberedsubsec . 3) (unnumberedsubsubsec . 4)
365
+ (appendix . 1) (appendixsec . 2) (appendixsection . 2)
366
+ (appendixsubsec . 3) (appendixsubsubsec . 4)))
367
+ (define (texi-command-depth command max-depth)
368
+ "Given the texinfo command @var{command}, return its nesting level, or
369
+ @code{#f} if it nests too deep for @var{max-depth}.
370
+
371
+ Examples:
372
+ @example
373
+ (texi-command-depth 'chapter 4) @result{} 1
374
+ (texi-command-depth 'top 4) @result{} 0
375
+ (texi-command-depth 'subsection 4) @result{} 3
376
+ (texi-command-depth 'appendixsubsec 4) @result{} 3
377
+ (texi-command-depth 'subsection 2) @result{} #f
378
+ @end example"
379
+ (let ((depth (and=> (assq command command-depths) cdr)))
380
+ (and depth (<= depth max-depth) depth)))
381
+
382
+ ;; The % is for arguments
383
+ (define (space-significant? command)
384
+ (memq command
385
+ '(example smallexample verbatim lisp smalllisp menu %)))
386
+
387
+ ;; Like a DTD for texinfo
388
+ (define (command-spec command)
389
+ (let ((spec (assq command texi-command-specs)))
390
+ (cond
391
+ ((not spec)
392
+ (parser-error #f "Unknown command" command))
393
+ ((eq? (cadr spec) 'ALIAS)
394
+ (command-spec (cddr spec)))
395
+ (else
396
+ spec))))
397
+
398
+ (define (inline-content? content)
399
+ (case content
400
+ ((INLINE-TEXT INLINE-ARGS INLINE-TEXT-ARGS) #t)
401
+ (else #f)))
402
+
403
+
404
+ ;;========================================================================
405
+ ;; Lower-level parsers and scanners
406
+ ;;
407
+ ;; They deal with primitive lexical units (Names, whitespaces, tags) and
408
+ ;; with pieces of more generic productions. Most of these parsers must
409
+ ;; be called in appropriate context. For example, complete-start-command
410
+ ;; must be called only when the @-command start has been detected and
411
+ ;; its name token has been read.
412
+
413
+ ;; Test if a string is made of only whitespace
414
+ ;; An empty string is considered made of whitespace as well
415
+ (define (string-whitespace? str)
416
+ (or (string-null? str)
417
+ (string-every char-whitespace? str)))
418
+
419
+ ;; Like read-text-line, but allows EOF.
420
+ (define read-eof-breaks '(*eof* #\return #\newline))
421
+ (define (read-eof-line port)
422
+ (if (eof-object? (peek-char port))
423
+ (peek-char port)
424
+ (let* ((line (next-token '() read-eof-breaks
425
+ "reading a line" port))
426
+ (c (read-char port))) ; must be either \n or \r or EOF
427
+ (if (and (eq? c #\return) (eq? (peek-char port) #\newline))
428
+ (read-char port)) ; skip \n that follows \r
429
+ line)))
430
+
431
+ (define (skip-whitespace port)
432
+ (skip-while '(#\space #\tab #\return #\newline) port))
433
+
434
+ (define (skip-horizontal-whitespace port)
435
+ (skip-while '(#\space #\tab) port))
436
+
437
+ ;; command ::= Letter+
438
+
439
+ ;; procedure: read-command PORT
440
+ ;;
441
+ ;; Read a command starting from the current position in the PORT and
442
+ ;; return it as a symbol.
443
+ (define (read-command port)
444
+ (let ((first-char (peek-char port)))
445
+ (or (char-alphabetic? first-char)
446
+ (parser-error port "Nonalphabetic @-command char: '" first-char "'")))
447
+ (string->symbol
448
+ (next-token-of
449
+ (lambda (c)
450
+ (cond
451
+ ((eof-object? c) #f)
452
+ ((char-alphabetic? c) c)
453
+ (else #f)))
454
+ port)))
455
+
456
+ ;; A token is a primitive lexical unit. It is a record with two fields,
457
+ ;; token-head and token-kind.
458
+ ;;
459
+ ;; Token types:
460
+ ;; END The end of a texinfo command. If the command is ended by },
461
+ ;; token-head will be #f. Otherwise if the command is ended by
462
+ ;; @end COMMAND, token-head will be COMMAND. As a special case,
463
+ ;; @bye is the end of a special @texinfo command.
464
+ ;; START The start of a texinfo command. The token-head will be a
465
+ ;; symbol of the @-command name.
466
+ ;; INCLUDE An @include directive. The token-head will be empty -- the
467
+ ;; caller is responsible for reading the include file name.
468
+ ;; ITEM @item commands have an irregular syntax. They end at the
469
+ ;; next @item, or at the end of the environment. For that
470
+ ;; read-command-token treats them specially.
471
+
472
+ (define (make-token kind head) (cons kind head))
473
+ (define token? pair?)
474
+ (define token-kind car)
475
+ (define token-head cdr)
476
+
477
+ ;; procedure: read-command-token PORT
478
+ ;;
479
+ ;; This procedure starts parsing of a command token. The current
480
+ ;; position in the stream must be #\@. This procedure scans enough of
481
+ ;; the input stream to figure out what kind of a command token it is
482
+ ;; seeing. The procedure returns a token structure describing the token.
483
+
484
+ (define (read-command-token port)
485
+ (assert-curr-char '(#\@) "start of the command" port)
486
+ (let ((peeked (peek-char port)))
487
+ (cond
488
+ ((memq peeked '(#\! #\: #\. #\? #\@ #\\ #\{ #\}))
489
+ ;; @-commands that escape characters
490
+ (make-token 'STRING (string (read-char port))))
491
+ (else
492
+ (let ((name (read-command port)))
493
+ (case name
494
+ ((end)
495
+ ;; got an ending tag
496
+ (let ((command (string-trim-both
497
+ (read-eof-line port))))
498
+ (or (and (not (string-null? command))
499
+ (string-every char-alphabetic? command))
500
+ (parser-error port "malformed @end" command))
501
+ (make-token 'END (string->symbol command))))
502
+ ((bye)
503
+ ;; the end of the top
504
+ (make-token 'END 'texinfo))
505
+ ((item)
506
+ (make-token 'ITEM 'item))
507
+ ((include)
508
+ (make-token 'INCLUDE #f))
509
+ (else
510
+ (make-token 'START name))))))))
511
+
512
+ ;; procedure+: read-verbatim-body PORT STR-HANDLER SEED
513
+ ;;
514
+ ;; This procedure must be called after we have read a string
515
+ ;; "@verbatim\n" that begins a verbatim section. The current position
516
+ ;; must be the first position of the verbatim body. This function reads
517
+ ;; _lines_ of the verbatim body and passes them to a STR-HANDLER, a
518
+ ;; character data consumer.
519
+ ;;
520
+ ;; The str-handler is a STR-HANDLER, a procedure STRING1 STRING2 SEED.
521
+ ;; The first STRING1 argument to STR-HANDLER never contains a newline.
522
+ ;; The second STRING2 argument often will. On the first invocation of the
523
+ ;; STR-HANDLER, the seed is the one passed to read-verbatim-body
524
+ ;; as the third argument. The result of this first invocation will be
525
+ ;; passed as the seed argument to the second invocation of the line
526
+ ;; consumer, and so on. The result of the last invocation of the
527
+ ;; STR-HANDLER is returned by the read-verbatim-body. Note a
528
+ ;; similarity to the fundamental 'fold' iterator.
529
+ ;;
530
+ ;; Within a verbatim section all characters are taken at their face
531
+ ;; value. It ends with "\n@end verbatim(\r)?\n".
532
+
533
+ ;; Must be called right after the newline after @verbatim.
534
+ (define (read-verbatim-body port str-handler seed)
535
+ (let loop ((seed seed))
536
+ (let ((fragment (next-token '() '(#\newline)
537
+ "reading verbatim" port)))
538
+ ;; We're reading the char after the 'fragment', which is
539
+ ;; #\newline.
540
+ (read-char port)
541
+ (if (string=? fragment "@end verbatim")
542
+ seed
543
+ (loop (str-handler fragment "\n" seed))))))
544
+
545
+ ;; procedure+: read-arguments PORT
546
+ ;;
547
+ ;; This procedure reads and parses a production ArgumentList.
548
+ ;; ArgumentList ::= S* Argument (S* , S* Argument)* S*
549
+ ;; Argument ::= ([^@{},])*
550
+ ;;
551
+ ;; Arguments are the things in braces, i.e @ref{my node} has one
552
+ ;; argument, "my node". Most commands taking braces actually don't have
553
+ ;; arguments, they process text. For example, in
554
+ ;; @emph{@strong{emphasized}}, the emph takes text, because the parse
555
+ ;; continues into the braces.
556
+ ;;
557
+ ;; Any whitespace within Argument is replaced with a single space.
558
+ ;; Whitespace around an Argument is trimmed.
559
+ ;;
560
+ ;; The procedure returns a list of arguments. Afterwards the current
561
+ ;; character will be after the final #\}.
562
+
563
+ (define (read-arguments port stop-char)
564
+ (define (split str)
565
+ (read-char port) ;; eat the delimiter
566
+ (let ((ret (map (lambda (x) (if (string-null? x) #f x))
567
+ (map string-trim-both (string-split str #\,)))))
568
+ (if (and (pair? ret) (eq? (car ret) #f) (null? (cdr ret)))
569
+ '()
570
+ ret)))
571
+ (split (next-token '() (list stop-char)
572
+ "arguments of @-command" port)))
573
+
574
+ ;; procedure+: complete-start-command COMMAND PORT
575
+ ;;
576
+ ;; This procedure is to complete parsing of an @-command. The procedure
577
+ ;; must be called after the command token has been read. COMMAND is a
578
+ ;; TAG-NAME.
579
+ ;;
580
+ ;; This procedure returns several values:
581
+ ;; COMMAND: a symbol.
582
+ ;; ARGUMENTS: command's arguments, as an alist.
583
+ ;; CONTENT-MODEL: the content model of the command.
584
+ ;;
585
+ ;; On exit, the current position in PORT will depend on the CONTENT-MODEL.
586
+ ;;
587
+ ;; Content model Port position
588
+ ;; ============= =============
589
+ ;; INLINE-TEXT One character after the #\{.
590
+ ;; INLINE-TEXT-ARGS One character after the #\{.
591
+ ;; INLINE-ARGS The first character after the #\}.
592
+ ;; EOL-TEXT The first non-whitespace character after the command.
593
+ ;; ENVIRON, TABLE-ENVIRON, EOL-ARGS, EOL-TEXT
594
+ ;; The first character on the next line.
595
+ ;; PARAGRAPH, ITEM, EMPTY-COMMAND
596
+ ;; The first character after the command.
597
+
598
+ (define (arguments->attlist port args arg-names)
599
+ (let loop ((in args) (names arg-names) (opt? #f) (out '()))
600
+ (cond
601
+ ((symbol? names) ;; a rest arg
602
+ (reverse (if (null? in) out (acons names in out))))
603
+ ((and (not (null? names)) (eq? (car names) #:opt))
604
+ (loop in (cdr names) #t out))
605
+ ((null? in)
606
+ (if (or (null? names) opt?)
607
+ (reverse out)
608
+ (parser-error port "@-command expected more arguments:"
609
+ args arg-names names)))
610
+ ((null? names)
611
+ (parser-error port "@-command didn't expect more arguments:" in))
612
+ ((not (car in))
613
+ (or (and opt? (loop (cdr in) (cdr names) opt? out))
614
+ (parser-error "@-command missing required argument"
615
+ (car names))))
616
+ (else
617
+ (loop (cdr in) (cdr names) opt?
618
+ (acons (car names)
619
+ (if (list? (car in)) (car in) (list (car in)))
620
+ out))))))
621
+
622
+ (define (parse-table-args command port)
623
+ (let* ((line (string-trim-both (read-text-line port)))
624
+ (length (string-length line)))
625
+ (define (get-formatter)
626
+ (or (and (not (zero? length))
627
+ (eq? (string-ref line 0) #\@)
628
+ (let ((f (string->symbol (substring line 1))))
629
+ (or (inline-content? (cadr (command-spec f)))
630
+ (parser-error
631
+ port "@item formatter must be INLINE" f))
632
+ f))
633
+ (parser-error port "Invalid @item formatter" line)))
634
+ (case command
635
+ ((enumerate)
636
+ (if (zero? length)
637
+ '()
638
+ `((start
639
+ ,(if (or (and (eq? length 1)
640
+ (char-alphabetic? (string-ref line 0)))
641
+ (string-every char-numeric? line))
642
+ line
643
+ (parser-error
644
+ port "Invalid enumerate start" line))))))
645
+ ((itemize)
646
+ `((bullet
647
+ ,(or (and (eq? length 1) line)
648
+ (and (string-null? line) '(bullet))
649
+ (list (get-formatter))))))
650
+ (else ;; tables of various varieties
651
+ `((formatter (,(get-formatter))))))))
652
+
653
+ (define (complete-start-command command port)
654
+ (define (get-arguments type arg-names stop-char)
655
+ (arguments->attlist port (read-arguments port stop-char) arg-names))
656
+
657
+ (let* ((spec (command-spec command))
658
+ (command (car spec))
659
+ (type (cadr spec))
660
+ (arg-names (cddr spec)))
661
+ (case type
662
+ ((INLINE-TEXT)
663
+ (assert-curr-char '(#\{) "Inline element lacks {" port)
664
+ (values command '() type))
665
+ ((INLINE-ARGS)
666
+ (assert-curr-char '(#\{) "Inline element lacks {" port)
667
+ (values command (get-arguments type arg-names #\}) type))
668
+ ((INLINE-TEXT-ARGS)
669
+ (assert-curr-char '(#\{) "Inline element lacks {" port)
670
+ (values command '() type))
671
+ ((EOL-ARGS)
672
+ (values command (get-arguments type arg-names #\newline) type))
673
+ ((ENVIRON ENTRY INDEX)
674
+ (skip-horizontal-whitespace port)
675
+ (values command (parse-environment-args command port) type))
676
+ ((TABLE-ENVIRON)
677
+ (skip-horizontal-whitespace port)
678
+ (values command (parse-table-args command port) type))
679
+ ((EOL-TEXT)
680
+ (skip-horizontal-whitespace port)
681
+ (values command '() type))
682
+ ((EOL-TEXT-ARGS)
683
+ (skip-horizontal-whitespace port)
684
+ (values command (parse-eol-text-args command port) type))
685
+ ((PARAGRAPH EMPTY-COMMAND ITEM FRAGMENT)
686
+ (values command '() type))
687
+ (else ;; INCLUDE shouldn't get here
688
+ (parser-error port "can't happen")))))
689
+
690
+ ;;-----------------------------------------------------------------------------
691
+ ;; Higher-level parsers and scanners
692
+ ;;
693
+ ;; They parse productions corresponding entire @-commands.
694
+
695
+ ;; Only reads @settitle, leaves it to the command parser to finish
696
+ ;; reading the title.
697
+ (define (take-until-settitle port)
698
+ (or (find-string-from-port? "\n@settitle " port)
699
+ (parser-error port "No \\n@settitle found"))
700
+ (skip-horizontal-whitespace port)
701
+ (and (eq? (peek-char port) #\newline)
702
+ (parser-error port "You have a @settitle, but no title")))
703
+
704
+ ;; procedure+: read-char-data PORT EXPECT-EOF? STR-HANDLER SEED
705
+ ;;
706
+ ;; This procedure is to read the CharData of a texinfo document.
707
+ ;;
708
+ ;; text ::= (CharData | Command)*
709
+ ;;
710
+ ;; The procedure reads CharData and stops at @-commands (or
711
+ ;; environments). It also stops at an open or close brace.
712
+ ;;
713
+ ;; port
714
+ ;; a PORT to read
715
+ ;; expect-eof?
716
+ ;; a boolean indicating if EOF is normal, i.e., the character
717
+ ;; data may be terminated by the EOF. EOF is normal
718
+ ;; while processing the main document.
719
+ ;; preserve-ws?
720
+ ;; a boolean indicating if we are within a whitespace-preserving
721
+ ;; environment. If #t, suppress paragraph detection.
722
+ ;; str-handler
723
+ ;; a STR-HANDLER, see read-verbatim-body
724
+ ;; seed
725
+ ;; an argument passed to the first invocation of STR-HANDLER.
726
+ ;;
727
+ ;; The procedure returns two results: SEED and TOKEN. The SEED is the
728
+ ;; result of the last invocation of STR-HANDLER, or the original seed if
729
+ ;; STR-HANDLER was never called.
730
+ ;;
731
+ ;; TOKEN can be either an eof-object (this can happen only if expect-eof?
732
+ ;; was #t), or a texinfo token denoting the start or end of a tag.
733
+
734
+ ;; read-char-data port expect-eof? preserve-ws? str-handler seed
735
+ (define read-char-data
736
+ (let* ((end-chars-eof '(*eof* #\{ #\} #\@ #\newline)))
737
+ (define (handle str-handler str1 str2 seed)
738
+ (if (and (string-null? str1) (string-null? str2))
739
+ seed
740
+ (str-handler str1 str2 seed)))
741
+
742
+ (lambda (port expect-eof? preserve-ws? str-handler seed)
743
+ (let ((end-chars ((if expect-eof? identity cdr) end-chars-eof)))
744
+ (let loop ((seed seed))
745
+ (let* ((fragment (next-token '() end-chars "reading char data" port))
746
+ (term-char (peek-char port))) ; one of end-chars
747
+ (cond
748
+ ((eof-object? term-char) ; only if expect-eof?
749
+ (values (handle str-handler fragment "" seed) term-char))
750
+ ((memq term-char '(#\@ #\{ #\}))
751
+ (values (handle str-handler fragment "" seed)
752
+ (case term-char
753
+ ((#\@) (read-command-token port))
754
+ ((#\{) (make-token 'START '*braces*))
755
+ ((#\}) (read-char port) (make-token 'END #f)))))
756
+ ((eq? term-char #\newline)
757
+ ;; Always significant, unless directly before an end token.
758
+ (let ((c (peek-next-char port)))
759
+ (cond
760
+ ((eof-object? c)
761
+ (or expect-eof?
762
+ (parser-error port "EOF while reading char data"))
763
+ (values (handle str-handler fragment "" seed) c))
764
+ ((eq? c #\@)
765
+ (let* ((token (read-command-token port))
766
+ (end? (eq? (token-kind token) 'END)))
767
+ (values
768
+ (handle str-handler fragment
769
+ (if end? "" (if preserve-ws? "\n" " "))
770
+ seed)
771
+ token)))
772
+ ((and (not preserve-ws?) (eq? c #\newline))
773
+ ;; paragraph-separator ::= #\newline #\newline+
774
+ (skip-while '(#\newline) port)
775
+ (skip-horizontal-whitespace port)
776
+ (values (handle str-handler fragment "" seed)
777
+ (make-token 'PARA 'para)))
778
+ (else
779
+ (loop (handle str-handler fragment
780
+ (if preserve-ws? "\n" " ") seed)))))))))))))
781
+
782
+ ; procedure+: assert-token TOKEN KIND NAME
783
+ ; Make sure that TOKEN is of anticipated KIND and has anticipated NAME
784
+ (define (assert-token token kind name)
785
+ (or (and (token? token)
786
+ (eq? kind (token-kind token))
787
+ (equal? name (token-head token)))
788
+ (parser-error #f "Expecting @end for " name ", got " token)))
789
+
790
+ ;;========================================================================
791
+ ;; Highest-level parsers: Texinfo to SXML
792
+
793
+ ;; These parsers are a set of syntactic forms to instantiate a SSAX
794
+ ;; parser. The user tells what to do with the parsed character and
795
+ ;; element data. These latter handlers determine if the parsing follows a
796
+ ;; SAX or a DOM model.
797
+
798
+ ;; syntax: make-command-parser fdown fup str-handler
799
+
800
+ ;; Create a parser to parse and process one element, including its
801
+ ;; character content or children elements. The parser is typically
802
+ ;; applied to the root element of a document.
803
+
804
+ ;; fdown
805
+ ;; procedure COMMAND ARGUMENTS EXPECTED-CONTENT SEED
806
+ ;;
807
+ ;; This procedure is to generate the seed to be passed to handlers
808
+ ;; that process the content of the element. This is the function
809
+ ;; identified as 'fdown' in the denotational semantics of the XML
810
+ ;; parser given in the title comments to (sxml ssax).
811
+ ;;
812
+ ;; fup
813
+ ;; procedure COMMAND ARGUMENTS PARENT-SEED SEED
814
+ ;;
815
+ ;; This procedure is called when parsing of COMMAND is finished.
816
+ ;; The SEED is the result from the last content parser (or from
817
+ ;; fdown if the element has the empty content). PARENT-SEED is the
818
+ ;; same seed as was passed to fdown. The procedure is to generate a
819
+ ;; seed that will be the result of the element parser. This is the
820
+ ;; function identified as 'fup' in the denotational semantics of
821
+ ;; the XML parser given in the title comments to (sxml ssax).
822
+ ;;
823
+ ;; str-handler
824
+ ;; A STR-HANDLER, see read-verbatim-body
825
+ ;;
826
+
827
+ ;; The generated parser is a
828
+ ;; procedure COMMAND PORT SEED
829
+ ;;
830
+ ;; The procedure must be called *after* the command token has been read.
831
+
832
+ (define (read-include-file-name port)
833
+ (let ((x (string-trim-both (read-eof-line port))))
834
+ (if (string-null? x)
835
+ (error "no file listed")
836
+ x))) ;; fixme: should expand @value{} references
837
+
838
+ (define (sxml->node-name sxml)
839
+ "Turn some sxml string into a valid node name."
840
+ (let loop ((in (string->list (sxml->string sxml))) (out '()))
841
+ (if (null? in)
842
+ (apply string (reverse out))
843
+ (if (memq (car in) '(#\{ #\} #\@ #\,))
844
+ (loop (cdr in) out)
845
+ (loop (cdr in) (cons (car in) out))))))
846
+
847
+ (define (index command arguments fdown fup parent-seed)
848
+ (case command
849
+ ((deftp defcv defivar deftypeivar defop deftypeop defmethod
850
+ deftypemethod defopt defvr defvar deftypevr deftypevar deffn
851
+ deftypefn defspec defmac defun deftypefun)
852
+ (let ((args `((name ,(string-append (symbol->string command) "-"
853
+ (cadr (assq 'name arguments)))))))
854
+ (fup 'anchor args parent-seed
855
+ (fdown 'anchor args 'INLINE-ARGS '()))))
856
+ ((cindex findex vindex kindex pindex tindex)
857
+ (let ((args `((name ,(string-append (symbol->string command) "-"
858
+ (sxml->node-name
859
+ (assq 'entry arguments)))))))
860
+ (fup 'anchor args parent-seed
861
+ (fdown 'anchor args 'INLINE-ARGS '()))))
862
+ (else parent-seed)))
863
+
864
+ (define (make-command-parser fdown fup str-handler)
865
+ (lambda (command port seed)
866
+ (let visit ((command command) (port port) (sig-ws? #f) (parent-seed seed))
867
+ (let*-values (((command arguments expected-content)
868
+ (complete-start-command command port)))
869
+ (let* ((parent-seed (index command arguments fdown fup parent-seed))
870
+ (seed (fdown command arguments expected-content parent-seed))
871
+ (eof-closes? (or (memq command '(texinfo para *fragment*))
872
+ (eq? expected-content 'EOL-TEXT)))
873
+ (sig-ws? (or sig-ws? (space-significant? command)))
874
+ (up (lambda (s) (fup command arguments parent-seed s)))
875
+ (new-para (lambda (s) (fdown 'para '() 'PARAGRAPH s)))
876
+ (make-end-para (lambda (p) (lambda (s) (fup 'para '() p s)))))
877
+
878
+ (define (port-for-content)
879
+ (if (eq? expected-content 'EOL-TEXT)
880
+ (call-with-input-string (read-text-line port) identity)
881
+ port))
882
+
883
+ (cond
884
+ ((memq expected-content '(EMPTY-COMMAND INLINE-ARGS EOL-ARGS INDEX
885
+ EOL-TEXT-ARGS))
886
+ ;; empty or finished by complete-start-command
887
+ (up seed))
888
+ ((eq? command 'verbatim)
889
+ (up (read-verbatim-body port str-handler seed)))
890
+ (else
891
+ (let loop ((port (port-for-content))
892
+ (expect-eof? eof-closes?)
893
+ (end-para identity)
894
+ (need-break? (and (not sig-ws?)
895
+ (memq expected-content
896
+ '(ENVIRON TABLE-ENVIRON
897
+ ENTRY ITEM FRAGMENT))))
898
+ (seed seed))
899
+ (cond
900
+ ((and need-break? (or sig-ws? (skip-whitespace port))
901
+ (not (memq (peek-char port) '(#\@ #\})))
902
+ (not (eof-object? (peek-char port))))
903
+ ;; Even if we have an @, it might be inline -- check
904
+ ;; that later
905
+ (let ((seed (end-para seed)))
906
+ (loop port expect-eof? (make-end-para seed) #f
907
+ (new-para seed))))
908
+ (else
909
+ (let*-values (((seed token)
910
+ (read-char-data
911
+ port expect-eof? sig-ws? str-handler seed)))
912
+ (cond
913
+ ((eof-object? token)
914
+ (case expect-eof?
915
+ ((include #f) (end-para seed))
916
+ (else (up (end-para seed)))))
917
+ (else
918
+ (case (token-kind token)
919
+ ((STRING)
920
+ ;; this is only @-commands that escape
921
+ ;; characters: @}, @@, @{ -- new para if need-break
922
+ (let ((seed ((if need-break? end-para identity) seed)))
923
+ (loop port expect-eof?
924
+ (if need-break? (make-end-para seed) end-para) #f
925
+ (str-handler (token-head token) ""
926
+ ((if need-break? new-para identity)
927
+ seed)))))
928
+ ((END)
929
+ ;; The end will only have a name if it's for an
930
+ ;; environment
931
+ (cond
932
+ ((memq command '(item entry))
933
+ (let ((spec (command-spec (token-head token))))
934
+ (or (eq? (cadr spec) 'TABLE-ENVIRON)
935
+ (parser-error
936
+ port "@item not ended by @end table/enumerate/itemize"
937
+ token))))
938
+ ((eq? expected-content 'ENVIRON)
939
+ (assert-token token 'END command)))
940
+ (up (end-para seed)))
941
+ ((ITEM)
942
+ (cond
943
+ ((memq command '(enumerate itemize))
944
+ (up (visit 'item port sig-ws? (end-para seed))))
945
+ ((eq? expected-content 'TABLE-ENVIRON)
946
+ (up (visit 'entry port sig-ws? (end-para seed))))
947
+ ((memq command '(item entry))
948
+ (visit command port sig-ws? (up (end-para seed))))
949
+ (else
950
+ (parser-error
951
+ port "@item must be within a table environment"
952
+ command))))
953
+ ((PARA)
954
+ ;; examine valid paragraphs?
955
+ (loop port expect-eof? end-para (not sig-ws?) seed))
956
+ ((INCLUDE)
957
+ ;; Recurse for include files
958
+ (let ((seed (call-with-file-and-dir
959
+ (read-include-file-name port)
960
+ (lambda (port)
961
+ (loop port 'include end-para
962
+ need-break? seed)))))
963
+ (loop port expect-eof? end-para need-break? seed)))
964
+ ((START) ; Start of an @-command
965
+ (let* ((head (token-head token))
966
+ (spec (command-spec head))
967
+ (head (car spec))
968
+ (type (cadr spec))
969
+ (inline? (inline-content? type))
970
+ (seed ((if (and inline? (not need-break?))
971
+ identity end-para) seed))
972
+ (end-para (if inline?
973
+ (if need-break? (make-end-para seed)
974
+ end-para)
975
+ identity))
976
+ (new-para (if (and inline? need-break?)
977
+ new-para identity)))
978
+ (loop port expect-eof? end-para (not inline?)
979
+ (visit head port sig-ws? (new-para seed)))))
980
+ (else
981
+ (parser-error port "Unknown token type" token))))))))))))))))
982
+
983
+ ;; procedure: reverse-collect-str-drop-ws fragments
984
+ ;;
985
+ ;; Given the list of fragments (some of which are text strings), reverse
986
+ ;; the list and concatenate adjacent text strings. We also drop
987
+ ;; "unsignificant" whitespace, that is, whitespace in front, behind and
988
+ ;; between elements. The whitespace that is included in character data
989
+ ;; is not affected.
990
+ (define (reverse-collect-str-drop-ws fragments)
991
+ (cond
992
+ ((null? fragments) ; a shortcut
993
+ '())
994
+ ((and (string? (car fragments)) ; another shortcut
995
+ (null? (cdr fragments)) ; remove single ws-only string
996
+ (string-whitespace? (car fragments)))
997
+ '())
998
+ (else
999
+ (let loop ((fragments fragments) (result '()) (strs '())
1000
+ (all-whitespace? #t))
1001
+ (cond
1002
+ ((null? fragments)
1003
+ (if all-whitespace?
1004
+ result ; remove leading ws
1005
+ (cons (apply string-append strs) result)))
1006
+ ((string? (car fragments))
1007
+ (loop (cdr fragments) result (cons (car fragments) strs)
1008
+ (and all-whitespace?
1009
+ (string-whitespace? (car fragments)))))
1010
+ (else
1011
+ (loop (cdr fragments)
1012
+ (cons
1013
+ (car fragments)
1014
+ (cond
1015
+ ((null? strs) result)
1016
+ (all-whitespace?
1017
+ (if (null? result)
1018
+ result ; remove trailing whitespace
1019
+ (cons " " result))); replace interstitial ws with
1020
+ ; one space
1021
+ (else
1022
+ (cons (apply string-append strs) result))))
1023
+ '() #t)))))))
1024
+
1025
+ (define (parse-inline-text-args port spec text)
1026
+ (let lp ((in text) (cur '()) (out '()))
1027
+ (cond
1028
+ ((null? in)
1029
+ (if (and (pair? cur)
1030
+ (string? (car cur))
1031
+ (string-whitespace? (car cur)))
1032
+ (lp in (cdr cur) out)
1033
+ (let ((args (reverse (if (null? cur)
1034
+ out
1035
+ (cons (reverse cur) out)))))
1036
+ (arguments->attlist port args (cddr spec)))))
1037
+ ((pair? (car in))
1038
+ (lp (cdr in) (cons (car in) cur) out))
1039
+ ((string-index (car in) #\,)
1040
+ (let* ((parts (string-split (car in) #\,))
1041
+ (head (string-trim-right (car parts)))
1042
+ (rev-tail (reverse (cdr parts)))
1043
+ (last (string-trim (car rev-tail))))
1044
+ (lp (cdr in)
1045
+ (if (string-null? last) cur (cons last cur))
1046
+ (append (cdr rev-tail)
1047
+ (cons (reverse (if (string-null? head) cur (cons head cur)))
1048
+ out)))))
1049
+ (else
1050
+ (lp (cdr in)
1051
+ (cons (if (null? cur) (string-trim (car in)) (car in)) cur)
1052
+ out)))))
1053
+
1054
+ (define (make-dom-parser)
1055
+ (make-command-parser
1056
+ (lambda (command args content seed) ; fdown
1057
+ '())
1058
+ (lambda (command args parent-seed seed) ; fup
1059
+ (let* ((seed (reverse-collect-str-drop-ws seed))
1060
+ (spec (command-spec command))
1061
+ (command (car spec)))
1062
+ (if (eq? (cadr spec) 'INLINE-TEXT-ARGS)
1063
+ (cons (list command (cons '% (parse-inline-text-args #f spec seed)))
1064
+ parent-seed)
1065
+ (acons command
1066
+ (if (null? args) seed (acons '% args seed))
1067
+ parent-seed))))
1068
+ (lambda (string1 string2 seed) ; str-handler
1069
+ (if (string-null? string2)
1070
+ (cons string1 seed)
1071
+ (cons* string2 string1 seed)))))
1072
+
1073
+ (define parse-environment-args
1074
+ (let ((parser (make-dom-parser)))
1075
+ ;; duplicate arguments->attlist to avoid unnecessary splitting
1076
+ (lambda (command port)
1077
+ (let* ((args (cdar (parser '*ENVIRON-ARGS* port '())))
1078
+ (spec (command-spec command))
1079
+ (command (car spec))
1080
+ (arg-names (cddr spec)))
1081
+ (cond
1082
+ ((not arg-names)
1083
+ (if (null? args) '()
1084
+ (parser-error port "@-command doesn't take args" command)))
1085
+ ((eq? arg-names #t)
1086
+ (list (cons 'arguments args)))
1087
+ (else
1088
+ (let loop ((args args) (arg-names arg-names) (out '()))
1089
+ (cond
1090
+ ((null? arg-names)
1091
+ (if (null? args) (reverse! out)
1092
+ (parser-error port "@-command didn't expect more args"
1093
+ command args)))
1094
+ ((symbol? arg-names)
1095
+ (reverse! (acons arg-names args out)))
1096
+ ((null? args)
1097
+ (parser-error port "@-command expects more args"
1098
+ command arg-names))
1099
+ ((and (string? (car args)) (string-index (car args) #\space))
1100
+ => (lambda (i)
1101
+ (let ((rest (substring/shared (car args) (1+ i))))
1102
+ (if (zero? i)
1103
+ (loop (cons rest (cdr args)) arg-names out)
1104
+ (loop (cons rest (cdr args)) (cdr arg-names)
1105
+ (cons (list (car arg-names)
1106
+ (substring (car args) 0 i))
1107
+ out))))))
1108
+ (else
1109
+ (loop (cdr args) (cdr arg-names)
1110
+ (if (and (pair? (car args)) (eq? (caar args) '*braces*))
1111
+ (acons (car arg-names) (cdar args) out)
1112
+ (cons (list (car arg-names) (car args)) out))))))))))))
1113
+
1114
+ (define (parse-eol-text-args command port)
1115
+ ;; perhaps parse-environment-args should be named more
1116
+ ;; generically.
1117
+ (parse-environment-args command port))
1118
+
1119
+ ;; procedure: texi-fragment->stexi STRING
1120
+ ;;
1121
+ ;; A DOM parser for a texinfo fragment STRING.
1122
+ ;;
1123
+ ;; The procedure returns an SXML tree headed by the special tag,
1124
+ ;; *fragment*.
1125
+
1126
+ (define (texi-fragment->stexi string-or-port)
1127
+ "Parse the texinfo commands in @var{string-or-port}, and return the
1128
+ resultant stexi tree. The head of the tree will be the special command,
1129
+ @code{*fragment*}."
1130
+ (define (parse port)
1131
+ (postprocess (car ((make-dom-parser) '*fragment* port '()))))
1132
+ (if (input-port? string-or-port)
1133
+ (parse string-or-port)
1134
+ (call-with-input-string string-or-port parse)))
1135
+
1136
+ ;; procedure: texi->stexi PORT
1137
+ ;;
1138
+ ;; This is an instance of a SSAX parser above that returns an SXML
1139
+ ;; representation of the texinfo document ready to be read at PORT.
1140
+ ;;
1141
+ ;; The procedure returns an SXML tree. The port points to the
1142
+ ;; first character after the @bye, or to the end of the file.
1143
+
1144
+ (define (texi->stexi port)
1145
+ "Read a full texinfo document from @var{port} and return the parsed
1146
+ stexi tree. The parsing will start at the @code{@@settitle} and end at
1147
+ @code{@@bye} or EOF."
1148
+ (let ((parser (make-dom-parser)))
1149
+ (take-until-settitle port)
1150
+ (postprocess (car (parser 'texinfo port '())))))
1151
+
1152
+ (define (car-eq? x y) (and (pair? x) (eq? (car x) y)))
1153
+ (define (make-contents tree)
1154
+ (define (lp in out depth)
1155
+ (cond
1156
+ ((null? in) (values in (cons 'enumerate (reverse! out))))
1157
+ ((and (pair? (cdr in)) (texi-command-depth (caadr in) 4))
1158
+ => (lambda (new-depth)
1159
+ (let ((node-name (and (car-eq? (car in) 'node)
1160
+ (cadr (assq 'name (cdadar in))))))
1161
+ (cond
1162
+ ((< new-depth depth)
1163
+ (values in (cons 'enumerate (reverse! out))))
1164
+ ((> new-depth depth)
1165
+ (let ((out-cdr (if (null? out) '() (cdr out)))
1166
+ (out-car (if (null? out) (list 'item) (car out))))
1167
+ (let*-values (((new-in new-out) (lp in '() (1+ depth))))
1168
+ (lp new-in
1169
+ (cons (append out-car (list new-out)) out-cdr)
1170
+ depth))))
1171
+ (else ;; same depth
1172
+ (lp (cddr in)
1173
+ (cons
1174
+ `(item (para
1175
+ ,@(if node-name
1176
+ `((ref (% (node ,node-name))))
1177
+ (cdadr in))))
1178
+ out)
1179
+ depth))))))
1180
+ (else (lp (cdr in) out depth))))
1181
+ (let*-values (((_ contents) (lp tree '() 1)))
1182
+ `((chapheading "Table of Contents") ,contents)))
1183
+
1184
+ (define (trim-whitespace str trim-left? trim-right?)
1185
+ (let* ((left-space? (and (not trim-left?)
1186
+ (string-prefix? " " str)))
1187
+ (right-space? (and (not trim-right?)
1188
+ (string-suffix? " " str)))
1189
+ (tail (append! (string-tokenize str)
1190
+ (if right-space? '("") '()))))
1191
+ (string-join (if left-space? (cons "" tail) tail))))
1192
+
1193
+ (define (postprocess tree)
1194
+ (define (loop in out state first? sig-ws?)
1195
+ (cond
1196
+ ((null? in)
1197
+ (values (reverse! out) state))
1198
+ ((string? (car in))
1199
+ (loop (cdr in)
1200
+ (cons (if sig-ws? (car in)
1201
+ (trim-whitespace (car in) first? (null? (cdr in))))
1202
+ out)
1203
+ state #f sig-ws?))
1204
+ ((pair? (car in))
1205
+ (case (caar in)
1206
+ ((set)
1207
+ (if (null? (cdar in)) (error "@set missing arguments" in))
1208
+ (if (string? (cadar in))
1209
+ (let ((i (string-index (cadar in) #\space)))
1210
+ (if i
1211
+ (loop (cdr in) out
1212
+ (acons (substring (cadar in) 0 i)
1213
+ (cons (substring (cadar in) (1+ i)) (cddar in))
1214
+ state)
1215
+ #f sig-ws?)
1216
+ (loop (cdr in) out (acons (cadar in) (cddar in) state)
1217
+ #f sig-ws?)))
1218
+ (error "expected a constant to define for @set" in)))
1219
+ ((value)
1220
+ (loop (fold-right cons (cdr in)
1221
+ (or (and=>
1222
+ (assoc (cadr (assq 'key (cdadar in))) state) cdr)
1223
+ (error "unknown value" (cdadar in) state)))
1224
+ out
1225
+ state #f sig-ws?))
1226
+ ((copying)
1227
+ (loop (cdr in) out (cons (car in) state) #f sig-ws?))
1228
+ ((insertcopying)
1229
+ (loop (fold-right cons (cdr in)
1230
+ (or (cdr (assoc 'copying state))
1231
+ (error "copying isn't set yet")))
1232
+ out
1233
+ state #f sig-ws?))
1234
+ ((contents)
1235
+ (loop (cdr in) (fold cons out (make-contents tree)) state #f sig-ws?))
1236
+ (else
1237
+ (let*-values (((kid-out state)
1238
+ (loop (car in) '() state #t
1239
+ (or sig-ws? (space-significant? (caar in))))))
1240
+ (loop (cdr in) (cons kid-out out) state #f sig-ws?)))))
1241
+ (else ; a symbol
1242
+ (loop (cdr in) (cons (car in) out) state #t sig-ws?))))
1243
+
1244
+ (call-with-values
1245
+ (lambda () (loop tree '() '() #t #f))
1246
+ (lambda (out state) out)))
1247
+
1248
+ ;; Replace % with texinfo-arguments.
1249
+ (define (stexi->sxml tree)
1250
+ "Transform the stexi tree @var{tree} into sxml. This involves
1251
+ replacing the @code{%} element that keeps the texinfo arguments with an
1252
+ element for each argument.
1253
+
1254
+ FIXME: right now it just changes % to @code{texinfo-arguments} -- that
1255
+ doesn't hang with the idea of making a dtd at some point"
1256
+ (pre-post-order
1257
+ tree
1258
+ `((% . ,(lambda (x . t) (cons 'texinfo-arguments t)))
1259
+ (*text* . ,(lambda (x t) t))
1260
+ (*default* . ,(lambda (x . t) (cons x t))))))
1261
+
1262
+ ;;; arch-tag: 73890afa-597c-4264-ae70-46fe7756ffb5
1263
+ ;;; texinfo.scm ends here