summaryrefslogtreecommitdiff
path: root/src/value.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2009-10-25 21:27:56 -0400
committerJohn Wiegley <johnw@newartisans.com>2009-10-25 21:27:56 -0400
commit9dadaebfeb461ba795124281018d0f7eac200cf4 (patch)
tree941243868b1dcacd68cbd52a2f96e40bf70a5d3b /src/value.cc
parentf35bc939c96c3a3bf09c5881d638b5ba60449c03 (diff)
parente696bfd913a10edd19f9e35eb1aee2c97b11e7f6 (diff)
downloadledger-9dadaebfeb461ba795124281018d0f7eac200cf4.tar.gz
ledger-9dadaebfeb461ba795124281018d0f7eac200cf4.tar.bz2
ledger-9dadaebfeb461ba795124281018d0f7eac200cf4.zip
Merge branch 'next'
Diffstat (limited to 'src/value.cc')
-rw-r--r--src/value.cc28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/value.cc b/src/value.cc
index 702b889e..6ce46f5c 100644
--- a/src/value.cc
+++ b/src/value.cc
@@ -173,6 +173,17 @@ date_t value_t::to_date() const
}
}
+int value_t::to_int() const
+{
+ if (is_long()) {
+ return static_cast<int>(as_long());
+ } else {
+ value_t temp(*this);
+ temp.in_place_cast(INTEGER);
+ return static_cast<int>(temp.as_long());
+ }
+}
+
long value_t::to_long() const
{
if (is_long()) {
@@ -973,7 +984,7 @@ void value_t::in_place_cast(type_t cast_type)
set_datetime(datetime_t(as_date(), time_duration(0, 0, 0, 0)));
return;
case STRING:
- set_string(format_date(as_date(), string("%Y-%m-%d")));
+ set_string(format_date(as_date(), FMT_WRITTEN));
return;
default:
break;
@@ -985,7 +996,7 @@ void value_t::in_place_cast(type_t cast_type)
set_date(as_datetime().date());
return;
case STRING:
- set_string(format_datetime(as_datetime(), string("%Y-%m-%d %H:%M:%S")));
+ set_string(format_datetime(as_datetime(), FMT_WRITTEN));
return;
default:
break;
@@ -1484,16 +1495,17 @@ void value_t::print(std::ostream& out,
case DATETIME:
if (date_format)
- out << format_datetime(as_datetime(), *date_format);
+ out << format_datetime(as_datetime(), FMT_CUSTOM,
+ date_format->c_str());
else
- out << format_datetime(as_datetime());
+ out << format_datetime(as_datetime(), FMT_WRITTEN);
break;
case DATE:
if (date_format)
- out << format_date(as_date(), *date_format);
+ out << format_date(as_date(), FMT_CUSTOM, date_format->c_str());
else
- out << format_date(as_date());
+ out << format_date(as_date(), FMT_WRITTEN);
break;
case INTEGER:
@@ -1568,10 +1580,10 @@ void value_t::dump(std::ostream& out, const bool relaxed) const
break;
case DATETIME:
- out << '[' << format_datetime(as_datetime()) << ']';
+ out << '[' << format_datetime(as_datetime(), FMT_WRITTEN) << ']';
break;
case DATE:
- out << '[' << format_date(as_date()) << ']';
+ out << '[' << format_date(as_date(), FMT_WRITTEN) << ']';
break;
case INTEGER: