Moved doc api handler to new file. Endpoint is now GET

dev/git-series/gccdum
Rubén Rincón 6 years ago
parent 1f9afe3840
commit 6523b5dbbb

@ -41,7 +41,7 @@ var nopt = require('nopt'),
aws = require('./lib/aws'),
_ = require('underscore-node'),
logger = require('./lib/logger').logger,
asm_doc = require('./static/asm-docs');
asm_doc_api = require('./static/asm-docs-api');
// Parse arguments from command line 'node ./app.js args...'
var opts = nopt({
@ -425,19 +425,7 @@ function ApiHandler(compileHandler) {
}).join("\n"));
}
}, this));
this.handler.post('/asm', _.bind(function (req, res) {
res.set('Content-Type', 'application/json');
var info = asm_doc.getAsmOpcode(req.body.opcode);
if (!info) {
// If the opcode ends with an AT&T suffix, try removing that and giving it another go.
// Ideally, we'd be smarter here, but this is a quick win.
var atAndTSuffixRemover = /^([A-Z]+)[BWLQ]$/;
var suffixRemoved = atAndTSuffixRemover.exec(req.body.opcode);
if (suffixRemoved)
info = asm_doc.getAsmOpcode(suffixRemoved[1]);
}
res.end(JSON.stringify(info));
}, this));
this.handler.get('/asm/:opcode', asm_doc_api.asmDocsHandler);
this.handler.param('compiler', _.bind(function (req, res, next, compilerName) {
req.compiler = compilerName;
next();

@ -0,0 +1,50 @@
// Copyright (c) 2012-2017, Matt Godbolt
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
var asm_doc = require('./asm-docs');
function docHandler(req, res) {
var info = asm_doc.getAsmOpcode(req.params.opcode);
if (!info) {
// If the opcode ends with an AT&T suffix, try removing that and giving it another go.
// Ideally, we'd be smarter here, but this is a quick win.
var atAndTSuffixRemover = /^([A-Z]+)[BWLQ]$/;
var suffixRemoved = atAndTSuffixRemover.exec(req.params.opcode);
if (suffixRemoved) {
info = asm_doc.getAsmOpcode(suffixRemoved[1]);
}
}
if (req.accepts(['text', 'json']) == 'json') {
res.set('Content-Type', 'application/json');
res.end(JSON.stringify(info));
} else {
res.set('Content-Type', 'text/html');
res.end(info.html);
}
}
module.exports = {
asmDocsHandler: docHandler
};

@ -484,9 +484,10 @@ var tokens = {
};
function getAsmOpcode(opcode) {
if (!opcode) return;
return tokens[opcode.toUpperCase()];
}
module.exports = {
getAsmOpcode: getAsmOpcode
};
}

@ -558,13 +558,10 @@ define(function (require) {
var getAsmInfo = function (opcode) {
var promise = new Promise(function(resolve, reject) {
$.ajax({
type: 'POST',
url: 'api/asm',
type: 'GET',
url: 'api/asm/' + opcode ,
dataType: 'json', // Expected,
data: JSON.stringify({
"opcode": opcode,
}),
contentType: 'application/json', // Sent
contentType: 'text/plain', // Sent
success: function(result) {
resolve(result);
},

Loading…
Cancel
Save