psych 3.0.3.pre3-java → 3.2.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile +6 -0
 - data/LICENSE +21 -0
 - data/README.md +3 -6
 - data/Rakefile +2 -16
 - data/ext/java/{PsychEmitter.java → org/jruby/ext/psych/PsychEmitter.java} +9 -3
 - data/ext/java/{PsychLibrary.java → org/jruby/ext/psych/PsychLibrary.java} +25 -1
 - data/ext/java/{PsychParser.java → org/jruby/ext/psych/PsychParser.java} +0 -0
 - data/ext/java/{PsychToRuby.java → org/jruby/ext/psych/PsychToRuby.java} +0 -0
 - data/ext/java/{PsychYamlTree.java → org/jruby/ext/psych/PsychYamlTree.java} +0 -8
 - data/ext/psych/depend +2 -0
 - data/ext/psych/extconf.rb +6 -2
 - data/ext/psych/psych.c +3 -3
 - data/ext/psych/psych_parser.c +20 -33
 - data/ext/psych/psych_yaml_tree.c +0 -12
 - data/ext/psych/yaml/api.c +48 -47
 - data/ext/psych/yaml/config.h +77 -7
 - data/ext/psych/yaml/dumper.c +3 -3
 - data/ext/psych/yaml/emitter.c +48 -19
 - data/ext/psych/yaml/loader.c +210 -110
 - data/ext/psych/yaml/parser.c +11 -6
 - data/ext/psych/yaml/reader.c +3 -3
 - data/ext/psych/yaml/scanner.c +52 -28
 - data/ext/psych/yaml/yaml.h +44 -30
 - data/ext/psych/yaml/yaml_private.h +46 -20
 - data/lib/psych.rb +138 -64
 - data/lib/psych/handler.rb +1 -1
 - data/lib/psych/nodes/node.rb +2 -2
 - data/lib/psych/scalar_scanner.rb +23 -36
 - data/lib/psych/versions.rb +4 -3
 - data/lib/psych/visitors/to_ruby.rb +42 -11
 - data/lib/psych/visitors/yaml_tree.rb +29 -41
 - data/psych.gemspec +18 -14
 - metadata +13 -58
 - data/.travis.yml +0 -20
 - data/CHANGELOG.rdoc +0 -576
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 41080752c6cb77f7ba4d02b6ecbe2ad1aa2c09d65a8517f382b058b0c6403eea
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 811715a35a69851bc6bafece15c79044a90fa1f41f4244edf9f849f46bae6a42
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 24f57e51181b8e2e37fe56521ff187259af539d1fd5857ffa07702e398ae1fdf2a7675bc528249afb860e6bab6eee77aa0fcbe89d75b762cd3a1895e6e44abcd
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 63f862bae8f2abf207bc0b27e4b473820188b4e4ae0f1e0d774a76c641dad97c83fa29021a237e40ecfb1ece05560843936630618a005bd530954fde216fdf2b
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Copyright (c) 2009 Aaron Patterson, et al.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining a copy
         
     | 
| 
      
 6 
     | 
    
         
            +
            of this software and associated documentation files (the "Software"), to deal
         
     | 
| 
      
 7 
     | 
    
         
            +
            in the Software without restriction, including without limitation the rights
         
     | 
| 
      
 8 
     | 
    
         
            +
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         
     | 
| 
      
 9 
     | 
    
         
            +
            copies of the Software, and to permit persons to whom the Software is
         
     | 
| 
      
 10 
     | 
    
         
            +
            furnished to do so, subject to the following conditions:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be included in all
         
     | 
| 
      
 13 
     | 
    
         
            +
            copies or substantial portions of the Software.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         
     | 
| 
      
 16 
     | 
    
         
            +
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         
     | 
| 
      
 17 
     | 
    
         
            +
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         
     | 
| 
      
 18 
     | 
    
         
            +
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         
     | 
| 
      
 19 
     | 
    
         
            +
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         
     | 
| 
      
 20 
     | 
    
         
            +
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         
     | 
