mkrf 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. data/CHANGELOG +2 -0
  2. data/MIT-LICENSE +7 -0
  3. data/README +54 -0
  4. data/Rakefile +107 -0
  5. data/lib/mkrf.rb +4 -0
  6. data/lib/mkrf/availability.rb +219 -0
  7. data/lib/mkrf/generator.rb +146 -0
  8. data/test/abstract_unit.rb +4 -0
  9. data/test/fixtures/down_a_directory/header_down_a_directory.h +1 -0
  10. data/test/fixtures/stdmkrf.h +1 -0
  11. data/test/sample_files/libtrivial/Rakefile +31 -0
  12. data/test/sample_files/libtrivial/extconf.rb +3 -0
  13. data/test/sample_files/libtrivial/lib/libtrivial.c +5 -0
  14. data/test/sample_files/libtrivial/lib/libtrivial.o +0 -0
  15. data/test/sample_files/libtrivial/libtrivial_so.bundle +0 -0
  16. data/test/sample_files/libtrivial/mkrf.log +1 -0
  17. data/test/sample_files/libxml-ruby-0.3.8/CHANGELOG +74 -0
  18. data/test/sample_files/libxml-ruby-0.3.8/LICENSE +22 -0
  19. data/test/sample_files/libxml-ruby-0.3.8/README +144 -0
  20. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/cbg.c +76 -0
  21. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/extconf.rb +49 -0
  22. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/libxml.c +86 -0
  23. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/libxml.h +82 -0
  24. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/libxml.rb +107 -0
  25. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/mkrf.log +1 -0
  26. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/old_extconf.rb +95 -0
  27. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_attr.c +372 -0
  28. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_attr.h +21 -0
  29. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_attribute.c +224 -0
  30. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_attribute.h +21 -0
  31. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_document.c +1159 -0
  32. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_document.h +27 -0
  33. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_dtd.c +168 -0
  34. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_dtd.h +17 -0
  35. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_input_cbg.c +167 -0
  36. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_input_cbg.h +21 -0
  37. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_node.c +2139 -0
  38. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_node.h +28 -0
  39. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_node_set.c +248 -0
  40. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_node_set.h +26 -0
  41. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_ns.c +153 -0
  42. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_ns.h +21 -0
  43. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_parser.c +1417 -0
  44. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_parser.h +31 -0
  45. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_parser_context.c +715 -0
  46. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_parser_context.h +22 -0
  47. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_sax_parser.c +426 -0
  48. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_sax_parser.h +52 -0
  49. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_schema.c +142 -0
  50. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_schema.h +16 -0
  51. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_tree.c +43 -0
  52. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_tree.h +12 -0
  53. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xinclude.c +20 -0
  54. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xinclude.h +13 -0
  55. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpath.c +363 -0
  56. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpath.h +24 -0
  57. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpath_context.c +125 -0
  58. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpath_context.h +24 -0
  59. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpointer.c +100 -0
  60. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpointer.h +27 -0
  61. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpointer_context.c +21 -0
  62. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/ruby_xml_xpointer_context.h +18 -0
  63. data/test/sample_files/libxml-ruby-0.3.8/ext/xml/sax_parser_callbacks.inc +202 -0
  64. data/test/sample_files/syck-0.55/CHANGELOG +186 -0
  65. data/test/sample_files/syck-0.55/COPYING +54 -0
  66. data/test/sample_files/syck-0.55/Makefile +582 -0
  67. data/test/sample_files/syck-0.55/Makefile.am +5 -0
  68. data/test/sample_files/syck-0.55/Makefile.in +582 -0
  69. data/test/sample_files/syck-0.55/README +105 -0
  70. data/test/sample_files/syck-0.55/README.BYTECODE +484 -0
  71. data/test/sample_files/syck-0.55/README.EXT +444 -0
  72. data/test/sample_files/syck-0.55/RELEASE +123 -0
  73. data/test/sample_files/syck-0.55/TODO +25 -0
  74. data/test/sample_files/syck-0.55/aclocal.m4 +883 -0
  75. data/test/sample_files/syck-0.55/bootstrap +7 -0
  76. data/test/sample_files/syck-0.55/config.h +79 -0
  77. data/test/sample_files/syck-0.55/config.h.in +78 -0
  78. data/test/sample_files/syck-0.55/config.status +1197 -0
  79. data/test/sample_files/syck-0.55/config/README +14 -0
  80. data/test/sample_files/syck-0.55/config/depcomp +529 -0
  81. data/test/sample_files/syck-0.55/config/install-sh +323 -0
  82. data/test/sample_files/syck-0.55/config/missing +357 -0
  83. data/test/sample_files/syck-0.55/configure +6728 -0
  84. data/test/sample_files/syck-0.55/configure.in +36 -0
  85. data/test/sample_files/syck-0.55/ext/ruby/CHANGELOG +303 -0
  86. data/test/sample_files/syck-0.55/ext/ruby/README +400 -0
  87. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/MANIFEST +1 -0
  88. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/bytecode.c +1170 -0
  89. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/emitter.c +1224 -0
  90. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/extconf.rb +10 -0
  91. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/gram.c +1894 -0
  92. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/gram.h +79 -0
  93. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/handler.c +174 -0
  94. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/implicit.c +2989 -0
  95. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/mkrf.log +1 -0
  96. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/node.c +407 -0
  97. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/rubyext.c +2385 -0
  98. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/syck.c +504 -0
  99. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/syck.h +458 -0
  100. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/token.c +2707 -0
  101. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/yaml2byte.c +250 -0
  102. data/test/sample_files/syck-0.55/ext/ruby/ext/syck/yamlbyte.h +170 -0
  103. data/test/sample_files/syck-0.55/ext/ruby/install.rb +1022 -0
  104. data/test/sample_files/syck-0.55/ext/ruby/lib/okay.rb +161 -0
  105. data/test/sample_files/syck-0.55/ext/ruby/lib/okay/news.rb +69 -0
  106. data/test/sample_files/syck-0.55/ext/ruby/lib/okay/rpc.rb +434 -0
  107. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml.rb +436 -0
  108. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/baseemitter.rb +247 -0
  109. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/basenode.rb +216 -0
  110. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/compat.rb +26 -0
  111. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/constants.rb +45 -0
  112. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/dbm.rb +111 -0
  113. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/emitter.rb +107 -0
  114. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/encoding.rb +33 -0
  115. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/error.rb +34 -0
  116. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/rubytypes.rb +438 -0
  117. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/store.rb +29 -0
  118. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/stream.rb +40 -0
  119. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/stringio.rb +83 -0
  120. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/syck.rb +19 -0
  121. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/tag.rb +86 -0
  122. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/types.rb +188 -0
  123. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/yamlnode.rb +54 -0
  124. data/test/sample_files/syck-0.55/ext/ruby/lib/yaml/ypath.rb +52 -0
  125. data/test/sample_files/syck-0.55/ext/ruby/lib/yod.rb +1168 -0
  126. data/test/sample_files/syck-0.55/ext/ruby/samples/okayNews-modules.rb +27 -0
  127. data/test/sample_files/syck-0.55/ext/ruby/samples/okayNews-sample.rb +336 -0
  128. data/test/sample_files/syck-0.55/ext/ruby/samples/okayNews-validate.rb +341 -0
  129. data/test/sample_files/syck-0.55/ext/ruby/samples/okayRpc-client.rb +51 -0
  130. data/test/sample_files/syck-0.55/ext/ruby/samples/okayRpc-server.rb +85 -0
  131. data/test/sample_files/syck-0.55/ext/ruby/samples/yaml-sortHashKeys.rb +128 -0
  132. data/test/sample_files/syck-0.55/ext/ruby/tests/basic.rb +1653 -0
  133. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsAnchorAlias.yml +51 -0
  134. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsBasicTests.yml +282 -0
  135. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsBlockMapping.yml +78 -0
  136. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsBlockSequence.yml +0 -0
  137. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsDocumentSeparator.yml +102 -0
  138. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsErrorTests.yml +23 -0
  139. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsFlowCollections.yml +73 -0
  140. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsFoldedScalars.yml +215 -0
  141. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsMapInSeq.yml +0 -0
  142. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsNullsAndEmpties.yml +66 -0
  143. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsRubyTests.yml +182 -0
  144. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsSpecificationExamples.yml +2699 -0
  145. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsTypeTransfers.yml +265 -0
  146. data/test/sample_files/syck-0.55/ext/ruby/yts/YtsYpath.yml +221 -0
  147. data/test/sample_files/syck-0.55/ext/ruby/yts/cookbook.rb +159 -0
  148. data/test/sample_files/syck-0.55/ext/ruby/yts/index.yml +10 -0
  149. data/test/sample_files/syck-0.55/ext/ruby/yts/yts.rb +193 -0
  150. data/test/sample_files/syck-0.55/lib/Makefile +497 -0
  151. data/test/sample_files/syck-0.55/lib/Makefile.am +27 -0
  152. data/test/sample_files/syck-0.55/lib/Makefile.in +497 -0
  153. data/test/sample_files/syck-0.55/lib/bytecode.c +1170 -0
  154. data/test/sample_files/syck-0.55/lib/bytecode.re +525 -0
  155. data/test/sample_files/syck-0.55/lib/emitter.c +1224 -0
  156. data/test/sample_files/syck-0.55/lib/gram.c +1894 -0
  157. data/test/sample_files/syck-0.55/lib/gram.h +79 -0
  158. data/test/sample_files/syck-0.55/lib/gram.output +2005 -0
  159. data/test/sample_files/syck-0.55/lib/gram.y +481 -0
  160. data/test/sample_files/syck-0.55/lib/handler.c +174 -0
  161. data/test/sample_files/syck-0.55/lib/implicit.c +2989 -0
  162. data/test/sample_files/syck-0.55/lib/implicit.re +206 -0
  163. data/test/sample_files/syck-0.55/lib/node.c +407 -0
  164. data/test/sample_files/syck-0.55/lib/syck.c +504 -0
  165. data/test/sample_files/syck-0.55/lib/syck.h +458 -0
  166. data/test/sample_files/syck-0.55/lib/syck_st.c +577 -0
  167. data/test/sample_files/syck-0.55/lib/syck_st.h +46 -0
  168. data/test/sample_files/syck-0.55/lib/token.c +2707 -0
  169. data/test/sample_files/syck-0.55/lib/token.re +1139 -0
  170. data/test/sample_files/syck-0.55/lib/yaml2byte.c +250 -0
  171. data/test/sample_files/syck-0.55/lib/yamlbyte.h +170 -0
  172. data/test/sample_files/syck-0.55/stamp-h1 +1 -0
  173. data/test/sample_files/syck-0.55/tests/Basic.c +141 -0
  174. data/test/sample_files/syck-0.55/tests/CuTest.c +294 -0
  175. data/test/sample_files/syck-0.55/tests/CuTest.h +84 -0
  176. data/test/sample_files/syck-0.55/tests/Emit.c +87 -0
  177. data/test/sample_files/syck-0.55/tests/Makefile +480 -0
  178. data/test/sample_files/syck-0.55/tests/Makefile.am +13 -0
  179. data/test/sample_files/syck-0.55/tests/Makefile.in +480 -0
  180. data/test/sample_files/syck-0.55/tests/Parse.c +208 -0
  181. data/test/sample_files/syck-0.55/tests/YTS.c +2310 -0
  182. data/test/sample_files/syck-0.55/tests/YTS.c.erb +326 -0
  183. data/test/sample_files/syck-0.55/tests/YTS.c.rb +44 -0
  184. data/test/test_availability.rb +68 -0
  185. data/test/test_generator.rb +74 -0
  186. metadata +252 -0
