[gnumeric] xls: export sets.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] xls: export sets.
- Date: Tue, 13 Mar 2012 02:13:27 +0000 (UTC)
commit 32f8cb0bd3d951b13c2effd9a8cec458a3ac211e
Author: Morten Welinder <terra gnome org>
Date: Mon Mar 12 22:13:14 2012 -0400
xls: export sets.
ChangeLog | 2 ++
NEWS | 1 +
plugins/excel/ChangeLog | 2 ++
plugins/excel/ms-formula-write.c | 27 ++++++++++++++++++++++++---
src/expr.c | 6 +++---
5 files changed, 32 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index ee2017c..40558a1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2012-03-12 Morten Welinder <terra gnome org>
+ * src/expr.c (do_expr_as_string): Set a precedence for set.
+
* src/sheet-style.c (cb_style_extent, cb_is_default)
(cb_most_common): Fix handling of width and height.
diff --git a/NEWS b/NEWS
index fea755c..573b388 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,7 @@ Morten:
* Fix row height xls export rounding issue. [Part of #671513]
* Export paper size to xls.
* Improve xls export of chart legends. [Part of #671845]
+ * Export sets to xls.
--------------------------------------------------------------------------
Gnumeric 1.11.2
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index b3c23c8..4858fa5 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,5 +1,7 @@
2012-03-12 Morten Welinder <terra gnome org>
+ * ms-formula-write.c (write_node): Handle sets.
+
* ms-excel-write.c (excel_write_chart_v8): Regularlize code and
output object name too.
diff --git a/plugins/excel/ms-formula-write.c b/plugins/excel/ms-formula-write.c
index 6c375eb..d7ebf3a 100644
--- a/plugins/excel/ms-formula-write.c
+++ b/plugins/excel/ms-formula-write.c
@@ -702,9 +702,9 @@ write_node (PolishData *pd, GnmExpr const *expr, int paren_level,
{ FORMULA_PTG_PERCENT, 6, 0, 0 }, /* Percentage (NOT MODULO) */
{ 0, 0, 0, 0 }, /* Array Corner */
{ 0, 0, 0, 0 }, /* Array Element */
- { 0, 0, 0, 0 }, /* Set */
- { FORMULA_PTG_RANGE, 9, 1, 0 },
- { FORMULA_PTG_INTERSECT, 8, 1, 0 }
+ { 0, 8, 1, 0 }, /* Set */
+ { FORMULA_PTG_RANGE, 10, 1, 0 },
+ { FORMULA_PTG_INTERSECT, 9, 1, 0 }
};
const GnmExprOp op = GNM_EXPR_GET_OPER (expr);
@@ -870,6 +870,27 @@ write_node (PolishData *pd, GnmExpr const *expr, int paren_level,
break;
}
+ case GNM_EXPR_OP_SET:
+ if (expr->set.argc > 0) {
+ int const prec = operations[op].prec;
+ int i;
+
+ write_node (pd, expr->set.argv[0],
+ operations[op].assoc_left,
+ target_type);
+
+ for (i = 1; i < expr->set.argc; i++) {
+ write_node (pd, expr->set.argv[i],
+ operations[op].assoc_right,
+ target_type);
+ push_guint8 (pd, FORMULA_PTG_UNION);
+ }
+ if (prec <= paren_level)
+ push_guint8 (pd, FORMULA_PTG_PAREN);
+ break;
+ }
+ /* Fall through for now. */
+
default : {
gchar *err = g_strdup_printf ("Unknown Operator %d",
GNM_EXPR_GET_OPER (expr));
diff --git a/src/expr.c b/src/expr.c
index 29696f9..6b7e6d0 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -1599,9 +1599,9 @@ do_expr_as_string (GnmExpr const *expr, int paren_level,
{ "%", 6, 0, 0, 0 }, /* Percentage (NOT MODULO) */
{ "", 0, 0, 0, 0 }, /* ArrayCorner */
{ "", 0, 0, 0, 0 }, /* ArrayElem */
- { "", 0, 0, 0, 0 }, /* Set */
- { ":", 9, 1, 0, 0 }, /* Range Ctor */
- { " ", 8, 1, 0, 0 } /* Intersection */
+ { "", 8, 0, 0, 0 }, /* Set */
+ { ":", 10, 1, 0, 0 }, /* Range Ctor */
+ { " ", 9, 1, 0, 0 } /* Intersection */
};
GnmExprOp const op = GNM_EXPR_GET_OPER (expr);
GString *target = out->accum;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]