| 
      
 21 
     | 
    
         
            +
            SOFTWARE.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,22 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Psych
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            [](https://travis-ci.org/ruby/psych)
         
     | 
| 
       4 
     | 
    
         
            -
            [](https://ci.appveyor.com/project/ruby/psych/branch/master)
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
3 
     | 
    
         
             
            *   https://github.com/ruby/psych
         
     | 
| 
       7 
4 
     | 
    
         | 
| 
       8 
5 
     | 
    
         
             
            ## Description
         
     | 
| 
       9 
6 
     | 
    
         | 
| 
       10 
7 
     | 
    
         
             
            Psych is a YAML parser and emitter.  Psych leverages
         
     | 
| 
       11 
     | 
    
         
            -
            [libyaml]( 
     | 
| 
      
 8 
     | 
    
         
            +
            [libyaml](https://pyyaml.org/wiki/LibYAML) for its YAML parsing and emitting
         
     | 
| 
       12 
9 
     | 
    
         
             
            capabilities.  In addition to wrapping libyaml, Psych also knows how to
         
     | 
| 
       13 
10 
     | 
    
         
             
            serialize and de-serialize most Ruby objects to and from the YAML format.
         
     | 
| 
       14 
11 
     | 
    
         | 
| 
       15 
12 
     | 
    
         
             
            ## Examples
         
     | 
| 
       16 
13 
     | 
    
         | 
| 
       17 
14 
     | 
    
         
             
            ```ruby
         
     | 
| 
       18 
     | 
    
         
            -
            #  
     | 
| 
       19 
     | 
    
         
            -
            Psych. 
     | 
| 
      
 15 
     | 
    
         
            +
            # Safely load YAML in to a Ruby object
         
     | 
| 
      
 16 
     | 
    
         
            +
            Psych.safe_load('--- foo') # => 'foo'
         
     | 
| 
       20 
17 
     | 
    
         | 
| 
       21 
18 
     | 
    
         
             
            # Emit YAML from a Ruby object
         
     | 
| 
       22 
19 
     | 
    
         
             
            Psych.dump("foo")     # => "--- foo\n...\n"
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -20,7 +20,7 @@ if RUBY_PLATFORM =~ /java/ 
     | 
|
| 
       20 
20 
     | 
    
         
             
                # and tell maven via system properties the snakeyaml version
         
     | 
| 
       21 
21 
     | 
    
         
             
                # this is basically the same as running from the commandline:
         
     | 
| 
       22 
22 
     | 
    
         
             
                # rmvn dependency:build-classpath -Dsnakeyaml.version='use version from Psych::DEFAULT_SNAKEYAML_VERSION here'
         
     | 
| 
       23 
     | 
    
         
            -
                Maven::Ruby::Maven.new.exec('dependency:build-classpath', "-Dsnakeyaml.version 
     | 
| 
      
 23 
     | 
    
         
            +
                Maven::Ruby::Maven.new.exec('dependency:build-classpath', "-Dsnakeyaml.version=#{Psych::DEFAULT_SNAKEYAML_VERSION}", '-Dverbose=true')
         
     | 
| 
       24 
24 
     | 
    
         
             
                ext.source_version = '1.7'
         
     | 
| 
       25 
25 
     | 
    
         
             
                ext.target_version = '1.7'
         
     | 
| 
       26 
26 
     | 
    
         
             
                ext.classpath = File.read('pkg/classpath')
         
     | 
| 
         @@ -28,21 +28,7 @@ if RUBY_PLATFORM =~ /java/ 
     | 
|
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         
             
            else
         
     | 
| 
       30 
30 
     | 
    
         
             
              require 'rake/extensiontask'
         
     | 
| 
       31 
     | 
    
         
            -
               
     | 
| 
       32 
     | 
    
         
            -
              Rake::ExtensionTask.new("psych", spec) do |ext|
         
     | 
| 
       33 
     | 
    
         
            -
                ext.lib_dir = File.join(*['lib', ENV['FAT_DIR']].compact)
         
     | 
| 
       34 
     | 
    
         
            -
                ext.cross_compile = true
         
     | 
| 
       35 
     | 
    
         
            -
                ext.cross_platform = %w[x86-mingw32 x64-mingw32]
         
     | 
| 
       36 
     | 
    
         
            -
                ext.cross_compiling do |s|
         
     | 
| 
       37 
     | 
    
         
            -
                  s.files.concat ["lib/2.2/psych.so", "lib/2.3/psych.so", "lib/2.4/psych.so"]
         
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
            end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            desc "Compile binaries for mingw platform using rake-compiler-dock"
         
     | 
| 
       43 
     | 
    
         
            -
            task 'build:mingw' do
         
     | 
| 
       44 
     | 
    
         
            -
              require 'rake_compiler_dock'
         
     | 
| 
       45 
     | 
    
         
            -
              RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.2.2:2.3.0:2.4.0"
         
     | 
| 
      
 31 
     | 
    
         
            +
              Rake::ExtensionTask.new("psych")
         
     | 
| 
       46 
32 
     | 
    
         
             
            end
         
     | 
| 
       47 
33 
     | 
    
         | 
| 
       48 
34 
     | 
    
         
             
            task :default => [:compile, :test]
         
     | 
| 
         @@ -222,7 +222,7 @@ public class PsychEmitter extends RubyObject { 
     | 
|
| 
       222 
222 
     | 
    
         
             
                            implicit.isTrue(),
         
     | 
| 
       223 
223 
     | 
    
         
             
                            NULL_MARK,
         
     | 
| 
       224 
224 
     | 
    
         
             
                            NULL_MARK,
         
     | 
| 
       225 
     | 
    
         
            -
                             
     | 
| 
      
 225 
     | 
    
         
            +
                            FLOW_STYLES[style.convertToInteger().getIntValue()]);
         
     | 
| 
       226 
226 
     | 
    
         
             
                    emit(context, event);
         
     | 
| 
       227 
227 
     | 
    
         
             
                    return this;
         
     | 
| 
       228 
228 
     | 
    
         
             
                }
         
     | 
| 
         @@ -249,7 +249,7 @@ public class PsychEmitter extends RubyObject { 
     | 
|
| 
       249 
249 
     | 
    
         
             
                            implicit.isTrue(),
         
     | 
| 
       250 
250 
     | 
    
         
             
                            NULL_MARK,
         
     | 
| 
       251 
251 
     | 
    
         
             
                            NULL_MARK,
         
     | 
| 
       252 
     | 
    
         
            -
                             
     | 
| 
      
 252 
     | 
    
         
            +
                            FLOW_STYLES[style.convertToInteger().getIntValue()]);
         
     | 
| 
       253 
253 
     | 
    
         
             
                    emit(context, event);
         
     | 
| 
       254 
254 
     | 
    
         
             
                    return this;
         
     | 
| 
       255 
255 
     | 
    
         
             
                }
         
     | 
| 
         @@ -336,7 +336,7 @@ public class PsychEmitter extends RubyObject { 
     | 
|
| 
       336 
336 
     | 
    
         | 
| 
       337 
337 
     | 
    
         
             
                // Map style constants from Psych values (ANY = 0 ... FOLDED = 5)
         
     | 
| 
       338 
338 
     | 
    
         
             
                // to SnakeYaml values; see psych/nodes/scalar.rb.
         
     | 
| 
       339 
     | 
    
         
            -
                private static final DumperOptions.ScalarStyle[] SCALAR_STYLES =  
     | 
| 
      
 339 
     | 
    
         
            +
                private static final DumperOptions.ScalarStyle[] SCALAR_STYLES = {
         
     | 
| 
       340 
340 
     | 
    
         
             
                        DumperOptions.ScalarStyle.PLAIN, // ANY
         
     | 
| 
       341 
341 
     | 
    
         
             
                        DumperOptions.ScalarStyle.PLAIN,
         
     | 
| 
       342 
342 
     | 
    
         
             
                        DumperOptions.ScalarStyle.SINGLE_QUOTED,
         
     | 
| 
         @@ -344,4 +344,10 @@ public class PsychEmitter extends RubyObject { 
     | 
|
| 
       344 
344 
     | 
    
         
             
                        DumperOptions.ScalarStyle.LITERAL,
         
     | 
| 
       345 
345 
     | 
    
         
             
                        DumperOptions.ScalarStyle.FOLDED
         
     | 
| 
       346 
346 
     | 
    
         
             
                };
         
     | 
| 
      
 347 
     | 
    
         
            +
             
     | 
| 
      
 348 
     | 
    
         
            +
                private static final DumperOptions.FlowStyle[] FLOW_STYLES = {
         
     | 
| 
      
 349 
     | 
    
         
            +
                        DumperOptions.FlowStyle.AUTO,
         
     | 
| 
      
 350 
     | 
    
         
            +
                        DumperOptions.FlowStyle.BLOCK,
         
     | 
| 
      
 351 
     | 
    
         
            +
                        DumperOptions.FlowStyle.FLOW
         
     | 
| 
      
 352 
     | 
    
         
            +
                };
         
     | 
| 
       347 
353 
     | 
    
         
             
            }
         
     | 
| 
         @@ -44,8 +44,11 @@ import org.jruby.runtime.ThreadContext; 
     | 
|
| 
       44 
44 
     | 
    
         
             
            import org.jruby.runtime.Visibility;
         
     | 
| 
       45 
45 
     | 
    
         
             
            import org.jruby.runtime.builtin.IRubyObject;
         
     | 
| 
       46 
46 
     | 
    
         
             
            import org.jruby.runtime.load.Library;
         
     | 
| 
      
 47 
     | 
    
         
            +
            import org.yaml.snakeyaml.error.Mark;
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
            public class PsychLibrary implements Library {
         
     | 
| 
      
 50 
     | 
    
         
            +
                private static final String DUMMY_VERSION = "0.0";
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       49 
52 
     | 
    
         
             
                public void load(final Ruby runtime, boolean wrap) {
         
     | 
| 
       50 
53 
     | 
    
         
             
                    RubyModule psych = runtime.defineModule("Psych");
         
     | 
| 
       51 
54 
     | 
    
         | 
| 
         @@ -57,12 +60,33 @@ public class PsychLibrary implements Library { 
     | 
|
| 
       57 
60 
     | 
    
         
             
                    catch( IOException e ) {
         
     | 
| 
       58 
61 
     | 
    
         
             
                        // ignored
         
     | 
| 
       59 
62 
     | 
    
         
             
                    }
         
     | 
| 
       60 
     | 
    
         
            -
                    String snakeyamlVersion = props.getProperty("version",  
     | 
| 
      
 63 
     | 
    
         
            +
                    String snakeyamlVersion = props.getProperty("version", DUMMY_VERSION);
         
     | 
| 
       61 
64 
     | 
    
         | 
| 
       62 
65 
     | 
    
         
             
                    if (snakeyamlVersion.endsWith("-SNAPSHOT")) {
         
     | 
| 
       63 
66 
     | 
    
         
             
                        snakeyamlVersion = snakeyamlVersion.substring(0, snakeyamlVersion.length() - "-SNAPSHOT".length());
         
     | 
| 
       64 
67 
     | 
    
         
             
                    }
         
     | 
| 
       65 
68 
     | 
    
         | 
| 
      
 69 
     | 
    
         
            +
                    // Try to determine if we have a new enough SnakeYAML.
         
     | 
| 
      
 70 
     | 
    
         
            +
                    // Versions before 1.21 removed a Mark constructor that JRuby uses.
         
     | 
| 
      
 71 
     | 
    
         
            +
                    // See https://github.com/bundler/bundler/issues/6878
         
     | 
| 
      
 72 
     | 
    
         
            +
                    if (snakeyamlVersion.equals(DUMMY_VERSION)) {
         
     | 
| 
      
 73 
     | 
    
         
            +
                        try {
         
     | 
| 
      
 74 
     | 
    
         
            +
                            // Use reflection to try to confirm we have a new enough version
         
     | 
| 
      
 75 
     | 
    
         
            +
                            Mark.class.getConstructor(String.class, int.class, int.class, int.class, int[].class, int.class);
         
     | 
| 
      
 76 
     | 
    
         
            +
                        } catch (NoSuchMethodException nsme) {
         
     | 
| 
      
 77 
     | 
    
         
            +
                            throw runtime.newLoadError("bad SnakeYAML version, required 1.21 or higher; check your CLASSPATH for a conflicting jar");
         
     | 
| 
      
 78 
     | 
    
         
            +
                        }
         
     | 
| 
      
 79 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 80 
     | 
    
         
            +
                        // Parse version string to check for 1.21+
         
     | 
| 
      
 81 
     | 
    
         
            +
                        String[] majorMinor = snakeyamlVersion.split("\\.");
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                        if (majorMinor.length < 2 || Integer.parseInt(majorMinor[0]) < 1 || Integer.parseInt(majorMinor[1]) < 21) {
         
     | 
| 
      
 84 
     | 
    
         
            +
                            throw runtime.newLoadError(
         
     | 
| 
      
 85 
     | 
    
         
            +
                                    "bad SnakeYAML version " + snakeyamlVersion +
         
     | 
| 
      
 86 
     | 
    
         
            +
                                            ", required 1.21 or higher; check your CLASSPATH for a conflicting jar");
         
     | 
| 
      
 87 
     | 
    
         
            +
                        }
         
     | 
| 
      
 88 
     | 
    
         
            +
                    }
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
       66 
90 
     | 
    
         
             
                    RubyString version = runtime.newString(snakeyamlVersion + ".0");
         
     | 
| 
       67 
91 
     | 
    
         
             
                    version.setFrozen(true);
         
     | 
| 
       68 
92 
     | 
    
         
             
                    psych.setConstant("SNAKEYAML_VERSION", version);
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -44,12 +44,4 @@ public class PsychYamlTree { 
     | 
|
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
                    psychYamlTree.defineAnnotatedMethods(PsychYamlTree.class);
         
     | 
| 
       46 
46 
     | 
    
         
             
                }
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                @JRubyMethod(visibility = PRIVATE)
         
     | 
| 
       49 
     | 
    
         
            -
                public static IRubyObject private_iv_get(ThreadContext context, IRubyObject self, IRubyObject target, IRubyObject prop) {
         
     | 
| 
       50 
     | 
    
         
            -
                    IRubyObject obj = (IRubyObject)target.getInternalVariables().getInternalVariable(prop.asJavaString());
         
     | 
| 
       51 
     | 
    
         
            -
                    if (obj == null) obj = context.nil;
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                    return obj;
         
     | 
| 
       54 
     | 
    
         
            -
                }
         
     | 
| 
       55 
47 
     | 
    
         
             
            }
         
     | 
    
        data/ext/psych/depend
    CHANGED
    
    
    
        data/ext/psych/extconf.rb
    CHANGED
    
    | 
         @@ -13,8 +13,10 @@ if enable_config("bundled-libyaml", false) || !(find_header('yaml.h') && find_li 
     | 
|
| 
       13 
13 
     | 
    
         
             
              $VPATH << "$(srcdir)/yaml"
         
     | 
| 
       14 
14 
     | 
    
         
             
              $INCFLAGS << " -I$(srcdir)/yaml"
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              $srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}
         
     | 
| 
      
 16 
     | 
    
         
            +
              $srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}.sort
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
              header = 'yaml/yaml.h'
         
     | 
| 
      
 19 
     | 
    
         
            +
              header = "{$(VPATH)}#{header}" if $nmake
         
     | 
| 
       18 
20 
     | 
    
         
             
              if have_macro("_WIN32")
         
     | 
| 
       19 
21 
     | 
    
         
             
                $CPPFLAGS << " -DYAML_DECLARE_STATIC -DHAVE_CONFIG_H"
         
     | 
| 
       20 
22 
     | 
    
         
             
              end
         
     | 
| 
         @@ -34,6 +36,8 @@ if enable_config("bundled-libyaml", false) || !(find_header('yaml.h') && find_li 
     | 
|
| 
       34 
36 
     | 
    
         
             
              have_header 'config.h'
         
     | 
| 
       35 
37 
     | 
    
         
             
            end
         
     | 
| 
       36 
38 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
            create_makefile 'psych'
         
     | 
| 
      
 39 
     | 
    
         
            +
            create_makefile 'psych' do |mk|
         
     | 
| 
      
 40 
     | 
    
         
            +
              mk << "YAML_H = #{header}".strip << "\n"
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
       38 
42 
     | 
    
         | 
| 
       39 
43 
     | 
    
         
             
            # :startdoc:
         
     | 
    
        data/ext/psych/psych.c
    CHANGED
    
    | 
         @@ -11,9 +11,9 @@ static VALUE libyaml_version(VALUE module) 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                yaml_get_version(&major, &minor, &patch);
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                list[0] = INT2NUM( 
     | 
| 
       15 
     | 
    
         
            -
                list[1] = INT2NUM( 
     | 
| 
       16 
     | 
    
         
            -
                list[2] = INT2NUM( 
     | 
| 
      
 14 
     | 
    
         
            +
                list[0] = INT2NUM(major);
         
     | 
| 
      
 15 
     | 
    
         
            +
                list[1] = INT2NUM(minor);
         
     | 
| 
      
 16 
     | 
    
         
            +
                list[2] = INT2NUM(patch);
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                return rb_ary_new4((long)3, list);
         
     | 
| 
       19 
19 
     | 
    
         
             
            }
         
     | 
    
        data/ext/psych/psych_parser.c
    CHANGED
    
    | 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #include <psych.h>
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            VALUE cPsychParser;
         
     | 
| 
       4 
     | 
    
         
            -
            VALUE ePsychSyntaxError;
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            static ID id_read;
         
     | 
| 
       7 
6 
     | 
    
         
             
            static ID id_path;
         
     | 
| 
         @@ -28,7 +27,7 @@ static ID id_event_location; 
     | 
|
| 
       28 
27 
     | 
    
         
             
            static int io_reader(void * data, unsigned char *buf, size_t size, size_t *read)
         
     | 
| 
       29 
28 
     | 
    
         
             
            {
         
     | 
| 
       30 
29 
     | 
    
         
             
                VALUE io = (VALUE)data;
         
     | 
| 
       31 
     | 
    
         
            -
                VALUE string = rb_funcall(io, id_read, 1,  
     | 
| 
      
 30 
     | 
    
         
            +
                VALUE string = rb_funcall(io, id_read, 1, SIZET2NUM(size));
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
32 
     | 
    
         
             
                *read = 0;
         
     | 
| 
       34 
33 
     | 
    
         | 
| 
         @@ -81,15 +80,18 @@ static VALUE allocate(VALUE klass) 
     | 
|
| 
       81 
80 
     | 
    
         
             
            static VALUE make_exception(yaml_parser_t * parser, VALUE path)
         
     | 
| 
       82 
81 
     | 
    
         
             
            {
         
     | 
| 
       83 
82 
     | 
    
         
             
                size_t line, column;
         
     | 
| 
      
 83 
     | 
    
         
            +
                VALUE ePsychSyntaxError;
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
85 
     | 
    
         
             
                line = parser->context_mark.line + 1;
         
     | 
| 
       86 
86 
     | 
    
         
             
                column = parser->context_mark.column + 1;
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
                ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
       88 
90 
     | 
    
         
             
                return rb_funcall(ePsychSyntaxError, rb_intern("new"), 6,
         
     | 
| 
       89 
91 
     | 
    
         
             
            	    path,
         
     | 
| 
       90 
     | 
    
         
            -
            	     
     | 
| 
       91 
     | 
    
         
            -
            	     
     | 
| 
       92 
     | 
    
         
            -
            	     
     | 
| 
      
 92 
     | 
    
         
            +
            	    SIZET2NUM(line),
         
     | 
| 
      
 93 
     | 
    
         
            +
            	    SIZET2NUM(column),
         
     | 
| 
      
 94 
     | 
    
         
            +
            	    SIZET2NUM(parser->problem_offset),
         
     | 
| 
       93 
95 
     | 
    
         
             
            	    parser->problem ? rb_usascii_str_new2(parser->problem) : Qnil,
         
     | 
| 
       94 
96 
     | 
    
         
             
            	    parser->context ? rb_usascii_str_new2(parser->context) : Qnil);
         
     | 
| 
       95 
97 
     | 
    
         
             
            }
         
     | 
| 
         @@ -254,7 +256,6 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       254 
256 
     | 
    
         
             
                yaml_parser_t * parser;
         
     | 
| 
       255 
257 
     | 
    
         
             
                yaml_event_t event;
         
     | 
| 
       256 
258 
     | 
    
         
             
                int done = 0;
         
     | 
| 
       257 
     | 
    
         
            -
                int tainted = 0;
         
     | 
| 
       258 
259 
     | 
    
         
             
                int state = 0;
         
     | 
| 
       259 
260 
     | 
    
         
             
                int parser_encoding = YAML_ANY_ENCODING;
         
     | 
| 
       260 
261 
     | 
    
         
             
                int encoding = rb_utf8_encindex();
         
     | 
| 
         @@ -273,13 +274,10 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       273 
274 
     | 
    
         
             
                yaml_parser_delete(parser);
         
     | 
| 
       274 
275 
     | 
    
         
             
                yaml_parser_initialize(parser);
         
     | 
| 
       275 
276 
     | 
    
         | 
| 
       276 
     | 
    
         
            -
                if (OBJ_TAINTED(yaml)) tainted = 1;
         
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
277 
     | 
    
         
             
                if (rb_respond_to(yaml, id_read)) {
         
     | 
| 
       279 
278 
     | 
    
         
             
            	yaml = transcode_io(yaml, &parser_encoding);
         
     | 
| 
       280 
279 
     | 
    
         
             
            	yaml_parser_set_encoding(parser, parser_encoding);
         
     | 
| 
       281 
280 
     | 
    
         
             
            	yaml_parser_set_input(parser, io_reader, (void *)yaml);
         
     | 
| 
       282 
     | 
    
         
            -
            	if (RTEST(rb_obj_is_kind_of(yaml, rb_cIO))) tainted = 1;
         
     | 
| 
       283 
281 
     | 
    
         
             
                } else {
         
     | 
| 
       284 
282 
     | 
    
         
             
            	StringValue(yaml);
         
     | 
| 
       285 
283 
     | 
    
         
             
            	yaml = transcode_string(yaml, &parser_encoding);
         
     | 
| 
         @@ -305,10 +303,10 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       305 
303 
     | 
    
         
             
            	    rb_exc_raise(exception);
         
     | 
| 
       306 
304 
     | 
    
         
             
            	}
         
     | 
| 
       307 
305 
     | 
    
         | 
| 
       308 
     | 
    
         
            -
            	start_line =  
     | 
| 
       309 
     | 
    
         
            -
            	start_column =  
     | 
| 
       310 
     | 
    
         
            -
            	end_line =  
     | 
| 
       311 
     | 
    
         
            -
            	end_column =  
     | 
| 
      
 306 
     | 
    
         
            +
            	start_line = SIZET2NUM(event.start_mark.line);
         
     | 
| 
      
 307 
     | 
    
         
            +
            	start_column = SIZET2NUM(event.start_mark.column);
         
     | 
| 
      
 308 
     | 
    
         
            +
            	end_line = SIZET2NUM(event.end_mark.line);
         
     | 
| 
      
 309 
     | 
    
         
            +
            	end_column = SIZET2NUM(event.end_mark.column);
         
     | 
| 
       312 
310 
     | 
    
         | 
| 
       313 
311 
     | 
    
         
             
            	event_args[0] = handler;
         
     | 
| 
       314 
312 
     | 
    
         
             
            	event_args[1] = start_line;
         
     | 
| 
         @@ -323,7 +321,7 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       323 
321 
     | 
    
         
             
            		  VALUE args[2];
         
     | 
| 
       324 
322 
     | 
    
         | 
| 
       325 
323 
     | 
    
         
             
            		  args[0] = handler;
         
     | 
| 
       326 
     | 
    
         
            -
            		  args[1] = INT2NUM( 
     | 
| 
      
 324 
     | 
    
         
            +
            		  args[1] = INT2NUM(event.data.stream_start.encoding);
         
     | 
| 
       327 
325 
     | 
    
         
             
            		  rb_protect(protected_start_stream, (VALUE)args, &state);
         
     | 
| 
       328 
326 
     | 
    
         
             
            	      }
         
     | 
| 
       329 
327 
     | 
    
         
             
            	      break;
         
     | 
| 
         @@ -336,8 +334,8 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       336 
334 
     | 
    
         
             
            		VALUE version = event.data.document_start.version_directive ?
         
     | 
| 
       337 
335 
     | 
    
         
             
            		    rb_ary_new3(
         
     | 
| 
       338 
336 
     | 
    
         
             
            			(long)2,
         
     | 
| 
       339 
     | 
    
         
            -
            			INT2NUM( 
     | 
| 
       340 
     | 
    
         
            -
            			INT2NUM( 
     | 
| 
      
 337 
     | 
    
         
            +
            			INT2NUM(event.data.document_start.version_directive->major),
         
     | 
| 
      
 338 
     | 
    
         
            +
            			INT2NUM(event.data.document_start.version_directive->minor)
         
     | 
| 
       341 
339 
     | 
    
         
             
            			) : rb_ary_new();
         
     | 
| 
       342 
340 
     | 
    
         | 
| 
       343 
341 
     | 
    
         
             
            		if(event.data.document_start.tag_directives.start) {
         
     | 
| 
         @@ -350,13 +348,11 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       350 
348 
     | 
    
         
             
            			VALUE prefix = Qnil;
         
     | 
| 
       351 
349 
     | 
    
         
             
            			if(start->handle) {
         
     | 
| 
       352 
350 
     | 
    
         
             
            			    handle = rb_str_new2((const char *)start->handle);
         
     | 
| 
       353 
     | 
    
         
            -
            			    if (tainted) OBJ_TAINT(handle);
         
     | 
| 
       354 
351 
     | 
    
         
             
            			    PSYCH_TRANSCODE(handle, encoding, internal_enc);
         
     | 
| 
       355 
352 
     | 
    
         
             
            			}
         
     | 
| 
       356 
353 
     | 
    
         | 
| 
       357 
354 
     | 
    
         
             
            			if(start->prefix) {
         
     | 
| 
       358 
355 
     | 
    
         
             
            			    prefix = rb_str_new2((const char *)start->prefix);
         
     | 
| 
       359 
     | 
    
         
            -
            			    if (tainted) OBJ_TAINT(prefix);
         
     | 
| 
       360 
356 
     | 
    
         
             
            			    PSYCH_TRANSCODE(prefix, encoding, internal_enc);
         
     | 
| 
       361 
357 
     | 
    
         
             
            			}
         
     | 
| 
       362 
358 
     | 
    
         | 
| 
         @@ -385,7 +381,6 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       385 
381 
     | 
    
         
             
            		VALUE alias = Qnil;
         
     | 
| 
       386 
382 
     | 
    
         
             
            		if(event.data.alias.anchor) {
         
     | 
| 
       387 
383 
     | 
    
         
             
            		    alias = rb_str_new2((const char *)event.data.alias.anchor);
         
     | 
| 
       388 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(alias);
         
     | 
| 
       389 
384 
     | 
    
         
             
            		    PSYCH_TRANSCODE(alias, encoding, internal_enc);
         
     | 
| 
       390 
385 
     | 
    
         
             
            		}
         
     | 
| 
       391 
386 
     | 
    
         | 
| 
         @@ -404,19 +399,16 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       404 
399 
     | 
    
         
             
            		    (const char *)event.data.scalar.value,
         
     | 
| 
       405 
400 
     | 
    
         
             
            		    (long)event.data.scalar.length
         
     | 
| 
       406 
401 
     | 
    
         
             
            		    );
         
     | 
| 
       407 
     | 
    
         
            -
            		if (tainted) OBJ_TAINT(val);
         
     | 
| 
       408 
402 
     | 
    
         | 
| 
       409 
403 
     | 
    
         
             
            		PSYCH_TRANSCODE(val, encoding, internal_enc);
         
     | 
| 
       410 
404 
     | 
    
         | 
| 
       411 
405 
     | 
    
         
             
            		if(event.data.scalar.anchor) {
         
     | 
| 
       412 
406 
     | 
    
         
             
            		    anchor = rb_str_new2((const char *)event.data.scalar.anchor);
         
     | 
| 
       413 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(anchor);
         
     | 
| 
       414 
407 
     | 
    
         
             
            		    PSYCH_TRANSCODE(anchor, encoding, internal_enc);
         
     | 
| 
       415 
408 
     | 
    
         
             
            		}
         
     | 
| 
       416 
409 
     | 
    
         | 
| 
       417 
410 
     | 
    
         
             
            		if(event.data.scalar.tag) {
         
     | 
| 
       418 
411 
     | 
    
         
             
            		    tag = rb_str_new2((const char *)event.data.scalar.tag);
         
     | 
| 
       419 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(tag);
         
     | 
| 
       420 
412 
     | 
    
         
             
            		    PSYCH_TRANSCODE(tag, encoding, internal_enc);
         
     | 
| 
       421 
413 
     | 
    
         
             
            		}
         
     | 
| 
       422 
414 
     | 
    
         | 
| 
         @@ -426,7 +418,7 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       426 
418 
     | 
    
         
             
            		quoted_implicit =
         
     | 
| 
       427 
419 
     | 
    
         
             
            		    event.data.scalar.quoted_implicit == 0 ? Qfalse : Qtrue;
         
     | 
| 
       428 
420 
     | 
    
         | 
| 
       429 
     | 
    
         
            -
            		style = INT2NUM( 
     | 
| 
      
 421 
     | 
    
         
            +
            		style = INT2NUM(event.data.scalar.style);
         
     | 
| 
       430 
422 
     | 
    
         | 
| 
       431 
423 
     | 
    
         
             
            		args[0] = handler;
         
     | 
| 
       432 
424 
     | 
    
         
             
            		args[1] = val;
         
     | 
| 
         @@ -446,21 +438,19 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       446 
438 
     | 
    
         
             
            		VALUE implicit, style;
         
     | 
| 
       447 
439 
     | 
    
         
             
            		if(event.data.sequence_start.anchor) {
         
     | 
| 
       448 
440 
     | 
    
         
             
            		    anchor = rb_str_new2((const char *)event.data.sequence_start.anchor);
         
     | 
| 
       449 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(anchor);
         
     | 
| 
       450 
441 
     | 
    
         
             
            		    PSYCH_TRANSCODE(anchor, encoding, internal_enc);
         
     | 
| 
       451 
442 
     | 
    
         
             
            		}
         
     | 
| 
       452 
443 
     | 
    
         | 
| 
       453 
444 
     | 
    
         
             
            		tag = Qnil;
         
     | 
| 
       454 
445 
     | 
    
         
             
            		if(event.data.sequence_start.tag) {
         
     | 
| 
       455 
446 
     | 
    
         
             
            		    tag = rb_str_new2((const char *)event.data.sequence_start.tag);
         
     | 
| 
       456 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(tag);
         
     | 
| 
       457 
447 
     | 
    
         
             
            		    PSYCH_TRANSCODE(tag, encoding, internal_enc);
         
     | 
| 
       458 
448 
     | 
    
         
             
            		}
         
     | 
| 
       459 
449 
     | 
    
         | 
| 
       460 
450 
     | 
    
         
             
            		implicit =
         
     | 
| 
       461 
451 
     | 
    
         
             
            		    event.data.sequence_start.implicit == 0 ? Qfalse : Qtrue;
         
     | 
| 
       462 
452 
     | 
    
         | 
| 
       463 
     | 
    
         
            -
            		style = INT2NUM( 
     | 
| 
      
 453 
     | 
    
         
            +
            		style = INT2NUM(event.data.sequence_start.style);
         
     | 
| 
       464 
454 
     | 
    
         | 
| 
       465 
455 
     | 
    
         
             
            		args[0] = handler;
         
     | 
| 
       466 
456 
     | 
    
         
             
            		args[1] = anchor;
         
     | 
| 
         @@ -482,20 +472,18 @@ static VALUE parse(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       482 
472 
     | 
    
         
             
            		VALUE implicit, style;
         
     | 
| 
       483 
473 
     | 
    
         
             
            		if(event.data.mapping_start.anchor) {
         
     | 
| 
       484 
474 
     | 
    
         
             
            		    anchor = rb_str_new2((const char *)event.data.mapping_start.anchor);
         
     | 
| 
       485 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(anchor);
         
     | 
| 
       486 
475 
     | 
    
         
             
            		    PSYCH_TRANSCODE(anchor, encoding, internal_enc);
         
     | 
| 
       487 
476 
     | 
    
         
             
            		}
         
     | 
| 
       488 
477 
     | 
    
         | 
| 
       489 
478 
     | 
    
         
             
            		if(event.data.mapping_start.tag) {
         
     | 
| 
       490 
479 
     | 
    
         
             
            		    tag = rb_str_new2((const char *)event.data.mapping_start.tag);
         
     | 
| 
       491 
     | 
    
         
            -
            		    if (tainted) OBJ_TAINT(tag);
         
     | 
| 
       492 
480 
     | 
    
         
             
            		    PSYCH_TRANSCODE(tag, encoding, internal_enc);
         
     | 
| 
       493 
481 
     | 
    
         
             
            		}
         
     | 
| 
       494 
482 
     | 
    
         | 
| 
       495 
483 
     | 
    
         
             
            		implicit =
         
     | 
| 
       496 
484 
     | 
    
         
             
            		    event.data.mapping_start.implicit == 0 ? Qfalse : Qtrue;
         
     | 
| 
       497 
485 
     | 
    
         | 
| 
       498 
     | 
    
         
            -
            		style = INT2NUM( 
     | 
| 
      
 486 
     | 
    
         
            +
            		style = INT2NUM(event.data.mapping_start.style);
         
     | 
| 
       499 
487 
     | 
    
         | 
| 
       500 
488 
     | 
    
         
             
            		args[0] = handler;
         
     | 
| 
       501 
489 
     | 
    
         
             
            		args[1] = anchor;
         
     | 
| 
         @@ -539,9 +527,9 @@ static VALUE mark(VALUE self) 
     | 
|
| 
       539 
527 
     | 
    
         | 
| 
       540 
528 
     | 
    
         
             
                TypedData_Get_Struct(self, yaml_parser_t, &psych_parser_type, parser);
         
     | 
| 
       541 
529 
     | 
    
         
             
                mark_klass = rb_const_get_at(cPsychParser, rb_intern("Mark"));
         
     | 
| 
       542 
     | 
    
         
            -
                args[0] =  
     | 
| 
       543 
     | 
    
         
            -
                args[1] =  
     | 
| 
       544 
     | 
    
         
            -
                args[2] =  
     | 
| 
      
 530 
     | 
    
         
            +
                args[0] = SIZET2NUM(parser->mark.index);
         
     | 
| 
      
 531 
     | 
    
         
            +
                args[1] = SIZET2NUM(parser->mark.line);
         
     | 
| 
      
 532 
     | 
    
         
            +
                args[2] = SIZET2NUM(parser->mark.column);
         
     | 
| 
       545 
533 
     | 
    
         | 
| 
       546 
534 
     | 
    
         
             
                return rb_class_new_instance(3, args, mark_klass);
         
     | 
| 
       547 
535 
     | 
    
         
             
            }
         
     | 
| 
         @@ -569,7 +557,6 @@ void Init_psych_parser(void) 
     | 
|
| 
       569 
557 
     | 
    
         
             
                rb_define_const(cPsychParser, "UTF16BE", INT2NUM(YAML_UTF16BE_ENCODING));
         
     | 
| 
       570 
558 
     | 
    
         | 
| 
       571 
559 
     | 
    
         
             
                rb_require("psych/syntax_error");
         
     | 
| 
       572 
     | 
    
         
            -
                ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
         
     | 
| 
       573 
560 
     | 
    
         | 
| 
       574 
561 
     | 
    
         
             
                rb_define_method(cPsychParser, "parse", parse, -1);
         
     | 
| 
       575 
562 
     | 
    
         
             
                rb_define_method(cPsychParser, "mark", mark, 0);
         
     |