markdown: Rename markdown.contains_bugdown.

This name was confusing, since "bugdown" doesn't exactly suggest
"backend markdown processor" to people.
This commit is contained in:
Tim Abbott 2017-07-28 17:51:33 -07:00
parent f58c2b5a47
commit 4f4d28477d
6 changed files with 19 additions and 19 deletions

View File

@ -18,23 +18,23 @@ sender of a message, and they are (ideally) identical to the backend
rendering.
The JavaScript markdown implementation has a function,
`markdown.contains_bugdown`, that is used to check whether a message
`markdown.contains_backend_only_syntax`, that is used to check whether a message
contains any syntax that needs to be rendered to HTML on the backend.
If `markdown.contains_bugdown` returns true, the frontend simply won't
If `markdown.contains_backend_only_syntax` returns true, the frontend simply won't
echo the message for the sender until it receives the rendered HTML
from the backend. If there is a bug where `markdown.contains_bugdown`
from the backend. If there is a bug where `markdown.contains_backend_only_syntax`
returns false incorrectly, the frontend will discover this when the
backend returns the newly sent message, and will update the HTML based
on the authoritative backend rendering (which would cause a change in
the rendering that is visible only to the sender shortly after a
message is sent). As a result, we try to make sure that
`markdown.contains_bugdown` is always correct.
`markdown.contains_backend_only_syntax` is always correct.
## Testing
The Python-Markdown implementation is tested by
`zerver/tests/test_bugdown.py`, and the marked.js implementation and
`markdown.contains_bugdown` are tested by
`markdown.contains_backend_only_syntax` are tested by
`frontend_tests/node_tests/markdown.js`. A shared set of fixed test data
("test fixtures") is present in `zerver/fixtures/bugdown-data.json`,
and is automatically used by both test suites; as a result, it the
@ -59,7 +59,7 @@ places:
* The backend markdown processor (`zerver/lib/bugdown/__init__.py`).
* The frontend markdown processor (`static/js/markdown.js` and sometimes
`static/third/marked/lib/marked.js`), or `markdown.contains_bugdown` if
`static/third/marked/lib/marked.js`), or `markdown.contains_backend_only_syntax` if
your changes won't be supported in the frontend processor.
* If desired, the typeahead logic in `static/js/composebox_typeahead.js`.
* The test suite, probably via adding entries to `zerver/fixtures/bugdown-data.json`.

View File

@ -1149,8 +1149,8 @@ function test_with_mock_socket(test_params) {
assert($("#preview_message_area").visible());
}
function setup_mock_markdown_contains_bugdown(msg_content, return_val) {
markdown.contains_bugdown = function (msg) {
function setup_mock_markdown_contains_backend_only_syntax(msg_content, return_val) {
markdown.contains_backend_only_syntax = function (msg) {
assert.equal(msg, msg_content);
return return_val;
};
@ -1183,7 +1183,7 @@ function test_with_mock_socket(test_params) {
assert.equal(spinner, $("#markdown_preview_spinner"));
destroy_indicator_called = true;
};
setup_mock_markdown_contains_bugdown(msg, true);
setup_mock_markdown_contains_backend_only_syntax(msg, true);
func(param);
@ -1212,7 +1212,7 @@ function test_with_mock_socket(test_params) {
var make_indicator_called = false;
$("#new_message_content").val('```foobarfoobar```');
setup_visibilities();
setup_mock_markdown_contains_bugdown('```foobarfoobar```', true);
setup_mock_markdown_contains_backend_only_syntax('```foobarfoobar```', true);
loading.make_indicator = function (spinner) {
assert.equal(spinner, $("#markdown_preview_spinner"));
make_indicator_called = true;
@ -1227,7 +1227,7 @@ function test_with_mock_socket(test_params) {
var apply_markdown_called = false;
$("#new_message_content").val('foobarfoobar');
setup_visibilities();
setup_mock_markdown_contains_bugdown('foobarfoobar', false);
setup_mock_markdown_contains_backend_only_syntax('foobarfoobar', false);
mock_channel_post('foobarfoobar');
markdown.apply_markdown = function (msg) {
assert.equal(msg, 'foobarfoobar');

View File

@ -141,11 +141,11 @@ var bugdown_data = JSON.parse(fs.readFileSync(path.join(__dirname, '../../zerver
];
no_markup.forEach(function (content) {
assert.equal(markdown.contains_bugdown(content), false);
assert.equal(markdown.contains_backend_only_syntax(content), false);
});
markup.forEach(function (content) {
assert.equal(markdown.contains_bugdown(content), true);
assert.equal(markdown.contains_backend_only_syntax(content), true);
});
}());

View File

@ -723,7 +723,7 @@ exports.initialize = function () {
if (message.length === 0) {
$("#preview_content").html(i18n.t("Nothing to preview"));
} else {
if (markdown.contains_bugdown(message)) {
if (markdown.contains_backend_only_syntax(message)) {
var spinner = $("#markdown_preview_spinner").expectOne();
loading.make_indicator(spinner);
} else {
@ -732,7 +732,7 @@ exports.initialize = function () {
// marked.js frontend processor, we render using the
// frontend markdown processor message (but still
// render server-side to ensure the preview is
// accurate; if the `markdown.contains_bugdown` logic is
// accurate; if the `markdown.contains_backend_only_syntax` logic is
// incorrect wrong, users will see a brief flicker).
$("#preview_content").html(markdown.apply_markdown(message));
}
@ -741,13 +741,13 @@ exports.initialize = function () {
idempotent: true,
data: {content: message},
success: function (response_data) {
if (markdown.contains_bugdown(message)) {
if (markdown.contains_backend_only_syntax(message)) {
loading.destroy_indicator($("#markdown_preview_spinner"));
}
$("#preview_content").html(response_data.rendered);
},
error: function () {
if (markdown.contains_bugdown(message)) {
if (markdown.contains_backend_only_syntax(message)) {
loading.destroy_indicator($("#markdown_preview_spinner"));
}
$("#preview_content").html(i18n.t("Failed to generate preview"));

View File

@ -131,7 +131,7 @@ function insert_local_message(message_request, local_id) {
}
exports.try_deliver_locally = function try_deliver_locally(message_request) {
if (markdown.contains_bugdown(message_request.content)) {
if (markdown.contains_backend_only_syntax(message_request.content)) {
return undefined;
}

View File

@ -24,7 +24,7 @@ var backend_only_markdown_re = [
/[^\s]*(?:twitter|youtube).com\/[^\s]*/,
];
exports.contains_bugdown = function (content) {
exports.contains_backend_only_syntax = function (content) {
// Try to guess whether or not a message has bugdown in it
// If it doesn't, we can immediately render it client-side
var markedup = _.find(backend_only_markdown_re, function (re) {