go-gypsy

Go YAML Parser for Simple YAML

  • 所有者: kylelemons/go-gypsy
  • 平台:
  • 许可证: Apache License 2.0
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

// 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.

主要指标

概览
名称与所有者kylelemons/go-gypsy
主编程语言Go
编程语言Go (语言数: 1)
平台
许可证Apache License 2.0
所有者活动
创建于2011-06-19 17:47:02
推送于2023-08-11 10:06:26
最后一次提交2020-08-30 12:37:32
发布数4
最新版本名称v1.0.0 (发布于 )
第一版名称go.r60 (发布于 )
用户参与
星数216
关注者数8
派生数47
提交数68
已启用问题?
问题数10
打开的问题数3
拉请求数10
打开的拉请求数0
关闭的拉请求数13
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?