@@ -0,0 +1,36 @@
1
+ # Process this file with autoconf to produce a configure script.
2
+ AC_INIT(syck, 0.54)
3
+ AC_CONFIG_AUX_DIR(config)
4
+ AC_PREREQ(2.50)
5
+
6
+ AM_INIT_AUTOMAKE(syck, 0.54)
7
+ AM_CONFIG_HEADER(config.h)
8
+
9
+ # Checks for programs.
10
+ AC_PROG_CC_STDC
11
+ AC_PROG_INSTALL
12
+ AC_PROG_LN_S
13
+ AC_PROG_RANLIB
14
+ AC_PROG_MAKE_SET
15
+ AC_PROG_AWK
16
+ AC_PROG_YACC
17
+ AM_PROG_LEX
18
+
19
+ # Checks for libraries.
20
+
21
+ # Checks for header files.
22
+ AC_HEADER_STDC
23
+ AC_CHECK_HEADERS(alloca.h stdlib.h string.h)
24
+ AC_CHECK_SIZEOF(int, 4)
25
+ AC_CHECK_SIZEOF(long, 4)
26
+
27
+ # Checks for typedefs, structures, and compiler characteristics.
28
+
29
+ # Checks for library functions.
30
+ AC_FUNC_MALLOC
31
+ AC_FUNC_VPRINTF
32
+
33
+ AC_CONFIG_FILES([Makefile
34
+ lib/Makefile
35
+ tests/Makefile])
36
+ AC_OUTPUT
@@ -0,0 +1,303 @@
1
+ --- %YAML:1.0
2
+ - version: 0.60
3
+ date: 2003-06-05
4
+ changes:
5
+ - New parser backed by Syck. [http://whytheluckystiff.net/syck/] 100x faster.
6
+ - New YAML::DBM module.
7
+
8
+ - version: 0.50
9
+ date: 2003-01-13
10
+ changes:
11
+ - YAML::Store more like PStore fixes. Thank you, Eric Hodel.
12
+ - Bug fix to transfer methods, anchors, aliases in a seq-map shortcut. Thank you, Brad Hilton.
13
+ - Prototype YPath support nearly complete (still need to handle '..').
14
+ - New YAML::YamlNode#select! method will transform the results of a selection.
15
+ - No more '+' and '-' boolean implicits.
16
+ - Sequence-in-sequence shortcut nailed.
17
+ - Output YAML repaired for YTS.
18
+ - Radical 0.6 + YAML patches.
19
+
20
+ - version: 0.49
21
+ date: 2003-01-12
22
+ changes:
23
+ - New, cleaner, more efficient tokenizer. Three months worth of work, kids.
24
+ - Line numbers now reported on errors.
25
+ - New map-seq shortcut.
26
+ - New collection types. !omap, !pairs, !set.
27
+ - New implicits for !null, !float, and !boolean.
28
+ - Merge token changed to '<<'.
29
+ - Added sexagecimal format (for time and degrees).
30
+ - Removed the 'undef' possibility.
31
+ - Fixed implicit empties in inline sequences.
32
+ - Flow values allowed in their own indentation.
33
+ - Parsing plain scalars better than ever.
34
+
35
+ - version: 0.48
36
+ date: 2003-01-04
37
+ changes:
38
+ - Empty string implicit.
39
+ - New merge type rules! See http://www.yaml.org/type/merge/.
40
+ - URL encoding removed, replaced with YAML escaping.
41
+ - Binary type now does base64 exclusively.
42
+ - Removed parentheses syntax from !null, !bool and !float implicits.
43
+ - Fixes to the seq-map shortcut, addition of the new map-seq shortcut!
44
+ - Enhanced !okay/rpc's server.about return.
45
+ - The install script's --force command was removed.
46
+ - Directives now in %KEY:VALUE format.
47
+
48
+ - version: 0.47
49
+ date: 2002-11-11
50
+ changes:
51
+ - New IO via StringIO and IO#readline. A change from 0.50 that's being merged in now for speed.
52
+ - Trailing document separator bugfix.
53
+ - DomainType class for handling undefined type families.
54
+ - YAML::each_document alias for YAML::load_documents
55
+ - YAML::each_node alias for YAML::parse_documents
56
+
57
+ - version: 0.46
58
+ date: 2002-11-01
59
+ changes:
60
+ - RubyConf fluf release.
61
+ - In other words, no real changes.
62
+ - I'm talking about total jubilation.
63
+
64
+ - version: 0.45
65
+ date: 2002-10-31
66
+ changes:
67
+ - Yod generates PDF (requires Ruby-ClibPDF).
68
+ - Speed improvement of 20-30% in yaml.rb parser.
69
+ - Support for Okay modules.
70
+ - Long single-line strings will be folded if emitter has folding on.
71
+
72
+ - version: 0.44
73
+ date: 2002-10-10
74
+ changes:
75
+ - New !okay/news and !okay/rpc specifications.
76
+ - Racc no longer a run YAML.
77
+
78
+ - version: 0.43
79
+ date: 2002-09-17
80
+ changes:
81
+ - Strings now anchored only if the string contains a new line.
82
+ - Prototype for the !okay/type schema validator now included.
83
+ - Typing and implicit checking system now wired to YAML::transfer_method.
84
+
85
+ - version: 0.42
86
+ date: 2002-09-16
87
+ changes:
88
+ - Timestamp usec fixes galore from Michael Witrant.
89
+ - New API with parse_* and load_* for accessing the generic and native models, respectively.
90
+ - Basic YPath support checked in.
91
+
92
+ - version: 0.41
93
+ date: 2002-09-06
94
+ changes:
95
+ - New taguri typing mechanism (from Last Call spec).
96
+ - The '/' character allowed to start unquoted strings (from Last Call spec).
97
+ - Added YAML::Pairs type which capitalizes on the seq-map shortcut in the spec.
98
+ - Repaired cases in which nested inline collections were screwing things up.
99
+ - Emitter now emits the seq-map shortcut when possible.
100
+ - Custom classes which extend from Array and Object should round-trip.
101
+
102
+ - version: 0.40
103
+ date: 2002-08-28
104
+ changes:
105
+ - Added Emitter#map and Emitter#seq, along with YAML::quick_emit to ease writing to_yaml methods.
106
+ - Fixes to headless documents.
107
+ - Fix to PrivateType.
108
+ - Fix to empty classes extended from Array and Object.
109
+ - New reference checker uses anchors and aliases to prevent circular references.
110
+ - Binary data now emitting.
111
+ - Kernel::y method for dumping data as an alternative to Kernel::p.
112
+
113
+ - version: 0.39
114
+ date: 2002-08-15
115
+ changes:
116
+ - 'Improved multi-line scalar emissions. Beware of Iconv module with large text blocks.
117
+ It appears to be cutting off after a few k.'
118
+ - Problem with space indicators emitted by String#to_yaml. Bug reported by Tom Sawyer.
119
+ - Bug in comment-handling code. YAML couldn't parse the README.
120
+ - Yod now generating compilable CHM.
121
+
122
+ - version: 0.38
123
+ date: 2002-08-12
124
+ changes:
125
+ - Moved the Emitter into its own class. Thread-safe now.
126
+ - Added some basic Unicode support.
127
+ - More progress on Yod.
128
+
129
+ - version: 0.37
130
+ date: 2002-08-04
131
+ changes:
132
+ - Finished descriptions in the Cookbook.
133
+ - Added simpler inline Regexp and Range serialization.
134
+
135
+ - version: 0.36
136
+ date: 2002-08-01
137
+ changes:
138
+ - Renamed YAML.rb.
139
+ - Fixed slight inconsistency with space indicators in plain scalars.
140
+
141
+ - version: 0.35
142
+ date: 2002-07-29
143
+ changes:
144
+ - Range#to_yaml added.
145
+ - Space indicators now required as the spec prescribes (http://yaml.org/spec/#space_indicators).
146
+ - Negative numbers parsing fixed.
147
+
148
+ - version: 0.34
149
+ date: 2002-07-29
150
+ changes:
151
+ - Symbol#to_yaml added with abbreviated !ruby/sym syntax.
152
+ - Problems with NaN, Infinity, Floats emission.
153
+ - Complex keys, Symbol keys, Regexp keys bugfixes.
154
+ - Bug in Time#to_yaml. My bad.
155
+
156
+ - version: 0.33
157
+ date: 2002-07-29
158
+ changes:
159
+ - Better String#to_yaml, uses the parser's implicit type checker now!
160
+ - Headless documents now skipping the initial newline properly.
161
+ - Turned off SortKeys by default; still turned on in the tests.
162
+
163
+ - version: 0.32
164
+ date: 2002-07-28
165
+ changes:
166
+ - Opened up unquoted strings to more characters, is closer to spec now.
167
+ - Round tripping started with YTS.
168
+ - Problems with foreign characters fixed. Thanks, Robert Wagner.
169
+ - Problems with Array#to_yaml and Hash#to_yaml not giving a newline when nested. Again, RW.
170
+ - Bugs in positive timezones with Time#to_yaml fixed by Tobias Peters!
171
+
172
+ - version: 0.31
173
+ date: 2002-07-27
174
+ changes:
175
+ - Fixed bug in multiline quoted strings.
176
+ - Added YTS cases for odd newline and spaced block scalars.
177
+
178
+ - version: 0.30
179
+ date: 2002-07-26
180
+ changes:
181
+ - Added support for Steve's new YTS streams.
182
+ - Refactored newline handling across all blocks.
183
+
184
+ - version: 0.29
185
+ date: 2002-07-24
186
+ changes:
187
+ - First stab at Unicode support.
188
+ - Basic tests fixed.
189
+
190
+ - version: 0.28
191
+ date: 2002-07-24
192
+ changes:
193
+ - Special comment key and default key supported.
194
+ - Multiline unquoted supported in in-line constructs.
195
+
196
+ - version: 0.27
197
+ date: 2002-07-24
198
+ changes:
199
+ - Handling of literal and folded blocks finally matches the spec for indented blocks.
200
+ - All indentation should be handled correctly.
201
+ - Indented comments properly handled.
202
+
203
+ - version: 0.26
204
+ date: 2002-07-23
205
+ changes:
206
+ - Fixed Timestamps to handle single character usec.
207
+ - Complete spec now in YTS.
208
+
209
+ - version: 0.25
210
+ date: 2002-07-21
211
+ changes:
212
+ - New Object#to_yaml provides a good generic export for most Ruby objects.
213
+ - Fixes to the TrueClass, FalseClass, NilClass export methods.
214
+ - Test harness for the YTS (YamlTestingSuite).
215
+ - Distribution now includes yaml4r.rb directly, use --force to remake.
216
+
217
+ - version: 0.24
218
+ date: 2002-07-17
219
+ changes:
220
+ - Started CHM output for Yod.
221
+ - Better support for multiline scalars, multiline double-quoted strings, and multiline single-quoted strings.
222
+ - Cleaned up the parser code, its indentation and comments.
223
+
224
+ - version: 0.23
225
+ date: 2002-07-16
226
+ changes:
227
+ - Major fixes to the Time emitter and parser. Time zones should work.
228
+ - Fixes to indentation at the start of a document.
229
+ - More Yod work.
230
+
231
+ - version: 0.22
232
+ date: 2002-07-16
233
+ changes:
234
+ - Started Yod documentation.
235
+ - Working to fix indentation problems.
236
+
237
+ - version: 0.21
238
+ date: 2002-07-15
239
+ changes:
240
+ - Private types now available via add_private_type or returns a PrivateType class.
241
+ - URI escaping.
242
+ - All ruby types now registered under the ruby.yaml.org domain as the spec describes.
243
+ - Fixed double-quoted string ending on last character of the document.
244
+
245
+ - version: 0.20
246
+ date: 2002-07-14
247
+ changes:
248
+ - Better error reporting from the parser. Shows the sensitive area and sometimes a bit of advice.
249
+ - Binary data builtin now suported for strings and scalar blocks.
250
+ - Spanning quoted strings should be good.
251
+ - Pause marker supported.
252
+
253
+ - version: 0.19
254
+ date: 2002-07-12
255
+ changes:
256
+ - Parsing of multiple documents via YAML4R::load_document and Parser#parse_documents.
257
+
258
+ - version: 0.18
259
+ date: 2002-07-11
260
+ changes:
261
+ - New YAML4R::add_domain_type, YAML4R::add_ruby_type, YAML4R::add_builtin_type! Beginning of an era!
262
+ - Transfer method prefixing.
263
+ - Better support for commas, colons in unquoted strings.
264
+ - All supported types now added with add_builtin_type.
265
+ - Separators in scalars was throwing the parser off.
266
+ - Seperated unit tests into smaller, more specific functions.
267
+ - README and CHANGELOG now fully parsed by YAML4R.
268
+ - The install.rb now has a --force option to force Racc to remake the grammar.
269
+
270
+ - version: 0.17
271
+ date: 2002-07-10
272
+ changes:
273
+ - Implicit Time elements added (without timezones).
274
+ - Folded and literal blocks alot closer.
275
+ - Spanned strings making progress.
276
+ - Struct fully round-trip.
277
+
278
+ - version: 0.16
279
+ date: 2002-07-09
280
+ changes:
281
+ - Nearing completion of scalar blocks, literal and folded both implemented.
282
+ - Improvements to the Struct class round-trip.
283
+ - Adjunct words are combined to prevent odd errors.
284
+
285
+ - version: 0.15
286
+ date: 2002-07-09
287
+ changes:
288
+ - Added ! explicit implicit operator.
289
+ - Added Struct#to_yaml.
290
+ - Fixes to double-quoted strings.
291
+ - Fixes to Regexp#to_yaml. Added unit tests to reflect.
292
+
293
+ - version: 0.14
294
+ date: 2002-07-08
295
+ changes:
296
+ - Initial public release.
297
+ - README in YAML.
298
+ - Complex keys.
299
+ - Single-quoted, double-quoted scalars.
300
+ - Transfer methods now parsed.
301
+ - Cleaned up the grammar a bit more.
302
+ - Anchors and aliases.
303
+
@@ -0,0 +1,400 @@
1
+ #
2
+ #
3
+ # .. yaml.rb .....
4
+ # . .
5
+ # . .
6
+ # . .
7
+ # ....... v0.60 ..
8
+ #
9
+ #
10
+ #
11
+ # {o}
12
+ # ^
13
+ # {o}
14
+ # ^
15
+ #
16
+ # Load this README!
17
+ #
18
+ # >> YAML::load( File.open( 'README' ) )
19
+ #
20
+ --- %YAML:1.0
21
+ title: YAML.rb
22
+ version: 0.60
23
+ author: [Why the Lucky Stiff, yaml-core@whytheluckystiff.net]
24
+ websites: [http://www.yaml.org, http://yaml4r.sf.net, http://sf.net/projects/yaml4r/]
25
+ installation: >
26
+ YAML.rb depends on Racc, available in the RAA:
27
+
28
+ http://www.ruby-lang.org/en/raa-list.rhtml?name=Racc
29
+
30
+ Once Racc is installed, run the install.rb script in this
31
+ distribution:
32
+
33
+ ruby install.rb
34
+
35
+ To run the included unit tests:
36
+
37
+ ruby tests/basic.rb
38
+
39
+ To run the new YamlTestingSuite:
40
+
41
+ cd yts
42
+ ruby yts.rb
43
+
44
+ about: >
45
+ From the specification:
46
+
47
+ "YAML(tm) (rhymes with 'camel') is a
48
+ straightforward machine parsable data serialization format designed for
49
+ human readability and interaction with scripting languages such as Perl
50
+ and Python. YAML is optimized for data serialization, formatted
51
+ dumping, configuration files, log files, Internet messaging and
52
+ filtering. This specification describes the YAML information model and
53
+ serialization format. Together with the Unicode standard for characters, it
54
+ provides all the information necessary to understand YAML Version 1.0
55
+ and construct computer programs to process it."
56
+
57
+ For Ruby developers, YAML is a natural fit for object serialization and
58
+ general data storage. Really, it's quite fantastic. Spreads right on
59
+ your Rubyware like butter on bread!
60
+
61
+ The possible uses for YAML are innumerable. Configuration files,
62
+ custom internet protocols, documentation, the list goes on and on.
63
+ Also, with YAML readers popping up for other languages (see YAML.pm
64
+ and others), you can pass data easily to colleagues in distant lands,
65
+ swamped in their archaic languages.
66
+
67
+ YAML is a beacon of light, reaching out to them all. ;)
68
+
69
+ If I can-- quickly, of course-- in the Pickaxe book-- my all-time favorite
70
+ coding book-- Dave Thomas and Andy Hunt say:
71
+
72
+ "When we discovered Ruby, we realized that we'd found what we'd been looking
73
+ for. More than any other language with which we have worked, Ruby stays
74
+ out of your way. You can concentrate on solving the problem at hand, instead
75
+ of struggling with compiler and language issues. That's how it can help you
76
+ become a better programmer: by giving you the chance to spend your time
77
+ creating solutions for your users, not for the compiler."
78
+
79
+ HeiL! So true. Ruby's elegance, its readability, its common sense! Such
80
+ it is with YAML. YAML is completely readable, in fact much of its syntax
81
+ parallels Ruby's own data structure syntax!
82
+
83
+ Another one from the Pickaxe:
84
+
85
+ "Ruby is easy to learn. Everyday tasks are simple to code and once you've done
86
+ them, they are easy to maintain and grow. Apparently difficult things often
87
+ turn out not to have been difficult after all. Ruby follows the Principle
88
+ of Least Surprise--things work the way you would expect them to, with very
89
+ few special cases or exceptions. And that really does make a difference
90
+ when you're programming."
91
+
92
+ A quick look at YAML and you can see your data structure immediately. If
93
+ I compare it to SOAP or XML-RPC, the difference is immense. With XML-RPC,
94
+ you can see the data structures, but its terribly verbose. More time is
95
+ spent describing the structure than anything else. Again, the Principle
96
+ of Least Surprise is wholly present in YAML. Thank God!
97
+
98
+ Well, welcome to YAML.rb. Now let's look at the API and see what we're
99
+ dealing with!
100
+
101
+ lets show off:
102
+ - section: Exporting objects to YAML
103
+ explanation: >
104
+
105
+ Ruby encourages objects to have their own exporting methods. Hence, YAML.rb
106
+ adds #to_yaml methods for built-in types. The NilClass, FalseClass, TrueClass, Symbol, Range,
107
+ Numeric, Date, Time, Regexp, String, Array, and Hash all contain the to_yaml method.
108
+
109
+ example: |
110
+
111
+ require 'yaml'
112
+ h = { 'test' => 12, 'another' => 13 }
113
+ puts h.to_yaml
114
+
115
+ - section: Loading a single YAML document
116
+ explanation: >
117
+
118
+ Although you'll often want to store multiple YAML documents in a single
119
+ file, YAML.rb has a mechanism for loading and storing a single document in
120
+ a single file. I wanted to offer a simpler API for those who don't care
121
+ for the multiple document styling and just want to store a single object.
122
+
123
+ example: |
124
+
125
+ require 'yaml'
126
+ obj = YAML::load( File::open( "/tmp/yaml.store.1" ) )
127
+
128
+ - section: Loading an object from a string
129
+ explanation: >
130
+
131
+ Perhaps you get an object from an HTTP post. String objects can be
132
+ loaded through the same YAML::load used with the File object above.
133
+ You can also pass StringIO into YAML::load.
134
+
135
+ example: |
136
+
137
+ require 'yaml'
138
+ obj = YAML::load( <<EOY
139
+ --- %YAML:1.0
140
+ - armless
141
+ - falling
142
+ - birds
143
+ EOY
144
+ )
145
+ p obj
146
+ #=> [ 'armless', 'falling', 'birds' ]
147
+
148
+ - section: Replacing PStore with YAML
149
+ explanation: >
150
+
151
+ PStore is an excellent utility for Ruby developers. Akin to Python's pickle,
152
+ objects can be serialized to a file. In YAML.rb, the PStore API is replicated
153
+ identically, as a drop-in replacement for PStore code.
154
+
155
+ example: |
156
+
157
+ require 'yaml'
158
+ y = YAML::Store.new( "/tmp/yaml.store.1", :Indent => 2, :Separator => '---.pstore' )
159
+ y.transaction do
160
+ y['names'] = ['Crispin', 'Glover']
161
+ y['hello'] = {'hi' => 'hello', 'yes' => 'YES!!' }
162
+ end
163
+
164
+ - section: Exporting multiple documents to YAML
165
+ explanation: >
166
+
167
+ A single YAML file can store several documents, each opened with a YAML separator ('---').
168
+ This can be especially useful for streaming data over a socket or for separating
169
+ log file entries (as see in the spec -- http://yaml.org/spec/).
170
+
171
+ This release writes all documents out upon calling YAML::Stream#emit, but future
172
+ releases will allow document writing to stream individually.
173
+
174
+ example: |
175
+
176
+ y = YAML::Stream.new( :Indent => 2, :UseVersion => true )
177
+ y.add( {'my_regex' => /hello [Jj][Aa][Mm][Ee][Ss]/, 'my_age' => 90 } )
178
+ y.add( {'hi' => 'wow!', 'bye' => 'wow!'} )
179
+ y.add( {['Red Socks','Boston'] => ['One', 'Two', 'Three']} )
180
+ y.add( [true, false, false] )
181
+ puts y.emit
182
+
183
+ - section: Loading multiple documents at once into a YAML::Stream
184
+ explanation: >
185
+
186
+ In using YAML::Stream to write your objects, you may find that
187
+ you want a quick way to load several documents at once back into
188
+ a YAML::Stream, for editing and rewriting.
189
+
190
+ example: |
191
+
192
+ require 'yaml'
193
+ File.open( "/home/why/.personalrc", "rw" ) { |rc|
194
+ # Load the objects from the file
195
+ y = YAML::load_stream( rc )
196
+ # Make edits to the objects
197
+ doc2 = y.documents[2]
198
+ doc2['car'] = '1997 Subaru Outback'
199
+ y.edit( 2, doc2 )
200
+ # Save back out
201
+ rc.rewind
202
+ rc.write( y.emit )
203
+ rc.close
204
+ }
205
+
206
+ - section: Loading multiple documents from a YAML stream
207
+ explanation: |
208
+
209
+ When reading YAML from a socket or a pipe, you should
210
+ consider using the event-based parser, which will parse
211
+ documents one at a time.
212
+
213
+ example: |
214
+
215
+ require 'yaml'
216
+ log = File.open( "/var/log/apache.yaml" )
217
+ yp = YAML::load_documents( log ) { |doc|
218
+ puts "#{doc['at']} #{doc['type']} #{doc['url}"
219
+ }
220
+
221
+ # Note the YAML document embedded in the YAML document!
222
+ cheat sheet: |
223
+ # A YAML reference card
224
+ --- %YAML:1.0
225
+
226
+ Collection indicators:
227
+ '? ' : Key indicator.
228
+ ': ' : Key / value separator.
229
+ '- ' : Nested series entry indicator.
230
+ ', ' : Separate in-line branch entries.
231
+ '[]' : Surround in-line series branch.
232
+ '{}' : Surround in-line keyed branch.
233
+
234
+ Scalar indicators:
235
+ '''' : Surround in-line unescaped scalar ('' escaped ').
236
+ '"' : Surround in-line escaped scalar (see escape codes below).
237
+ '|' : Block scalar indicator.
238
+ '>' : Folded scalar indicator.
239
+ '-' : Strip chomp modifier ('|-' or '>-').
240
+ '+' : Keep chomp modifier ('|+' or '>+').
241
+ int : Explicit indentation modifier ('|10' or '>2').
242
+ # Modifiers can be combined ('|2-', '>+10').
243
+
244
+ Alias indicators:
245
+ '&' : Anchor property.
246
+ '*' : Alias indicator.
247
+
248
+ Transfer indicators:
249
+ '!' : Transfer method indicator.
250
+ '!!' : Transfer method with private type family.
251
+ '^' : Establish/use global type family prefix.
252
+ '|' : Separate global type family from format.
253
+
254
+ Document indicators:
255
+ '%' : Directive indicator.
256
+ '---' : Document separator.
257
+ '...' : Document terminator.
258
+
259
+ Misc indicators:
260
+ ' #' : Throwaway comment indicator.
261
+ '=' : Default value map key.
262
+ '<<' : Insert keys from map key.
263
+
264
+ Core types: ### Almost never given explicitly
265
+ '!map' : [ Hash table, dictionary, mapping ]
266
+ '!seq' : [ List, array, tuple, vector, sequence ]
267
+ '!str' : Unicode string
268
+
269
+ Language Independent Scalar types:
270
+ [ , ~, null ] : Null (no value).
271
+ [ 1,234, 0x4D2, 02333, 20:34 ] : [ Decimal int, Hexadecimal, Octal, Base60 ]
272
+ [ 1,230.15, 12.3015e+02, 20:20.15 ] : [ Fixed float, Exponential, Base60 ]
273
+ [ .inf, -.Inf, .NAN ] : [ Infinity (float), Negative, Not a number ]
274
+ [ +, true, Yes, ON ] : Boolean true
275
+ [ -, false, No, OFF ] : Boolean false
276
+ ? !binary >
277
+ R0lG...BADS=
278
+ :
279
+ Base 64 binary value.
280
+
281
+ Escape codes:
282
+ Numeric : { "\xXX": 8-bit, "\uXXXX": 16-bit, "\UXXXXXXXX": 32-bit }
283
+ Protective: { "\\": '\', "\"": '"', "\ ": ' ' }
284
+ C: { "\a": BEL, "\b": BS, "\f": FF, "\n": LF, "\r": CR, "\t": TAB, "\v": VTAB }
285
+ Additional: { "\e": ESC, "\0": NUL, "\_": NBSP, "\N": NEL, "\L": LS, "\P": PS }
286
+
287
+ compliance:
288
+ - feature: YAML Separators
289
+ supported?: (Yes)
290
+ notes: Custom YAML separators are allowed and will be used in exporting multiple documents.
291
+ - feature: YAML directives
292
+ supported?: (Yes)
293
+ notes: >
294
+ Directives are parsed correctly, but are of little use. The TAB directive is completely
295
+ ignored, as tabs are not supported at this time.
296
+ - feature: Transfer methods
297
+ supported?: (Yes)
298
+ - feature: Private types
299
+ supported?: (Yes)
300
+ - feature: URI Escaping
301
+ supported?: (Yes)
302
+ - feature: URI Prefixing
303
+ supported?: (Yes)
304
+ - feature: Throwaway comments
305
+ supported?: (Yes)
306
+ - feature: Anchors
307
+ supported?: (Yes)
308
+ - feature: Aliases
309
+ supported?: (Yes)
310
+ - feature: Sequences
311
+ supported?: (Yes)
312
+ notes: Nested and flow both supported.
313
+ - feature: Mappings
314
+ supported?: (Yes)
315
+ notes: Nested and flow both supported.
316
+ - feature: Key indicators
317
+ supported?: (Yes)
318
+ - feature: Explicit indent
319
+ supported?: (Yes)
320
+ - feature: Chomping
321
+ supported?: (Yes)
322
+ - feature: Literal scalar
323
+ supported?: (Yes)
324
+ - feature: Folded scalar
325
+ supported?: (Yes)
326
+ - feature: Unquoted scalars
327
+ supported?: (Yes)
328
+ notes: No support for spanning unquoted.
329
+ - feature: Single-quoted scalars
330
+ supported?: (Yes)
331
+ - feature: Double-quoted scalars
332
+ supported?: (Yes)
333
+ - feature: Escape characters
334
+ supported?: (Yes)
335
+ notes: Most should be.
336
+ - feature: Strings
337
+ supported?: (Yes)
338
+ - feature: Null
339
+ supported?: (Yes)
340
+ feature: Canonical and english.
341
+ - feature: Boolean
342
+ supported?: (Yes)
343
+ notes: Canonical and english.
344
+ - feature: Integer
345
+ supported?: (Yes)
346
+ notes: Canonical, oct, dec, and hex.
347
+ - feature: Float
348
+ supported?: (Yes)
349
+ notes: Canonical, exp, fix, english
350
+ - feature: Time
351
+ supported?: (Yes)
352
+ notes: Canonical, iso8601, spaced and ymd (as Date).
353
+ - feature: Binary
354
+ supported?: (Yes)
355
+ - feature: Default key
356
+ supported?: (Yes)
357
+
358
+ acknowledgements:
359
+ - who: Brian Ingerson
360
+ why?: |
361
+ Ingy's YAML.pm was INDISPENSABLE in writing this library. In fact,
362
+ most of the emitter code follows the YAML.pm code quite closely.
363
+ I also borrowed from his testing suite. Hopefully in the near
364
+ future, YAML.rb and YAML.pm will use the same testing suite.
365
+
366
+ Brian is also the creator of YAML. I'd say he's the free software
367
+ equivalent of an Olympic long jumper.
368
+ email: ingy@ttul.org
369
+
370
+ - who: Steve Howell
371
+ why?: |
372
+ Comrade on the Yaml-core mailing list. He's working on the
373
+ Python YAML implementation. Very encouraging of this project.
374
+ I plan on stealing his Ruby code to handle circular data structures.
375
+ Steve has also contributed to the YAML Testing Suite.
376
+ email: showell@zipcon.net
377
+
378
+ - who: Clark Evans
379
+ why?: |
380
+ Clark showed immediate excitement upon discovery of YAML.rb.
381
+ And at that point I hadn't really done much yet, but the
382
+ encouragement sure helped alot.
383
+
384
+ - who: Oren Ben-Kiki
385
+ why?: |
386
+ For his work on the spec and the quick reference. All three
387
+ of these guys have built a well-written specification, paying
388
+ great attention to details.
389
+
390
+ - who: Yukihiro Matsumoto
391
+ why?: |
392
+ Creator of the Ruby language. The most innovative man in
393
+ software development bar none!
394
+
395
+ - who: qwilk
396
+ why?: |
397
+ Long-time friend at desktopian.org, developer of Blackbox for
398
+ Windows, Robin Hood web server. Excellent chum, persistent
399
+ BeOS fanatic and leader of a generation of shell folk.
400
+