()
| 144 | } |
| 145 | |
| 146 | func (parser *Parser) parseSettingValue() (Value, error) { |
| 147 | var value Value |
| 148 | |
| 149 | readNext := true |
| 150 | switch parser.curTok.ID { |
| 151 | case token.STRING: |
| 152 | value = NewString(parser.curTok.Literal) |
| 153 | case token.BOOLEAN: |
| 154 | boolVal, err := strconv.ParseBool(parser.curTok.Literal) |
| 155 | if err != nil { |
| 156 | return value, nil |
| 157 | } |
| 158 | value = NewBoolean(boolVal) |
| 159 | case token.NULL: |
| 160 | value = NewNull() |
| 161 | case token.INTEGER: |
| 162 | intVal, err := strconv.ParseInt(parser.curTok.Literal, 10, 64) |
| 163 | if err != nil { |
| 164 | return value, err |
| 165 | } |
| 166 | value = NewInteger(intVal) |
| 167 | case token.FLOAT: |
| 168 | floatVal, err := strconv.ParseFloat(parser.curTok.Literal, 64) |
| 169 | if err != nil { |
| 170 | return value, err |
| 171 | } |
| 172 | value = NewFloat(floatVal) |
| 173 | case token.PERIOD: |
| 174 | reference, err := parser.parseReference(parser.curSection, true) |
| 175 | if err != nil { |
| 176 | return value, err |
| 177 | } |
| 178 | value = reference |
| 179 | readNext = false |
| 180 | case token.IDENTIFIER: |
| 181 | reference, err := parser.parseReference(parser.settings, false) |
| 182 | if err != nil { |
| 183 | return value, err |
| 184 | } |
| 185 | value = reference |
| 186 | readNext = false |
| 187 | case token.LBRACKET: |
| 188 | parser.readToken() |
| 189 | listVal, err := parser.parseList() |
| 190 | if err != nil { |
| 191 | return value, err |
| 192 | } |
| 193 | value = NewList() |
| 194 | value.UpdateValue(listVal) |
| 195 | readNext = false |
| 196 | default: |
| 197 | return value, parser.syntaxError( |
| 198 | fmt.Sprintf("expected STRING, INTEGER, FLOAT, BOOLEAN or IDENTIFIER, instead found %s", parser.curTok.ID), |
| 199 | ) |
| 200 | } |
| 201 | |
| 202 | if readNext { |
| 203 | parser.readToken() |
no test coverage detected