|
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
namespace Ranslant.JSON.Linq
{
public class JNumber : IJValue
{
private static string Culture = "en-US";
private const string Pattern = @"^-?([1-9][0-9]*|0)(\.[0-9]+)?((e|E)(\+|-)?[0-9]+)?$"; // see http://www.json.org
private double _content;
public double Content
{
get
{
return this._content;
}
}
public JNumber(double number)
{
_content = number;
}
/// <summary>
/// The text representing the number to be stored is checked for validity.
/// An exception will be thrown if an error is found.
/// </summary>
/// <param name="text">a string representing the number to be stored</param>
public JNumber(string text)
{
IsValidJsonNumber(text);
_content = Double.Parse(text, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.GetCultureInfo(JNumber.Culture));
}
private void IsValidJsonNumber(string text)
{
if (!Regex.IsMatch(text, Pattern, RegexOptions.ExplicitCapture))
throw new JsonException("invalid number: " + text);
}
#region IJValue Members
public string ToString(int indentLevel)
{
return this.ToString();
}
public new string ToString()
{
return _content.ToString(System.Globalization.CultureInfo.GetCultureInfo(JNumber.Culture));
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.