diff -r 938050b612af src/formats.js
--- a/src/formats.js Tue Sep 11 04:33:17 2012 +0900
+++ b/src/formats.js Tue Sep 11 07:31:42 2012 +0900
@@ -142,8 +142,18 @@
}
return "
" + str + "
\n" + insert;
},
- "@display/block": function (state, str) {
- return "\n\n " + str + "
\n";
+ "@display/block": function(state, str, block_mode){
+ var before = "";
+ var after = "";
+ if (block_mode === 0) {
+ after = "\\line";
+ } else if (block_mode === 1) {
+ before = "\\line{}";
+ after = "\\line";
+ } else if (block_mode === 2) {
+ before = "\\line{}";
+ }
+ return "\r\n" + before + str + after + "\r\n";
},
"@display/left-margin": function (state, str) {
return "\n " + str + "
";
@@ -165,6 +175,14 @@
}
};
+
+// XXX To restore after testing:
+//
+// "@display/block": function (state, str) {
+// return "\n\n " + str + "
\n";
+// },
+
+
/**
* Plain text output specification.
*
@@ -302,8 +320,16 @@
"@quotes/false": false,
"bibstart":"{\\rtf ",
"bibend":"}",
- "@display/block": function(state, str){
- return str + "\\line\r\n";
+ "@display/block": function(state, str, output_before, nonblock_after){
+ var before = "\\line{}";
+ var after = "\\line";
+ if (!output_before) {
+ before = "";
+ }
+ if (nonblock_after) {
+ after = "";
+ }
+ return before + str + after + "\r\n";
},
"@bibliography/entry": function(state,str){
return str;
diff -r 938050b612af src/obj_blob.js
--- a/src/obj_blob.js Tue Sep 11 04:33:17 2012 +0900
+++ b/src/obj_blob.js Tue Sep 11 07:31:42 2012 +0900
@@ -68,6 +68,9 @@
for (pos = 0; pos < len; pos += 1) {
this.decorations.push(token.decorations[pos].slice());
}
+ if ("boolean" === typeof token.top_block) {
+ this.block_check = token.block_check;
+ }
} else {
this.strings = {};
this.strings.prefix = "";
diff -r 938050b612af src/obj_token.js
--- a/src/obj_token.js Tue Sep 11 04:33:17 2012 +0900
+++ b/src/obj_token.js Tue Sep 11 07:31:42 2012 +0900
@@ -171,6 +171,9 @@
if (token.variables) {
newtok.variables = token.variables.slice();
}
+ if ("boolean" === typeof token.block_check) {
+ newtok.block_check = token.block_check;
+ }
// Probably overkill; this is only used for cloning formatting
// tokens.
if (token.execs) {
diff -r 938050b612af src/queue.js
--- a/src/queue.js Tue Sep 11 04:33:17 2012 +0900
+++ b/src/queue.js Tue Sep 11 07:31:42 2012 +0900
@@ -215,6 +215,9 @@
//SNIP-END
blob = new CSL.Blob(undefined, this.formats.value()[token], token);
}
+ if ("boolean" === typeof blob.block_check) {
+ print(" CHECK(openLevel): "+blob.block_check);
+ }
// OKAY! Replace affix parens here.
if (this.nestedBraces) {
blob.strings.prefix = blob.strings.prefix.replace(this.nestedBraces[0][0], this.nestedBraces[0][1]);
@@ -317,6 +320,9 @@
}
}
blob = new CSL.Blob(str, token);
+ if ("boolean" === typeof blob.block_check) {
+ print(" CHECK(append): "+blob.block_check);
+ }
// OKAY! Replace affix parens here.
if (this.nestedBraces) {
blob.strings.prefix = blob.strings.prefix.replace(this.nestedBraces[0][0], this.nestedBraces[0][1]);
@@ -430,6 +436,9 @@
var blen = b.length;
if (!state.tmp.suppress_decorations) {
+ if ("boolean" === typeof blobjr.block_check) {
+ print("display_block(1): "+blobjr.block_check);
+ }
for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {
params = blobjr.decorations[j];
if (params[0] === "@showid") {
@@ -438,7 +447,7 @@
if (state.normalDecorIsOrphan(blobjr, params)) {
continue;
}
- b = state.fun.decorate[params[0]][params[1]](state, b, params[2]);
+ b = state.fun.decorate[params[0]][params[1]](state, b, params[2], block_mode);
}
}
//
@@ -449,6 +458,9 @@
if (b && b.length) {
b = txt_esc(blobjr.strings.prefix, state.tmp.nestedBraces) + b + txt_esc(blobjr.strings.suffix, state.tmp.nestedBraces);
if (state.opt.development_extensions.csl_reverse_lookup_support && !state.tmp.suppress_decorations) {
+ if ("boolean" === typeof blobjr.block_check) {
+ print("display_block(4): "+blobjr.block_check);
+ }
for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {
params = blobjr.decorations[j];
@@ -546,6 +558,9 @@
var blobs_start = state.output.renderBlobs(ret.slice(0, span_split), blob_delimiter);
if (blobs_start && blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {
if (!state.tmp.suppress_decorations) {
+ if ("boolean" === typeof blobjr.block_check) {
+ print("display_block(5): "+blobjr.block_check);
+ }
for (i = 0, ilen = blob.decorations.length; i < ilen; i += 1) {
params = blob.decorations[i];
if (["@bibliography", "@display", "@showid"].indexOf(params[0]) > -1) {
@@ -571,12 +586,15 @@
}
blobs_start = b;
if (!state.tmp.suppress_decorations) {
+ if ("boolean" === typeof blob.block_check) {
+ print("display_block(3): "+blob.block_check);
+ }
for (i = 0, ilen = blob.decorations.length; i < ilen; i += 1) {
params = blob.decorations[i];
if (["@bibliography", "@display", "@showid"].indexOf(params[0]) === -1) {
continue;
}
- blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2]);
+ blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2], block_mode);
}
}
}
@@ -687,13 +705,16 @@
str = str.replace(/\.([^a-z]|$)/g, "$1");
}
if (!state.tmp.suppress_decorations) {
+ if ("boolean" === typeof blob.block_check) {
+ print("display_block(2): "+blob.block_check);
+ }
llen = blob.decorations.length;
for (ppos = 0; ppos < llen; ppos += 1) {
params = blob.decorations[ppos];
if (state.normalDecorIsOrphan(blob, params)) {
continue;
}
- str = state.fun.decorate[params[0]][params[1]](state, str, params[2]);
+ str = state.fun.decorate[params[0]][params[1]](state, str, params[2], block_mode);
}
}
str = txt_esc(blob.strings.prefix) + str + txt_esc(blob.strings.suffix);
diff -r 938050b612af src/util_substitute.js
--- a/src/util_substitute.js Tue Sep 11 04:33:17 2012 +0900
+++ b/src/util_substitute.js Tue Sep 11 07:31:42 2012 +0900
@@ -119,6 +119,15 @@
bib_first.execs.push(func);
target.push(bib_first);
}
+ if (state.build.area === "bibliography") {
+ if (display === "block") {
+ print("Set block_check true");
+ this.block_check = true;
+ } else {
+ print("Set block_check false");
+ this.block_check = false;
+ }
+ }
state.build.cls = display;
}
state.build.render_nesting_level += 1;