text: 'use strict';
  
  var Scalar = require('../../nodes/Scalar.js');
  var stringifyNumber = require('../../stringify/stringifyNumber.js');
  
  const floatNaN = {
      identify: value => typeof value === 'number',
      default: true,
      tag: 'tag:yaml.org,2002:float',
      test: /^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/,
      resolve: (str) => str.slice(-3).toLowerCase() === 'nan'
          ? NaN
          : str[0] === '-'
              ? Number.NEGATIVE_INFINITY
              : Number.POSITIVE_INFINITY,
      stringify: stringifyNumber.stringifyNumber
  };
  const floatExp = {
      identify: value => typeof value === 'number',
      default: true,
      tag: 'tag:yaml.org,2002:float',
      format: 'EXP',
      test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,
      resolve: (str) => parseFloat(str.replace(/_/g, '')),
      stringify: ({ value }) => Number(value).toExponential()
  };
  const float = {
      identify: value => typeof value === 'number',
      default: true,
      tag: 'tag:yaml.org,2002:float',
      test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,
      resolve(str) {
          const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));
          const dot = str.indexOf('.');
          if (dot !== -1) {
              const f = str.substring(dot + 1).replace(/_/g, '');
              if (f[f.length - 1] === '0')
                  node.minFractionDigits = f.length;
          }
          return node;
      },
      stringify: stringifyNumber.stringifyNumber
  };
  
  exports.float = float;
  exports.floatExp = floatExp;
  exports.floatNaN = floatNaN;
  