swdunlop / go-gypsy Goto Github PK
View Code? Open in Web Editor NEWThis project forked from kylelemons/go-gypsy
Go YAML Parser for Simple YAML
License: Apache License 2.0
This project forked from kylelemons/go-gypsy
Go YAML Parser for Simple YAML
License: Apache License 2.0
// Copyright 2013 Google, Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Gypsy is a simplified YAML parser written in Go. It is intended to be used as // a simple configuration file, and as such does not support a lot of the more // nuanced syntaxes allowed in full-fledged YAML. YAML does not allow indent with // tabs, and GYPSY does not ever consider a tab to be a space character. It is // recommended that your editor be configured to convert tabs to spaces when // editing Gypsy config files. // // Gypsy understands the following to be a list: // // - one // - two // - three // // This is parsed as a `yaml.List`, and can be retrieved from the // `yaml.Node.List()` method. In this case, each element of the `yaml.List` would // be a `yaml.Scalar` whose value can be retrieved with the `yaml.Scalar.String()` // method. // // Gypsy understands the following to be a mapping: // // key: value // foo: bar // running: away // // A mapping is an unordered list of `key:value` pairs. All whitespace after the // colon is stripped from the value and is used for alignment purposes during // export. If the value is not a list or a map, everything after the first // non-space character until the end of the line is used as the `yaml.Scalar` // value. // // Gypsy allows arbitrary nesting of maps inside lists, lists inside of maps, and // maps and/or lists nested inside of themselves. // // A map inside of a list: // // - name: John Smith // age: 42 // - name: Jane Smith // age: 45 // // A list inside of a map: // // schools: // - Meadow Glen // - Forest Creek // - Shady Grove // libraries: // - Joseph Hollingsworth Memorial // - Andrew Keriman Memorial // // A list of lists: // // - - one // - two // - three // - - un // - deux // - trois // - - ichi // - ni // - san // // A map of maps: // // google: // company: Google, Inc. // ticker: GOOG // url: http://google.com/ // yahoo: // company: Yahoo, Inc. // ticker: YHOO // url: http://yahoo.com/ // // In the case of a map of maps, all sub-keys must be on subsequent lines and // indented equally. It is allowable for the first key/value to be on the same // line if there is more than one key/value pair, but this is not recommended. // // Values can also be expressed in long form (leading whitespace of the first line // is removed from it and all subsequent lines). In the normal (baz) case, // newlines are treated as spaces, all indentation is removed. In the folded case // (bar), newlines are treated as spaces, except pairs of newlines (e.g. a blank // line) are treated as a single newline, only the indentation level of the first // line is removed, and newlines at the end of indented lines are preserved. In // the verbatim (foo) case, only the indent at the level of the first line is // stripped. The example: // // foo: | // lorem ipsum dolor // sit amet // bar: > // lorem ipsum // // dolor // // sit amet // baz: // lorem ipsum // dolor sit amet // // The YAML subset understood by Gypsy can be expressed (loosely) in the following // grammar (not including comments): // // OBJECT = MAPPING | SEQUENCE | SCALAR . // SHORT-OBJECT = SHORT-MAPPING | SHORT-SEQUENCE | SHORT-SCALAR . // EOL = '\n' // // MAPPING = { LONG-MAPPING | SHORT-MAPPING } . // SEQUENCE = { LONG-SEQUENCE | SHORT-SEQUENCE } . // SCALAR = { LONG-SCALAR | SHORT-SCALAR } . // // LONG-MAPPING = { INDENT KEY ':' OBJECT EOL } . // SHORT-MAPPING = '{' KEY ':' SHORT-OBJECT { ',' KEY ':' SHORT-OBJECT } '}' EOL . // // LONG-SEQUENCE = { INDENT '-' OBJECT EOL } EOL . // SHORT-SEQUENCE = '[' SHORT-OBJECT { ',' SHORT-OBJECT } ']' EOL . // // LONG-SCALAR = ( '|' | '>' | ) EOL { INDENT SHORT-SCALAR EOL } // SHORT-SCALAR = { alpha | digit | punct | ' ' | '\t' } . // // KEY = { alpha | digit } // INDENT = { ' ' } // // Any line where the first non-space character is a sharp sign (#) is a comment. // It will be ignored. // Only full-line comments are allowed. package yaml // BUG(kevlar): Multi-line strings are currently not supported.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.