1b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/**
211a89b445f3bde56bf07e6a0d04f0b0256dcb215Andrey Somov * Copyright (c) 2008, http://www.snakeyaml.org
3b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
4b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Licensed under the Apache License, Version 2.0 (the "License");
5b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * you may not use this file except in compliance with the License.
6b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * You may obtain a copy of the License at
7b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
8b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *     http://www.apache.org/licenses/LICENSE-2.0
9b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov *
10b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Unless required by applicable law or agreed to in writing, software
11b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * distributed under the License is distributed on an "AS IS" BASIS,
12b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * See the License for the specific language governing permissions and
14b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * limitations under the License.
15b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */
16b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpackage org.yaml.snakeyaml;
17b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
18b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.io.BufferedInputStream;
19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.io.IOException;
20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.io.InputStream;
21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class Util {
23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov
24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    public static String getLocalResource(String theName) {
25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        try {
26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            InputStream input;
27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            input = YamlDocument.class.getClassLoader().getResourceAsStream(theName);
28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            if (input == null) {
29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                throw new RuntimeException("Can not find " + theName);
30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            }
31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            BufferedInputStream is = new BufferedInputStream(input);
32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            StringBuilder buf = new StringBuilder(3000);
33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            int i;
34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            try {
35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                while ((i = is.read()) != -1) {
36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                    buf.append((char) i);
37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                }
38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            } finally {
39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                is.close();
40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            }
41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            String resource = buf.toString();
42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            // convert EOLs
43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            String[] lines = resource.split("\\r?\\n");
44b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            StringBuilder buffer = new StringBuilder();
45b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            for (int j = 0; j < lines.length; j++) {
46b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                buffer.append(lines[j]);
47b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov                buffer.append("\n");
48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            }
49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            return buffer.toString();
50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        } catch (IOException e) {
51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov            throw new RuntimeException(e);
52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov        }
53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov    }
54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov}
55