Added support for unlimited factoids.
This commit is contained in:
parent
72a5f48d9d
commit
68813448cb
2 changed files with 6 additions and 13 deletions
10
textual.cc
10
textual.cc
|
|
@ -650,8 +650,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
#endif // TIMELOG_SUPPORT
|
#endif // TIMELOG_SUPPORT
|
||||||
|
|
||||||
case 'D': { // a default commodity for "entry"
|
case 'D': { // a default commodity for "entry"
|
||||||
amount_t amt;
|
amount_t amt(skip_ws(line + 1));
|
||||||
amt.parse(skip_ws(line + 1));
|
|
||||||
commodity_t::default_commodity = &amt.commodity();
|
commodity_t::default_commodity = &amt.commodity();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -669,8 +668,6 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'P': { // a pricing entry
|
case 'P': { // a pricing entry
|
||||||
std::time_t date;
|
|
||||||
|
|
||||||
char * date_field = skip_ws(line + 1);
|
char * date_field = skip_ws(line + 1);
|
||||||
char * time_field = next_element(date_field);
|
char * time_field = next_element(date_field);
|
||||||
if (! time_field) break;
|
if (! time_field) break;
|
||||||
|
|
@ -682,6 +679,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
date_buffer[std::strlen(date_field)] = ' ';
|
date_buffer[std::strlen(date_field)] = ' ';
|
||||||
std::strcpy(&date_buffer[std::strlen(date_field) + 1], time_field);
|
std::strcpy(&date_buffer[std::strlen(date_field) + 1], time_field);
|
||||||
|
|
||||||
|
std::time_t date;
|
||||||
struct std::tm when;
|
struct std::tm when;
|
||||||
if (strptime(date_buffer, "%Y/%m/%d %H:%M:%S", &when)) {
|
if (strptime(date_buffer, "%Y/%m/%d %H:%M:%S", &when)) {
|
||||||
date = std::mktime(&when);
|
date = std::mktime(&when);
|
||||||
|
|
@ -690,10 +688,8 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string symbol;
|
std::string symbol;
|
||||||
amount_t price;
|
|
||||||
|
|
||||||
parse_symbol(symbol_and_price, symbol);
|
parse_symbol(symbol_and_price, symbol);
|
||||||
price.parse(symbol_and_price);
|
amount_t price(symbol_and_price);
|
||||||
|
|
||||||
commodity_t * commodity = commodity_t::find_commodity(symbol, true);
|
commodity_t * commodity = commodity_t::find_commodity(symbol, true);
|
||||||
commodity->add_price(date, price);
|
commodity->add_price(date, price);
|
||||||
|
|
|
||||||
|
|
@ -1279,8 +1279,7 @@ void init_value_expr()
|
||||||
globals->define("P", node);
|
globals->define("P", node);
|
||||||
globals->define("val", node);
|
globals->define("val", node);
|
||||||
globals->define("value", node);
|
globals->define("value", node);
|
||||||
node = parse_boolean_expr("current_value(x)=P(x,m)", globals);
|
value_auto_ptr cval(parse_boolean_expr("current_value(x)=P(x,m)", globals));
|
||||||
delete node;
|
|
||||||
|
|
||||||
// Macros
|
// Macros
|
||||||
node = parse_value_expr("P(a,d)");
|
node = parse_value_expr("P(a,d)");
|
||||||
|
|
@ -1299,10 +1298,8 @@ void init_value_expr()
|
||||||
globals->define("G", node);
|
globals->define("G", node);
|
||||||
globals->define("gain_total", node);
|
globals->define("gain_total", node);
|
||||||
|
|
||||||
node = parse_boolean_expr("min(x,y)=x<y?x:y", globals);
|
value_auto_ptr minx(parse_boolean_expr("min(x,y)=x<y?x:y", globals));
|
||||||
delete node;
|
value_auto_ptr maxx(parse_boolean_expr("max(x,y)=x>y?x:y", globals));
|
||||||
node = parse_boolean_expr("max(x,y)=x>y?x:y", globals);
|
|
||||||
delete node;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
value_expr_t * parse_value_expr(std::istream& in, scope_t * scope,
|
value_expr_t * parse_value_expr(std::istream& in, scope_t * scope,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue